Details | Compare with Previous | View Log
Line No. | Rev | Author | Line |
---|---|---|---|
1 | 8 | Shinni-694 | account = "MyAccountName" --your account name |
2 | Shinni-694 | files = { --a list of files to be merged |
|
3 | Shinni-694 | "Esohead.lua", |
|
4 | Shinni-694 | "Esohead2.lua" |
|
5 | Shinni-694 | } |
|
6 | Shinni-694 | output = "Output.lua" --the name of the output file |
|
7 | Shinni-694 | ||
8 | Shinni-694 | ||
9 | Shinni-694 | local function isPosition(table) |
|
10 | Shinni-694 | return (type(table[1]) == "number" and type(table[2]) == "number") |
|
11 | Shinni-694 | end |
|
12 | Shinni-694 | ||
13 | Shinni-694 | local function alreadyInTable(table, entry) |
|
14 | Shinni-694 | for _, value in pairs(table) do |
|
15 | Shinni-694 | if math.abs(entry[1] - value[1]) < 0.005 and math.abs(entry[2] - value[2]) < 0.005 then |
|
16 | Shinni-694 | return true |
|
17 | Shinni-694 | end |
|
18 | Shinni-694 | end |
|
19 | Shinni-694 | return false |
|
20 | Shinni-694 | end |
|
21 | Shinni-694 | ||
22 | Shinni-694 | local function merge(output, input) |
|
23 | Shinni-694 | ||
24 | Shinni-694 | for key, data in pairs(input) do |
|
25 | Shinni-694 | if not output[key] then |
|
26 | Shinni-694 | output[key] = data |
|
27 | Shinni-694 | elseif type(key) == "string" and type(output[key]) == "table" then |
|
28 | Shinni-694 | merge(output[key], input[key]) |
|
29 | Shinni-694 | elseif type(key) == "number" then |
|
30 | Shinni-694 | if not isPosition(input[key]) or |
|
31 | Shinni-694 | not alreadyInTable(output, input[key]) then |
|
32 | Shinni-694 | table.insert(output, data) |
|
33 | Shinni-694 | end |
|
34 | Shinni-694 | end |
|
35 | Shinni-694 | end |
|
36 | Shinni-694 | end |
|
37 | Shinni-694 | ||
38 | Shinni-694 | local function newline(level) |
|
39 | Shinni-694 | return "\n" .. string.rep(" ", 4 * level) |
|
40 | Shinni-694 | end |
|
41 | Shinni-694 | ||
42 | Shinni-694 | local function export(table, level) |
|
43 | Shinni-694 | if not level then |
|
44 | Shinni-694 | level = 0 |
|
45 | Shinni-694 | end |
|
46 | Shinni-694 | ||
47 | Shinni-694 | local result = newline(level) .. "{" |
|
48 | Shinni-694 | level = level + 1 |
|
49 | Shinni-694 | ||
50 | Shinni-694 | for key, value in pairs(table) do |
|
51 | Shinni-694 | result = result .. newline(level) |
|
52 | Shinni-694 | if type(key) == "string" then |
|
53 | Shinni-694 | result = result ..'["' .. key .. '"] = ' |
|
54 | Shinni-694 | else |
|
55 | Shinni-694 | result = result .."[" .. tostring(key) .. "] = " |
|
56 | Shinni-694 | end |
|
57 | Shinni-694 | if type(value) == "table" then |
|
58 | Shinni-694 | result = result .. export(value, level) .. "," |
|
59 | Shinni-694 | elseif type(value) == "string" then |
|
60 | Shinni-694 | result = result .. "[[" .. value .. "]]," |
|
61 | Shinni-694 | else |
|
62 | Shinni-694 | result = result .. tostring(value) .. "," |
|
63 | Shinni-694 | end |
|
64 | Shinni-694 | end |
|
65 | Shinni-694 | ||
66 | Shinni-694 | level = level - 1 |
|
67 | Shinni-694 | result = result .. newline(level) .. "}" |
|
68 | Shinni-694 | ||
69 | Shinni-694 | return result |
|
70 | Shinni-694 | end |
|
71 | Shinni-694 | ||
72 | Shinni-694 | ||
73 | Shinni-694 | local data = {} |
|
74 | Shinni-694 | for _, file in ipairs(files) do |
|
75 | Shinni-694 | dofile(file) |
|
76 | Shinni-694 | ||
77 | Shinni-694 | for account, content in pairs(Esohead_SavedVariables["Default"]) do |
|
78 | Shinni-694 | content = content["$AccountWide"] |
|
79 | Shinni-694 | merge(data, content) |
|
80 | Shinni-694 | end |
|
81 | Shinni-694 | end |
|
82 | Shinni-694 | ||
83 | Shinni-694 | ||
84 | Shinni-694 | ||
85 | Shinni-694 | local result = "Esohead_SavedVariables = " |
|
86 | Shinni-694 | result = result .. newline(0) .. "{" |
|
87 | Shinni-694 | result = result .. newline(1) .. '["Default"] = ' |
|
88 | Shinni-694 | result = result .. newline(1) .. "{" |
|
89 | Shinni-694 | result = result .. newline(2) .. '["@' .. account .. '"] = ' |
|
90 | Shinni-694 | result = result .. newline(2) .. "{" |
|
91 | Shinni-694 | result = result .. newline(3) .. '["$AccountWide"] = ' |
|
92 | Shinni-694 | result = result .. export(data, 3) .. "," |
|
93 | Shinni-694 | result = result .. newline(2) .. "}," .. newline(1) .. "}," .. newline(0) .. "}" |
|
94 | Shinni-694 | ||
95 | Shinni-694 | assert(io.open(output, 'w')):write(result) |