モジュール:Infobox
ナビゲーションに移動
検索に移動
local p = {}
function row(header, label, data, headerstyle, labelstyle, datastyle)
if header ~= '' then
return '<tr><th colspan="2" style="'..headerstyle..'">'..header..'</th></tr>'
elseif data ~= '' then
if label ~= '' then
labelstyle = 'text-align:left; width:7em;'..labelstyle
datastyle = 'word-break:break-word;'..datastyle
return '<tr><th style="'..labelstyle..'">'..label..'</th><td style="'..datastyle..'">'..data..'</td></tr>'
else
datastyle = 'text-align:center;'..datastyle
return '<tr><td colspan="2" style="'..datastyle..'">'..data..'</td></tr>'
end
else
return ''
end
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Infobox'})
local line = ''
local bodyclass = args['bodyclass'] or ''
local bodystyle = args['bodystyle'] or ''
local title = args['title'] or ''
local titlestyle = args['titlestyle'] or ''
if args['child'] == 'yes' then
line = line..'<b>'..title..'</b></td></tr>'
else
bodyclass = 'sp-full-width '..bodyclass
bodystyle = 'width:300px; border:1px solid #aaa; background:#fff; float:right; clear:right; margin:0 0 1em 1em; font-size:small;'..bodystyle
titlestyle = 'font-size:125%; font-weight:bold;'..titlestyle
line = line..'<table class="'..bodyclass..'" style="'..bodystyle..'"><caption style="'..titlestyle..'">'..title..'</caption>'
end
local header = args['above'] or ''
local headerstyle = args['abovestyle'] or ''
headerstyle = 'font-size:125%;'..headerstyle
line = line..row(header, '', '', headerstyle, '', '')
local data = args['subheader'] or args['subheader1'] or ''
local datastyle = args['subheaderstyle'] or args['subheaderstyle1'] or ''
line = line..row('', '', data, '', '', datastyle)
local data = args['subheader2'] or ''
local datastyle = args['subheaderstyle'] or args['subheaderstyle2'] or ''
line = line..row('', '', data, '', '', datastyle)
local data = args['image'] or args['image1'] or ''
local datastyle = args['imagestyle'] or ''
line = line..row('', '', data, '', '', datastyle)
-- 画像ファイルが指定された場合のみ、画像キャプション行追加
if (args['image'] or args['image1'] or '') ~= '' then
local data = args['caption'] or args['caption1'] or ''
local datastyle = args['captionstyle'] or ''
line = line..row('', '', data, '', '', datastyle)
end
local data = args['image2'] or ''
local datastyle = args['imagestyle'] or ''
line = line..row('', '', data, '', '', datastyle)
-- 2番目の画像ファイルが指定された場合のみ、2番目の画像キャプション行追加
if (args['image2'] or '') ~= '' then
local data = args['caption2'] or ''
local datastyle = args['captionstyle'] or ''
line = line..row('', '', data, '', '', datastyle)
end
local headerstyle = args['headerstyle'] or ''
local labelstyle = args['labelstyle'] or ''
local datastyle = args['datastyle'] or ''
for i = 1, 100 do
local header = args['header'..i] or ''
local label = args['label'..i] or ''
local data = args['data'..i] or ''
line = line..row(header, label, data, headerstyle, labelstyle, datastyle)
end
local data = args['below'] or ''
local datastyle = args['belowstyle'] or ''
line = line..row('', '', data, '', '', datastyle)
local name = args['name'] or args['tnavbar'] or ''
if name ~= '' then
local data = frame:preprocess('{{Tnavbar|'..name..'|plain=1}}')
local datastyle = 'text-align:right;'
line = line..row('', '', data, '', '', datastyle)
end
if args['child'] == 'yes' then
line = line..'<tr><td colspan="2">'
else
line = line..'</table>'
end
return line
end
return p