TypesettingTools / Aegisub

Cross-platform advanced subtitle editor
http://www.aegisub.org
Other
327 stars 491 forks source link

moonscript.loadstring doesn't work from automations #49

Open Myaamori opened 5 years ago

Myaamori commented 5 years ago

Aegisub should expose some way of parsing MoonScript from an automation, e.g. by providing a function similar to Lua's loadstring, but for a string of MoonScript code.

Myaamori commented 5 years ago

It turns out that MoonScript already provides a loadstring function that can be accessed from automations. However, actually running it (or moonscript.to_lua) from an automation results in the following error:

Lua reported a runtime error:
    File "/home/x/playground/subs/automation/aoi.ScriptHandler.moon", line 103
<anonymous function at lines 94-95>
    File "/home/x/playground/subs/automation/aoi.ScriptHandler.moon", line 77
run_script
    File "/usr/share/aegisub/automation/include/moonscript.lua", line 4954
loadstring
    File "/usr/share/aegisub/automation/include/moonscript.lua", line 4941
to_lua
    File "/usr/share/aegisub/automation/include/moonscript.lua", line 4880
string
    File "/usr/share/aegisub/automation/include/moonscript.lua", line 4844
file_parser
    File "/usr/share/aegisub/automation/include/moonscript.lua", line 4748
build_grammar
    File "<C function>", line -1
?
rule 'version' is not a pattern

Compiling Aegisub against a more recent version of LPeg results in a slightly different error:

Lua reported a runtime error:
    File "/home/x/playground/subs/automation/aoi.ScriptHandler.moon", line 105
<anonymous function at lines 96-97>
    File "/home/x/playground/subs/automation/aoi.ScriptHandler.moon", line 77
run_script
    File "/usr/share/aegisub/automation/include/moonscript.lua", line 4941
to_lua
    File "/usr/share/aegisub/automation/include/moonscript.lua", line 4880
string
    File "/usr/share/aegisub/automation/include/moonscript.lua", line 4844
file_parser
    File "/usr/share/aegisub/automation/include/moonscript.lua", line 4748
build_grammar
    File "<C function>", line -1
?
grammar has no initial rule

The code resulting in the error is

moonscript.to_lua 'aegisub.log "test\n"'

Additionally, it would be good if the fact that the moonscript modules are all preloaded when running automations was documented.