モジュール:日付記事

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

この説明文は 『 モジュール:日付記事/doc 』 から呼び出されています。

使用Luaモジュール:

{{日付記事ヘッダー}}と{{日付記事フッター}}の内部モジュール。

local p = {}

local function ymd2mjd(y, m, d)
	return require('Module:MJD').ymd2mjd( { y, m, d } )
end

local function md(demotitle) 
	--ページタイトルから月日の数字を抽出。変更する場合はdemotitle引数で
	local t = demotitle or tostring( mw.title.getCurrentTitle() )
	local month, day = string.match(t , '(.*)月(.*)日')
	local month2 = string.format('%02d', month)
	local day2 = string.format('%02d', day)
	return { tonumber(month), month2, tonumber(day), day2 }
end


--日付記事ヘッダー用
function p.head(frame)
	local args = require('Module:Arguments').getArgs( frame, {wrappers = 'Template:日付記事ヘッダー', removeBlanks = false} )
	local msg = args['msg'] or args['メッセージ'] or args[1] or ''
	local md = md( args['demotitle'] )
	local m = md[1]
	local d = md[3]
	
	local myomi = {
		'いちがつ','にがつ','さんがつ','しがつ','ごがつ',
		'ろくがつ','しちがつ','はちがつ','くがつ','じゅうがつ',
		'じゅういちがつ','じゅうにがつ'
		}
	local dyomi = {
		'ついたち','ふつか','みっか','よっか','いつか',
		'むいか','なぬか<[[慣用読み|慣用]]:なのか>','ようか','ここのか','とおか',
		'じゅういちにち','じゅうににち','じゅうさんにち','じゅうよっか','じゅうごにち',
		'じゅうろくにち','じゅうしちにち','じゅうはちにち','じゅうくにち','はつか',
		'にじゅういちにち','にじゅうににち','にじゅうさんにち','にじゅうよっか','にじゅうごにち',
		'にじゅうろくにち','にじゅうしちにち','にじゅうはちにち','にじゅうくにち','さんじゅうにち',
		'さんじゅういちにち',
		 b14='じゅうよんにち',b17='じゅうななにち',b20='にじゅうにち',b24='にじゅうよんにち',b27='にじゅうななにち'
		}
	local yomi = myomi[m]..dyomi[d]
	if dyomi['b'..d] then
		yomi = yomi..'、'..myomi[m]..dyomi['b'..d]
	end
	
	local menglish = {
		'January','February','March','April','May',
		'June','July','August','September','October',
		'November','December'
		}
	
	local pass = ymd2mjd(2001,m,d) - ymd2mjd(2000,12,31)
	local pass_leap = ymd2mjd(2000,m,d) - ymd2mjd(1999,12,31)
	local remain = ymd2mjd(2001,12,31) - ymd2mjd(2001,m,d)
	local remain_leap = ymd2mjd(2000,12,31) - ymd2mjd(2000,m,d)
	
	local text = '{{Calendar|月='..m..'|日='..d..'|配置=right|前後範囲=1}}\n'..
		"'''"..m.."月"..d.."日'''("..yomi..'、{{Lang-en-short|'..menglish[m]..' '..d..'}})'..
		'は、[['..m..'月]]の'..d..'日目である。'
	
	-- 2月29日対策のため、閏年の日数で判定
	if pass_leap <= 60 then
		text = text..'[[グレゴリオ暦]]で[[年始]]から数えて'..pass_leap..'日目、'
	else
		text = text..'[[グレゴリオ暦]]で[[年始]]から数えて'..pass..'日目([[閏年]]なら'..pass_leap..'日目)、'
	end
	
	if remain_leap <= 306 then
		text = text..'[[年末]]まであと'..remain_leap..'日。'
	else
		text = text..'[[年末]]まであと'..remain..'日([[閏年]]なら'..remain_leap..'日)。'
	end
	
	return frame:preprocess(text)
end


--日付記事フッター用
function p.foot(frame)
	local args = require('Module:Arguments').getArgs( frame, {wrappers = 'Template:日付記事フッター', removeBlanks = false} )
	local msg = args['msg'] or args['メッセージ'] or args[1] or ''
	local md = md( args['demotitle'] )
	local m = md[1]
	local mm = md[2]
	local d = md[3]
	local dd = md[4]
	
	local text = 
		'* [http://www.php.co.jp/fun/today/'..mm..'-'..dd..'.php 今日は何の日 '..m..'月'..d..'日] - [http://www.php.co.jp/ PHP研究所]\n'..
		'* [http://www.nnh.to/'..mm..'/'..dd..'.html '..m..'月'..d..'日] - [http://www.nnh.to/ 今日は何の日~毎日が記念日~]\n'..
		'* [http://www.excite.co.jp/News/bit/date/'..mm..dd..' 記念日一覧 '..m..'月'..d..'日] - [http://www.excite.co.jp/News/bit/ Excite Bit]\n'..
		'* [http://www.d4.dion.ne.jp/~warapon/data00/birth-'..mm..dd..'.htm 生年月日(誕生日)データベース '..m..'月'..d..'日] - [http://www.d4.dion.ne.jp/~warapon/ ストローワラの情報交差点]\n'..
		msg..'\n'..
		'{{前後日|'..m..'|'..d..'}}\n'..
		'{{一年の日付}}\n'
	
	local msort = {
		'いちかつ','にかつ','さんかつ','しかつ','こかつ',
		'ろくかつ','しちかつ','はちかつ','くかつ','しゆうかつ',
		'しゆういちかつ','しゆうにかつ'
		}
	local dsort = {
		'ついたち','ふつか','みつか','よつか','いつか',
		'むいか','なのか','ようか','ここのか','とおか',
		'しゆういちにち','しゆうににち','しゆうさんにち','しゆうよつか','しゆうこにち',
		'しゆうろくにち','しゆうしちにち','しゆうはちにち','しゆうくにち','はつか',
		'にしゆういちにち','にしゆうににち','にしゆうさんにち','にしゆうよつか','にしゆうこにち',
		'にしゆうろくにち','にしゆうしちにち','にしゆうはちにち','にしゆうくにち','さんしゆうにち',
		'さんしゆういちにち'
		}
	local footer = '{{デフォルトソート:'..msort[m]..dsort[d]..'}}\n[[カテゴリ:'..m..'月|'..dd..']]'
	if args['demotitle'] == nil then
		text = text..footer
	else
		text = text..'<nowiki>'..footer..'</nowiki>'
	end
	
	return frame:preprocess(text)
end

return p