From abb257aae33b7c794eb7fcb604f2464684aed176 Mon Sep 17 00:00:00 2001 From: kaeza Date: Tue, 29 Oct 2013 17:37:36 -0200 Subject: Some refactoring. --- lib.lua | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lib.lua (limited to 'lib.lua') diff --git a/lib.lua b/lib.lua new file mode 100644 index 0000000..1268b04 --- /dev/null +++ b/lib.lua @@ -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 -- cgit v1.2.3