forked from willthames/photodeck.lrdevplugin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PhotoDeckUtils.lua
93 lines (79 loc) · 1.97 KB
/
PhotoDeckUtils.lua
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
local PhotoDeckUtils = {}
function PhotoDeckUtils.isType(v, t)
return type(v) == t
end
function PhotoDeckUtils.isString(v)
return PhotoDeckUtils.isType(v, 'string')
end
function PhotoDeckUtils.isNumber(v)
return PhotoDeckUtils.isType(v, 'number')
end
function PhotoDeckUtils.isTable(v)
return PhotoDeckUtils.isType(v, 'table')
end
function PhotoDeckUtils.isFunction(v)
return PhotoDeckUtils.isType(v, 'function')
end
function PhotoDeckUtils.isBoolean(v)
return PhotoDeckUtils.isType(v, 'boolean')
end
function PhotoDeckUtils.toString(v)
if PhotoDeckUtils.isBoolean(v) then
return v and 'true' or 'false'
end
if PhotoDeckUtils.isFunction(v) then
return 'function'
end
return tostring(v)
end
function PhotoDeckUtils.printTable(t)
if PhotoDeckUtils.isTable(t) then
local result = {}
for k, v in pairs(t) do
local current = ''
if PhotoDeckUtils.isString(k) then
current = current .. k .. ' = '
end
table.insert(result, current .. PhotoDeckUtils.printTable(v))
end
return '{ ' .. table.concat(result, ', ') .. ' }'
else
return PhotoDeckUtils.toString(t)
end
end
function PhotoDeckUtils.map(t, f)
local result = {}
for k, v in pairs(t) do
result[k] = f(v)
end
return result
end
function PhotoDeckUtils.filter(t, p)
local result = {}
for k, v in pairs(t) do
if p(v) then
if PhotoDeckUtils.isNumber(k) then
table.insert(result, v)
else
result[k] = v
end
end
end
return result
end
-- for LightRoom tables which are typically of the form
-- { { field = "Content-Type", value = "text/html" },
-- { field = "Server", value = "Apache" },
-- }
function PhotoDeckUtils.printLrTable(t, sep)
sep = sep or '\n'
local result = {}
for _, v in ipairs(t) do
table.insert(result, v.field .. ' = ' .. v.value)
end
return table.concat(result, sep)
end
function PhotoDeckUtils.basename(path)
return string.match(path, '([^/\\]*)$')
end
return PhotoDeckUtils