이 모듈에 대한 설명문서는 모듈:Infobox/설명문서에서 만들 수 있습니다
local infobox = require('Module:@en/Infobox')
local p = {}
local function _infobox(frame, template)
local originArgs = {}
if not template then
if frame == mw.getCurrentFrame() then
originArgs = frame:getParent().args
else
originArgs = frame
end
else
for k,v in pairs(frame.args) do originArgs[k] = mw.text.trim(v) end
end
local singleParamsL10nMap = {
['이름'] = 'name',
['주제'] = 'header',
['주제id'] = 'headerid',
['주제속성'] = 'headerclass',
['주제모양'] = 'headerstyle',
['항목'] = 'label',
['항목id'] = 'labelid',
['항목모양'] = 'labelstyle',
['내용'] = 'data',
['내용id'] = 'dataid',
['내용모양'] = 'datastyle',
['속성'] = 'class',
['행id'] = 'rowid',
['행속성'] = 'rowclass',
['행모양'] = 'rowstyle',
['행셀모양'] = 'rowcellstyle',
['큰제목'] = 'title',
['큰제목속성'] = 'titleclass',
['큰제목모양'] = 'titlestyle',
['제목'] = 'above',
['제목속성'] = 'aboveclass',
['제목모양'] = 'abovestyle',
['아랫글'] = 'below',
['아랫글속성'] = 'belowclass',
['아랫글모양'] = 'belowstyle',
['작은제목'] = 'subheader',
['작은제목모양'] = 'subheaderstyle',
['작은제목속성'] = 'subheaderclass',
['작은제목행속성'] = 'subheaderrowclass',
['그림'] = 'image',
['설명'] = 'caption',
['그림설명'] = 'caption',
['그림모양'] = 'imagestyle',
['그림속성'] = 'imageclass',
['그림행속성'] = 'imagerowclass',
['그림설명모양'] = 'captionstyle',
['전체속성'] = 'bodyclass',
['전체모양'] = 'bodystyle',
}
local generalParamsL10nMap = {
['작은제목'] = 'subheader',
['작은제목행속성'] = 'subheaderrowclass',
['그림'] = 'image',
['설명'] = 'caption',
['그림설명'] = 'caption',
['주제'] = 'header',
['항목'] = 'label',
['내용'] = 'data',
['내용모양'] = 'datastyle',
['속성'] = 'class',
['행속성'] = 'rowclass',
['행모양'] = 'rowstyle',
['행셀모양'] = 'rowcellstyle',
['내용id'] = 'dataid',
['항목id'] = 'labelid',
['주제id'] = 'headerid',
['행id'] = 'rowid',
}
local traslatedArgs = {}
-- 시간복잡도 O(n) (n은 #singleParamsL10nMap)
for localParam, enParam in pairs(singleParamsL10nMap) do
if originArgs[localParam] ~= nil and originArgs[localParam] ~= '' then
traslatedArgs[enParam] = originArgs[localParam]
end
end
-- 시간복잡도 O(m*n) (m은 #originArgs, n은 #generalParamsL10nMap)
for k, v in pairs(originArgs) do
for localParam, enParam in pairs(generalParamsL10nMap) do
local num = tostring(k):match('^' .. localParam .. '([1-9]%d*)$')
if num then
traslatedArgs[enParam .. num] = v
break
end
end
end
newArgs = {}
for k, v in pairs(frame.args) do
newArgs[k] = v
end
for k, v in pairs(traslatedArgs) do
newArgs[k] = v
end
frame.args = newArgs
return infobox.infoboxTemplate(frame)
end
function p.infobox(frame)
return _infobox(frame, false)
end
function p.infoboxTemplate(frame)
return _infobox(frame, true)
end
return p