モジュール:SafeCate
本モジュール当サイトで発生するテンプレート展開異常とキャッシュ机能による分類異常への対応が目的。
本モジュールテンプレート名空間にのみ適用。
パラメータ
- 1:追加されたカテゴリー名。
- 2:分類インデックスは、一般的に順序付けを修正したり、分類ページで系列エントリのメインエントリを繰り上げたりするために使用される。
- nsid:有効な名前空間、デジタルコードを埋め、名前空間を参照。半角コンマの使用に対応します。
- nsidExclude:除外された名前空間。nsidパラメータが埋められ空でなければ、このパラメータは有効にならない。
- noSubpage: 子ページに適用されず、ユーザマスターページのエラーテンプレート参照を処理するために使用できる。
- strict:用{{safecate}}以外の包装テンプレート、これこそこのテンプレートパラメータの発効を使ったように{{templatecate}}、空間を厳しく制限の名前に使われる。
local module = {} local function _isvalid(value) return value ~= nil and type(value) == "string" and mw.text.trim(value) ~= "" end function module.main(frame) local strict = frame local parent = frame:getParent() if not _isvalid(frame.args[1]) then if not (parent and _isvalid(parent.args[1])) then return end local title = parent:getTitle() if title == "Template:SafeCate" then strict, frame = parent, parent elseif mw.title.new(title).namespace == 10 and frame.args["strict"]=="1" then frame = parent else return end end local cate = frame.args[1] local mod = frame.args[2] local nsMap = { } local bExclude, nsids = false, nil if strict.args["nsid"] then nsids = mw.text.split(strict.args["nsid"], ",", true) elseif strict.args["nsidExclude"] then bExclude = true nsids = mw.text.split(strict.args["nsidExclude"], ",", true) end if nsids then for _, value in ipairs(nsids) do nsMap[tonumber(value)] = true end else nsMap[0] = true end local noSubpage = (strict).args["noSubpage"]=="1" local title = mw.title.getCurrentTitle() local curNsid = title.namespace if ((nsMap[curNsid] and (not bExclude)) or ((not nsMap[curNsid]) and bExclude)) and ((not noSubpage) or (not title.isSubpage)) then if curNsid == 10 and title.isSubpage and title.subpageText == "doc" then return end if mod then return "[[Category:"..cate.."|"..mod.."]]" else return "[[Category:"..cate.."]]" end end end return module