モジュール:Template input parse
ナビゲーションに移動
検索に移動
このモジュールについての説明文ページを モジュール:Template input parse/doc に作成できます
local p = {}
-- Helper module for various modules that require entry of multiple labels/values
-- Helper function
-- Parses entries from a delimited string and returns them in an array
-- Default delimiter is semicolon (;)
function p.parse_entries(unparsed, delimiter)
local parsed = {}
local delimiter = delimiter or ';'
local expr = '([^' .. delimiter .. ']+)'
for entry in string.gmatch(unparsed, expr) do
local trimmed = entry:gsub("^%s*(.-)%s*$", "%1")
table.insert(parsed, trimmed) -- Add to array
end
return parsed
end
-- Helper function
-- Parses entries from a delimited string and returns them in an array
-- Values entered are convereted into numbers rather than strings.
-- Default delimiter is semicolon (;)
function p.parse_numeric_entries(unparsed, delimiter)
local parsed = {}
local delimiter = delimiter or ';'
local expr = '([^' .. delimiter .. ']+)'
for entry in string.gmatch(unparsed, expr) do
local trimmed = entry:gsub("^%s*(.-)%s*$", "%1")
local numeric = tonumber(trimmed)
table.insert(parsed, numeric) -- Add to array
end
return parsed
end
-- Helper function
-- Parses pairs of values separated by a delimiter; default is colon (:)
function p.parse_pair(unparsed, delimiter)
local parsed = {}
local delimiter = delimiter or ':'
local expr = '([^' .. delimiter .. ']+)'
for entry in string.gmatch(unparsed, expr) do
local trimmed = entry:gsub("^%s*(.-)%s*$", "%1")
table.insert(parsed, trimmed) -- Add to array
end
if #parsed == 2 then
return parsed
else
return nil
end
end
-- Helper function
-- Parses key-value pairs separated by a semicolon
-- Pairs themselves are separated using a colon
function p.parse_kv_pairs(unparsed)
-- Split the string of unparsed pairs
local parsed = p.parse_entries(unparsed)
-- Then tokenize the tokens into key-value pairs
local pairs_ = {}
for i = 1, #parsed do
local pair = p.parse_pair(parsed[i])
if pair ~= nil and #pair == 2 then
pairs_[pair[1]] = pair[2]
end
end
return pairs_
end
return p