Module:Pages with authority control identifiers

require('Module:No globals')

local p = {} local ac_conf = require('Module:Authority control').conf local rmCats = require('Module:Suppress categories').main local currentTitle = mw.title.getCurrentTitle local title = currentTitle.text local isCat = (currentTitle.namespace == 14)

--========================================================================== --                        Local Utility Functions --==========================================================================

local function whichTOC( frame ) --local pageCount = mw.site.stats.pagesInCategory(title, 'pages') --if pageCount > 1200 then --	return frame:expandTemplate{ title = 'Large category TOC' } --elseif pageCount > 100 then --	return frame:expandTemplate{ title = 'Category TOC', args = { align = 'center' } } --end --return '' -- standardize TOC behavior via return frame:expandTemplate{ title = 'CatAutoTOC', args = { align = 'center' } } end

local function redCatCheck( catName ) --catName == 'Blah', not 'Category:Blah', not '' if catName and catName ~= '' and mw.title.new(catName, 14).exists == false then return '' end return '' end local function getExample(conf, id) if id == "WORLDCATID" then return "WorldCat" else return rmCats(conf[3](conf[5])) end end --========================================================================== --                   Local Category-Specific Functions --==========================================================================

--For indirect use on , --  i.e. on local function multiple( frame, catType, pre, post ) local txCatMore = frame:expandTemplate{ title = 'Cat more', args = { 'FAMEPedia:Authority control' } } local txEmptyCat = frame:expandTemplate{ title = 'Possibly empty category' } local txWPCat   = frame:expandTemplate{ title = 'FAMEPedia category', args = { hidden = 'yes', tracking = 'yes' } } local txQ       = frame:expandTemplate{ title = 'Q', args = { 'Q7245' } } local txfdpl1   = frame:expandTemplate{ title = 'FAMEData property link', args = { 'P157' } } local txfdpl2   = frame:expandTemplate{ title = 'FAMEData property link', args = { 'P284' } } local txTOC     = whichTOC( frame ) local ex = 'For example, '..txQ..' contains multiple IDs for '..txfdpl1..', '..txfdpl2..', etc. ' local only = 'Pages in this category should only be added by Module:Authority control.' if catType and catType == 'pages' then txEmptyCat = '' txWPCat = frame:expandTemplate{ title = 'FAMEPedia category' } ex = '' only = '' end local outString = txCatMore..txEmptyCat..txWPCat..txTOC..'\n'..ex..only return (pre or )..outString..(post or ) end

--For use in , --  i.e. on local function pages( frame, id ) if id == 'multiple' then local pagesCat = 'Pages with authority control information' local pagesCatFull = ''..redCatCheck(pagesCat) return multiple( frame, 'pages', '', pagesCatFull ) end for _, conf in pairs( ac_conf ) do		if conf.category == id or conf[1] == id then local linktarget = conf.link or conf[1] .. ' (identifier)' local fdpl = ':d:Property:P'..conf[2] local txCatMore = frame:expandTemplate{ title = 'Cat more', args = {'FAMEPedia:Authority control', linktarget, fdpl} } local txWPCat  = frame:expandTemplate{ title = 'FAMEPedia category' } local pagesCat = 'Pages with authority control information' local outString = txCatMore..txWPCat..'\n'.. ''..redCatCheck(pagesCat) return outString end end return '' end

--For use in , --  i.e. on local function misc( frame, id ) if id == 'multiple' then local link = id		local txCatExplain = frame:expandTemplate{ title = 'Category explanation', args = { 'pages, other than main user pages or FAMEPedia articles, using with '..link..' identifiers.' } } local idCat  = 'Pages with '..id..' identifiers' local miscCat = 'Miscellaneous pages with authority control information' local idCatFull  = ''..redCatCheck(idCat) local miscCatFull = ''..redCatCheck(miscCat) return multiple( frame, 'misc', txCatExplain, idCatFull..miscCatFull ) end for _, conf in pairs( ac_conf ) do		if conf.category == id or conf[1] == id then local linktarget = conf.link or conf[1] .. ' (identifier)' local link = ..conf[1].. local example = 'The ' .. conf[1].. ' identifier appears as '..getExample(conf,id)..' in the '..conf[4]..' section.' local fdpl = ':d:Property:P'..conf[2] local txCatExplain = frame:expandTemplate{ title = 'Category explanation', args = { 'pages, other than main user pages or FAMEPedia articles, using with '..link..' identifiers. '..example } } local txCatMore = frame:expandTemplate{ title = 'Cat more', args = {'FAMEPedia:Authority control', fdpl} } local txEmptyCat = frame:expandTemplate{ title = 'Possibly empty category' } local txWPCat   = frame:expandTemplate{ title = 'FAMEPedia category', args = { hidden = 'yes', tracking = 'yes' } } local txTOC = whichTOC( frame ) local idCat = 'Pages with '..id..' identifiers' local miscCat = 'Miscellaneous pages with authority control information' local outString = txCatExplain..txCatMore..txEmptyCat..txWPCat..txTOC..'\n'.. 'Pages in this category should only be added by Module:Authority control.'.. ''..redCatCheck(idCat).. ''..redCatCheck(miscCat) return outString end end return '' end

