Модуль:CssVarExtractor: различия между версиями

Материал из Space Station 14 Вики
мНет описания правки
мНет описания правки
 
Строка 6: Строка 6:
     end
     end
     input = mw.text.trim(input)
     input = mw.text.trim(input)
     local varPart, valuePart = mw.ustring.match(
     local varName, fallback = mw.ustring.match(input, "^var%((.-)%s*,%s*([^)]+)%)$")
        input,
     if varName and fallback then
        "^(var%([^,]+%))%s*,%s*([^)]+)%)$"
        return "var(" .. varName .. ")", fallback
     )
    end
     return varPart, valuePart
     return nil, nil
end
end


Строка 24: Строка 24:


function p.getVar(frameOrString)
function p.getVar(frameOrString)
     if type(frameOrString) == 'table' and frameOrString.args then
     local input = (type(frameOrString) == 'table' and frameOrString.args[1]) or frameOrString or ''
        local input = frameOrString.args[1] or ''
    return getVarInternal(input)
        return getVarInternal(input)
    end
    return getVarInternal(frameOrString)
end
end


function p.getColor(frameOrString)
function p.getColor(frameOrString)
     if type(frameOrString) == 'table' and frameOrString.args then
     local input = (type(frameOrString) == 'table' and frameOrString.args[1]) or frameOrString or ''
        local input = frameOrString.args[1] or ''
    return frameOrString:preprocess('<nowiki>' .. getColorInternal(input) .. '</nowiki>')
        return getColorInternal(input)
    end
    return getColorInternal(frameOrString)
end
end


return p
return p

Текущая версия от 07:55, 19 апреля 2025

Для документации этого модуля может быть создана страница Модуль:CssVarExtractor/doc

local p = {}

local function extractParts(input)
    if not input or type(input) ~= 'string' then
        return nil, nil
    end
    input = mw.text.trim(input)
    local varName, fallback = mw.ustring.match(input, "^var%((.-)%s*,%s*([^)]+)%)$")
    if varName and fallback then
        return "var(" .. varName .. ")", fallback
    end
    return nil, nil
end

local function getVarInternal(input)
    local varPart = extractParts(input)
    return varPart or input
end

local function getColorInternal(input)
    local _, valuePart = extractParts(input)
    return valuePart or input
end

function p.getVar(frameOrString)
    local input = (type(frameOrString) == 'table' and frameOrString.args[1]) or frameOrString or ''
    return getVarInternal(input)
end

function p.getColor(frameOrString)
    local input = (type(frameOrString) == 'table' and frameOrString.args[1]) or frameOrString or ''
    return frameOrString:preprocess('<nowiki>' .. getColorInternal(input) .. '</nowiki>')
end

return p