rufus-lua-moon 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/vendor/lua/moon/init.moon +1 -0
- data/vendor/lua/moonscript/compile.lua +317 -175
- data/vendor/lua/moonscript/compile/format.lua +0 -6
- data/vendor/lua/moonscript/compile/statement.lua +60 -28
- data/vendor/lua/moonscript/compile/value.lua +27 -48
- data/vendor/lua/moonscript/data.lua +7 -3
- data/vendor/lua/moonscript/dump.lua +5 -11
- data/vendor/lua/moonscript/errors.lua +35 -1
- data/vendor/lua/moonscript/init.lua +18 -7
- data/vendor/lua/moonscript/parse.lua +202 -63
- data/vendor/lua/moonscript/transform.lua +603 -117
- data/vendor/lua/moonscript/types.lua +42 -9
- data/vendor/lua/moonscript/util.lua +38 -1
- data/vendor/lua/moonscript/version.lua +1 -1
- metadata +1 -1
@@ -10,8 +10,11 @@ manual_return = data.Set({
|
|
10
10
|
})
|
11
11
|
cascading = data.Set({
|
12
12
|
"if",
|
13
|
+
"unless",
|
13
14
|
"with",
|
14
|
-
"switch"
|
15
|
+
"switch",
|
16
|
+
"class",
|
17
|
+
"do"
|
15
18
|
})
|
16
19
|
is_value = function(stm)
|
17
20
|
local compile, transform = moonscript.compile, moonscript.transform
|
@@ -21,12 +24,18 @@ comprehension_has_value = function(comp)
|
|
21
24
|
return is_value(comp[2])
|
22
25
|
end
|
23
26
|
ntype = function(node)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
+
local _exp_0 = type(node)
|
28
|
+
if "nil" == _exp_0 then
|
29
|
+
return "nil"
|
30
|
+
elseif "table" == _exp_0 then
|
27
31
|
return node[1]
|
32
|
+
else
|
33
|
+
return "value"
|
28
34
|
end
|
29
35
|
end
|
36
|
+
value_is_singular = function(node)
|
37
|
+
return type(node) ~= "table" or node[1] ~= "exp" or #node == 2
|
38
|
+
end
|
30
39
|
is_slice = function(node)
|
31
40
|
return ntype(node) == "chain" and ntype(node[#node]) == "slice"
|
32
41
|
end
|
@@ -70,7 +79,7 @@ local node_types = {
|
|
70
79
|
},
|
71
80
|
{
|
72
81
|
"body",
|
73
|
-
|
82
|
+
t
|
74
83
|
}
|
75
84
|
},
|
76
85
|
["for"] = {
|
@@ -86,6 +95,16 @@ local node_types = {
|
|
86
95
|
t
|
87
96
|
}
|
88
97
|
},
|
98
|
+
["while"] = {
|
99
|
+
{
|
100
|
+
"cond",
|
101
|
+
t
|
102
|
+
},
|
103
|
+
{
|
104
|
+
"body",
|
105
|
+
t
|
106
|
+
}
|
107
|
+
},
|
89
108
|
assign = {
|
90
109
|
{
|
91
110
|
"names",
|
@@ -116,13 +135,13 @@ local node_types = {
|
|
116
135
|
local build_table
|
117
136
|
build_table = function()
|
118
137
|
local key_table = { }
|
119
|
-
for
|
138
|
+
for node_name, args in pairs(node_types) do
|
120
139
|
local index = { }
|
121
140
|
for i, tuple in ipairs(args) do
|
122
|
-
local
|
123
|
-
index[
|
141
|
+
local prop_name = tuple[1]
|
142
|
+
index[prop_name] = i + 1
|
124
143
|
end
|
125
|
-
key_table[
|
144
|
+
key_table[node_name] = index
|
126
145
|
end
|
127
146
|
return key_table
|
128
147
|
end
|
@@ -159,6 +178,9 @@ end
|
|
159
178
|
build = nil
|
160
179
|
build = setmetatable({
|
161
180
|
group = function(body)
|
181
|
+
if body == nil then
|
182
|
+
body = { }
|
183
|
+
end
|
162
184
|
return {
|
163
185
|
"group",
|
164
186
|
body
|
@@ -184,6 +206,16 @@ build = setmetatable({
|
|
184
206
|
if tbl == nil then
|
185
207
|
tbl = { }
|
186
208
|
end
|
209
|
+
local _list_0 = tbl
|
210
|
+
for _index_0 = 1, #_list_0 do
|
211
|
+
local tuple = _list_0[_index_0]
|
212
|
+
if type(tuple[1]) == "string" then
|
213
|
+
tuple[1] = {
|
214
|
+
"key_literal",
|
215
|
+
tuple[1]
|
216
|
+
}
|
217
|
+
end
|
218
|
+
end
|
187
219
|
return {
|
188
220
|
"table",
|
189
221
|
tbl
|
@@ -235,3 +267,4 @@ smart_node = function(node)
|
|
235
267
|
end
|
236
268
|
})
|
237
269
|
end
|
270
|
+
return nil
|
@@ -31,7 +31,7 @@ get_closest_line = function(str, line_num)
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
get_line = function(str, line_num)
|
34
|
-
for line in str:gmatch("(
|
34
|
+
for line in str:gmatch("([^\n]*)\n?") do
|
35
35
|
if line_num == 1 then
|
36
36
|
return line
|
37
37
|
end
|
@@ -99,3 +99,40 @@ dump = function(what)
|
|
99
99
|
end
|
100
100
|
return _dump(what)
|
101
101
|
end
|
102
|
+
debug_posmap = function(posmap, moon_code, lua_code)
|
103
|
+
local tuples = (function()
|
104
|
+
local _accum_0 = { }
|
105
|
+
local _len_0 = 0
|
106
|
+
for k, v in pairs(posmap) do
|
107
|
+
_len_0 = _len_0 + 1
|
108
|
+
_accum_0[_len_0] = {
|
109
|
+
k,
|
110
|
+
v
|
111
|
+
}
|
112
|
+
end
|
113
|
+
return _accum_0
|
114
|
+
end)()
|
115
|
+
table.sort(tuples, function(a, b)
|
116
|
+
return a[1] < b[1]
|
117
|
+
end)
|
118
|
+
local lines = (function()
|
119
|
+
local _accum_0 = { }
|
120
|
+
local _len_0 = 0
|
121
|
+
local _list_0 = tuples
|
122
|
+
for _index_0 = 1, #_list_0 do
|
123
|
+
local pair = _list_0[_index_0]
|
124
|
+
local lua_line, pos = unpack(pair)
|
125
|
+
local moon_line = pos_to_line(moon_code, pos)
|
126
|
+
local lua_text = get_line(lua_code, lua_line)
|
127
|
+
local moon_text = get_closest_line(moon_code, moon_line)
|
128
|
+
local _value_0 = tostring(pos) .. "\t " .. tostring(lua_line) .. ":[ " .. tostring(trim(lua_text)) .. " ] >> " .. tostring(moon_line) .. ":[ " .. tostring(trim(moon_text)) .. " ]"
|
129
|
+
if _value_0 ~= nil then
|
130
|
+
_len_0 = _len_0 + 1
|
131
|
+
_accum_0[_len_0] = _value_0
|
132
|
+
end
|
133
|
+
end
|
134
|
+
return _accum_0
|
135
|
+
end)()
|
136
|
+
return concat(lines, "\n")
|
137
|
+
end
|
138
|
+
return nil
|