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

편집 요약 없음
편집 요약 없음
5번째 줄: 5번째 줄:
     local vars = {}
     local vars = {}


    -- 1. 빈 값이 아닌 인자만 수집
     for k, v in pairs(args) do
     for k, v in pairs(args) do
         if v and v ~= '' then
        -- 인자값이 있는지 확실히 체크 (공백 제거 후 확인)
             vars[k] = v
        local val = mw.text.trim(v or '')
         if val ~= '' then
             vars[k] = val
         end
         end
     end
     end


    -- 인자가 하나도 없으면 루아 에러 메시지를 출력해봅시다 (디버깅용)
     if next(vars) == nil then
     if next(vars) == nil then
         return ''
         return '<span style="color:red;">[CSSVars 에러: 인자가 없습니다]</span>'
     end
     end


    -- 2. JSON 인코딩
     local json = mw.text.jsonEncode(vars)
     local json = mw.text.jsonEncode(vars)
   
    -- 안전하게 이스케이프 (따옴표 등)
    local escapedJson = mw.text.encode(json)


     -- 3. HTML 속성 내에서 안전하게 사용할 수 있도록 escape 처리
     -- 태그가 확실히 남도록 'hidden' 속성 대신 스타일로 숨김
    -- mw.text.nowiki 대신 속성값 처리에 특화된 처리가 필요할 수 있습니다.
     return '<span class="mw-page-css-vars" data-vars="' .. escapedJson .. '" style="display:block; width:0; height:0; overflow:hidden;">실행됨</span>'
    -- 특히 작은따옴표(')가 값에 포함될 경우 HTML 구조가 깨질 수 있으므로 큰따옴표를 권장합니다.
     return string.format(
        '<span class="mw-page-css-vars" style="display:none;" data-vars="%s">&nbsp;</span>',
        mw.text.encode(json, "\"") -- 큰따옴표 등 특수문자 이스케이프
    )
end
end


return p
return p

2026년 1월 28일 (수) 18:49 판

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

local p = {}

function p.set(frame)
    local args = frame:getParent().args
    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 style="color:red;">[CSSVars 에러: 인자가 없습니다]</span>'
    end

    local json = mw.text.jsonEncode(vars)
    
    -- 안전하게 이스케이프 (따옴표 등)
    local escapedJson = mw.text.encode(json)

    -- 태그가 확실히 남도록 'hidden' 속성 대신 스타일로 숨김
    return '<span class="mw-page-css-vars" data-vars="' .. escapedJson .. '" style="display:block; width:0; height:0; overflow:hidden;">실행됨</span>'
end

return p