利用者:Kh0708/sandbox/sandbox03

提供:Zikipedia
ナビゲーションに移動 検索に移動

モジュール:Navbox/former

モジュール:Navbox/former[編集 | ソースを編集]

local p = {}

--[[ Template:Tnavbar ]] function p.tnavbar(frame) local args = frame.args if not args[1] then return ' ' end

local function tf(x) return x == '1' and true or false end args.plain = tf(args.plain) args.div = tf(args.div) args.nodiv = tf(args.nodiv) args.mini = tf(args.mini) args.viewplain = tf(args.viewplain) if args.miniv == '1' then args.mini, args.viewplain = true, true end args.fontstyle = args.fontcolor ~= and ((args.fontstyle or ) .. ';color:' .. args.fontcolor .. ';') or args.fontstyle or

local r = {open = '<div class="noprint plainlinks navbar hlist" style="white-space:nowrap;font-size:60%;font-weight:normal;', content = , close = ''} --出力用

if args.nodiv then r.open = r.open .. 'display:inline;padding:0 0.5em;' else r.open = r.open .. 'background-color:transparent;padding:0;color:#000;' end r.open = r.open .. args.fontstyle .. (args.style or ) .. '">'

if not (args.plain or args.mini or args.viewplain) then r.content = 'このテンプレートを: ' end

local disp = args.mini and {'表', '話', '編', '歴'} or {'表示', 'ノート', '編集', '履歴'} local ns = {'Template:', 'Template‐ノート:', 'Template:', 'Template:'} local query = {nil, nil, 'action=edit', 'action=history'} local title = {'このテンプレートを表示します', 'このテンプレートのノートを表示します', 'このテンプレートを編集します。保存の前にプレビューを忘れずに。', 'このテンプレートの過去の版を表示します'} local color = {, 'color:#002bb8;', 'color:#002bb8;', 'color:#002bb8;'} local i = 0 local i_end = args.viewplain and 1 or 4

r.content = r.content .. '

    ' for i = 1, i_end do local l = {open = , link = , close = } if query[i] then l.open = '[' l.link = mw.uri.decode(tostring(mw.uri.canonicalUrl(ns[i] .. args[1], query[i]))) .. ' ' l.close = ']' else l.open = '[[' l.link = ns[i] .. args[1] .. '|' l.close = ']]' end r.content = r.content .. '
  • ' .. l.open .. l.link .. '' .. disp[i] .. '' .. l.close end r.content = r.content .. '

'

return r.open .. r.content .. r.close end


--[[ Define Arguments ]] local args = {} local border local child, none = false, false local collapsible = local colspan, rowspan = 0, 0 local basestyle = local odd, even = 'odd', 'even'

local list, liststyle = {}, {} local group, groupstyle = {}, {} local colheader, colheadercolspan, colheaderstyle = {}, {}, {} local col, colstyle, colwidth = {}, {}, {} local colfooter, colfootercolspan, colfooterstyle = {}, {}, {} local abbr, state = {}, {} local sect, section = {}, {} local secttitlestyle = {} local content, contentstyle = {} local image, imageleft = {}, {}

local result = --出力用

local function defArgs(frame) args = require('Module:Arguments').getArgs(frame, {parentOnly = true}) border = args.border or args[1] child, none = (border == 'subgroup' or border == 'child'), (border == 'none') collapsible = (args.state == 'plain' or args.state == 'off') and or 'collapsible ' colspan = 2 + (args.imageleft and 1 or 0) + (args.image and 1 or 0)

if args.basestyle then basestyle = args.basestyle .. ';' end

