모듈: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) | ||
-- 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 | 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