 }
 
 ################################################################################
+
 console.log "VALIDATING"
-console.log validate(data,root)
+console.log json_spec.validate(data,root)
 console.log "DONE"


################################################################################

normalize = (src)->
  dst = {}
  for k,v of src
    console.log k
    dst[k] = normalize_attributes(v)
  return dst

normalize_attributes = (src)->
  if Array.isArray(src)
    dst = []
    for s in src
      dst.push normalize_attributes(s)
    return dst
  else
    dst = {}
    for k,v of src
      switch k
        when 'datatype','default'
          dst[k] = v
        when 'attributes'
          dst[k] = normalize(v)
        when 'items'
          dst[k] = normalize_attributes(v)
        when 'enum','constraints','format'
          unless Array.isArray(v)
            v = [ v ]
          dst[k] = v
        when 'range'
          if v.length < 3
            v.push "inclusive"
          dst[k] = v
        else
          console.error "WARNING: Found unexpected parameter \"#{k}\"."
    if dst.items? and not dst.datatype is 'array'
      console.error "WARNING: Found 'items' for non-array datatype \"#{dst.datatype}\"."
    return dst

################################################################################


            }
          ]

################################################################################

root = json_spec.normalize(root)

################################################################################

