diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2018-12-14 19:23:26 -0800 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2018-12-14 19:25:03 -0800 |
| commit | 83a40b7493b19e4b55167784e073e92733344b87 (patch) | |
| tree | 758bc8986c6985fad9aabfab5a713318ef180410 /nomsu_decompiler.lua | |
| parent | a7adc8cbff9347606fc9c0e8d00d4af2b6b838f5 (diff) | |
Updating to support multiple method calls.
Diffstat (limited to 'nomsu_decompiler.lua')
| -rw-r--r-- | nomsu_decompiler.lua | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/nomsu_decompiler.lua b/nomsu_decompiler.lua index bfd78f9..0666e00 100644 --- a/nomsu_decompiler.lua +++ b/nomsu_decompiler.lua @@ -85,7 +85,14 @@ tree_to_inline_nomsu = function(tree) end return nomsu elseif "MethodCall" == _exp_0 then - return NomsuCode:from(tree.source, tree_to_inline_nomsu(tree[1]), "|", tree_to_inline_nomsu(tree[2])) + local nomsu = NomsuCode:from(tree.source, tree_to_inline_nomsu(tree[1]), "|") + for i = 2, #tree do + if i > 2 then + nomsu:add("; ") + end + nomsu:add(tree_to_inline_nomsu(tree[i])) + end + return nomsu elseif "EscapedNomsu" == _exp_0 then local inner_nomsu = tree_to_inline_nomsu(tree[1]) if not (tree[1].type == "List" or tree[1].type == "Dict" or tree[1].type == "Var") then @@ -190,7 +197,7 @@ tree_to_inline_nomsu = function(tree) end return NomsuCode:from(tree.source, s) elseif "Var" == _exp_0 then - local varname = tree[1]:gsub("_", " ") + local varname = tree[1] if varname == "" or is_identifier(varname) then return NomsuCode:from(tree.source, "$", varname) else @@ -340,7 +347,18 @@ tree_to_nomsu = function(tree) end nomsu:add(target_nomsu) nomsu:add(target_nomsu:is_multiline() and "\n..|" or "|") - nomsu:add(tree_to_nomsu(tree[2])) + local inner_nomsu = NomsuCode() + for i = 2, #tree do + if i > 2 then + inner_nomsu:add("\n") + end + inner_nomsu:add(tree_to_nomsu(tree[i])) + end + if #tree == 2 and nomsu:trailing_line_len() + #inner_nomsu:text():match("^[^\n]*") < MAX_LINE then + nomsu:add(inner_nomsu) + else + nomsu:add("\n ", inner_nomsu) + end return nomsu elseif "EscapedNomsu" == _exp_0 then nomsu = recurse(tree[1]) |
