モジュール:サンドボックス/Waiesu/sandbox
表示
これはモジュール:サンドボックス/Waiesuのモジュール・サンドボックスページです。 対応するテストケース・サブページ (実行) もご確認ください。 |
モジュールの解説[作成]
local p = {}
--[[
作品リスト用
使い方:
テンプレート呼び出し: {{(TEMPLATE_NAME)|西暦年(数字のみ)|内容1|内容2|...}}
テンプレートソース: {{#invoke:モジュール:サンドボックス/Waiesu/sandbox|year_calc}}
]]
function p.year_calc(frame)
local args = require('Module:Arguments').getArgs(frame)
local year = frame.args[1] - 2
local result
for key, value in pairs(args) do
result = (key == 1) and '' or result .. '<dt>' .. (year + key) .. '年</dt><dd style="margin-left: 0;">\n' .. value .. '</dd>'
end
result = '<dl>' .. result .. '</dl>'
return result
end
--[[
作品リスト用
使い方:
テンプレート呼び出し: {{(TEMPLATE_NAME)|西暦年(数字のみ)=内容1|西暦年=内容2|...}}
テンプレートソース: {{#invoke:モジュール:サンドボックス/Waiesu/sandbox|year_param}}
]]
function p.year_param( frame )
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:定義リスト2'})
local result = '<dl style="margin-left: 0;">'
for key, value in ipairs(args) do
result = result .. '<dt>' .. key .. '</dt><dd style="margin-left: 0;">\n' .. value .. '</dd>'
end
result = result .. '</dl>'
return result
end
--[[
for step用
]]
function p.for_step(frame)
local get_args = require('Module:Arguments').getArgs(frame)
local sep,var,i_start,i_end,step,prefix,suffix,call = '','',1,1,1,'','',''
local args = {}
for key, value in pairs(get_args) do
if key == 'sep' then sep = value
elseif key == 'name' then var = value
elseif key == 'start' then i_start = value
elseif key == 'end' then i_end = value
elseif key == 'step' then step = value
elseif key == 'prefix' then prefix = value
elseif key == 'suffix' then suffix = value
elseif key == 'call' then call = value
else args[key] = value end
end
if var == '' then error('引数varが指定されていません') end
if call == '' then call ='concat' end
local result = {} --結果格納用テーブル
for i = i_start, i_end, step do
for key, value in pairs(args) do
key = string.gsub(key, var, prefix .. i .. suffix)
args[key] = string.gsub(value, var, prefix .. i .. suffix)
end
table.insert(result, frame:expandTemplate{title = call, args = args})
end
return table.concat(result, sep)
end
return p