62 lines
No EOL
2 KiB
Racket
62 lines
No EOL
2 KiB
Racket
|
|
(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)
|
|
|
|
|
|
) |