Content deleted Content added
non-existent pages are not articles, plus some code simplification |
m fix for files and interface messages which do exist but are not stored locally |
||
(One intermediate revision by the same user not shown) | |||
Line 6:
-- --
--------------------------------------------------------------------------------
-- Load config.
local cfg = mw.loadData('Module:Pagetype/config')
-- Load required modules.
local yesno = require('Module:Yesno')
local p = {}
Line 31 ⟶ 29:
-- Get argument keys for a title's namespace
local function getNamespaceArgKeys(title
local nsInfo = mw.site.namespaces[title.namespace]
local customAliases = cfg.customNamespaceAliases[title.namespace] or {}
Line 47 ⟶ 45:
-- Get the argument for a title's namespace, if it was specified in the args table.
local function getNamespaceArg(title, args
if title.isTalkPage then
return lookUpNamespaceArg(args, cfg.talk)
end
for _, key in ipairs(getNamespaceArgKeys(title
local arg = lookUpNamespaceArg(args, mw.ustring.lower(key))
if arg ~= nil then
Line 61 ⟶ 59:
-- Look up a page type specific to the title's namespace
local function getExplicitPageType(title
if title.isTalkPage then
return cfg.talkDefault
Line 70 ⟶ 68:
-- Get a default page type that is not specific to the title's namespace
local function getDefaultPageType(args
local other = lookUpNamespaceArg(args, cfg.other)
if type(other) == 'string' then
Line 102 ⟶ 100:
end
local function pluralize(pageType
if cfg.irregularPlurals[pageType] then
return cfg.irregularPlurals[pageType]
Line 153 ⟶ 151:
end
-- Find pages which do not exist
-- Get page types for mainspaces pages with an explicit class specified▼
local function
if not title.exists then -- not an article if it does not exist▼
return cfg.naDefault▼
end
local exists = false
exists = true
elseif title.namespace==8 and mw.message.new(title.text):exists() then
exists = true
elseif title.namespace==6 and title.fileExists then
exists = true
end▼
if not exists then
if type(arg) == 'string' then
▲ return cfg.naDefault
end▼
end▼
end
▲-- Get page types for mainspaces pages with an explicit class specified
local class = args[1]
if type(class) == 'string' then -- Put in lower case so e.g. "na" and "NA" will both match
Line 178 ⟶ 196:
-- Get page type specified by an explicit namespace argument.
local function getNamespaceArgPageType(title, args
local namespaceArg = getNamespaceArg(title, args
if namespaceArg == true then
-- Namespace has been explicitly enabled, so return the default for
-- this namespace
return getExplicitPageType(title
elseif namespaceArg == false then
-- Namespace has been explicitly disabled
return getDefaultPageType(args
elseif namespaceArg then
-- This namespaces uses custom text
Line 197 ⟶ 215:
-- Get page type not specified or detected by other means
local function getOtherPageType(title, args
-- Whether the title is in the set of default active namespaces which are looked up in cfg.pagetypes.
local isInDefaultActiveNamespace = false
Line 215 ⟶ 233:
end
if isInDefaultActiveNamespace then
return getExplicitPageType(title
else
return getDefaultPageType(args
end
end
detectRedirects(title, args, cfg)▼
or parseContent(title, args, {▼
{'softredirect', cfg.softRedirect, cfg.softRedirectDefault},▼
{'setindex', cfg.sia, cfg.siaDefault, true},▼
{'disambiguation', cfg.dab, cfg.dabDefault, true},▼
{'rfd', cfg.rfd, cfg.rfdDefault},▼
})▼
▲ or (title.namespace == 0 and getMainNamespaceClassPageType(title, args, cfg))
or getNamespaceArgPageType(title, args, cfg)▼
or getOtherPageType(title, args, cfg)▼
▲end
local title
if args.page then
title = mw.title.new(args.page)
▲ if not title then
▲ return nil
▲ end
else
title = mw.title.getCurrentTitle()
end
if title and not yesno(args.talk, true) and args[cfg.defaultns] ~= cfg.defaultnsAll then
▲ else
▲ return title
end
▲end
or nonExistent(title, args)
▲ or parseContent(title, args, {
▲ {'softredirect', cfg.softRedirect, cfg.softRedirectDefault},
▲ local title = getTitle(args, cfg)
▲ {'setindex', cfg.sia, cfg.siaDefault, true},
▲ {'disambiguation', cfg.dab, cfg.dabDefault, true},
▲ {'rfd', cfg.rfd, cfg.rfdDefault},
▲ })
or (title.namespace == 0 and getMainNamespaceClassPageType(title, args))
if yesno(args.plural, false) then
pageType = pluralize(pageType
end
if yesno(args.caps, false) then
Line 267 ⟶ 270:
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame)
return p._main(args)
end
|