diff --git a/js-assembler/package.rkt b/js-assembler/package.rkt index e79d183..35aee10 100644 --- a/js-assembler/package.rkt +++ b/js-assembler/package.rkt @@ -15,6 +15,8 @@ racket/promise racket/set racket/path + racket/string + racket/port (prefix-in query: "../lang/js/query.rkt") (prefix-in resource-query: "../resource/query.rkt") (planet dyoo/closure-compile:1:1) @@ -138,10 +140,15 @@ [(MainModuleSource? src) (get-javascript-implementation (MainModuleSource-source src))] [(ModuleSource? src) - (let ([name (rewrite-path (ModuleSource-path src))] - [text (query:query `(file ,(path->string (ModuleSource-path src))))] - [module-requires (query:lookup-module-requires (ModuleSource-path src))] - [bytecode (parse-bytecode (ModuleSource-path src))]) + (let* ([name (rewrite-path (ModuleSource-path src))] + [paths (query:query `(file ,(path->string (ModuleSource-path src))))] + [text (string-join + (map (lambda (p) + (call-with-input-file p port->string)) + paths) + "\n")] + [module-requires (query:lookup-module-requires (ModuleSource-path src))] + [bytecode (parse-bytecode (ModuleSource-path src))]) (when (not (empty? module-requires)) (log-debug "~a requires ~a" (ModuleSource-path src) diff --git a/lang/js/js.rkt b/lang/js/js.rkt index 0c0e2a6..9944ba7 100644 --- a/lang/js/js.rkt +++ b/lang/js/js.rkt @@ -12,9 +12,9 @@ (resolve-module-path a-module-path #f))) -(define-for-syntax (read-implementation a-module-path) +(define-for-syntax (resolve-implementation-path a-module-path) (let ([a-path (my-resolve-path a-module-path)]) - (file->string a-path))) + (path->string a-path))) (define-syntax (declare-implementation stx) @@ -26,10 +26,8 @@ ([resolved-racket-module-name (my-resolve-path (syntax-e #'racket-module-name))] [impl - (string-join - (map (compose read-implementation syntax-e) - (syntax->list #'(javascript-module-name ...))) - "\n")] + (map (compose resolve-implementation-path syntax-e) + (syntax->list #'(javascript-module-name ...)))] [(internal-name ...) (generate-temporaries #'(provided-name ...))]) (syntax/loc stx (begin diff --git a/lang/js/query.rkt b/lang/js/query.rkt index e093022..87af4ff 100644 --- a/lang/js/query.rkt +++ b/lang/js/query.rkt @@ -5,7 +5,7 @@ syntax/modresolve) -(provide/contract [query (module-path? . -> . string?)] +(provide/contract [query (module-path? . -> . (listof string?))] [has-javascript-implementation? (module-path? . -> . boolean?)] [redirected? (path? . -> . boolean?)] diff --git a/web-world/js-impl.js b/web-world/js-impl.js index a275317..5fefa2e 100644 --- a/web-world/js-impl.js +++ b/web-world/js-impl.js @@ -465,6 +465,11 @@ + var parseStringAsHtml = function(str) { + var dom = $("").append($(str)); + return dom; + }; + // coerseToView: (U resource View) -> View // Coerse a value into a view. @@ -474,7 +479,7 @@ return onSuccess(x); } else if (isResource(x)) { try { - dom = $("").append($(resourceContent(x).toString())) + dom = parseStringAsHtml(resourceContent(x).toString()) .css("margin", "0px") .css("padding", "0px") .css("border", "0px"); @@ -502,7 +507,7 @@ return onSuccess(x); } else if (isResource(x)) { try { - dom = $("").append($(resourceContent(x).toString())) + dom = parseStringAsHtml(resourceContent(x).toString()) .css("margin", "0px") .css("padding", "0px") .css("border", "0px"); @@ -534,7 +539,7 @@ return onSuccess(x); } else if (isResource(x)) { try { - dom = $(resourceContent(x).toString()) + dom = parseStringAsHtml(resourceContent(x).toString()) .css("margin", "0px") .css("padding", "0px") .css("border", "0px");