モジュール:サンドボックス/Waiesu/sandbox

これはこのページの過去の版です。Waiesu (会話 | 投稿記録) による 2016年5月13日 (金) 14:31個人設定で未設定ならUTC)時点の版であり、現在の版とは大きく異なる場合があります。

モジュールの解説[作成]
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