利用者:Nami-ja/サンドボックス2

出典: 謎の百科事典もどき『エンペディア(Enpedia)』
ナビゲーションに移動 検索に移動

汎用テーブル作成モジュール案[編集]

<table class="class" style="style">
  <caption>title</caption>
  <tr>
    <td colspan="max_col" style="above_style">above</td>
  </tr>
  <tr style="tr_style[1]">
    <td style="col_style[1]">args[1]</td>
    <td style="col_style[2]">args[2]</td>
    <td style="col_style[3]">args[3]</td>
  </tr>
  <tr style="tr_style[2]">
    <td style="col_style[1]">args[4]</td>
    <td style="col_style[2]">args[5]</td>
    <td style="col_style[3]">args[6]</td>
  </tr>
  <tr>
    <td colspan="max_col" style="footer_style">footer</td>
  </tr>
</table>
table_header - テーブルヘッダ
class - テーブルクラス - wikitable, navbox, navbox-child, pretty-table, none
style - テーブルスタイル
title - テーブルタイトル
above_style - 冒頭行スタイル
above - 冒頭行
footer_style - 末尾行スタイル
footer - 末尾行
args - 受け取り引数
max_col -  - 最大20列 / ここ以降をサブファンクション化して他所から呼び出し可能に
col_style[n] - 列スタイルn
tr_style[n] - 行スタイルn
temp - temp
line - tr~/trの行格納
table_footer - テーブルフッタ
return {
	args = require( 'Module:Arguments' ).getArgs( frame, { wrappers = 'User:Nami-ja/Template:sandbox', removeBlanks = false } );

	main = function( frame )
-- 引数受け取りと下準備
		local max_col = args.col or 2;

		-- テーブルヘッダ成形
		if args.class ~= '' or Nil then
			local class = 'class="' ..args.class ..'" ';
		else
			local class = '';
		end
		if args.style ~= '' or Nil then
			local style = 'style="' ..args.style ..'" ';
		else
			local style = '';
		end
		local table_header = '<table ' ..class ..style ..'>';

		-- テーブルタイトル判定
		if args.title ~= '' or Nil then
			table_header = table_header ..'<caption>' ..args.title ..'</caption>';
		end

		-- 冒頭行判定
		if args.above ~= '' or Nil then
			if args.abovestyle ~= '' or Nil then
				local above_style = ' style="' ..args.abovestyle ..'"';
			else
				local above_style = '';
			end
			table_header = table_header ..'<tr><td colspan="' ..max_col ..'"' ..above_style ..'>' ..above ..'</td></tr>';
		end

		local col_style = {};
		local temp = '';

		for v = 1, max_col do
			temp = 'colstyle' ..i;
			col_style[i] = args.temp or '';
		end
		return table_header
	end

-- 行成形
	sub1 = function( frame )
		local line = '';

		for i = 1, 200 do
			if args[i] == '' then
				break;
			end

			temp = 'trstyle' ..i;
			if args.temp ~= '' or Nil then
				line = '<tr style="' ..args.temp ..'">';
			else
				line = '<tr>';
			end

			for j = 1, max_col do
				if col_style[j] ~= '' then
					line = line ..'<td style="' ..col_style[j] ..'">' ..args[j] ..'</td>';
				else
					line = line ..'<td>' ..args[j] ..'</td>';
				end
			end
			line = line ..'</tr>';
		end

		return line
	end

-- フッタ
	footer = function( frame )
		if args.footer ~= '' or Nil then
			if args.footerstyle ~= '' or Nil then
				local footer_style = ' style="' ..args.footerstyle .."';
			else
				local footer_style = '';
			end
			local table_footer = '<tr><td colspan="' ..max_col .."' ..footer_style ..'>' ..args.footer ..'</td></tr></table>';

		return table_footer
	end
}