Find Cheaper University Textbooks
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

67 lines
1.3 KiB

#lang racket
(require json)
(define (root name type)
`(,name type))
(define ((prop
type
[index "analyzed"])
name)
(define prop-hash (make-hash))
(hash-set! prop-hash (string->symbol name)
`#hash(
(type . ,type)
(index . ,index)))
prop-hash)
(define ((dict name) ps)
(let ([prop-vals (make-hash)]
[props-hsh (make-hash)])
(for ([p ps])
(hash-set! prop-vals
(car p)
(cdr p)))
(hash-set! props-hsh name prop-vals)
props-hsh))
(define (props ps)
(define props-hash (make-hash))
(for ([p ps])
(match p
[(hash-table (k v))
(hash-set! props-hash k v)]))
`#hash((properties . ,props-hash)))
(define str (prop "string"))
(define num (prop "integer"))
(define date (prop "date"))
(define bool (prop "boolean" "not_analyzed"))
(define (dictprop name d)
(define dict (make-hash))
(hash-set! dict name d)
dict)
(define (estruct name pairs)
(define estr (make-hash))
(hash-set! estr
(string->symbol name)
(props pairs))
estr)
(define (make-mapping
type
decl)
(define mapping (make-hash))
(hash-set! mapping
(string->symbol type)
(props decl))
(jsexpr->string mapping))
(provide
(all-defined-out))