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