편집 요약 없음 |
편집 요약 없음 |
||
| 2번째 줄: | 2번째 줄: | ||
function p.render(frame) | function p.render(frame) | ||
local args={} | local args,has={},false | ||
local parent=frame:getParent() | local parent=frame:getParent() | ||
if parent then for k,v in pairs(parent.args) do args[k]=v end end | if parent then for k,v in pairs(parent.args) do args[k]=v end end | ||
for k,v in pairs(frame.args) do args[k]=v end | for k,v in pairs(frame.args) do args[k]=v end | ||
local html=mw.html.create('table') | local html=mw.html.create('table'):addClass('wikitable'):css{width='100%',['border-collapse']='collapse',['table-layout']='fixed',border='none',['margin-bottom']='20px'} | ||
-- 데이터 누락 방지를 위해 for문 권장 (50번까지 스캔) | |||
for i=1,50 do | |||
local t,n,g,s,d=args['타입'..i] or '',args['이름'..i] or '',args['게스트'..i] or '',args['스텟'..i] or '',args['내용'..i] or '' | |||
if t~='' or n~='' then | if t~='' or n~='' then | ||
has=true | has=true | ||
local r=html:tag('tr') | local r=html:tag('tr') | ||
r:tag('td'):css{['background-color']='#3478bf',color='white',['font-weight']='bold',['text-align']='center',width='20%',['border-top']='2px solid #000',['border-left']='2px solid #000'}:wikitext(t) | |||
if g=='' or g:match("^%s*$") then | |||
r:tag('td'):attr('colspan','2'):css{['font-weight']='bold',['border-top']='2px solid #000',['border-right']='2px solid #000',['padding-left']='10px'}:wikitext(n) | |||
r:tag('td') | |||
else | else | ||
r:tag('td') | r:tag('td'):css{['font-weight']='bold',width='55%',['border-top']='2px solid #000',['padding-left']='10px'}:wikitext(n) | ||
r:tag('td'):css{['text-align']='center',width='25%',['border-top']='2px solid #000',['border-right']='2px solid #000'}:wikitext("<span style='color:#666;font-size:0.9em'>with </span>"..g) | |||
r:tag('td') | |||
end | end | ||
html:tag('tr'):tag('td') | html:tag('tr'):tag('td'):attr('colspan','3'):css{['background-color']='#f0f4f9',['border-left']='2px solid #000',['border-right']='2px solid #000',padding='6px 12px',['font-size']='0.9em'}:wikitext("'''추가 스탯:''' "..(s~='' and s or '없음')) | ||
c:tag('div') | local c=html:tag('tr'):tag('td'):attr('colspan','3'):css{padding='0',['border-left']='2px solid #000',['border-right']='2px solid #000',['border-bottom']='2px solid #000'}:tag('div'):addClass('mw-collapsible mw-collapsed') | ||
c:tag('div'):addClass('mw-collapsible-toggle'):css{['text-align']='center',background='#eee',['font-size']='0.85em',padding='4px',['border-top']='1px solid #ccc'}:wikitext('▼ 상세') | |||
c:tag('div'):addClass('mw-collapsible-content'):css{padding='12px',background='#fff'}:wikitext((d~='' and d~='-') and d or '상세 내용이 없습니다.') | |||
c:tag('div') | |||
end | end | ||
end | end | ||
return has and tostring(html) or "<div style='color:red;font-weight:bold'>데이터를 찾을 수 없습니다.</div>" | |||
end | end | ||
return p | return p | ||
2026년 1월 26일 (월) 18:39 판
| 교류 #1 | 반짝이는 이미테이션 | |
| 추가 스탯: 없음 | ||
▼ 상세 상세 내용이 없습니다. | ||
| 교류 #2 | 이상의 아이돌 | |
| 추가 스탯: 없음 | ||
▼ 상세 상세 내용이 없습니다. | ||
사용 예시
숫자를 늘리면 무한히 늘어납니다
{{#invoke:샤인 포스트 Be your Idol/캐릭터 메모리|render
|타입1 =
|이름1 =
|게스트1 =
|내용1 =
|타입2 =
|이름2 =
|게스트2 =
|내용2 =
}}
local p={}
function p.render(frame)
local args,has={},false
local parent=frame:getParent()
if parent then for k,v in pairs(parent.args) do args[k]=v end end
for k,v in pairs(frame.args) do args[k]=v end
local html=mw.html.create('table'):addClass('wikitable'):css{width='100%',['border-collapse']='collapse',['table-layout']='fixed',border='none',['margin-bottom']='20px'}
-- 데이터 누락 방지를 위해 for문 권장 (50번까지 스캔)
for i=1,50 do
local t,n,g,s,d=args['타입'..i] or '',args['이름'..i] or '',args['게스트'..i] or '',args['스텟'..i] or '',args['내용'..i] or ''
if t~='' or n~='' then
has=true
local r=html:tag('tr')
r:tag('td'):css{['background-color']='#3478bf',color='white',['font-weight']='bold',['text-align']='center',width='20%',['border-top']='2px solid #000',['border-left']='2px solid #000'}:wikitext(t)
if g=='' or g:match("^%s*$") then
r:tag('td'):attr('colspan','2'):css{['font-weight']='bold',['border-top']='2px solid #000',['border-right']='2px solid #000',['padding-left']='10px'}:wikitext(n)
else
r:tag('td'):css{['font-weight']='bold',width='55%',['border-top']='2px solid #000',['padding-left']='10px'}:wikitext(n)
r:tag('td'):css{['text-align']='center',width='25%',['border-top']='2px solid #000',['border-right']='2px solid #000'}:wikitext("<span style='color:#666;font-size:0.9em'>with </span>"..g)
end
html:tag('tr'):tag('td'):attr('colspan','3'):css{['background-color']='#f0f4f9',['border-left']='2px solid #000',['border-right']='2px solid #000',padding='6px 12px',['font-size']='0.9em'}:wikitext("'''추가 스탯:''' "..(s~='' and s or '없음'))
local c=html:tag('tr'):tag('td'):attr('colspan','3'):css{padding='0',['border-left']='2px solid #000',['border-right']='2px solid #000',['border-bottom']='2px solid #000'}:tag('div'):addClass('mw-collapsible mw-collapsed')
c:tag('div'):addClass('mw-collapsible-toggle'):css{['text-align']='center',background='#eee',['font-size']='0.85em',padding='4px',['border-top']='1px solid #ccc'}:wikitext('▼ 상세')
c:tag('div'):addClass('mw-collapsible-content'):css{padding='12px',background='#fff'}:wikitext((d~='' and d~='-') and d or '상세 내용이 없습니다.')
end
end
return has and tostring(html) or "<div style='color:red;font-weight:bold'>데이터를 찾을 수 없습니다.</div>"
end
return p