コンテンツにスキップ

モジュール:Table2

提供:ウィキボヤージュ
モジュールの解説[表示] [編集] [履歴] [キャッシュを破棄]

{{Table2}}の内部モジュール。

使用法

[編集]
{{#invoke:Table2|main}}

local p = {}

-- エラー
function p.error ( message )
	return '<strong class="error">エラー:' ..message ..'</strong>'
end

function p.main( frame )
	local args = require( 'Module:Arguments' ).getArgs( frame, { wrappers = 'Template:Table2', removeBlanks = false })

	local array = {}
	local cellstyle = ''
	local rowstyle = ''
	local temp = ''
	local toc = ''
	local number = tonumber( args.number ) or 0
	local max_col = tonumber( args['列'] ) or tonumber( args.cols )  or 1
	if max_col == '' or max_col == 0 then
		max_col = 1
	end

	local line = ''
	local tocline = ''
	local endflag = ''

	-- toc check
	if number ~= 0 then
		tocline = tocline ..'<th></th>'
	end
	for i = 1, max_col do
		temp = 'th' ..i
		toc = args[temp] or ''
		endflag = endflag ..toc
		tocline = tocline ..'<th>' ..toc ..'</th>'
	end
	if endflag ~= '' then
		line = line ..'<tr>' ..tocline ..'</tr>'
	end

	local cell = 1
	for row, val in pairs ( args ) do
		endflag = ''
		for col = 1, max_col do
			array[col] = args[cell] or ''
			endflag = endflag ..array[col]

			-- cellstyle check
			cellstyle = 'cell' ..row ..'-' ..col
			style = args[cellstyle] or ''
			if style ~= '' then
				array[col] = '<td style="' ..style ..'">' ..array[col] ..'</td>'
			else
				array[col] = '<td>' ..array[col] ..'</td>'
			end
			cell = cell + 1
		end
		if endflag == '' then break end

		-- rowstyle check
		rowstyle = 'row' ..row
		style = args[rowstyle] or ''
		if style ~= '' then
			line = line ..'\n<tr style="' ..style ..'">\n'
		else
			line = line ..'\n<tr>\n'
		end

		-- row number check
		if number > 0 then
			line = line ..'<td style="text-align: right;">' ..tonumber(row + ( number-1)) ..'. </td>'
		end

		-- add line + cell
		for col = 1, max_col do
			line = line ..array[col]
		end
		line = line ..'\n</tr>\n'
	end
	return line
end

return p