利用者:Nami-ja/サンドボックス2
ナビゲーションに移動
検索に移動
汎用テーブル作成モジュール案[編集]
<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
}