diff --git a/pollen/private/main-base.rkt b/pollen/private/main-base.rkt index f4249b3..71f82e3 100644 --- a/pollen/private/main-base.rkt +++ b/pollen/private/main-base.rkt @@ -16,46 +16,46 @@ (syntax-case stx () [(_ (... ...)) (let-values ([(meta-hash expr-without-metas) (split-metas (syntax->datum #'( (... ...))) (setup:define-meta-name))]) - (with-syntax ([ meta-hash] - [( (... ...)) expr-without-metas] - [ (format-id #f "~a" (setup:meta-export))] - [ (format-symbol "~a" (setup:meta-export))] - [ (format-id #f "~a" (setup:main-root-node))] - [ (datum->syntax #f (setup:newline))] - [ default-mode-pagetree] - [ default-mode-markup] - [ default-mode-markdown] - [ (setup:splicing-tag)] - [ (format-id #f "~a" (setup:main-export))] - [ (generate-temporary 'pollen-)]); prevents conflicts with other imported Pollen sources + (with-syntax ([META-HASH meta-hash] + [(EXPR-WITHOUT-METAS (... ...)) expr-without-metas] + [METAS (format-id #f "~a" (setup:meta-export))] + [META-MOD (format-symbol "~a" (setup:meta-export))] + [ROOT (format-id #f "~a" (setup:main-root-node))] + [NEWLINE (datum->syntax #f (setup:newline))] + [MODE-PAGETREE default-mode-pagetree] + [MODE-MARKUP default-mode-markup] + [MODE-MARKDOWN default-mode-markdown] + [SPLICING-TAG (setup:splicing-tag)] + [DOC (format-id #f "~a" (setup:main-export))] + [DOC-RAW (generate-temporary 'pollen-)]); prevents conflicts with other imported Pollen sources (replace-context #'( (... ...)) #'(#%module-begin - (module racket/base - (provide ) - (define )) + (module META-MOD racket/base + (provide METAS) + (define METAS META-HASH)) (module inner pollen/private/doclang-raw - ; positional arg for doclang-raw that sets name of export. + DOC-RAW ; positional arg for doclang-raw that sets name of export. (require pollen/top pollen/setup pollen/core) - (require (submod ".." )) - (provide (all-defined-out) #%top (all-from-out (submod ".." ) pollen/core)) - (... ...)) + (require (submod ".." META-MOD)) + (provide (all-defined-out) #%top (all-from-out (submod ".." META-MOD) pollen/core)) + EXPR-WITHOUT-METAS (... ...)) (require 'inner) - (define + (define DOC (let* ([parser-mode-undefined? (procedure? inner:parser-mode)] ; if undefined, #%top makes it a procedure [parser-mode (if parser-mode-undefined? inner:parser-mode)] [proc (case parser-mode - [() decode-pagetree] - [() (λ(xs) (apply xs))] ; if `root` undefined, it becomes a default tag function - [() - (λ(xs) (apply (map strip-empty-attrs ((dynamic-require 'markdown 'parse-markdown) (apply string-append (map to-string xs))))))] + [(MODE-PAGETREE) decode-pagetree] + [(MODE-MARKUP) (λ(xs) (apply ROOT xs))] ; if `root` undefined, it becomes a default tag function + [(MODE-MARKDOWN) + (λ(xs) (apply ROOT (map strip-empty-attrs ((dynamic-require 'markdown 'parse-markdown) (apply string-append (map to-string xs))))))] [else (λ(xs) (apply string-append (map to-string xs)))])] ; string output for preprocessor ;; drop leading newlines, as they're often the result of `defines` and `requires` - [doc-elements (or (memf (λ(ln) (not (equal? ln ))) ) null)] - [doc-elements-spliced (splice doc-elements ')]) + [doc-elements (or (memf (λ(ln) (not (equal? ln NEWLINE))) DOC-RAW) null)] + [doc-elements-spliced (splice doc-elements 'SPLICING-TAG)]) (proc doc-elements-spliced))) - (provide (except-out (all-from-out 'inner) #%top))))))])) + (provide DOC METAS (except-out (all-from-out 'inner) DOC-RAW #%top))))))])) ...)) \ No newline at end of file diff --git a/pollen/private/reader-base.rkt b/pollen/private/reader-base.rkt index 237dade..7b4914f 100644 --- a/pollen/private/reader-base.rkt +++ b/pollen/private/reader-base.rkt @@ -35,15 +35,14 @@ (define reader-here-path (path-string->here-path path-string)) (define parser-mode (infer-parser-mode reader-mode reader-here-path)) (define parsed-syntax - (with-syntax ([HERE-KEY (format-id #f "~a" (setup:here-path-key))] - [HERE-PATH (datum->syntax #f reader-here-path)] - [POLLEN-MOD (format-symbol "~a" (gensym))] ; prevents conflicts with other imported Pollen sources - [PARSER-MODE-VALUE (format-symbol "~a" parser-mode)] - [DIRECTORY-REQUIRES (datum->syntax #f (require+provide-directory-require-files path-string))] - [(SOURCE-LINE ...) source-stx] - [DOC (format-id #f "~a" (setup:main-export))]) - (replace-context - source-stx + (strip-context + (with-syntax ([HERE-KEY (format-id #f "~a" (setup:here-path-key))] + [HERE-PATH reader-here-path] + [POLLEN-MOD (format-symbol "~a" (gensym))] ; prevents conflicts with other imported Pollen sources + [PARSER-MODE-VALUE (format-symbol "~a" parser-mode)] + [DIRECTORY-REQUIRES (require+provide-directory-require-files path-string)] + [(SOURCE-LINE ...) source-stx] + [DOC (format-id #f "~a" (setup:main-export))]) #'(module runtime-wrapper racket/base (module POLLEN-MOD pollen (define-meta HERE-KEY HERE-PATH) diff --git a/pollen/private/ts.rktd b/pollen/private/ts.rktd index 92ee41a..ab3d7de 100644 --- a/pollen/private/ts.rktd +++ b/pollen/private/ts.rktd @@ -1 +1 @@ -1459991298 +1460223406