モジュール:書誌情報
ナビゲーションに移動
検索に移動
この説明文は 『 モジュール:書誌情報/doc 』 から呼び出されています。
詳細は「Template:書誌情報」を参照
local p = {}
function p.main( frame )
local args = require( 'Module:Arguments' ).getArgs( frame, { wrappers = 'Template:書誌情報', removeBlanks = false } )
-- ◆ nil避け ◆
-- 文頭ドット / 仮line / 最終戻り値変数
local dot = '<span style="color: #00528c; font-weight: bold;">・</span>';
local line = '';
local line_temp = '';
local data = '';
local title = '';
local author = '';
local publisher = '';
local date = '';
local isbn = '';
local table_start = '';
local nbsp = '';
-- 各種スタイルのスイッチ
local wikitable = args.wikitable or '';
local toc = args.toc or '';
local bordercolor = args.bordercolor or '#aaa';
local shownumber = args['番号表示'] or '';
local start = args['開始番号'] or '';
-- 列表示スイッチ
local block_title = args['タイトル列'] or '';
local block_author = args['著者列'] or '';
local block_publisher = args['出版社列'] or '';
local block_date = args['発売日列'] or '';
-- 見出し行表示判定用
local tt = { 'タイトル', '著者', '出版社', '発売日', 'ISBN' };
local bf = { block_title, block_author, block_publisher, block_date };
-- ◆ ここから各種判定開始 ◆
-- wikitable判定
if wikitable == '' then
table_start = '<table style="margin-left: 1em;">';
nbsp = '<td> </td>';
else
table_start = '<table class="wikitable" style="margin-left: 1em;">';
nbsp = '';
end
line_temp = '';
-- 見出し行表示判定
local tt = { 'タイトル', '著者', '出版社', '発売日', 'ISBN' };
local bf = { block_title, block_author, block_publisher, block_date };
if toc == '' then
line_temp = '<tr style="font-weight: bold;">' ..nbsp;
for i = 1, 4 do
if bf[i] == '' then
line_temp = line_temp ..'<td style="border-bottom: 1px solid ' ..bordercolor ..';">' ..tt[i] ..'</td>' ..nbsp;
end
end
-- ISBN列 ※ここは省略出来ない
line_temp = line_temp ..'<td style="border-bottom: 1px solid ' ..bordercolor ..';">[[ISBN]]</td></tr>';
end
-- ◆ここまでを table_start へ入れておく◆
table_start = table_start ..line_temp;
-- 書誌情報行 繰り返し処理 / 最大200行
local j = start;
if j == '' then
j = 1;
end
local t = {};
for i = 1, 200 do --最大200行
line_temp = '';
t1 = tt[1] ..i;
t2 = tt[2] ..i;
t3 = tt[3] ..i;
t4 = tt[4] ..i;
t5 = tt[5] ..i;
title = '';
title = args[t1] or '';
author = args[t2] or '';
publisher = args[t3] or '';
date = args[t4] or '';
isbn = args[t5] or '';
data = { author, publisher, date };
line_temp = title ..author ..publisher ..date ..isbn;
if line_temp == '' then
break
end
line_temp = '';
-- 行頭列 表示判定
if wikitable == '' then
if shownumber == '' then
line_temp = line_temp ..'<td>' ..dot ..'</td>'; -- 空欄ならdot
else
line_temp = line_temp ..'<td style="text-align: right;">' ..j ..'.</td>'; -- 指定があれば数字
end
end
-- 列表示スイッチ判定 / タイトル
if block_title == '' then
if title ~= '' then
line_temp = line_temp ..'<td>『' ..title ..'』</td>' ..nbsp;
end
end
-- 列表示スイッチ判定 / 著者
if block_author == '' then
if author ~= '' then
line_temp = line_temp ..'<td>' ..author ..'</td>' ..nbsp;
end
end
-- 列表示スイッチ判定 / 出版社
if block_publisher == '' then
if publisher ~= '' then
line_temp = line_temp ..'<td>' ..publisher ..'</td>' ..nbsp;
end
end
-- 列表示スイッチ判定 / 発売日
if block_date == '' then
if date ~= '' then
line_temp = line_temp ..'<td>' ..frame:expandTemplate{ title = 'Citation/showdate', args = { date } } ..'</td>' ..nbsp;
end
end
-- ISBN 存在判定
if isbn ~= '' then
line_temp = line_temp ..'<td>[[特別:文献資料/' ..isbn ..'|ISBN ' ..isbn ..']]</td>';
end
-- lineに追加
line = line ..'<tr>' ..line_temp ..'</tr>';
j = j + 1;
end
-- 戻り値 + テーブル終了
return table_start ..line ..'</table>'
end
return p