diff --git a/cache-ns.rkt b/cache-ns.rkt index 7f37982..22fa7fb 100644 --- a/cache-ns.rkt +++ b/cache-ns.rkt @@ -1,6 +1,20 @@ #lang racket/base +(require (for-syntax racket/base racket/syntax)) (provide (all-defined-out)) +(define-syntax (define-caching-ns stx) + (syntax-case stx () + [(_ name) + (with-syntax ([caching-module-name (generate-temporary)] + [NS-NAME (format-id stx "~a" #'name)]) + #'(begin + (module caching-module-name racket/base + (define-namespace-anchor nsa) ; could handle this macro-introduced name better + (provide nsa)) + (require 'caching-module-name) + (define NS-NAME (namespace-anchor->namespace nsa))))])) + + (define (load-in-namespace to-ns . module-names) (for-each (λ(mn) (eval `(require ,mn) to-ns)) module-names)) diff --git a/cache.rkt b/cache.rkt index c1e11d6..caf7050 100644 --- a/cache.rkt +++ b/cache.rkt @@ -38,15 +38,8 @@ (and directory-require-files (map dynamic-rerequire directory-require-files)) (void)) -(require sugar/debug) - ;; set up namespace for module caching -(module caching-module racket/base - (define-namespace-anchor caching-module-nsa) - (provide caching-module-nsa)) -(require 'caching-module) -(define caching-module-ns (namespace-anchor->namespace caching-module-nsa)) - +(define-caching-ns caching-module-ns) (define cached-module-names '(xml racket/bool racket/class @@ -76,7 +69,7 @@ sugar txexpr)) -(apply load-in-namespace caching-module-ns cached-module-names) + (define (path->hash path subkey) (dynamic-rerequire path) diff --git a/render.rkt b/render.rkt index 68599fa..a752ed3 100644 --- a/render.rkt +++ b/render.rkt @@ -224,12 +224,7 @@ ;; set up namespace for module caching -(module caching-module racket/base - (define-namespace-anchor caching-module-nsa) - (provide caching-module-nsa)) -(require 'caching-module) -(define caching-module-ns (namespace-anchor->namespace caching-module-nsa)) - +(define-caching-ns caching-module-ns) (define cached-module-names '(xml racket/bool racket/class