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.moon | |
| parent | a7adc8cbff9347606fc9c0e8d00d4af2b6b838f5 (diff) | |
Updating to support multiple method calls.
Diffstat (limited to 'nomsu_decompiler.moon')
| -rw-r--r-- | nomsu_decompiler.moon | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/nomsu_decompiler.moon b/nomsu_decompiler.moon index cb031e0..f522832 100644 --- a/nomsu_decompiler.moon +++ b/nomsu_decompiler.moon @@ -57,7 +57,11 @@ tree_to_inline_nomsu = (tree)-> return nomsu when "MethodCall" - return NomsuCode\from(tree.source, tree_to_inline_nomsu(tree[1]), "|", tree_to_inline_nomsu(tree[2])) + nomsu = NomsuCode\from(tree.source, tree_to_inline_nomsu(tree[1]), "|") + for i=2,#tree + nomsu\add "; " if i > 2 + nomsu\add tree_to_inline_nomsu(tree[i]) + return nomsu when "EscapedNomsu" inner_nomsu = tree_to_inline_nomsu(tree[1]) @@ -139,8 +143,7 @@ tree_to_inline_nomsu = (tree)-> return NomsuCode\from(tree.source, s) when "Var" - -- TODO: remove this hack: - varname = tree[1]\gsub("_", " ") + varname = tree[1] if varname == "" or is_identifier(varname) return NomsuCode\from(tree.source, "$", varname) else @@ -265,7 +268,14 @@ tree_to_nomsu = (tree)-> target_nomsu\parenthesize! nomsu\add target_nomsu nomsu\add(target_nomsu\is_multiline! and "\n..|" or "|") - nomsu\add tree_to_nomsu(tree[2]) + inner_nomsu = NomsuCode! + for i=2,#tree + inner_nomsu\add "\n" if i > 2 + inner_nomsu\add tree_to_nomsu(tree[i]) + if #tree == 2 and nomsu\trailing_line_len! + #inner_nomsu\text!\match("^[^\n]*") < MAX_LINE + nomsu\add inner_nomsu + else + nomsu\add "\n ", inner_nomsu return nomsu when "EscapedNomsu" |
