(module uahgi2 racket/base (require racket/dict) (define main-config (make-hash '(["paper-width". 2480] ["paper-height". 3508] ["lang" . #f] ["font-family" . "FreeSerif"] ["font-family-CJK" . "Noto Sans CJK TC"] ["font-size" . 14] ["font-weight" . "regular"] ["font-style" . "normal"] ))) (define main-frame (make-hash '(["id" . 1] ["font-family" . (dict-ref main-config "font-family")] ["class" . frame] ["width" . 2000] ["height" . 3000] ["x" . 200] ["y" . 250] ["content" . #f]))) (define (set-main-config attr val) (dict-set! main-config attr val)) (define (main-text txt) (begin (dict-set! main-frame "content" txt) (for/list ([p plugin-list]) [if (memq (dict-ref p "lang") (dict-ref main-config "lang")) [let ([tmp ((dict-ref p "body") (dict-ref main-frame "content"))]) (dict-set! main-frame "content" tmp)] #f]))) (define-syntax text-series (syntax-rules () [(_ x ...) ; delete the beginning newline (if (eq? (caar `(x ...)) "\n") `('text ,(cdar `(x ...))) `('text ,(caar `(x ...)) ,(cdar `(x ...))))])) (define plugin-list '()) (define plugin-test (make-hash `(["lang" . "zh"] ["body" . ,(lambda (x) "result:foo")]))) (set! plugin-list (reverse (cons plugin-test (reverse plugin-list)))) (provide text-series main-text main-frame main-config set-main-config set! (all-from-out racket/base) (all-from-out racket/dict) #%module-begin #%app #%datum #%expression #%top) )