Модуль:Сущность/поля: различия между версиями

Новая страница: «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...»
 
мНет описания правки
Строка 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] or args.field or args["field"]
     local field = args[1]
     local label = args[2] or args.label or args["label"]
     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]