-
This commit is contained in:
@@ -14,7 +14,10 @@
|
||||
fromJson
|
||||
mk-js-array
|
||||
js-code
|
||||
kv?
|
||||
list-of-kv?
|
||||
list-of-symbol?
|
||||
list-of?
|
||||
)
|
||||
|
||||
(define-syntax while
|
||||
@@ -82,12 +85,14 @@
|
||||
(with-input-from-string str read-json))
|
||||
|
||||
(define (mk-js-array l)
|
||||
(if (list? l)
|
||||
(string-append "[ " (string-join (map (λ (e) (format "'~a'"
|
||||
(esc-quote (format "~a" e)))) l) ", ") " ]")
|
||||
(format "[ '~a' ]" (esc-quote (format "~a" l)))
|
||||
)
|
||||
)
|
||||
(if (list-of-kv? l)
|
||||
(string-append "[ " (string-join (map (λ (e) (mk-js-array e)) l) ", ") " ]")
|
||||
(if (list? l)
|
||||
(string-append "[ " (string-join (map (λ (e) (format "'~a'"
|
||||
(esc-quote (format "~a" e)))) l) ", ") " ]")
|
||||
(if (pair? l)
|
||||
(format "[ '~a', '~a' ]" (car l) (cdr l))
|
||||
(format "[ '~a' ]" (esc-quote (format "~a" l)))))))
|
||||
|
||||
(define (js-code . a)
|
||||
(define (code* l)
|
||||
@@ -97,21 +102,26 @@
|
||||
)
|
||||
)
|
||||
(code* a))
|
||||
|
||||
|
||||
(define (list-of-kv? l)
|
||||
(define (kv? e)
|
||||
(let ((e (car l)))
|
||||
(and (list? e)
|
||||
(= (length e) 2)
|
||||
(symbol? (car e)))))
|
||||
(define (all-kv? l)
|
||||
(define (kv? e)
|
||||
(or
|
||||
(and (list? e) (= (length e) 2) (symbol? (car e)))
|
||||
(and (pair? e) (symbol? (car e)))))
|
||||
|
||||
(define (list-of? pred? l)
|
||||
(define (all-pred? l)
|
||||
(if (null? l)
|
||||
#t
|
||||
(if (kv? (car e))
|
||||
(all-kv? (cdr l))
|
||||
(if (pred? (car l))
|
||||
(all-pred? (cdr l))
|
||||
#f)))
|
||||
(if (list? l)
|
||||
(all-kv? l)
|
||||
(all-pred? l)
|
||||
#f))
|
||||
|
||||
(define (list-of-kv? l)
|
||||
(list-of? kv? l))
|
||||
|
||||
(define (list-of-symbol? l)
|
||||
(list-of? symbol? l))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user