モジュール:日付記事
ナビゲーションに移動
検索に移動
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