「モジュール:Infobox/former」の版間の差分

コメント追加
template>Waiesu
(本体列をソート)
template>Waiesu
(コメント追加)
7行目: 7行目:


function p.main(frame)
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {parentOnly = true})
local args = require('Module:Arguments').getArgs(frame, {parentOnly = true}) --引数取得
local child = (args.child == 'yes')
local child = (args.child == 'yes')
local h = {subheader = {}, image = {{}}}
local h = {subheader = {}, image = {{}}} --ヘッダー部(subheader, image)テーブル
local body, sbody = {}, {}
local body, sbody = {}, {} --本体部テーブル, ソート済み本体部テーブル
local link = args.tnavbar or args.name
local link = args.tnavbar or args.name --(フッター部)テンプレート名
local result = ''
local result = '' --結果格納用
--[[
subheader, image用引数振り分け
]]
local function args2tbl(str, k, v)
local function args2tbl(str, k, v)
local num = string.match(k, '%d*$')
local num = string.match(k, '%d*$')
39行目: 42行目:
end
end
--[[
引数振り分け
]]
for k, v in pairs(args) do
for k, v in pairs(args) do
--subheader
--subheader
54行目: 60行目:
h['image'][num]['caption'] = '<div style="' .. (args.captionstyle or '') .. '">' .. v .. '</div>'
h['image'][num]['caption'] = '<div style="' .. (args.captionstyle or '') .. '">' .. v .. '</div>'
end
end
--その他
--その他(本体部)
elseif string.match(k, '^%D+%d+$') then
elseif string.match(k, '^%D+%d+$') then
local str, num = string.match(k, '^(%D+)(%d+)$')
local str, num = string.match(k, '^(%D+)(%d+)$')
63行目: 69行目:
end
end
--[[
Template:Infobox/row
]]
local function row(header, headerstyle, label, labelstyle, data, datastyle, class, rowclass, id, itemprop, rowitemprop, itemtype, rowitemtype, itemref, rowitemref)
local function row(header, headerstyle, label, labelstyle, data, datastyle, class, rowclass, id, itemprop, rowitemprop, itemtype, rowitemtype, itemref, rowitemref)
local result =''
local result =''
79行目: 88行目:
end
end
--[[
Template:Infobox
]]
--ヘッダー部
if not child then
if not child then
--tableタグ
result = '<table class="infobox ' .. (args.bodyclass or '') .. '" style="width:22em; ' .. (args.bodystyle or '') .. '"' .. (args.bodyitemtype and (' itemscope itemtype="' .. args.bodyitemtype .. '"') or '') .. ' itemref="' .. (args.bodyitemref or '') .. '">'
result = '<table class="infobox ' .. (args.bodyclass or '') .. '" style="width:22em; ' .. (args.bodystyle or '') .. '"' .. (args.bodyitemtype and (' itemscope itemtype="' .. args.bodyitemtype .. '"') or '') .. ' itemref="' .. (args.bodyitemref or '') .. '">'
if args.title then
if args.title then
--captionタグ
result = result .. '<caption itemprop="name" class="' .. (args.titleclass or '') .. ' style="' .. (args.titlestyle  or '') .. '">' .. args.title .. '</caption>'
result = result .. '<caption itemprop="name" class="' .. (args.titleclass or '') .. ' style="' .. (args.titlestyle  or '') .. '">' .. args.title .. '</caption>'
end
end
104行目: 119行目:
end
end
--ソート
--本体部ソート
for k, v in pairs(body) do
for k, v in pairs(body) do
sbody[#sbody + 1] = v
sbody[#sbody + 1] = v
111行目: 126行目:
function (a, b) return a[1] < b[1] end
function (a, b) return a[1] < b[1] end
)
)
--本体部
for k, v in ipairs(sbody) do
for k, v in ipairs(sbody) do
result = result .. row(v.header, args.headerstyle, v.label, args.labelstyle, v.data, args.datastyle, v.class, v.rowclass, v.id, v.itemprop, v.rowitemprop, v.itemtype, v.rowitemtype, v.itemref, v.rowitemref)
result = result .. row(v.header, args.headerstyle, v.label, args.labelstyle, v.data, args.datastyle, v.class, v.rowclass, v.id, v.itemprop, v.rowitemprop, v.itemtype, v.rowitemtype, v.itemref, v.rowitemref)
end
end
--フッター部
if args.below then
if args.below then
result = result .. '<tr><td colspan="2" class="' .. (args.belowclass or '') .. '" style="text-align:center; ' .. (args.belowstyle or '') .. '">' .. args.below .. '</td></tr>'
result = result .. '<tr><td colspan="2" class="' .. (args.belowclass or '') .. '" style="text-align:center; ' .. (args.belowstyle or '') .. '">' .. args.below .. '</td></tr>'
120行目: 137行目:
if link then
if link then
--Template:Transclude
link = string.gsub(link, ':?[Tt]emplate:', '')
link = string.gsub(link, ':?[Tt]emplate:', '')
if not string.find(link, ':') then
if not string.find(link, ':') then
127行目: 145行目:
end
end
--tableタグ閉じ
if not child then
if not child then
result = result .. '</table>'
result = result .. '</table>'
end
end
--出力
return result
return result
end
end


return p
return p
匿名利用者