모듈:CSSVars: 두 판 사이의 차이
편집 요약 없음 |
편집 요약 없음 |
||
| 2번째 줄: | 2번째 줄: | ||
function p.set(frame) | function p.set(frame) | ||
local args = frame:getParent().args | |||
local vars = {} | |||
-- 1. 빈 값이 아닌 인자만 수집 | |||
for k, v in pairs(args) do | |||
if v and v ~= '' then | |||
vars[k] = v | |||
end | |||
end | |||
if next(vars) == nil then | |||
return '' | |||
end | |||
-- 2. JSON 인코딩 | |||
local json = mw.text.jsonEncode(vars) | |||
-- 3. HTML 속성 내에서 안전하게 사용할 수 있도록 escape 처리 | |||
-- mw.text.nowiki 대신 속성값 처리에 특화된 처리가 필요할 수 있습니다. | |||
-- 특히 작은따옴표(')가 값에 포함될 경우 HTML 구조가 깨질 수 있으므로 큰따옴표를 권장합니다. | |||
return string.format( | |||
'<span class="mw-page-css-vars" style="display:none;" data-vars="%s"></span>', | |||
mw.text.encode(json, "\"") -- 큰따옴표 등 특수문자 이스케이프 | |||
) | |||
end | end | ||
return p | return p | ||
2026년 1월 28일 (수) 18:34 판
이 모듈에 대한 설명문서는 모듈:CSSVars/설명문서에서 만들 수 있습니다
local p = {}
function p.set(frame)
local args = frame:getParent().args
local vars = {}
-- 1. 빈 값이 아닌 인자만 수집
for k, v in pairs(args) do
if v and v ~= '' then
vars[k] = v
end
end
if next(vars) == nil then
return ''
end
-- 2. JSON 인코딩
local json = mw.text.jsonEncode(vars)
-- 3. HTML 속성 내에서 안전하게 사용할 수 있도록 escape 처리
-- mw.text.nowiki 대신 속성값 처리에 특화된 처리가 필요할 수 있습니다.
-- 특히 작은따옴표(')가 값에 포함될 경우 HTML 구조가 깨질 수 있으므로 큰따옴표를 권장합니다.
return string.format(
'<span class="mw-page-css-vars" style="display:none;" data-vars="%s"></span>',
mw.text.encode(json, "\"") -- 큰따옴표 등 특수문자 이스케이프
)
end
return p