|
Revision 234, 1.2 kB
(checked in by cho45, 6 years ago)
|
|
lua,
lua/misc,
lua/misc/INI.lua,
lua/misc/t-sandbox.lua,
lua/misc/Test.lua,
lua/misc/t-ini.lua,
lua/misc/Class.lua,
lua/misc/t-class.lua,
lua/misc/List.lua,
lua/misc/t-list.lua,
lua/misc/SandBox.lua:
Lua の簡単なライブラリ
|
| Line | |
|---|
| 1 | --[[ |
|---|
| 2 | INI class |
|---|
| 3 | =========== |
|---|
| 4 | |
|---|
| 5 | DESCRIPTION |
|---|
| 6 | ----------- |
|---|
| 7 | |
|---|
| 8 | ini ファイルを読み書きするためのクラス |
|---|
| 9 | |
|---|
| 10 | SINOPSYS |
|---|
| 11 | -------- |
|---|
| 12 | |
|---|
| 13 | |
|---|
| 14 | INI.new({ |
|---|
| 15 | SectionName = { |
|---|
| 16 | key = "value" |
|---|
| 17 | } |
|---|
| 18 | }):write("hoge.ini") |
|---|
| 19 | |
|---|
| 20 | ini = INI.new():read("hoge.ini") |
|---|
| 21 | ini.SectionName.key |
|---|
| 22 | |
|---|
| 23 | NOTE |
|---|
| 24 | ---- |
|---|
| 25 | |
|---|
| 26 | 書きこみの際は順番が保持されません。 |
|---|
| 27 | |
|---|
| 28 | ]] |
|---|
| 29 | |
|---|
| 30 | |
|---|
| 31 | require "Class" |
|---|
| 32 | |
|---|
| 33 | INI = Class { |
|---|
| 34 | initialize = function (self, table) |
|---|
| 35 | if table then |
|---|
| 36 | for i, v in pairs(table) do |
|---|
| 37 | i = tostring(i) |
|---|
| 38 | self[i] = {} |
|---|
| 39 | for j, w in pairs(v) do |
|---|
| 40 | self[i][j] = tostring(w) |
|---|
| 41 | end |
|---|
| 42 | end |
|---|
| 43 | end |
|---|
| 44 | end, |
|---|
| 45 | |
|---|
| 46 | read = function (self, filename) |
|---|
| 47 | local sect = nil |
|---|
| 48 | local name = nil |
|---|
| 49 | for line in io.lines(filename) do |
|---|
| 50 | line = string.gsub(line, "%s*;.*", "") |
|---|
| 51 | s, e, n = string.find(line, "%[(.+)%]") |
|---|
| 52 | if s then |
|---|
| 53 | if sect then self[name] = sect end |
|---|
| 54 | name = n |
|---|
| 55 | sect = {} |
|---|
| 56 | else |
|---|
| 57 | s, e, k, v = string.find(line, "(%w+)=(.*)") |
|---|
| 58 | if s then |
|---|
| 59 | sect[k] = v |
|---|
| 60 | end |
|---|
| 61 | end |
|---|
| 62 | end |
|---|
| 63 | if sect then self[name] = sect end |
|---|
| 64 | return self |
|---|
| 65 | end, |
|---|
| 66 | |
|---|
| 67 | write = function (self, filename) |
|---|
| 68 | local f = io.open(filename, "w") |
|---|
| 69 | for i, v in pairs(self) do |
|---|
| 70 | f:write(string.format("[%s]\n", i)) |
|---|
| 71 | for j, w in pairs(v) do |
|---|
| 72 | f:write(string.format("%s=%s\n", j, w)) |
|---|
| 73 | end |
|---|
| 74 | f:write("\n") |
|---|
| 75 | end |
|---|
| 76 | f:close() |
|---|
| 77 | end, |
|---|
| 78 | } |
|---|
| 79 | |
|---|
| 80 | |
|---|