blob: 909ec49abb924a1f734a64b8a6d759b0bb39775a (
plain)
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
|
local json = require "lib.json"
local M = {}
function M.get_palette()
local f = io.open("palette.json", "r")
if not f then error("couldn't open palette.json") end
local data = f:read("a")
f:close()
return json.decode(data)
end
-- This is taken from http://lua-users.org/wiki/SortedIteration
-- This version is stripped of comments and empty lines + some stuff is renamed
local function __gen_oindex(t)
local oindex = {}
for key in pairs(t) do
table.insert(oindex, key)
end
table.sort(oindex)
return oindex
end
function M.onext(t, state)
local key = nil
if state == nil then
t.__oindex = __gen_oindex(t)
key = t.__oindex[1]
else
for i = 1, #t.__oindex do
if t.__oindex[i] == state then
key = t.__oindex[i + 1]
end
end
end
if key then
return key, t[key]
end
t.__oindex = nil
end
function M.opairs(t)
return M.onext, t, nil
end
return M
|