diff --git a/Nasal/debug.nas b/Nasal/debug.nas index aa90256db..40dcb8fc6 100644 --- a/Nasal/debug.nas +++ b/Nasal/debug.nas @@ -216,42 +216,27 @@ if (getprop("/sim/logging/priority") != "alert") { ## -# Loads embedded Nasal from an XML file into a Nasal namespace. -# The namespace is by default the file's basename. Optionally, -# a module can be defined in a <module> entry. The file name -# doesn't have to carry an *.xml extension. It may even be -# desirable to use *.nas, so that editors pick up Nasal syntax -# coloring. +# Loads Nasal file into namespace and executes it. The namespace +# (module name) is taken from the optional second argument, or +# derived from the Nasal file's name. # -# Usage: debug.load_xml_nasal(<filename>); +# Usage: debug.load_nasal(<filename> [, <modulename>]); # # Example: # -# debug.load_xml_nasal("Aircraft/mine/test.nas"); +# debug.load_nasal(getprop("/sim/fg-root") ~ "/Local/test.nas"); +# debug.load_nasal("/tmp/foo.nas", "test"); # -# contents of test.nas: -# -# <PropertyList> -# <module>test</module> <!-- optional --> -# <script><![CDATA[ -# -# print("I'm being reloaded."); -# -# ]]></script> -# </PropertyList> -# -var load_xml_nasal = func(file) { - var n = props.globals.getNode("/tmp/nasal", 1); - n.getNode("filename", 1).setValue(getprop("/sim/fg-root") ~ "/" ~ file); - n.getNode("targetnode", 1).setValue(n.getPath()); - if (n.getNode("module", 0) == nil) { - var basename = split(".", split("/", file)[-1])[0]; - n.getNode("module", 1).setValue(basename); - } - fgcommand("loadxml", n); - fgcommand("nasal", n); -} +var load_nasal = func(file, module = nil) { + if (module == nil) + module = split(".", split("/", file)[-1])[0]; + if (!contains(globals, module)) + globals[module] = {}; + + printlog("info", "loading ", file, " into namespace ", module); + call(compile(io.readfile(file), file), nil, nil, globals[module]); +} _setlistener("/sim/signals/nasal-dir-initialized", func {