Модуль:Сущность/поля: различия между версиями
Pok (обсуждение | вклад) Новая страница: «local p = {} local getArgs = require('Module:Arguments').getArgs local function trim(s) if not s then return s end return (s:gsub('^%s*(.-)%s*$', '%1')) end local function strip_trailing_digits(s) return s:gsub('%d+$', '') end local function split_first_underscore(k) local a, b = k:match('^([^_]+)_(.+)$') return a, b end local function collect_labels_from_args(args) local meta = {} local seen = {} for k, v in pairs(args) d...» |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 19: | Строка 19: | ||
local meta = {} | local meta = {} | ||
local seen = {} | local seen = {} | ||
for k, v in pairs(args) do | for k, v in pairs(args) do | ||
if type(k) == 'string' and k:find('_', 1, true) then | if type(k) == 'string' and k:find('_', 1, true) then | ||
| Строка 36: | Строка 37: | ||
end | end | ||
end | end | ||
for k, v in pairs(args) do | |||
if type(k) == 'string' and not k:find('_', 1, true) then | |||
local key = trim(k) | |||
if key ~= '' then | |||
if v ~= nil and tostring(v) ~= '' then | |||
meta[key] = meta[key] or {} | |||
if not seen[key] then seen[key] = {} end | |||
local sval = tostring(v) | |||
if not seen[key][sval] then | |||
table.insert(meta[key], sval) | |||
seen[key][sval] = true | |||
end | |||
end | |||
end | |||
end | |||
end | |||
return meta | return meta | ||
end | end | ||
local function render_from_args(args) | local function render_from_args(args) | ||
local field = args[1 | local field = args[1] | ||
local label = args[2 | local label = args[2] | ||
field = field and trim(field) or '' | field = field and trim(field) or '' | ||
label = label and trim(label) or '' | label = label and trim(label) or '' | ||
| Строка 80: | Строка 99: | ||
function p.main(frame) | function p.main(frame) | ||
local args = getArgs(frame, {removeBlanks = false}) | local args = getArgs(frame, { removeBlanks = false }) | ||
local field = args[1] | local field = args[1] | ||