<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.null-base.com/index.php?action=history&amp;feed=atom&amp;title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%3ACitation%2FShow_date</id>
	<title>モジュール:Citation/Show date - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.null-base.com/index.php?action=history&amp;feed=atom&amp;title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%3ACitation%2FShow_date"/>
	<link rel="alternate" type="text/html" href="https://wiki.null-base.com/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Citation/Show_date&amp;action=history"/>
	<updated>2026-06-15T18:31:31Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.null-base.com/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Citation/Show_date&amp;diff=555&amp;oldid=prev</id>
		<title>Null base: 1版をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.null-base.com/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Citation/Show_date&amp;diff=555&amp;oldid=prev"/>
		<updated>2025-10-23T14:01:36Z</updated>

		<summary type="html">&lt;p&gt;1版をインポートしました&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2025年10月23日 (木) 23:01時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Null base</name></author>
	</entry>
	<entry>
		<id>https://wiki.null-base.com/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Citation/Show_date&amp;diff=554&amp;oldid=prev</id>
		<title>ja&gt;本日晴天: 一部のページでスクリプトエラーが発生する不具合を修正</title>
		<link rel="alternate" type="text/html" href="https://wiki.null-base.com/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Citation/Show_date&amp;diff=554&amp;oldid=prev"/>
		<updated>2025-08-22T15:19:23Z</updated>

		<summary type="html">&lt;p&gt;一部のページでスクリプトエラーが発生する不具合を修正&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local cfg = mw.loadData(&amp;#039;Module:Citation/Show date/Configuration&amp;#039;)&lt;br /&gt;
local validation = require(&amp;#039;Module:Citation/CS1/Date validation&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local function is_set (var)&lt;br /&gt;
	return not (var == nil or var == &amp;#039;&amp;#039;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function in_array (needle, haystack)&lt;br /&gt;
	if needle == nil then&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
	for n, v in ipairs (haystack) do&lt;br /&gt;
		if v == needle then&lt;br /&gt;
			return n;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- [[モジュール:Citation/CS1/Utilities]]が返すテーブルの簡易版&lt;br /&gt;
local utilities = {&lt;br /&gt;
	is_set = is_set,&lt;br /&gt;
	in_array = in_array&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- utilities.set_message()などが空文字列を返すようにする&lt;br /&gt;
local _mt = {&lt;br /&gt;
	__index = function (t, key)&lt;br /&gt;
		return ( function () return &amp;#039;&amp;#039; end )&lt;br /&gt;
	end&lt;br /&gt;
}&lt;br /&gt;
setmetatable(utilities, _mt)&lt;br /&gt;
&lt;br /&gt;
validation.set_selected_modules(cfg, utilities)&lt;br /&gt;
&lt;br /&gt;
local function show_date(frame)&lt;br /&gt;
	local param_name = frame.args[&amp;#039;param-name&amp;#039;]&lt;br /&gt;
	&lt;br /&gt;
	if not is_set(param_name) then&lt;br /&gt;
		param_name = &amp;#039;date&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local value = frame.args[1]&lt;br /&gt;
	local date_parameters_list = { [param_name] = {val = value} }&lt;br /&gt;
	local error_list = {}&lt;br /&gt;
	&lt;br /&gt;
	-- CS1モジュールによる日付の検査&lt;br /&gt;
	validation.dates(date_parameters_list, {}, error_list)&lt;br /&gt;
	&lt;br /&gt;
	if param_name == &amp;#039;access-date&amp;#039; then&lt;br /&gt;
		-- 閲覧日については他の日付とは分けて処理する&lt;br /&gt;
		&lt;br /&gt;
		local post_text = frame.args[&amp;#039;post-text&amp;#039;] or &amp;#039;閲覧。&amp;#039;&lt;br /&gt;
		&lt;br /&gt;
		if #error_list &amp;gt; 0 then&lt;br /&gt;
			-- validation.dates()による検査に不合格ならば{{Accessdate}}を呼び出す&lt;br /&gt;
			local args = { value, [&amp;#039;post-text&amp;#039;] = post_text }&lt;br /&gt;
			return frame:expandTemplate{ title = &amp;#039;Accessdate&amp;#039;, args = args }&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- validation.dates()による検査に合格していれば、&lt;br /&gt;
		-- validation.reformat_dates()を用いて日本語の形式に変換する&lt;br /&gt;
		validation.reformat_dates(date_parameters_list, &amp;#039;ja&amp;#039;)&lt;br /&gt;
		&lt;br /&gt;
		return date_parameters_list[param_name].val .. post_text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- 閲覧日以外の日付&lt;br /&gt;
	&lt;br /&gt;
	if #error_list &amp;gt; 0 then&lt;br /&gt;
		-- validation.dates()による検査に不合格だった場合の追加処理&lt;br /&gt;
		&lt;br /&gt;
		-- {{ISO dateJA}}を用いてISO形式への変換を試みる&lt;br /&gt;
		local iso_date = frame:expandTemplate{ title = &amp;#039;ISO dateJA&amp;#039;, args = { value } }&lt;br /&gt;
		&lt;br /&gt;
		-- {{ISO dateJA}}でも認識できない日付はエラーとして扱う&lt;br /&gt;
		-- {{ISO dateJA|28 juin 06}}のように空でない不正な文字列を返す場合も考慮する&lt;br /&gt;
		if not is_set(iso_date) or not iso_date:match(&amp;#039;^%d%d%d%d&amp;#039;) then&lt;br /&gt;
			return value .. frame:expandTemplate{ title = &amp;#039;Citation/showdateError&amp;#039; }&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- 日付が再来年以降であればエラーとして扱う&lt;br /&gt;
		local current_year = tonumber(mw.getContentLanguage():formatDate(&amp;#039;Y&amp;#039;))&lt;br /&gt;
		if tonumber(iso_date:sub(1, 4)) - current_year &amp;gt; 1 then&lt;br /&gt;
			local args = { message = &amp;#039;日付が有効な範囲を超えています。&amp;#039; }&lt;br /&gt;
			return value .. frame:expandTemplate{ title = &amp;#039;Citation/showdateError&amp;#039; , args = args }&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- 以後の処理は、validation.dates()による検査に合格した場合と基本的に同じ&lt;br /&gt;
		-- ただしvalidation.reformat_dates()を用いた日付の変換を行う場合は、&lt;br /&gt;
		-- valueではなくiso_dateを変換の対象とする&lt;br /&gt;
		date_parameters_list[param_name].val = iso_date&lt;br /&gt;
		&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if param_name == &amp;#039;archive-date&amp;#039; then&lt;br /&gt;
		-- アーカイブの日付は常に日本語の形式に変換する&lt;br /&gt;
		validation.reformat_dates(date_parameters_list, &amp;#039;ja&amp;#039;)&lt;br /&gt;
		value = date_parameters_list[param_name].val&lt;br /&gt;
		&lt;br /&gt;
		if in_array(mw.ustring.sub(value, -1, -1), {&amp;#039;年&amp;#039;, &amp;#039;月&amp;#039;}) then&lt;br /&gt;
			-- 変換後の日付が「年」または「月」で終わる場合はエラーとして扱う&lt;br /&gt;
			local args = { message = &amp;#039;アーカイブの日付は年・月・日のすべてを記入してください。&amp;#039; }&lt;br /&gt;
			return value .. frame:expandTemplate{ title = &amp;#039;Citation/showdateError&amp;#039; , args = args }&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return value&lt;br /&gt;
		&lt;br /&gt;
	else&lt;br /&gt;
		-- 閲覧日・アーカイブ日以外の日付&lt;br /&gt;
		-- df引数が空でなければ、CS1モジュールを用いて日付を変換する&lt;br /&gt;
		local df = frame.args[&amp;#039;df&amp;#039;]&lt;br /&gt;
		if is_set(df) then&lt;br /&gt;
			validation.reformat_dates(date_parameters_list, df)&lt;br /&gt;
			value = date_parameters_list[param_name].val&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return value&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return { show_date = show_date }&lt;/div&gt;</summary>
		<author><name>ja&gt;本日晴天</name></author>
	</entry>
</feed>