diff options
-rw-r--r-- | plugins/data/button_char.lua | 6 | ||||
-rw-r--r-- | plugins/data/data_command.lua | 6 | ||||
-rw-r--r-- | plugins/data/load_dat.lua | 20 |
3 files changed, 20 insertions, 12 deletions
diff --git a/plugins/data/button_char.lua b/plugins/data/button_char.lua index cee756c2603..02c64d9673c 100644 --- a/plugins/data/button_char.lua +++ b/plugins/data/button_char.lua @@ -236,9 +236,9 @@ local convert_text = } local function convert_char(str) - str = str:gsub("@([a-zA-Z%-]+)", function(s) if convert_text[s] then return utf8.char(convert_text[s] + 0xe000) end return s end) - str = str:gsub("_(.)", function(s) if default_text[s] then return utf8.char(default_text[s] + 0xe000) end return s end) - str = str:gsub("%^(.)", function(s) if expand_text[s] then return utf8.char(expand_text[s] + 0xe000) end return s end) + str = str:gsub("@(%g+)", function(s) if convert_text[s] then return utf8.char(convert_text[s] + 0xe000) end return s end) + str = str:gsub("_(%g)", function(s) if default_text[s] then return utf8.char(default_text[s] + 0xe000) end return s end) + str = str:gsub("%^(%g)", function(s) if expand_text[s] then return utf8.char(expand_text[s] + 0xe000) end return s end) return str end diff --git a/plugins/data/data_command.lua b/plugins/data/data_command.lua index 119374544b1..f32544c5063 100644 --- a/plugins/data/data_command.lua +++ b/plugins/data/data_command.lua @@ -2,7 +2,11 @@ local dat = {} local info, ver local datread = require("data/load_dat") do - local convert = require("data/button_char") + local buttonchar + local function convert(str) + if not buttonchar then buttonchar = require("data/button_char") end + return buttonchar(str) + end datread, ver = datread.open("command.dat", "# Version:", convert) end diff --git a/plugins/data/load_dat.lua b/plugins/data/load_dat.lua index f5afeb30409..172f2ef71ca 100644 --- a/plugins/data/load_dat.lua +++ b/plugins/data/load_dat.lua @@ -1,14 +1,11 @@ local datfile = {} local db = require("data/database") -function datfile.open(file, vertag, fixupcb) - if not db then - return nil - end +local function readret(file) local function read(tag1, tag2, set) local data local stmt = db.prepare("SELECT f.data FROM \"" .. file .. "_idx\" AS fi, \"" .. file .. [[" - AS f WHERE fi.type = ? AND fi.val = ? AND fi.romset = ? AND f.rowid = fi.data]]) + AS f WHERE fi.type = ? AND fi.val = ? AND fi.romset = ? AND f.rowid = fi.data]]) db.check("reading " .. tag1 .. " - " .. tag2 .. " - " .. set) stmt:bind_values(tag1, tag2, set) if stmt:step() == db.ROW then @@ -17,7 +14,14 @@ function datfile.open(file, vertag, fixupcb) stmt:finalize() return data end + return read +end + +function datfile.open(file, vertag, fixupcb) + if not db then + return nil + end local ver, dbver local filepath local fh @@ -60,7 +64,7 @@ function datfile.open(file, vertag, fixupcb) if vertag then for line in fh:lines() do - local match = line:match(vertag .. "%s*([^%s]+)") + local match = line:match(vertag .. "%s*(%S+)") if match then ver = match break @@ -106,7 +110,7 @@ function datfile.open(file, vertag, fixupcb) if not spos then return nil end - npos, epos = buffer:find("[\n\r]$[%w]*[\n\r]+", epos) + npos, epos = buffer:find("[\n\r]$%w*[\n\r]+", epos) if not npos then return nil end @@ -164,7 +168,7 @@ function datfile.open(file, vertag, fixupcb) end fh:close() - return read, ver + return readret(file), ver end return datfile |