diff options
author | kaeza <kaeza@users.sf.net> | 2013-10-29 17:37:36 -0200 |
---|---|---|
committer | kaeza <kaeza@users.sf.net> | 2013-10-29 17:37:36 -0200 |
commit | abb257aae33b7c794eb7fcb604f2464684aed176 (patch) | |
tree | 21560d7a441522c8a1283cdfc6f2feb4b8c23719 /lib.lua | |
parent | 2866bb4ec68a63162fda76b07b7aa254e98dbfb2 (diff) |
Some refactoring.
Diffstat (limited to 'lib.lua')
-rw-r--r-- | lib.lua | 44 |
1 files changed, 44 insertions, 0 deletions
@@ -0,0 +1,44 @@ + +local escapes = { + ["\\"] = "\\", + ["n"] = "\n", + ["="] = "=", +} + +local function unescape(s) + return s:gsub("([\\]?)\\(.)", function(slash, what) + if slash and (slash ~= "") then + return "\\"..what + else + return escapes[what] or what + end + end) +end + +local function find_eq(s) + for slashes, pos in s:gmatch("([\\]*)=()") do + if (slashes:len() % 2) == 0 then + return pos - 1 + end + end +end + +function load_strings(filename) + local file, err = io.open(filename, "r") + if not file then + return nil + end + local strings = {} + for line in file:lines() do + line = line:trim() + if line ~= "" and line:sub(1, 1) ~= "#" then + local pos = find_eq(line) + if pos then + local msgid = unescape(line:sub(1, pos - 1):trim()) + strings[msgid] = unescape(line:sub(pos + 1):trim()) + end + end + end + file:close() + return strings +end |