From e41955fe05c128e8824198a753806db35c6c79aa Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Wed, 18 Jan 2017 13:41:29 -0800 Subject: [PATCH] use configure-runtime submodule --- pollen/private/language-info.rkt | 7 ---- pollen/private/reader-base.rkt | 53 +++++++++++++++---------------- pollen/private/runtime-config.rkt | 11 +++---- pollen/private/ts.rktd | 2 +- 4 files changed, 31 insertions(+), 42 deletions(-) delete mode 100644 pollen/private/language-info.rkt diff --git a/pollen/private/language-info.rkt b/pollen/private/language-info.rkt deleted file mode 100644 index 7894ba1..0000000 --- a/pollen/private/language-info.rkt +++ /dev/null @@ -1,7 +0,0 @@ -#lang racket/base -(provide get-language-info) -(define (get-language-info top-here-path) - (λ(key default) - (case key - [(configure-runtime) `(#(pollen/private/runtime-config configure ,top-here-path))] - [else default]))) \ No newline at end of file diff --git a/pollen/private/reader-base.rkt b/pollen/private/reader-base.rkt index 5f2c897..8af5743 100644 --- a/pollen/private/reader-base.rkt +++ b/pollen/private/reader-base.rkt @@ -34,33 +34,32 @@ (read-inner path-string p))) (define reader-here-path (path-string->here-path path-string)) (define parser-mode-from-reader (infer-parser-mode reader-mode reader-here-path)) - (define parsed-syntax - (strip-context - (with-syntax* ([HERE-KEY (setup:here-path-key)] - [HERE-PATH reader-here-path] - [POLLEN-MOD-NAME 'pollen-module] - [DIRECTORY-REQUIRES (require+provide-directory-require-files path-string)] - [SOURCE-LINES source-stx] - [DOC (setup:main-export)] - [META-MOD (setup:meta-export)] - [PARSER-MODE-FROM-READER parser-mode-from-reader] - [POLLEN-MODULE-SYNTAX (let ([mod-stx #'(module POLLEN-MOD-NAME pollen - (define-meta HERE-KEY HERE-PATH) - (provide (all-defined-out)) - DIRECTORY-REQUIRES - . SOURCE-LINES)]) - (syntax-property mod-stx 'parser-mode-from-reader parser-mode-from-reader))]) - #'(module runtime-wrapper racket/base - POLLEN-MODULE-SYNTAX - (module META-MOD racket/base - (require (submod ".." POLLEN-MOD-NAME META-MOD)) - (provide (all-from-out (submod ".." POLLEN-MOD-NAME META-MOD)))) - (require (submod pollen/private/runtime-config show) 'POLLEN-MOD-NAME) - (provide (all-from-out 'POLLEN-MOD-NAME)) - (show DOC 'PARSER-MODE-FROM-READER HERE-PATH))))) ; HERE-PATH acts as "local" runtime config - (syntax-property parsed-syntax - 'module-language - `#(pollen/private/language-info get-language-info ,reader-here-path))) ; reader-here-path acts as "top" runtime config + (strip-context + (with-syntax* ([HERE-KEY (setup:here-path-key)] + [HERE-PATH reader-here-path] + [POLLEN-MOD-NAME 'pollen-module] + [DIRECTORY-REQUIRES (require+provide-directory-require-files path-string)] + [SOURCE-LINES source-stx] + [DOC (setup:main-export)] + [META-MOD (setup:meta-export)] + [PARSER-MODE-FROM-READER parser-mode-from-reader] + [POLLEN-MODULE-SYNTAX (let ([mod-stx #'(module POLLEN-MOD-NAME pollen + (define-meta HERE-KEY HERE-PATH) + (provide (all-defined-out)) + DIRECTORY-REQUIRES + . SOURCE-LINES)]) + (syntax-property mod-stx 'parser-mode-from-reader parser-mode-from-reader))]) + #'(module runtime-wrapper racket/base + (module configure-runtime racket/base + (require pollen/private/runtime-config) + (configure HERE-PATH)) ; HERE-PATH acts as "top" runtime config when module is main + POLLEN-MODULE-SYNTAX + (module META-MOD racket/base + (require (submod ".." POLLEN-MOD-NAME META-MOD)) + (provide (all-from-out (submod ".." POLLEN-MOD-NAME META-MOD)))) + (require (only-in pollen/private/runtime-config show) 'POLLEN-MOD-NAME) + (provide (all-from-out 'POLLEN-MOD-NAME)) + (show DOC 'PARSER-MODE-FROM-READER HERE-PATH))))) ; HERE-PATH otherwise acts as "local" runtime config (define (custom-get-info in mod line col pos) ;; DrRacket caches source file information per session, diff --git a/pollen/private/runtime-config.rkt b/pollen/private/runtime-config.rkt index 3790b0e..55ed937 100644 --- a/pollen/private/runtime-config.rkt +++ b/pollen/private/runtime-config.rkt @@ -1,10 +1,9 @@ #lang racket/base (require pollen/setup scribble/reader) -(provide configure) -(module+ show (provide show)) ; `show` submodule requested by module wrapper in "reader-base.rkt" - +(provide (all-defined-out)) + (define current-top-path (make-parameter #f)) - + (define (show doc parser-mode here-path) ;; we only want the top doc to print in the runtime environment ;; otherwise if a Pollen source imports others, they will all print their docs in sequence. @@ -18,10 +17,8 @@ ((dynamic-require 'racket/string 'string-join) (cdr ((dynamic-require 'racket/string 'string-split) (exn-message exn) ": ")) ": "))))]) ((dynamic-require 'txexpr/base 'validate-txexpr) doc))))))) - (define (configure top-here-path) - ;; puts `show` into the right mode - (current-top-path top-here-path) + (current-top-path top-here-path) ;; puts `show` into the right mode ;; wrap REPL interactions with pollen expression support (define old-read (current-read-interaction)) diff --git a/pollen/private/ts.rktd b/pollen/private/ts.rktd index 9e2cdba..e3eed75 100644 --- a/pollen/private/ts.rktd +++ b/pollen/private/ts.rktd @@ -1 +1 @@ -1484772880 +1484775689