#lang at-exp racket/base (require (for-syntax racket/base racket/syntax pollen/setup) scribble/core scribble/manual scribble/private/manual-sprop scribble/decode scribble/html-properties racket/runtime-path racket/format "../private/external/manual-history.rkt" pollen/setup) (provide (all-defined-out) (all-from-out racket/runtime-path "../private/external/manual-history.rkt")) (define-runtime-path mb-css "mb.css") (define (link-tt url) (link url (tt url))) (define (racketfont* . args) (element 'tt args)) (define (fileblock filename . inside) (compound-paragraph (style "fileblock" (list* (alt-tag "div") 'multicommand (box-mode "RfileboxBoxT" "RfileboxBoxC" "RfileboxBoxB") scheme-properties)) (list (paragraph (style "fileblock_filetitle" (list* (alt-tag "div") (box-mode* "RfiletitleBox") scheme-properties)) (list (make-element (style "fileblock_filename" (list (css-style-addition mb-css))) (if (string? filename) (filepath filename) filename)))) (compound-paragraph (style "fileblock_filecontent" (list* (alt-tag "div") (box-mode* "RfilecontentBox") scheme-properties)) (decode-flow inside))))) (define (convert-newlines args) (map (λ (arg) (if (equal? arg "\n") (linebreak) arg)) args)) (define (repl-output . args) (nested (racketvalfont (racketfont* (convert-newlines args))))) (define (errorblock . args) (nested (racketerror (racketfont* (convert-newlines args))))) (define (foreign-code . args) (compound-paragraph (style "foreign-code" (list (css-style-addition mb-css) (alt-tag "div"))) (list (apply verbatim args)))) (define (terminal . args) (compound-paragraph (style "terminal" (list (css-style-addition mb-css) (alt-tag "div"))) (list (apply verbatim args)))) (define (browser . args) (compound-paragraph (style "browser" (list (css-style-addition mb-css) (alt-tag "div"))) (list (paragraph (style #f null) (convert-newlines args))))) (define (noskip-note) (nested #:style (style "noskip" (list (css-style-addition mb-css) (alt-tag "div"))) (margin-note "Don’t skip this section! It explains an essential Pollen concept."))) (define-syntax (image/rp stx) (syntax-case stx () [(_ name xs ...) (with-syntax ([id (generate-temporary)]) #'(begin (define-runtime-path id name) (image id xs ...)))])) (define-syntax (defoverridable stx) (syntax-case stx () [(_ name predicate? desc ...) (with-syntax* ([default-name (format-id #'here "default-~a" #'name)] [value (let ([v (syntax-local-eval #'default-name)]) (cond [(and (list? v) (andmap symbol? v) (> (length v) 5)) #`'#,'(see below)] [(or (symbol? v) (list? v)) #`'#,v] [(procedure? v) '(λ (path) #f)] [else v]))] [setup:name (format-id stx "setup:~a" #'name)]) #`(deftogether ((defproc (setup:name) predicate?) (defthing default-name predicate? #:value value)) desc ...))])) (define (val . args) (racketvalfont (element 'tt (map ~v args)))) (define (id . args) (element 'tt (map ~a args))) (define (ext expr) @code[(format ".~a" expr)])