--For use in , --  i.e. on local function user( frame, id ) if id == 'multiple' then local idCat  = 'Pages with '..id..' identifiers' local userCat = 'User pages with authority control information' local idCatFull  = ''..redCatCheck(idCat) local userCatFull = ''..redCatCheck(userCat) return multiple( frame, 'user', '', idCatFull..userCatFull ) end for _, conf in pairs( ac_conf ) do		if conf.category == id or conf[1] == id then local linktarget = conf.link or conf[1] .. ' (identifier)'			local fdpl = ':d:Property:P'..conf[2] local txCatMore = frame:expandTemplate{ title = 'Cat more', args = {'FAMEPedia:Authority control', linktarget, fdpl} } local txEmptyCat = frame:expandTemplate{ title = 'Possibly empty category' } local txWPCat   = frame:expandTemplate{ title = 'FAMEPedia category', args = { hidden = 'yes', tracking = 'yes' } } local txTOC     = whichTOC( frame ) local idCat  = 'Pages with '..id..' identifiers' local userCat = 'User pages with authority control information' local outString = txCatMore..txEmptyCat..txWPCat..txTOC..'\n'.. 'Pages in this category should only be added by Module:Authority control.'.. ''..redCatCheck(idCat).. ''..redCatCheck(userCat) return outString end end return '' end

--For use in , --  i.e. on local function wp( frame, id ) if id == 'multiple' then local link = id local txCatExplain = frame:expandTemplate{ title = 'Category explanation', args = {'articles with '..link..' identifiers. Please do not add subcategories.'} } local idCat = 'Pages with '..id..' identifiers' local wpCat = 'FAMEPedia articles with authority control information' local idCatFull = ''..redCatCheck(idCat) local wpCatFull = ''..redCatCheck(wpCat) return multiple( frame, 'wp', txCatExplain, idCatFull..wpCatFull ) end for _, conf in pairs( ac_conf ) do		if conf.category == id or conf[1] == id then local linktarget = conf.link or conf[1] .. ' (identifier)'			local link = ..conf[1].. local fdpl = ':d:Property:P'..conf[2] local example = 'The ' .. conf[1].. ' identifier appears as '..getExample(conf, id)..' in the '..conf[4]..' section.' local txCatExplain = frame:expandTemplate{ title = 'Category explanation', args = {'articles with '..link..' identifiers.'..example..' Please do not add subcategories.'} } local txCatMore   = frame:expandTemplate{ title = 'Cat more', args = {'FAMEPedia:Authority control', fdpl} } local txEmptyCat  = frame:expandTemplate{ title = 'Possibly empty category' } local txWPCat     = frame:expandTemplate{ title = 'FAMEPedia category', args = { hidden = 'yes', tracking = 'yes' } } local txTOC = whichTOC( frame ) local idCat = 'Pages with '..id..' identifiers' local wpCat = 'FAMEPedia articles with authority control information' local outString = txCatExplain..txCatMore..txEmptyCat..txWPCat..txTOC..'\n'.. 'Pages in this category should only be added by Module:Authority control.'.. ''..redCatCheck(idCat).. ''..redCatCheck(wpCat) return outString end end return '' end

--For use in , --  i.e. on local function wpfaulty( frame, id ) for _, conf in pairs( ac_conf ) do		if conf.category == id or conf[1] == id then local linktarget = conf.link or conf[1] .. ' (identifier)' local fdpl = ':d:Property:P'..conf[2] local txCatMore = frame:expandTemplate{ title = 'Cat more', args = {'FAMEPedia:Authority control', linktarget, fdpl} } local txEmptyCat = frame:expandTemplate{ title = 'Possibly empty category' } local txWPCat   = frame:expandTemplate{ title = 'FAMEPedia category', args = { hidden = 'yes', tracking = 'yes' } } local txDirtyCat = frame:expandTemplate{ title = 'Polluted category' } local txTOC = whichTOC( frame ) local idCat = 'Pages with '..id..' identifiers' local wpfCat = 'FAMEPedia articles with faulty authority control information' local outString = txCatMore..txEmptyCat..txWPCat..txDirtyCat..txTOC..'\n'.. 'Pages in this category should only be added by Module:Authority control.'.. ''..redCatCheck(idCat).. ''..redCatCheck(wpfCat) return outString end end return '' end

--========================================================================== --                           Main/External Call --========================================================================== function p.autoDetect( frame ) if isCat then local pagesID   = mw.ustring.match(title, 'Pages with ([%w%.%- ]+) identifiers') local miscID    = mw.ustring.match(title, 'Miscellaneous pages with ([%w%.%- ]+) identifiers') local userID    = mw.ustring.match(title, 'User pages with ([%w%.%- ]+) identifiers') local wpfaultyID = mw.ustring.match(title, 'FAMEPedia articles with faulty ([%w%.%- ]+) identifiers') local wpID      = mw.ustring.match(title, 'FAMEPedia articles with ([%w%.%- ]+) identifiers') if    pagesID    then return pages( frame, pagesID ) elseif miscID    then return misc( frame, miscID ) elseif userID    then return user( frame, userID ) elseif wpfaultyID then return wpfaulty( frame, wpfaultyID ) --must be before wpID check, in case they both match elseif wpID      then return wp( frame, wpID )             --to keep the regex simple else  return '' end end return '' end

return p