모듈:CSSVars: 두 판 사이의 차이

새 문서: local p = {} function p.set(frame) local args = frame:getParent().args local vars = {} for k, v in pairs(args) do if v and v ~= '' then vars[k] = v end end if next(vars) == nil then return '' end -- JS에서 읽을 수 있도록 JSON으로 내보냄 local json = mw.text.jsonEncode(vars) return string.format( '<span class="mw-css-vars" data-vars=\'%s\'></span>', mw.text.nowiki(json) ) end return p
 
편집 요약 없음
 
(같은 사용자의 중간 판 4개는 보이지 않습니다)
2번째 줄: 2번째 줄:


function p.set(frame)
function p.set(frame)
local args = frame:getParent().args
    -- 1. 본문 직접 호출({{#invoke:}})과 틀 경유 호출({{틀이름|...}}) 인자를 모두 병합
local vars = {}
    local args = {}
    local parentArgs = frame:getParent().args
    local directArgs = frame.args


for k, v in pairs(args) do
    -- 본문 호출 인자 먼저 담기
if v and v ~= '' then
    for k, v in pairs(directArgs) do args[k] = v end
vars[k] = v
    -- 틀 호출 인자로 덮어쓰기 (틀 인자가 우선순위가 높음)
end
    for k, v in pairs(parentArgs) do args[k] = v end
end


if next(vars) == nil then
    local vars = {}
return ''
    for k, v in pairs(args) do
end
        local val = mw.text.trim(v or '')
        if val ~= '' then
            vars[k] = val
        end
    end


-- JS에서 읽을 수 있도록 JSON으로 내보냄
    -- 디버깅용: 인자가 여전히 없다면 에러 메시지 출력
local json = mw.text.jsonEncode(vars)
    if next(vars) == nil then
        return '<span class="mw-page-css-vars-error" style="color:red;">[CSSVars] 인자가 전달되지 않았습니다. {{#invoke:모듈|set|key=value}} 형태로 입력했는지 확인하세요.</span>'
    end


return string.format(
    local json = mw.text.jsonEncode(vars)
'<span class="mw-css-vars" data-vars=\'%s\'></span>',
   
mw.text.nowiki(json)
    -- mw.text.tag를 사용하는 것이 가장 안전하게 HTML을 생성하는 방법입니다.
)
    return mw.text.tag('span', {
        class = 'mw-page-css-vars',
        ['data-vars'] = json,
        style = 'display:none;'
    }, ' ') -- 빈 칸 하나를 넣어 태그 유실 방지
end
end


return p
return p

2026년 1월 28일 (수) 18:50 기준 최신판

이 모듈에 대한 설명문서는 모듈:CSSVars/설명문서에서 만들 수 있습니다

local p = {}

function p.set(frame)
    -- 1. 본문 직접 호출({{#invoke:}})과 틀 경유 호출({{틀이름|...}}) 인자를 모두 병합
    local args = {}
    local parentArgs = frame:getParent().args
    local directArgs = frame.args

    -- 본문 호출 인자 먼저 담기
    for k, v in pairs(directArgs) do args[k] = v end
    -- 틀 호출 인자로 덮어쓰기 (틀 인자가 우선순위가 높음)
    for k, v in pairs(parentArgs) do args[k] = v end

    local vars = {}
    for k, v in pairs(args) do
        local val = mw.text.trim(v or '')
        if val ~= '' then
            vars[k] = val
        end
    end

    -- 디버깅용: 인자가 여전히 없다면 에러 메시지 출력
    if next(vars) == nil then
        return '<span class="mw-page-css-vars-error" style="color:red;">[CSSVars] 인자가 전달되지 않았습니다. {{#invoke:모듈|set|key=value}} 형태로 입력했는지 확인하세요.</span>'
    end

    local json = mw.text.jsonEncode(vars)
    
    -- mw.text.tag를 사용하는 것이 가장 안전하게 HTML을 생성하는 방법입니다.
    return mw.text.tag('span', {
        class = 'mw-page-css-vars',
        ['data-vars'] = json,
        style = 'display:none;'
    }, ' ') -- 빈 칸 하나를 넣어 태그 유실 방지
end

return p