diff options
author | Eduardo Julian | 2021-01-05 07:55:22 -0400 |
---|---|---|
committer | Eduardo Julian | 2021-01-05 07:55:22 -0400 |
commit | 75102dcfa7c2c0afd32cb5bf5ac012df2db6a7a1 (patch) | |
tree | 643350e00eebc8682c5087a4cd73b5f9406d92fb /lux-js/source | |
parent | c03bd9f9787fb9f383c57b4ebb0fa9d49abbfaa1 (diff) |
Added lexically-scoped templates.
Diffstat (limited to 'lux-js/source')
-rw-r--r-- | lux-js/source/program.lux | 406 |
1 files changed, 209 insertions, 197 deletions
diff --git a/lux-js/source/program.lux b/lux-js/source/program.lux index f75a78c97..e402a550f 100644 --- a/lux-js/source/program.lux +++ b/lux-js/source/program.lux @@ -1,5 +1,6 @@ (.module: [lux #* + [program (#+ program:)] ["." host (#+ import:)] ["." debug] [abstract @@ -9,17 +10,11 @@ ["." exception (#+ exception:)] ["." io (#+ IO io)] ["." function] - [parser - [cli (#+ program:)]] [concurrency ["." promise (#+ Promise)]]] [data ["." product] ["." maybe] - [number - ["." i64] - ["n" nat] - ["i" int]] [text ["%" format (#+ format)] ["." encoding]] @@ -27,8 +22,14 @@ ["." array (#+ Array)]]] [macro ["." template]] - [world - ["." file]] + [math + [number + ["n" nat] + ["i" int] + ["." i64]]] + ["." world #_ + ["." file] + ["#/." program]] ["@" target ["_" js]] [tool @@ -63,7 +64,7 @@ ["/." cli] ["/." static]]]) -(exception: (null-has-no-lux-representation {code (Maybe _.Expression)}) +(exception: (null_has_no_lux_representation {code (Maybe _.Expression)}) (case code (#.Some code) (_.code code) @@ -72,147 +73,158 @@ "???")) (for {@.old - (as-is (import: #long java/lang/String) + (as_is (import: java/lang/String) - (import: #long (java/lang/Class a)) + (import: (java/lang/Class a)) - (import: #long java/lang/Object - (toString [] java/lang/String) - (getClass [] (java/lang/Class java/lang/Object))) + (import: java/lang/Object + ["#::." + (toString [] java/lang/String) + (getClass [] (java/lang/Class java/lang/Object))]) - (import: #long java/lang/Long - (intValue [] java/lang/Integer)) + (import: java/lang/Long + ["#::." + (intValue [] java/lang/Integer)]) - (import: #long java/lang/Integer - (longValue [] long)) + (import: java/lang/Integer + ["#::." + (longValue [] long)]) - (import: #long java/lang/Number - (intValue [] java/lang/Integer) - (longValue [] long) - (doubleValue [] double)) + (import: java/lang/Number + ["#::." + (intValue [] java/lang/Integer) + (longValue [] long) + (doubleValue [] double)]) - (import: #long java/util/Arrays - (#static [t] copyOfRange [[t] int int] [t])) + (import: java/util/Arrays + ["#::." + (#static [t] copyOfRange [[t] int int] [t])]) - (import: #long javax/script/ScriptEngine - (eval [java/lang/String] #try #? java/lang/Object)) + (import: javax/script/ScriptEngine + ["#::." + (eval [java/lang/String] #try #? java/lang/Object)]) - (import: #long javax/script/ScriptEngineFactory - (getScriptEngine [] javax/script/ScriptEngine)) + (import: javax/script/ScriptEngineFactory + ["#::." + (getScriptEngine [] javax/script/ScriptEngine)]) - (import: #long jdk/nashorn/api/scripting/NashornScriptEngineFactory - (new [])) + (import: org/openjdk/nashorn/api/scripting/NashornScriptEngineFactory + ["#::." + (new [])]) - (import: #long jdk/nashorn/api/scripting/JSObject - (isArray [] boolean) - (isFunction [] boolean) - (getSlot [int] #? java/lang/Object) - (getMember [java/lang/String] #? java/lang/Object) - (hasMember [java/lang/String] boolean) - (call [#? java/lang/Object [java/lang/Object]] #try java/lang/Object)) + (import: org/openjdk/nashorn/api/scripting/JSObject + ["#::." + (isArray [] boolean) + (isFunction [] boolean) + (getSlot [int] #? java/lang/Object) + (getMember [java/lang/String] #? java/lang/Object) + (hasMember [java/lang/String] boolean) + (call [#? java/lang/Object [java/lang/Object]] #try java/lang/Object)]) - (import: #long jdk/nashorn/api/scripting/AbstractJSObject) + (import: org/openjdk/nashorn/api/scripting/AbstractJSObject) - (import: #long jdk/nashorn/api/scripting/ScriptObjectMirror - (size [] int) - (toString [] java/lang/String)) + (import: org/openjdk/nashorn/api/scripting/ScriptObjectMirror + ["#::." + (size [] int) + (toString [] java/lang/String)]) - (import: #long jdk/nashorn/internal/runtime/Undefined) + (import: org/openjdk/nashorn/internal/runtime/Undefined) (template [<name>] [(host.interface: <name> (getValue [] java/lang/Object)) (`` (import: (~~ (template.identifier ["program/" <name>])) - (getValue [] java/lang/Object)))] + ["#::." + (getValue [] java/lang/Object)]))] [IntValue] [StructureValue] ) - (exception: (unknown-member {member Text} + (exception: (unknown_member {member Text} {object java/lang/Object}) (exception.report ["Member" member] ["Object" (debug.inspect object)])) - (def: jvm-int + (def: jvm_int (-> (I64 Any) java/lang/Integer) (|>> (:coerce java/lang/Long) java/lang/Long::intValue)) - (def: (js-int value) - (-> Int jdk/nashorn/api/scripting/JSObject) - (host.object [] jdk/nashorn/api/scripting/AbstractJSObject [program/IntValue] + (def: (js_int value) + (-> Int org/openjdk/nashorn/api/scripting/JSObject) + (host.object [] org/openjdk/nashorn/api/scripting/AbstractJSObject [program/IntValue] [] ## Methods (program/IntValue [] (getValue self) java/lang/Object (:coerce java/lang/Object value)) - (jdk/nashorn/api/scripting/AbstractJSObject + (org/openjdk/nashorn/api/scripting/AbstractJSObject [] (getMember self {member java/lang/String}) java/lang/Object (case member - (^ (static runtime.i64-high-field)) - (|> value .nat runtime.high jvm-int) + (^ (static runtime.i64_high_field)) + (|> value .nat runtime.high jvm_int) - (^ (static runtime.i64-low-field)) - (|> value .nat runtime.low jvm-int) + (^ (static runtime.i64_low_field)) + (|> value .nat runtime.low jvm_int) _ - (error! (exception.construct ..unknown-member [member (:coerce java/lang/Object value)])))) + (error! (exception.construct ..unknown_member [member (:coerce java/lang/Object value)])))) )) - (def: (::toString js-object) - (-> Any jdk/nashorn/api/scripting/JSObject) - (host.object [] jdk/nashorn/api/scripting/AbstractJSObject [] + (def: (::toString js_object) + (-> Any org/openjdk/nashorn/api/scripting/JSObject) + (host.object [] org/openjdk/nashorn/api/scripting/AbstractJSObject [] [] - (jdk/nashorn/api/scripting/AbstractJSObject + (org/openjdk/nashorn/api/scripting/AbstractJSObject [] (isFunction self) boolean #1) - (jdk/nashorn/api/scripting/AbstractJSObject + (org/openjdk/nashorn/api/scripting/AbstractJSObject [] (call self {this java/lang/Object} {args [java/lang/Object]}) java/lang/Object - (debug.inspect js-object)) + (debug.inspect js_object)) )) - (def: (::slice js-object value) - (-> (-> java/lang/Object jdk/nashorn/api/scripting/JSObject) (Array java/lang/Object) jdk/nashorn/api/scripting/JSObject) - (host.object [] jdk/nashorn/api/scripting/AbstractJSObject [] + (def: (::slice js_object value) + (-> (-> java/lang/Object org/openjdk/nashorn/api/scripting/JSObject) (Array java/lang/Object) org/openjdk/nashorn/api/scripting/JSObject) + (host.object [] org/openjdk/nashorn/api/scripting/AbstractJSObject [] [] - (jdk/nashorn/api/scripting/AbstractJSObject + (org/openjdk/nashorn/api/scripting/AbstractJSObject [] (isFunction self) boolean #1) - (jdk/nashorn/api/scripting/AbstractJSObject + (org/openjdk/nashorn/api/scripting/AbstractJSObject [] (call self {this java/lang/Object} {args [java/lang/Object]}) java/lang/Object (|> (java/util/Arrays::copyOfRange value (|> args (array.read 0) maybe.assume (:coerce Int)) (.int (array.size value))) - js-object + js_object (:coerce java/lang/Object))) )) - (def: (js-structure value) - (-> (Array java/lang/Object) jdk/nashorn/api/scripting/JSObject) - (let [js-object (: (-> java/lang/Object jdk/nashorn/api/scripting/JSObject) - (function (_ sub-value) - (<| (case (host.check [java/lang/Object] sub-value) - (#.Some sub-value) - (|> sub-value (:coerce (Array java/lang/Object)) js-structure) + (def: (js_structure value) + (-> (Array java/lang/Object) org/openjdk/nashorn/api/scripting/JSObject) + (let [js_object (: (-> java/lang/Object org/openjdk/nashorn/api/scripting/JSObject) + (function (_ sub_value) + (<| (case (host.check [java/lang/Object] sub_value) + (#.Some sub_value) + (|> sub_value (:coerce (Array java/lang/Object)) js_structure) #.None) - (case (host.check java/lang/Long sub-value) - (#.Some sub-value) - (|> sub-value (:coerce Int) js-int) + (case (host.check java/lang/Long sub_value) + (#.Some sub_value) + (|> sub_value (:coerce Int) js_int) #.None) ## else - (:coerce jdk/nashorn/api/scripting/JSObject sub-value))))] - (host.object [] jdk/nashorn/api/scripting/AbstractJSObject [program/StructureValue] + (:coerce org/openjdk/nashorn/api/scripting/JSObject sub_value))))] + (host.object [] org/openjdk/nashorn/api/scripting/AbstractJSObject [program/StructureValue] [] ## Methods (program/StructureValue [] (getValue self) java/lang/Object (:coerce (Array java/lang/Object) value)) - (jdk/nashorn/api/scripting/AbstractJSObject + (org/openjdk/nashorn/api/scripting/AbstractJSObject [] (isArray self) boolean #1) - (jdk/nashorn/api/scripting/AbstractJSObject + (org/openjdk/nashorn/api/scripting/AbstractJSObject [] (getMember self {member java/lang/String}) java/lang/Object (case member (^or "toJSON" "toString") @@ -220,16 +232,16 @@ (::toString value)) "length" - (jvm-int (array.size value)) + (jvm_int (array.size value)) "slice" (:coerce java/lang/Object - (::slice js-object value)) + (::slice js_object value)) - (^ (static runtime.variant-tag-field)) + (^ (static runtime.variant_tag_field)) (|> value (array.read 0) maybe.assume) - (^ (static runtime.variant-flag-field)) + (^ (static runtime.variant_flag_field)) (case (array.read 1 value) (#.Some set!) set! @@ -237,33 +249,33 @@ _ (host.null)) - (^ (static runtime.variant-value-field)) - (|> value (array.read 2) maybe.assume js-object (:coerce java/lang/Object)) + (^ (static runtime.variant_value_field)) + (|> value (array.read 2) maybe.assume js_object (:coerce java/lang/Object)) _ - (error! (exception.construct ..unknown-member [(:coerce Text member) (:coerce java/lang/Object value)]))) + (error! (exception.construct ..unknown_member [(:coerce Text member) (:coerce java/lang/Object value)]))) ) - (jdk/nashorn/api/scripting/AbstractJSObject + (org/openjdk/nashorn/api/scripting/AbstractJSObject [] (getSlot self {idx int}) java/lang/Object (|> value (array.read (|> idx java/lang/Integer::longValue (:coerce Nat))) maybe.assume - js-object + js_object (:coerce java/lang/Object))) ))) - (exception: undefined-has-no-lux-representation) + (exception: undefined_has_no_lux_representation) - (exception: (unknown-kind-of-host-object {object java/lang/Object}) + (exception: (unknown_kind_of_host_object {object java/lang/Object}) (exception.report ["Class" (java/lang/Object::toString (java/lang/Object::getClass object))] ["Object" (java/lang/Object::toString object)])) - (def: (check-int js-object) - (-> jdk/nashorn/api/scripting/ScriptObjectMirror + (def: (check_int js_object) + (-> org/openjdk/nashorn/api/scripting/ScriptObjectMirror (Maybe Int)) - (case [(jdk/nashorn/api/scripting/JSObject::getMember [runtime.i64-high-field] js-object) - (jdk/nashorn/api/scripting/JSObject::getMember [runtime.i64-low-field] js-object)] + (case [(org/openjdk/nashorn/api/scripting/JSObject::getMember [runtime.i64_high_field] js_object) + (org/openjdk/nashorn/api/scripting/JSObject::getMember [runtime.i64_low_field] js_object)] (^multi [(#.Some high) (#.Some low)] [[(host.check java/lang/Number high) (host.check java/lang/Number low)] @@ -271,25 +283,25 @@ [[(java/lang/Number::longValue high) (java/lang/Number::longValue low)] [high low]]) - (#.Some (.int (n.+ (|> high .nat (i64.left-shift 32)) + (#.Some (.int (n.+ (|> high .nat (i64.left_shift 32)) (if (i.< +0 (.int low)) - (|> low .nat (i64.left-shift 32) (i64.logic-right-shift 32)) + (|> low .nat (i64.left_shift 32) (i64.logic_right_shift 32)) (.nat low))))) _ #.None)) - (def: (check-variant lux-object js-object) + (def: (check_variant lux_object js_object) (-> (-> java/lang/Object (Try Any)) - jdk/nashorn/api/scripting/ScriptObjectMirror + org/openjdk/nashorn/api/scripting/ScriptObjectMirror (Maybe Any)) - (case [(jdk/nashorn/api/scripting/JSObject::getMember [runtime.variant-tag-field] js-object) - (jdk/nashorn/api/scripting/JSObject::getMember [runtime.variant-flag-field] js-object) - (jdk/nashorn/api/scripting/JSObject::getMember [runtime.variant-value-field] js-object)] + (case [(org/openjdk/nashorn/api/scripting/JSObject::getMember [runtime.variant_tag_field] js_object) + (org/openjdk/nashorn/api/scripting/JSObject::getMember [runtime.variant_flag_field] js_object) + (org/openjdk/nashorn/api/scripting/JSObject::getMember [runtime.variant_value_field] js_object)] (^multi [(#.Some tag) ?flag (#.Some value)] [(host.check java/lang/Number tag) (#.Some tag)] - [(lux-object value) + [(lux_object value) (#.Some value)]) (#.Some [(java/lang/Number::intValue tag) (maybe.default (host.null) ?flag) @@ -298,26 +310,26 @@ _ #.None)) - (def: (check-array lux-object js-object) + (def: (check_array lux_object js_object) (-> (-> java/lang/Object (Try Any)) - jdk/nashorn/api/scripting/ScriptObjectMirror + org/openjdk/nashorn/api/scripting/ScriptObjectMirror (Maybe (Array java/lang/Object))) - (if (jdk/nashorn/api/scripting/JSObject::isArray js-object) - (let [num-keys (.nat (jdk/nashorn/api/scripting/ScriptObjectMirror::size js-object))] + (if (org/openjdk/nashorn/api/scripting/JSObject::isArray js_object) + (let [num_keys (.nat (org/openjdk/nashorn/api/scripting/ScriptObjectMirror::size js_object))] (loop [idx 0 output (: (Array java/lang/Object) - (array.new num-keys))] - (if (n.< num-keys idx) - (case (jdk/nashorn/api/scripting/JSObject::getMember (%.nat idx) js-object) + (array.new num_keys))] + (if (n.< num_keys idx) + (case (org/openjdk/nashorn/api/scripting/JSObject::getMember (%.nat idx) js_object) (#.Some member) - (case (host.check jdk/nashorn/internal/runtime/Undefined member) + (case (host.check org/openjdk/nashorn/internal/runtime/Undefined member) (#.Some _) (recur (inc idx) output) #.None - (case (lux-object member) - (#try.Success parsed-member) - (recur (inc idx) (array.write idx (:coerce java/lang/Object parsed-member) output)) + (case (lux_object member) + (#try.Success parsed_member) + (recur (inc idx) (array.write! idx (:coerce java/lang/Object parsed_member) output)) (#try.Failure error) #.None)) @@ -327,102 +339,102 @@ (#.Some output)))) #.None)) - (def: (lux-object js-object) + (def: (lux_object js_object) (-> java/lang/Object (Try Any)) - (`` (<| (if (host.null? js-object) - (exception.throw ..null-has-no-lux-representation [#.None])) - (case (host.check jdk/nashorn/internal/runtime/Undefined js-object) + (`` (<| (if (host.null? js_object) + (exception.throw ..null_has_no_lux_representation [#.None])) + (case (host.check org/openjdk/nashorn/internal/runtime/Undefined js_object) (#.Some _) - (exception.throw ..undefined-has-no-lux-representation []) + (exception.throw ..undefined_has_no_lux_representation []) #.None) (~~ (template [<class>] - [(case (host.check <class> js-object) - (#.Some js-object) - (exception.return js-object) + [(case (host.check <class> js_object) + (#.Some js_object) + (exception.return js_object) #.None)] [java/lang/Boolean] [java/lang/String])) (~~ (template [<class> <method>] - [(case (host.check <class> js-object) - (#.Some js-object) - (exception.return (<method> js-object)) + [(case (host.check <class> js_object) + (#.Some js_object) + (exception.return (<method> js_object)) #.None)] [java/lang/Number java/lang/Number::doubleValue] - [StructureValue StructureValue::getValue] - [IntValue IntValue::getValue])) - (case (host.check jdk/nashorn/api/scripting/ScriptObjectMirror js-object) - (#.Some js-object) - (case (check-int js-object) + [program/StructureValue program/StructureValue::getValue] + [program/IntValue program/IntValue::getValue])) + (case (host.check org/openjdk/nashorn/api/scripting/ScriptObjectMirror js_object) + (#.Some js_object) + (case (check_int js_object) (#.Some value) (exception.return value) #.None - (case (check-variant lux-object js-object) + (case (check_variant lux_object js_object) (#.Some value) (exception.return value) #.None - (case (check-array lux-object js-object) + (case (check_array lux_object js_object) (#.Some value) (exception.return value) #.None - (if (jdk/nashorn/api/scripting/JSObject::isFunction js-object) - (exception.return js-object) - (exception.throw ..unknown-kind-of-host-object (:coerce java/lang/Object js-object)))))) + (if (org/openjdk/nashorn/api/scripting/JSObject::isFunction js_object) + (exception.return js_object) + (exception.throw ..unknown_kind_of_host_object (:coerce java/lang/Object js_object)))))) #.None) ## else - (exception.throw ..unknown-kind-of-host-object (:coerce java/lang/Object js-object)) + (exception.throw ..unknown_kind_of_host_object (:coerce java/lang/Object js_object)) ))) - (def: (ensure-function function) - (-> Any (Maybe jdk/nashorn/api/scripting/JSObject)) + (def: (ensure_function function) + (-> Any (Maybe org/openjdk/nashorn/api/scripting/JSObject)) (do maybe.monad [function (|> function (:coerce java/lang/Object) - (host.check jdk/nashorn/api/scripting/JSObject))] - (if (jdk/nashorn/api/scripting/JSObject::isFunction function) + (host.check org/openjdk/nashorn/api/scripting/JSObject))] + (if (org/openjdk/nashorn/api/scripting/JSObject::isFunction function) (#.Some function) #.None))) ) @.js - (as-is)}) + (as_is)}) (for {@.old - (as-is (def: (call-macro inputs lux macro) - (-> (List Code) Lux jdk/nashorn/api/scripting/JSObject (Try (Try [Lux (List Code)]))) - (let [to-js (: (-> Any java/lang/Object) - (|>> (:coerce (Array java/lang/Object)) js-structure (:coerce java/lang/Object)))] + (as_is (def: (call_macro inputs lux macro) + (-> (List Code) Lux org/openjdk/nashorn/api/scripting/JSObject (Try (Try [Lux (List Code)]))) + (let [to_js (: (-> Any java/lang/Object) + (|>> (:coerce (Array java/lang/Object)) js_structure (:coerce java/lang/Object)))] (<| (:coerce (Try (Try [Lux (List Code)]))) - (jdk/nashorn/api/scripting/JSObject::call #.None - (|> (array.new 2) - (: (Array java/lang/Object)) - (array.write 0 (to-js inputs)) - (array.write 1 (to-js lux))) - macro)))) - - (exception: (cannot-apply-a-non-function {object java/lang/Object}) + (org/openjdk/nashorn/api/scripting/JSObject::call #.None + (|> (array.new 2) + (: (Array java/lang/Object)) + (array.write! 0 (to_js inputs)) + (array.write! 1 (to_js lux))) + macro)))) + + (exception: (cannot_apply_a_non_function {object java/lang/Object}) (exception.report ["Object" (java/lang/Object::toString object)])) (def: (expander macro inputs lux) Expander - (case (..ensure-function macro) + (case (..ensure_function macro) (#.Some macro) - (case (call-macro inputs lux macro) + (case (call_macro inputs lux macro) (#try.Success output) (|> output (:coerce java/lang/Object) - lux-object + lux_object (:coerce (Try (Try [Lux (List Code)])))) (#try.Failure error) (#try.Failure error)) #.None - (exception.throw ..cannot-apply-a-non-function (:coerce java/lang/Object macro)))) + (exception.throw ..cannot_apply_a_non_function (:coerce java/lang/Object macro)))) ) @.js @@ -432,16 +444,16 @@ }) (for {@.old - (as-is (def: (evaluate! interpreter alias input) + (as_is (def: (evaluate! interpreter alias input) (-> javax/script/ScriptEngine Context _.Expression (Try Any)) (do try.monad [?output (javax/script/ScriptEngine::eval (_.code input) interpreter)] (case ?output (#.Some output) - (..lux-object output) + (..lux_object output) #.None - (exception.throw ..null-has-no-lux-representation [(#.Some input)])))) + (exception.throw ..null_has_no_lux_representation [(#.Some input)])))) (def: (execute! interpreter input) (-> javax/script/ScriptEngine _.Statement (Try Any)) @@ -462,7 +474,7 @@ (def: host (IO (Host _.Expression _.Statement)) (io (let [interpreter (javax/script/ScriptEngineFactory::getScriptEngine - (jdk/nashorn/api/scripting/NashornScriptEngineFactory::new))] + (org/openjdk/nashorn/api/scripting/NashornScriptEngineFactory::new))] (: (Host _.Expression _.Statement) (structure (def: evaluate! (..evaluate! interpreter)) @@ -470,19 +482,19 @@ (def: define! (..define! interpreter)) (def: (ingest context content) - (|> content encoding.from-utf8 try.assume (:coerce _.Statement))) + (|> content (\ encoding.utf8 decode) try.assume (:coerce _.Statement))) - (def: (re-learn context content) + (def: (re_learn context content) (..execute! interpreter content)) - (def: (re-load context content) + (def: (re_load context content) (do try.monad [_ (..execute! interpreter content)] (..evaluate! interpreter context (_.var (reference.artifact context)))))))))) ) @.js - (as-is (def: (eval code) + (as_is (def: (eval code) (-> Text (Maybe Any)) ## Note: I have to call "eval" this way ## in order to avoid a quirk of calling eval in Node @@ -501,7 +513,7 @@ (wrap output) #.None - (exception.throw ..null-has-no-lux-representation [(#.Some input)])))) + (exception.throw ..null_has_no_lux_representation [(#.Some input)])))) (def: (execute! input) (-> _.Statement (Try Any)) @@ -528,12 +540,12 @@ (def: define! ..define!) (def: (ingest context content) - (|> content encoding.from-utf8 try.assume (:coerce _.Statement))) + (|> content encoding.from_utf8 try.assume (:coerce _.Statement))) - (def: (re-learn context content) + (def: (re_learn context content) (..execute! content)) - (def: (re-load context content) + (def: (re_load context content) (do try.monad [_ (..execute! content)] (..evaluate! context (_.var (reference.artifact context))))))))) @@ -543,22 +555,22 @@ (IO (Platform [Register Text] _.Expression _.Statement)) (do io.monad [host ..host] - (wrap {#platform.&file-system (file.async file.system) + (wrap {#platform.&file_system (file.async file.default) #platform.host host #platform.phase js.generate #platform.runtime runtime.generate - #platform.write (|>> _.code encoding.to-utf8)}))) + #platform.write (|>> _.code (\ encoding.utf8 encode))}))) (def: (program namer context program) (-> (-> Context Text) (Program _.Expression _.Statement)) (let [@process (_.var "process") - on-node-js? (|> (|> @process _.type-of (_.= (_.string "undefined")) _.not) + on_node_js? (|> (|> @process _.type_of (_.= (_.string "undefined")) _.not) (_.and (|> @process (_.the "argv")))) - node-js-inputs (|> @process (_.the "argv") (_.do "slice" (list (_.int +2)))) - no-inputs (_.array (list))] - (_.statement (_.apply/1 (_.apply/1 program (runtime.lux//program-args (_.? on-node-js? - node-js-inputs - no-inputs))) + node_js_inputs (|> @process (_.the "argv") (_.do "slice" (list (_.int +2)))) + no_inputs (_.array (list))] + (_.statement (_.apply/1 (_.apply/1 program (runtime.lux//program_args (_.? on_node_js? + node_js_inputs + no_inputs))) (_.string ""))))) (for {@.old @@ -577,35 +589,35 @@ try.assume (:coerce Try) (do try.monad - [handler (try.from-maybe (..ensure-function handler)) - #let [to-js (: (-> Any java/lang/Object) - (|>> (:coerce (Array java/lang/Object)) js-structure (:coerce java/lang/Object)))] - output (jdk/nashorn/api/scripting/JSObject::call #.None - (|> (array.new 5) - (: (Array java/lang/Object)) - (array.write 0 name) - (array.write 1 (to-js phase)) - (array.write 2 (to-js archive)) - (array.write 3 (to-js parameters)) - (array.write 4 (to-js state))) - handler)] - (lux-object (:coerce java/lang/Object output))))) + [handler (try.from_maybe (..ensure_function handler)) + #let [to_js (: (-> Any java/lang/Object) + (|>> (:coerce (Array java/lang/Object)) js_structure (:coerce java/lang/Object)))] + output (org/openjdk/nashorn/api/scripting/JSObject::call #.None + (|> (array.new 5) + (: (Array java/lang/Object)) + (array.write! 0 name) + (array.write! 1 (to_js phase)) + (array.write! 2 (to_js archive)) + (array.write! 3 (to_js parameters)) + (array.write! 4 (to_js state))) + handler)] + (lux_object (:coerce java/lang/Object output))))) @.js (def: (extender handler) Extender (:assume handler))}) -(def: (declare-success! _) +(def: (declare_success! _) (-> Any (Promise Any)) - (promise.future (io.exit +0))) + (promise.future (\ world/program.default exit +0))) (program: [{service /cli.service}] (exec (do promise.monad [_ (/.compiler {#/static.host @.js - #/static.host-module-extension ".js" + #/static.host_module_extension ".js" #/static.target (/cli.target service) - #/static.artifact-extension ".js"} + #/static.artifact_extension ".js"} ..expander analysis.bundle ..platform @@ -615,7 +627,7 @@ [(& Register Text) _.Expression _.Statement] ..extender service - [(packager.package _.use-strict _.code _.then) - (format (/cli.target service) (:: file.system separator) "program.js")])] - (..declare-success! [])) + [(packager.package _.use_strict _.code _.then) + (format (/cli.target service) (\ file.default separator) "program.js")])] + (..declare_success! [])) (io.io []))) |