local sortable_mt = { __lt = function(a, b) return a.index < b.index end, __concat = function(a, b) local strA = (type(a) == 'table') and a.content or a or local strB = (type(b) == 'table') and b.content or b or return strA .. strB end } local function sortable_args(tbl, index, content) table.insert(tbl, {index = index, content = content}) setmetatable(tbl[#tbl], sortable_mt) end local switch = { --common list = function(num, v) sortable_args(list, num, '\n' .. v) end, liststyle = function(num, v) liststyle[num] = v end, group = function(num, v) group[num] = v end, groupstyle = function(num, v) groupstyle[num] = v end, --for with_columns colheader = function(num,v) colheader[num] = v end, colheadercolspan = function(num,v) colheadercolspan[num] = v end, colheaderstyle = function(num,v) colheaderstyle[num] = v end, col = function(num, v) sortable_args(col, num, '\n' .. v) end, colstyle = function(num,v) colstyle[num] = v end, colwidth = function(num,v) colwidth[num] = v end, colfooter = function(num,v) colfooter[num] = v end, colfootercolspan = function(num,v) colfootercolspan[num] = v end, colfooterstyle = function(num,v) colfooterstyle[num] = v end, --for with_collapsible_groups abbr = function(num, v) abbr[num] = v end, state = function(num, v) state[num] = v end, sect = function(num, v) group[num] = v end, section = function(num, v) group[num] = v end, secttitlestyle = function(num, v) groupstyle[num] = v end, content = function(num, v) sortable_args(content, num, '\n' .. v) end, contentstyle = function(num, v) liststyle[num] = v end, image = function(num, v) image[num] = v end, imageleft = function(num, v) imageleft[num] = v end, }

for k, v in pairs(args) do local str1, num, str2 = string.match(k, '(%D+)(%d+)(%D*)') str1, num, str2 = str1 or , tonumber(num), str2 or if switch[str1 .. str2] and num then switch[str1 .. str2](num, v) end end

table.sort(list) rowspan = #list end

--[[ top ]] local function top() if child then

result = result .. ''

elseif not none then

result = result .. '

'

end end

--[[ Template:Navbox ]] function p.navbox(frame) defArgs(frame) top() if args.title then title() end if args.above then above() end if list[1] then body1() end body2() if args.below then below() end close() return result end

--[[ Template:Navbox subgroup ]] function p.subgroup(frame) defArgs(frame) if not border then child = true end args.groupstyle = 'padding:' .. (args.grouppadding or '0 0.75em') .. ';' .. (args.groupstyle or ) top() if args.title then title() end if args.above then above() end if list[1] then body1() end body2() if args.below then below() end close() return result end

--[[ Template:Navbox with columns ]] function p.with_columns(frame) defArgs(frame) table.sort(col) top() if args.title then title() end if args.above then above() end

if col[1] then local j = col[1].index

local cols = '

'

--Header row if colheader[j] then

cols = cols .. '' for i = 1, #col do local j = col[i].index if colheader[j] then cols = cols .. ''

end end

cols = cols .. '' end --Main columns cols = cols .. '' if not (colheader[j] or colfooter[j] or args.fullwidth) then local paddingoff = args.padding and string.find(args.padding, '^0[ep]?[mx]?%?;?') if not paddingoff then cols = cols .. ''

end end for i = 1, #col do local j = col[i].index

cols = cols .. ''

args.oddcolstyle, args.evencolstyle = args.evencolstyle, args.oddcolstyle end

cols = cols .. '' --Footer row if colfooter[j] then cols = cols .. '' for i = 1, #col do local j = col[i].index if colfooter[j] then cols = cols .. ''

end end

cols = cols .. '' end cols = cols .. '
'

table.insert(list, 1, cols) rowspan = rowspan + 1 end

body1() body2() if args.below then below() end close() return result end

--[[ Template:Navbox with collapsible groups ]] function p.with_collapsible_groups(frame) defArgs(frame) table.sort(content) top() if args.title then title() end if args.above then above() end

local i = 1 local function funcList() list[i] = list[i] or content[i] local j = list[i].index collapsible = (state[j] == 'plain' or state[j] == 'off') and or 'collapsible ' args.state = state[j] or args.selected and (args.selected == abbr[j] or args.selected == group[j]) and or 'collapsed' args.name = nil args.titlestyle = basestyle .. (args.groupstyle or ) .. ';' .. (args.secttitlestyle or ) .. ';' .. (groupstyle[j] or ) args.liststyle = (args.liststyle or ) .. ';' .. (args.contentstyle or ) .. ';' .. (liststyle[j] or ) args.title, group[j] = group[j], nil args.image = image[j] args.imageleft = imageleft[j] colspan = 2 + (args.imageleft and 1 or 0) + (args.image and 1 or 0) rowspan = 1

result = result .. '
'

if args.title then none = true top() title() body1() close() else result = result .. (list[i] or ) end

result = result .. '
'

end

--i = 1

result = result .. '' if args.imageleft then result = result .. '' .. args.imageleft .. ''

end funcList() if args.image then

result = result .. '' .. args.image .. ''

end --i > 2 for i = 2, #list do

result = result .. '' list[1] = list[i] funcList() end if args.below then below() end child, none = (border == 'subgroup' or border == 'child'), (border == 'none') --再定義 close() return result end --[[ Template:NavboxYears Template:NavboxYears2 ]] local function calc_years(args, fmtLink) local numtab = tonumber(args.tab) or 0 local numstart = tonumber(args.start) local numend = tonumber(args['end']) local numstep = tonumber(args.step) or 1 if numstart and numend then if numtab > 0 then for i = 2, numtab + 1 do args[i] = nil end end local numD = numend - numstart + 1 for i = 1, numD, numstep do args[i + numtab + 1] = numstart + i - 1 end end local result = '' local h = 1 repeat h = h + 1 result = result .. '' for i = 2, 11 do result = result .. '' args[i], args[i + 10] = args[i + 10], args[i + h * 10] end result = result .. '' until not args[2] result = result .. '
'

if (tonumber(args[i]) or -1) > 0 then result = result .. ('[[' .. fmtLink(args[1], args[i]) .. '|' .. args[i] .. ']]') else result = result .. (args[i] or ) end

result = result .. '
'

return result end

local function years(frame, fmtLink) defArgs(frame) if args.var then fmtLink = function(str, num) return str:gsub(args.var, num) end end if args.name then args.style = 'width:' .. (args.width or '38em') .. ';' .. (args.style or ) top() if args.title then title() end if args.above then above() end if not list[1] and args[1] then list[1] = calc_years(args, fmtLink) end if list[1] then body1() end body2() if args.below then below() end close() return result else return calc_years(args, fmtLink) end end

function p.years(frame) local fmtLink = function(str, num) return str .. num end return years(frame, fmtLink) end

function p.years2(frame) local fmtLink = function(str, num) return num .. str end return years(frame, fmtLink) end

return p