rufus-lua-moon 0.2.5.0 → 0.2.6.0
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/moonscript/base.lua +4 -5
- data/vendor/lua/moonscript/cmd/moonc.lua +198 -0
- data/vendor/lua/moonscript/compile/statement.lua +1 -2
- data/vendor/lua/moonscript/compile.lua +25 -28
- data/vendor/lua/moonscript/errors.lua +2 -2
- data/vendor/lua/moonscript/parse.lua +2 -26
- data/vendor/lua/moonscript/transform/destructure.lua +0 -1
- data/vendor/lua/moonscript/version.lua +7 -7
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec64394e84ba8c8288134cf012d62151406b8a1d
|
4
|
+
data.tar.gz: 1217bea89d96bed46de5accb1d54a2197182ed8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18b5ef94e1185a6e24e9a01da1d35fc767d83c24e9a2d99e51bf615b3a6ba4b97469404c0c347acb30eb793ee14b67319089efbb8930257761e396a71391f0d8
|
7
|
+
data.tar.gz: ef43c5d6c538fce5f2c61f04dd4aff8b1277c2aae791512656b2eb97242c8ab3961a3e47f9f6d5c1c43871502fc2e863838250b66552bf9cfff1fae0a482ee92
|
@@ -33,7 +33,7 @@ to_lua = function(text, options)
|
|
33
33
|
end
|
34
34
|
if "string" ~= type(text) then
|
35
35
|
local t = type(text)
|
36
|
-
return nil, "expecting string (got " .. t .. ")"
|
36
|
+
return nil, "expecting string (got " .. t .. ")"
|
37
37
|
end
|
38
38
|
local tree, err = parse.string(text)
|
39
39
|
if not tree then
|
@@ -41,7 +41,7 @@ to_lua = function(text, options)
|
|
41
41
|
end
|
42
42
|
local code, ltable, pos = compile.tree(tree, options)
|
43
43
|
if not code then
|
44
|
-
return nil, compile.format_error(ltable, pos, text)
|
44
|
+
return nil, compile.format_error(ltable, pos, text)
|
45
45
|
end
|
46
46
|
return code, ltable
|
47
47
|
end
|
@@ -60,7 +60,7 @@ moon_loader = function(name)
|
|
60
60
|
if file then
|
61
61
|
local text = file:read("*a")
|
62
62
|
file:close()
|
63
|
-
local res, err = loadstring(text, file_path)
|
63
|
+
local res, err = loadstring(text, "@" .. tostring(file_path))
|
64
64
|
if not res then
|
65
65
|
error(file_path .. ": " .. err)
|
66
66
|
end
|
@@ -90,7 +90,7 @@ loadfile = function(fname, ...)
|
|
90
90
|
end
|
91
91
|
local text = assert(file:read("*a"))
|
92
92
|
file:close()
|
93
|
-
return loadstring(text, fname, ...)
|
93
|
+
return loadstring(text, "@" .. tostring(fname), ...)
|
94
94
|
end
|
95
95
|
dofile = function(...)
|
96
96
|
local f = assert(loadfile(...))
|
@@ -128,7 +128,6 @@ return {
|
|
128
128
|
insert_loader = insert_loader,
|
129
129
|
remove_loader = remove_loader,
|
130
130
|
to_lua = to_lua,
|
131
|
-
moon_chunk = moon_chunk,
|
132
131
|
moon_loader = moon_loader,
|
133
132
|
dirsep = dirsep,
|
134
133
|
dofile = dofile,
|
@@ -0,0 +1,198 @@
|
|
1
|
+
local lfs = require("lfs")
|
2
|
+
local split
|
3
|
+
do
|
4
|
+
local _obj_0 = require("moonscript.util")
|
5
|
+
split = _obj_0.split
|
6
|
+
end
|
7
|
+
local dirsep, dirsep_chars, mkdir, normalize_dir, parse_dir, parse_file, convert_path, format_time, gettime, compile_file_text, write_file, compile_and_write, is_abs_path, path_to_target
|
8
|
+
dirsep = package.config:sub(1, 1)
|
9
|
+
if dirsep == "\\" then
|
10
|
+
dirsep_chars = "\\/"
|
11
|
+
else
|
12
|
+
dirsep_chars = dirsep
|
13
|
+
end
|
14
|
+
mkdir = function(path)
|
15
|
+
local chunks = split(path, dirsep)
|
16
|
+
local accum
|
17
|
+
for _index_0 = 1, #chunks do
|
18
|
+
local dir = chunks[_index_0]
|
19
|
+
accum = accum and tostring(accum) .. tostring(dirsep) .. tostring(dir) or dir
|
20
|
+
lfs.mkdir(accum)
|
21
|
+
end
|
22
|
+
return lfs.attributes(path, "mode")
|
23
|
+
end
|
24
|
+
normalize_dir = function(path)
|
25
|
+
return path:match("^(.-)[" .. tostring(dirsep_chars) .. "]*$") .. dirsep
|
26
|
+
end
|
27
|
+
parse_dir = function(path)
|
28
|
+
return (path:match("^(.-)[^" .. tostring(dirsep_chars) .. "]*$"))
|
29
|
+
end
|
30
|
+
parse_file = function(path)
|
31
|
+
return (path:match("^.-([^" .. tostring(dirsep_chars) .. "]*)$"))
|
32
|
+
end
|
33
|
+
convert_path = function(path)
|
34
|
+
local new_path = path:gsub("%.moon$", ".lua")
|
35
|
+
if new_path == path then
|
36
|
+
new_path = path .. ".lua"
|
37
|
+
end
|
38
|
+
return new_path
|
39
|
+
end
|
40
|
+
format_time = function(time)
|
41
|
+
return ("%.3fms"):format(time * 1000)
|
42
|
+
end
|
43
|
+
do
|
44
|
+
local socket
|
45
|
+
gettime = function()
|
46
|
+
if socket == nil then
|
47
|
+
pcall(function()
|
48
|
+
socket = require("socket")
|
49
|
+
end)
|
50
|
+
if not (socket) then
|
51
|
+
socket = false
|
52
|
+
end
|
53
|
+
end
|
54
|
+
if socket then
|
55
|
+
return socket.gettime()
|
56
|
+
else
|
57
|
+
return nil, "LuaSocket needed for benchmark"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
compile_file_text = function(text, fname, opts)
|
62
|
+
if opts == nil then
|
63
|
+
opts = { }
|
64
|
+
end
|
65
|
+
local parse = require("moonscript.parse")
|
66
|
+
local compile = require("moonscript.compile")
|
67
|
+
local parse_time
|
68
|
+
if opts.benchmark then
|
69
|
+
parse_time = assert(gettime())
|
70
|
+
end
|
71
|
+
local tree, err = parse.string(text)
|
72
|
+
if not (tree) then
|
73
|
+
return nil, err
|
74
|
+
end
|
75
|
+
if parse_time then
|
76
|
+
parse_time = gettime() - parse_time
|
77
|
+
end
|
78
|
+
if opts.show_parse_tree then
|
79
|
+
local dump = require("moonscript.dump")
|
80
|
+
dump.tree(tree)
|
81
|
+
return true
|
82
|
+
end
|
83
|
+
local compile_time
|
84
|
+
if opts.benchmark then
|
85
|
+
compile_time = gettime()
|
86
|
+
end
|
87
|
+
local code, posmap_or_err, err_pos = compile.tree(tree)
|
88
|
+
if not (code) then
|
89
|
+
return nil, compile.format_error(posmap_or_err, err_pos, text)
|
90
|
+
end
|
91
|
+
if compile_time then
|
92
|
+
compile_time = gettime() - compile_time
|
93
|
+
end
|
94
|
+
if opts.show_posmap then
|
95
|
+
local debug_posmap
|
96
|
+
do
|
97
|
+
local _obj_0 = require("moonscript.util")
|
98
|
+
debug_posmap = _obj_0.debug_posmap
|
99
|
+
end
|
100
|
+
print("Pos", "Lua", ">>", "Moon")
|
101
|
+
print(debug_posmap(posmap_or_err, text, code))
|
102
|
+
return true
|
103
|
+
end
|
104
|
+
if opts.benchmark then
|
105
|
+
print(table.concat({
|
106
|
+
fname,
|
107
|
+
"Parse time \t" .. format_time(parse_time),
|
108
|
+
"Compile time\t" .. format_time(compile_time),
|
109
|
+
""
|
110
|
+
}, "\n"))
|
111
|
+
return nil
|
112
|
+
end
|
113
|
+
return code
|
114
|
+
end
|
115
|
+
write_file = function(fname, code)
|
116
|
+
mkdir(parse_dir(fname))
|
117
|
+
local f, err = io.open(fname, "w")
|
118
|
+
if not (f) then
|
119
|
+
return nil, err
|
120
|
+
end
|
121
|
+
assert(f:write(code))
|
122
|
+
assert(f:write("\n"))
|
123
|
+
f:close()
|
124
|
+
return "build"
|
125
|
+
end
|
126
|
+
compile_and_write = function(src, dest, opts)
|
127
|
+
if opts == nil then
|
128
|
+
opts = { }
|
129
|
+
end
|
130
|
+
local f = io.open(src)
|
131
|
+
if not (f) then
|
132
|
+
return nil, "Can't find file"
|
133
|
+
end
|
134
|
+
local text = assert(f:read("*a"))
|
135
|
+
f:close()
|
136
|
+
local code, err = compile_file_text(text, opts)
|
137
|
+
if not code then
|
138
|
+
return nil, err
|
139
|
+
end
|
140
|
+
if code == true then
|
141
|
+
return true
|
142
|
+
end
|
143
|
+
if opts.print then
|
144
|
+
print(text)
|
145
|
+
return true
|
146
|
+
end
|
147
|
+
return write_file(dest, code)
|
148
|
+
end
|
149
|
+
is_abs_path = function(path)
|
150
|
+
local first = path:sub(1, 1)
|
151
|
+
if dirsep == "\\" then
|
152
|
+
return first == "/" or first == "\\" or path:sub(2, 1) == ":"
|
153
|
+
else
|
154
|
+
return first == dirsep
|
155
|
+
end
|
156
|
+
end
|
157
|
+
path_to_target = function(path, target_dir, base_dir)
|
158
|
+
if target_dir == nil then
|
159
|
+
target_dir = nil
|
160
|
+
end
|
161
|
+
if base_dir == nil then
|
162
|
+
base_dir = nil
|
163
|
+
end
|
164
|
+
local target = convert_path(path)
|
165
|
+
if target_dir then
|
166
|
+
target_dir = normalize_dir(target_dir)
|
167
|
+
end
|
168
|
+
if base_dir and target_dir then
|
169
|
+
local head = base_dir:match("^(.-)[^" .. tostring(dirsep_chars) .. "]*[" .. tostring(dirsep_chars) .. "]?$")
|
170
|
+
if head then
|
171
|
+
local start, stop = target:find(head, 1, true)
|
172
|
+
if start == 1 then
|
173
|
+
target = target:sub(stop + 1)
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
if target_dir then
|
178
|
+
if is_abs_path(target) then
|
179
|
+
target = parse_file(target)
|
180
|
+
end
|
181
|
+
target = target_dir .. target
|
182
|
+
end
|
183
|
+
return target
|
184
|
+
end
|
185
|
+
return {
|
186
|
+
dirsep = dirsep,
|
187
|
+
mkdir = mkdir,
|
188
|
+
normalize_dir = normalize_dir,
|
189
|
+
parse_dir = parse_dir,
|
190
|
+
parse_file = parse_file,
|
191
|
+
new_path = new_path,
|
192
|
+
convert_path = convert_path,
|
193
|
+
gettime = gettime,
|
194
|
+
format_time = format_time,
|
195
|
+
path_to_target = path_to_target,
|
196
|
+
compile_file_text = compile_file_text,
|
197
|
+
compile_and_write = compile_and_write
|
198
|
+
}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
local util = require("moonscript.util")
|
2
|
-
local data = require("moonscript.data")
|
3
2
|
local reversed, unpack
|
4
3
|
reversed, unpack = util.reversed, util.unpack
|
5
4
|
local ntype
|
@@ -79,7 +78,7 @@ return {
|
|
79
78
|
_with_0:append(declare)
|
80
79
|
else
|
81
80
|
if #undeclared > 0 then
|
82
|
-
self:add(declare)
|
81
|
+
self:add(declare, node[-1])
|
83
82
|
end
|
84
83
|
_with_0:append_list((function()
|
85
84
|
local _accum_0 = { }
|
@@ -61,6 +61,7 @@ do
|
|
61
61
|
local _exp_0 = mtype(l)
|
62
62
|
if "string" == _exp_0 or DelayedLine == _exp_0 then
|
63
63
|
line_no = line_no + 1
|
64
|
+
out[line_no] = posmap[i]
|
64
65
|
for _ in l:gmatch("\n") do
|
65
66
|
line_no = line_no + 1
|
66
67
|
end
|
@@ -101,7 +102,6 @@ do
|
|
101
102
|
end
|
102
103
|
end
|
103
104
|
insert(buffer, "\n")
|
104
|
-
local last = l
|
105
105
|
elseif Lines == _exp_0 then
|
106
106
|
l:flatten(indent and indent .. indent_char or indent_char, buffer)
|
107
107
|
else
|
@@ -150,38 +150,30 @@ end
|
|
150
150
|
do
|
151
151
|
local _base_0 = {
|
152
152
|
pos = nil,
|
153
|
-
_append_single = function(self, item)
|
154
|
-
if Line == mtype(item) then
|
155
|
-
if not (self.pos) then
|
156
|
-
self.pos = item.pos
|
157
|
-
end
|
158
|
-
for _index_0 = 1, #item do
|
159
|
-
local value = item[_index_0]
|
160
|
-
self:_append_single(value)
|
161
|
-
end
|
162
|
-
else
|
163
|
-
insert(self, item)
|
164
|
-
end
|
165
|
-
return nil
|
166
|
-
end,
|
167
153
|
append_list = function(self, items, delim)
|
168
154
|
for i = 1, #items do
|
169
|
-
self:
|
155
|
+
self:append(items[i])
|
170
156
|
if i < #items then
|
171
157
|
insert(self, delim)
|
172
158
|
end
|
173
159
|
end
|
174
160
|
return nil
|
175
161
|
end,
|
176
|
-
append = function(self, ...)
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
162
|
+
append = function(self, first, ...)
|
163
|
+
if Line == mtype(first) then
|
164
|
+
if not (self.pos) then
|
165
|
+
self.pos = first.pos
|
166
|
+
end
|
167
|
+
for _index_0 = 1, #first do
|
168
|
+
local value = first[_index_0]
|
169
|
+
self:append(value)
|
170
|
+
end
|
171
|
+
else
|
172
|
+
insert(self, first)
|
173
|
+
end
|
174
|
+
if ... then
|
175
|
+
return self:append(...)
|
183
176
|
end
|
184
|
-
return nil
|
185
177
|
end,
|
186
178
|
render = function(self, buffer)
|
187
179
|
local current = { }
|
@@ -209,7 +201,7 @@ do
|
|
209
201
|
insert(current, chunk)
|
210
202
|
end
|
211
203
|
end
|
212
|
-
if
|
204
|
+
if current[1] then
|
213
205
|
add_current()
|
214
206
|
end
|
215
207
|
return buffer
|
@@ -423,8 +415,14 @@ do
|
|
423
415
|
})
|
424
416
|
return name
|
425
417
|
end,
|
426
|
-
add = function(self, item)
|
427
|
-
|
418
|
+
add = function(self, item, pos)
|
419
|
+
do
|
420
|
+
local _with_0 = self._lines
|
421
|
+
_with_0:add(item)
|
422
|
+
if pos then
|
423
|
+
_with_0:mark_pos(pos)
|
424
|
+
end
|
425
|
+
end
|
428
426
|
return item
|
429
427
|
end,
|
430
428
|
render = function(self, buffer)
|
@@ -703,7 +701,6 @@ tree = function(tree, options)
|
|
703
701
|
if not (success) then
|
704
702
|
local error_msg, error_pos
|
705
703
|
if type(err) == "table" then
|
706
|
-
local error_type = err[1]
|
707
704
|
local _exp_0 = err[1]
|
708
705
|
if "user-error" == _exp_0 or "compile-error" == _exp_0 then
|
709
706
|
error_msg, error_pos = unpack(err, 2)
|
@@ -78,8 +78,8 @@ rewrite_traceback = function(text, err)
|
|
78
78
|
local cache = { }
|
79
79
|
local rewrite_single
|
80
80
|
rewrite_single = function(trace)
|
81
|
-
local fname, line, msg = trace:match('
|
82
|
-
local tbl = line_tables[fname]
|
81
|
+
local fname, line, msg = trace:match('^(.-):(%d+): (.*)$')
|
82
|
+
local tbl = line_tables["@" .. tostring(fname)]
|
83
83
|
if fname and tbl then
|
84
84
|
return concat({
|
85
85
|
fname,
|
@@ -10,7 +10,6 @@ local types = require"moonscript.types"
|
|
10
10
|
|
11
11
|
local ntype = types.ntype
|
12
12
|
|
13
|
-
local dump = util.dump
|
14
13
|
local trim = util.trim
|
15
14
|
|
16
15
|
local getfenv = util.getfenv
|
@@ -126,7 +125,7 @@ end
|
|
126
125
|
|
127
126
|
local function extract_line(str, start_pos)
|
128
127
|
str = str:sub(start_pos)
|
129
|
-
m = str:match"^(.-)\n"
|
128
|
+
local m = str:match"^(.-)\n"
|
130
129
|
if m then return m end
|
131
130
|
return str:match"^.-$"
|
132
131
|
end
|
@@ -156,13 +155,6 @@ local function got(what)
|
|
156
155
|
end)
|
157
156
|
end
|
158
157
|
|
159
|
-
local function flatten(tbl)
|
160
|
-
if #tbl == 1 then
|
161
|
-
return tbl[1]
|
162
|
-
end
|
163
|
-
return tbl
|
164
|
-
end
|
165
|
-
|
166
158
|
local function flatten_or_mark(name)
|
167
159
|
return function(tbl)
|
168
160
|
if #tbl == 1 then return tbl[1] end
|
@@ -234,7 +226,7 @@ end
|
|
234
226
|
local function simple_string(delim, allow_interpolation)
|
235
227
|
local inner = P('\\'..delim) + "\\\\" + (1 - P(delim))
|
236
228
|
if allow_interpolation then
|
237
|
-
inter = symx"#{" * V"Exp" * sym"}"
|
229
|
+
local inter = symx"#{" * V"Exp" * sym"}"
|
238
230
|
inner = (C((inner - inter)^1) + inter / mark"interpolate")^0
|
239
231
|
else
|
240
232
|
inner = C(inner^0)
|
@@ -280,16 +272,6 @@ local function wrap_decorator(stm, dec)
|
|
280
272
|
return { "decorated", stm, dec }
|
281
273
|
end
|
282
274
|
|
283
|
-
-- wrap if statement if there is a conditional decorator
|
284
|
-
local function wrap_if(stm, cond)
|
285
|
-
if cond then
|
286
|
-
local pass, fail = unpack(cond)
|
287
|
-
if fail then fail = {"else", {fail}} end
|
288
|
-
return {"if", cond[2], {stm}, fail}
|
289
|
-
end
|
290
|
-
return stm
|
291
|
-
end
|
292
|
-
|
293
275
|
local function check_lua_string(str, pos, right, left)
|
294
276
|
return #left == #right
|
295
277
|
end
|
@@ -343,18 +325,12 @@ local build_grammar = wrap_env(function()
|
|
343
325
|
return true
|
344
326
|
end
|
345
327
|
|
346
|
-
local function enable_do(str_pos)
|
347
|
-
_do_stack:push(true)
|
348
|
-
return true
|
349
|
-
end
|
350
|
-
|
351
328
|
local function pop_do(str, pos)
|
352
329
|
if nil == _do_stack:pop() then error("unexpected do pop") end
|
353
330
|
return true
|
354
331
|
end
|
355
332
|
|
356
333
|
local DisableDo = Cmt("", disable_do)
|
357
|
-
local EnableDo = Cmt("", enable_do)
|
358
334
|
local PopDo = Cmt("", pop_do)
|
359
335
|
|
360
336
|
local keywords = {}
|
@@ -1,7 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
local version = "0.2.6"
|
2
|
+
return {
|
3
|
+
version = version,
|
4
|
+
print_version = function()
|
5
|
+
return print("MoonScript version " .. tostring(version))
|
6
|
+
end
|
7
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rufus-lua-moon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stas Ukolov
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- vendor/lua/moonscript/base.lua
|
73
73
|
- vendor/lua/moonscript/cmd/coverage.lua
|
74
74
|
- vendor/lua/moonscript/cmd/lint.lua
|
75
|
+
- vendor/lua/moonscript/cmd/moonc.lua
|
75
76
|
- vendor/lua/moonscript/compile.lua
|
76
77
|
- vendor/lua/moonscript/compile/statement.lua
|
77
78
|
- vendor/lua/moonscript/compile/value.lua
|