blob: 5ed3e31d70920ed48935f02271c24ea18a0f5223 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
function dump(o)
if type(o) == 'table' then
local s = '{ '
for k, v in pairs(o) do
if type(k) ~= 'number' then k = '"' .. k .. '"' end
s = s .. '[' .. k .. '] = ' .. dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end
function string.split(str, sep)
sep = sep or '%s'
local parts = pandoc.List()
for field, s in str:gmatch("([^" .. sep .. "]*)(" .. sep .. "?)") do
parts:insert(field)
if s == "" then return parts end
end
end
function pandoc.List:flatten()
local result = pandoc.List()
for i = 1, #self do result:extend(self[i]) end
return result
end
function pandoc.List:flatMap(fn)
local mapped = self:map(fn)
local result = pandoc.List()
for i = 1, #mapped do result:extend(mapped[i]) end
return result
end
function pandoc.List:take(n)
if n >= #self then return self end
local result = pandoc.List()
for i = 1, n do result:insert(self[i]) end
return result
end
function pandoc.List:skip(n)
local result = pandoc.List()
if n >= #self then return result end
for i = n + 1, #self do result:insert(self[i]) end
return result
end
return {
dump = dump
}
|