モジュール:サンドボックス/しまあじ/前後年月カテゴリ
表示
モジュールの解説[作成]
local objLINKYMCAT = {};
objLINKYMCAT.ifexist = function( frame )
local page = frame.args[1]
if not page then return "" end
if mw.title.new(page).exists then return "1" end
return ""
end
objLINKYMCAT.divdateCore = function( ymm )
local tbl = {}
local len = mw.ustring.len( ymm )
local c = ""
tbl['y'] = ""
tbl['m1'] = ""
tbl['m2'] = ""
if 5 <= len then
tbl['y'] = mw.ustring.sub( ymm, tonumber("1"), tonumber("4") )
if 5 == len then
tbl['m1'] = "1"
tbl['m2'] = "12"
elseif 7 <= len then
c = mw.ustring.sub( ymm, tonumber("7"), tonumber("7") )
if c == "月" then
tbl['m1'] = mw.ustring.sub( ymm, tonumber("6"), tonumber("6") )
tbl['m2'] = tbl['m1']
if 10 <= len then
c = mw.ustring.sub( ymm, tonumber("10"), tonumber("10") )
if c == "月" then
tbl['m2'] = mw.ustring.sub( ymm, tonumber("9"), tonumber("9") )
else
tbl['m2'] = mw.ustring.sub( ymm, tonumber("9"), tonumber("10") )
end
end
elseif c == "前" then
-- 「以前」
tbl['m1'] = "12"
tbl['m2'] = "12"
--
else
tbl['m1'] = mw.ustring.sub( ymm, tonumber("6"), tonumber("7") )
tbl['m2'] = tbl['m1']
if 11 <= len then
c = mw.ustring.sub( ymm, tonumber("11"), tonumber("11") )
if c == "月" then
tbl['m2'] = mw.ustring.sub( ymm, tonumber("10"), tonumber("10") )
else
tbl['m2'] = mw.ustring.sub( ymm, tonumber("10"), tonumber("11") )
end
end
end
end
end
return tbl
end
objLINKYMCAT.divdate = function( frame )
local sel = frame.args[2];
local tbl = objLINKYMCAT.divdateCore( frame.args[1] )
local str = ""
if sel == "y" then
str = tbl['y']
elseif sel == "m1" then
str = tbl['m1']
elseif sel == "m2" then
str = tbl['m2']
elseif sel == "年" then
str = tbl['y'] .. "年"
elseif sel == "月1" then
str = tbl['m1'] .. "月"
elseif sel == "月2" then
str = tbl['m2'] .. "月"
elseif sel == "年月1" then
str = tbl['y'] .. "年" .. tbl['m1'] .. "月"
elseif sel == "年月2" then
str = tbl['y'] .. "年" .. tbl['m2'] .. "月"
end
return str
end
objLINKYMCAT.show = function( frame )
local cat = frame.args[1]
local sep = frame.args[2]
local ym = frame.args[3]
local ymY = frame.args['当年']
local ymLL = frame.args['前年末月']
local ymL = frame.args['前月']
local ymR = frame.args['後月']
local ymRR = frame.args['後年始月']
local catinfo = objLINKYMCAT.getcatinfo( frame )
local strU = ""
local strM = ""
local strL = ""
-- 上段
if catinfo['catU1'] ~= "" then
if catinfo['catU2'] ~= "" then
strU = objLINKYMCAT.catlinkCore( catinfo['catU1'], "", "", "→ " .. catinfo['catU1'] ) .. "<br />" .. objLINKYMCAT.catlinkCore( catinfo['catU2'], "", "", "→ " .. catinfo['catU2'] ) .. "<br />"
else
strU = objLINKYMCAT.catlinkCore( catinfo['catU1'], "", "", "→ " .. catinfo['catU1'] ) .. "<br />"
end
elseif catinfo['catU2'] ~= "" then
strU = objLINKYMCAT.catlinkCore( catinfo['catU2'], "", "", "→ " .. catinfo['catU2'] ) .. "<br />"
end
-- 下段
if catinfo['catL1'] ~= "" then
if catinfo['catL2'] ~= "" then
strL = objLINKYMCAT.catlinkCore( catinfo['catL1'], "", "", "→ " .. catinfo['catL1'] ) .. "<br />" .. objLINKYMCAT.catlinkCore( catinfo['catL2'], "", "", "→ " .. catinfo['catL2'] ) .. "<br />"
else
strL = objLINKYMCAT.catlinkCore( catinfo['catL1'], "", "", "→ " .. catinfo['catL1'] ) .. "<br />"
end
elseif catinfo['catL2'] ~= "" then
strL = objLINKYMCAT.catlinkCore( catinfo['catL2'], "", "", "→ " .. catinfo['catL2'] ) .. "<br />"
end
-- 中段
strM = objLINKYMCAT.catlinkCore( cat, "", "", "→ " .. cat )
if ym ~= nil and ym ~= "" then
strM = strM .. " " .. sep .. " "
if ymL ~= nil and ymL ~= "" then
if mw.ustring.sub( ym, tonumber("6"), tonumber("7") ) ~= "以前" then
if ymLL ~= nil and ymLL ~= "" then
if mw.ustring.sub( ymL, tonumber("6"), tonumber("7") ) ~= "以前" then
strM = strM .. objLINKYMCAT.catlinkCore( cat, sep, ymLL, mw.ustring.sub(ymLL, tonumber("1"), tonumber("5")) ) .. " < "
end
end
strM = strM .. objLINKYMCAT.catlinkCore( cat, sep, ymL, ymL ) .. " < "
end
end
if ymY ~= nil and ymY ~= "" then
strM = strM .. "<b>" .. objLINKYMCAT.catlinkCore( cat, sep, ymY, ym ) .. "</b>"
else
strM = strM .. "<b>" .. ym .. "</b>"
end
if ymR ~= nil and ymR ~= "" then
strM = strM .. " > " .. objLINKYMCAT.catlinkCore( cat, sep, ymR, ymR )
if ymRR ~= nil and ymRR ~= "" then
strM = strM .. " > " .. objLINKYMCAT.catlinkCore( cat, sep, ymRR, mw.ustring.sub(ymRR, tonumber("1"), tonumber("5")) )
end
end
end
strM = strM .. "<br />"
return strU .. strM ..strL
end
objLINKYMCAT.catlink = function( frame )
return objLINKYMCAT.catlinkCore( frame.args[1], frame.args[2], frame.args[3], frame.args[4] )
end
objLINKYMCAT.catlinkCore = function( cat, sep, ym, show )
local linkstr = ""
local showstr = ""
if ym == nil or ym == "" then
linkstr = cat
else
linkstr = cat .. sep .. ym
end
if show == nil or show == "" then
showstr = linkstr
else
showstr = show
end
return "[[:Category:" .. linkstr .. "|" .. showstr.. "]]"
end
objLINKYMCAT.mboxmsg = function( frame )
local tag
local msg
if frame.args['説明'] ~= nil and frame.args['説明'] ~= "" and frame.args['説明'] ~= "1" then
msg = frame.args['説明']
else
if frame.args['タグ'] ~= nil and frame.args['タグ'] ~= "" then
tag = frame.args['タグ']
else
tag = objLINKYMCAT.taglink( frame )
end
msg = tag .. "が貼り付けられた月順に並んでいます。A は 10月、B は 11月、C は 12月 です。各同一月内については、タグにソートキーが設定されている場合を除きページ名順です。このカテゴリの期間内で異なる月の2つ以上のタグが貼られている場合、どのタグの月に分類されているかは各タグのページ内での位置によります。"
end
return msg
end
objLINKYMCAT.taglink = function( frame )
local catinfo = objLINKYMCAT.getcatinfo ( frame )
return catinfo['tag']
end
objLINKYMCAT.getcatinfo = function( frame )
local catinfo = {};
local cat = frame.args[1]
local cat2 = ""
local catU0 = "修正が必要なページ"
local catU1 = "出典を必要とする記事"
local catU2 = ""
local catL1 = ""
local catL2 = ""
local tag = "タグ"
catinfo['catU1'] = ""
catinfo['catU2'] = ""
catinfo['catL1'] = ""
catinfo['catL2'] = ""
catinfo['tag'] = tag
if cat == nil or cat == "" then
return catinfo
end
cat2 = mw.ustring.sub(cat, tonumber("1"), tonumber("1"));
if cat2 == "W" then
tag = "{{[[Template:Wikify|Wikify]]}}"
catU1 = catU0
elseif cat2 == "外" then
tag = "{{[[Template:リンク切れ|リンク切れ]]}}"
catU1 = catU0
elseif cat2 == "検" then
local catRI = "検証が求められている記事"
local catRID = "検証が求められている記述のある記事"
if cat == catRI then
tag = "{{[[Template:未検証|未検証]]}}"
catL1 = catRID
elseif cat == catRID then
tag = "{{[[Template:要検証|要検証]]}}・{{[[Template:要検証範囲|要検証範囲]]}}"
catU2 = catRI
end
elseif cat2 == "国" then
tag = "{{[[Template:国際化|国際化]]}}"
catU1 = catU0
elseif cat2 == "言" then
local catWS = "言葉を濁した記述のある記事"
if cat == catWS then
tag = "{{[[Template:言葉を濁さない|言葉を濁さない]]}}"
elseif cat == catWS .. " (誰)" then
tag = "{{[[Template:誰|誰]]}}・{{[[Template:誰範囲|誰範囲]]}}"
catU2 = catWS
elseif cat == catWS .. " (誰2)" then
tag = "{{[[Template:誰2|誰2]]}}・{{[[Template:誰2範囲|誰2範囲]]}}・{{[[Template:誰範囲2|誰範囲2]]}}"
catU2 = catWS
elseif cat == catWS .. " (いつ)" then
tag = "{{[[Template:いつ|いつ]]}}・{{[[Template:いつ範囲|いつ範囲]]}}"
catU2 = catWS
elseif cat == catWS .. " (どこ)" then
tag = "{{[[Template:どこ|どこ]]}}・{{[[Template:どこ範囲|どこ範囲]]}}"
catU2 = catWS
end
elseif cat2 == "雑" then
tag = "{{[[Template:雑多な内容の箇条書き|雑多な内容の箇条書き]]}}"
catU1 = catU0
elseif cat2 == "字" then
tag = "{{[[Template:字引|字引]]}}"
catU1 = catU0
elseif cat2 == "出" then
local catCN = catU1
local catCNS = "出典を必要とする節のある記事"
local catCND = "出典を必要とする記述のある記事"
local catBS = "出典を必要とする存命人物記事"
local catBU = "出典皆無な存命人物記事"
if cat == catCN then
tag = "{{[[Template:出典の明記|出典の明記]]}}"
catU1 = catU0
catL1 = catCNS
catL2 = catCND
elseif cat == catCNS then
tag = "{{[[Template:出典の明記|出典の明記|section=1]]}}"
elseif cat == catCND then
tag = "{{[[Template:要出典|要出典]]}}・{{[[Template:要出典範囲|要出典範囲]]}}"
elseif cat == catBS then
tag = "{{[[Template:存命人物の出典明記|存命人物の出典明記]]}}"
catL1 = catBU
elseif cat == catBU then
tag = "{{[[Template:BLP unsourced|BLP unsourced]]}}"
catU2 = catBS
end
elseif cat2 == "情" then
tag = "{{[[Template:更新|更新]]}}"
catU1 = catU0
elseif cat2 == "宣" then
tag = "{{[[Template:宣伝|宣伝]]}}"
catU1 = catU0
elseif cat2 == "独" then
local catOR = "独自研究の除去が必要な記事"
local catORS = "独自研究の除去が必要な節のある記事"
local catORD = "独自研究の除去が必要な記述のある記事"
if cat == catOR then
tag = "{{[[Template:独自研究|独自研究]]}}"
catL1 = catORS
catL2 = catORD
elseif cat == catORS then
tag = "{{[[Template:独自研究|独自研究|section=1]]}}"
catU2 = catOR
elseif cat == catORD then
tag = "{{[[Template:独自研究範囲|独自研究範囲]]}}"
catU2 = catOR
end
elseif cat2 == "特" then
tag = "{{[[Template:特筆性|特筆性]]}}"
elseif cat2 == "翻" then
tag = "{{[[Template:翻訳中途|翻訳中途]]}}"
catU1 = ""
elseif cat2 == "無" then
tag = "{{[[Template:出典無効|出典無効]]}}"
end
catinfo['catU1'] = catU1
catinfo['catU2'] = catU2
catinfo['catL1'] = catL1
catinfo['catL2'] = catL2
catinfo['tag'] = tag
return catinfo
end
return objLINKYMCAT