Modulo:Pampanid nga agraman kadagiti panagilasin ti kontrol ti autoridad

Manipud iti Wikipedia, ti nawaya nga ensiklopedia
Darsen a mapan iti pagdaliasatan Darsen a mapan agbiruk

require('Modulo:No globals')

local p = {}
local ac_conf = require('Modulo:Kontrol ti autoridad').conf
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 >= 5000 then
		return frame:expandTemplate{ title = 'Large category TOC' }
	elseif pageCount > 400 then
		return frame:expandTemplate{ title = 'Kategoria TOC', args = { align = 'center' } }
	end
	return ''
end

local function redCatCheck( catName ) --catName == 'Blah', not 'Category:Blah', not '[[Category:Blah]]'
	if catName and catName ~= '' and mw.title.new(catName, 14).exists == false then
		return '[[Kategoria:Pampanid nga agraman kadagiti panangilasin ti kontrol ti autoridad ti nasilpuan ti nalababsit a kategoria]]'
	end
	return ''
end

--[[==========================================================================]]
--[[                    Local Category-Specific Functions                     ]]
--[[==========================================================================]]

--For use in [[Category:Pages with authority control information]],
--   i.e. on [[Category:Pages with VIAF identifiers]]
local function pages( frame, id )
	for _, conf in pairs( ac_conf ) do
		if conf.category == id or conf[1] == id then
			local link = conf[2] --not used locally yet
			local txCatMore = frame:expandTemplate{ title = 'Kat adu pay', args = {'Wikipedia:Kontrol ti autoridad'} }
			local txWPCat   = frame:expandTemplate{ title = 'Kategoria ti Wikipedia' }
			local pagesCat = 'Pampanid nga agraman kadagiti pakaammo ti kontrol ti autoridad'
			local outString = txCatMore..txWPCat..'\n'..
					'[[Kategoria:'..pagesCat..'|'..id..']]'..redCatCheck(pagesCat)
			return outString
		end
	end
	return ''
end

--For use in [[Category:Miscellaneous pages with authority control information]],
--   i.e. on [[Category:Miscellaneous pages with VIAF identifiers]]
local function misc( frame, id )
	for _, conf in pairs( ac_conf ) do
		if conf.category == id or conf[1] == id then
			local link = conf[2]
			local txCatExplain = frame:expandTemplate{ title = 'Palawag ti kategoria', 
					args = { 'pampanid, malaksid ngem dagiti nangruna a panid ti agar-aramat wenno dagiti artikulo ti Wikipedia, nga agus-usar iti {{[[Plantilia:Kontrol ti autoridad|Kontrol ti autoridad]]}} nga agraman kadagiti panagilasin ti '..link..' .' } }
			local txCatMore  = frame:expandTemplate{ title = 'Kat adu pay', args = {'Wikipedia:Kontrol ti autoridad'} }
			local txEmptyCat = frame:expandTemplate{ title = 'Mabalin nga awan linaon a kategoria' }
			local txWPCat    = frame:expandTemplate{ title = 'Kategoria ti Wikipedia', args = { hidden = 'yes', tracking = 'yes' } }
			local txTOC = whichTOC( frame )
			local idCat = 'Pampanid nga agraman kadagiti panagilasin ti '..id..' '
			local miscCat = 'Nadumaduma a pampanid nga agraman kadagiti pakaammo ti kontrol ti autoridad'
			local outString = txCatExplain..txCatMore..txEmptyCat..txWPCat..txTOC..'\n'..
					'Dagiti panid iti daytoy a kategoria ket nasken laeng koma nga inayon babaen ti [[Modulo:Kontrol ti autoridad]].'..
					'[[Kategoria:'..idCat..']]'..redCatCheck(idCat)..
					'[[Kategoria:'..miscCat..'|'..id..']]'..redCatCheck(miscCat)
			return outString
		end
	end
	return ''
end

--For use in [[Category:User pages with authority control information]],
--   i.e. on [[Category:User pages with VIAF identifiers]]
local function user( frame, id )
	for _, conf in pairs( ac_conf ) do
		if conf.category == id or conf[1] == id then
			local link = conf[2] --not used locally yet
			local txCatMore  = frame:expandTemplate{ title = 'Kat adu pay', args = {'Wikipedia:Kontrol ti autoridad'} }
			local txEmptyCat = frame:expandTemplate{ title = 'Mabalin nga awan linaon a kategoria' }
			local txWPCat    = frame:expandTemplate{ title = 'Kategoria ti Wikipedia', args = { hidden = 'yes', tracking = 'yes' } }
			local txTOC = whichTOC( frame )
			local idCat = 'Pampanid nga agraman kadagiti panagilasin ti '..id..' '
			local userCat = 'Pampanid ti agar-aramat nga agraman kadagiti pakaammo ti kontrol ti autoridad'
			local outString = txCatMore..txEmptyCat..txWPCat..txTOC..'\n'..
					'Dagiti panid iti daytoy a kategoria ket nasken laeng koma nga inayon babaen ti [[Modulo:Kontrol ti autoridad]].'..
					'[[Kategoria:'..idCat..']]'..redCatCheck(idCat)..
					'[[Kategoria:'..userCat..'|'..id..']]'..redCatCheck(userCat)
			return outString
		end
	end
	return ''
end

--For use in [[Category:Wikipedia articles with authority control information]],
--   i.e. on [[Category:Wikipedia articles with VIAF identifiers]]
local function wp( frame, id ) 
	for _, conf in pairs( ac_conf ) do
		if conf.category == id or conf[1] == id then
			local link = conf[2]
			local txCatExplain = frame:expandTemplate{ title = 'Palawag ti kategoria', args = {'artikulo nga agraman kadagiti panagilasin ti '..link..' . Pangngaasi a saan nga agnayon kadagiti [[Wikipedia:Kategorisasion#Subkategorisasion|subkategoria]].'} }
			local txCatMore    = frame:expandTemplate{ title = 'Kat adu pay', args = {'Wikipedia:Kontrol ti autoridad'} }
			local txEmptyCat   = frame:expandTemplate{ title = 'Mabalin nga awan linaon a kategoria' }
			local txWPCat      = frame:expandTemplate{ title = 'Kategoria ti Wikipedia', args = { hidden = 'yes', tracking = 'yes' } }
			local txTOC = whichTOC( frame )
			local idCat = 'Pampanid nga agraman kadagiti panagilasin ti '..id..' '
			local wpCat = 'Dagiti artikulo ti Wikipedia nga agraman kadagiti pakaammo ti kontrol ti autoridad'
			local outString = txCatExplain..txCatMore..txEmptyCat..txWPCat..txTOC..'\n'..
					'Dagiti panid iti daytoy a kategoria ket nasken laeng koma nga inayon babaen ti [[Modulo:Kontrol ti autoridad]].'..
					'[[Kategoria:'..idCat..']]'..redCatCheck(idCat)..
					'[[Kategoria:'..wpCat..'|'..id..']]'..redCatCheck(wpCat)
			return outString
		end
	end
	return ''
end

--For use in [[Category:Wikipedia articles with faulty authority control information]],
--   i.e. on [[Category:Wikipedia articles with faulty VIAF identifiers]]
local function wpfaulty( frame, id )
	for _, conf in pairs( ac_conf ) do
		if conf.category == id or conf[1] == id then
			local link = conf[2] --not used locally yet
			local param = conf[3]
			local txCatMore  = frame:expandTemplate{ title = 'Kat adu pay', args = {'Wikipedia:Kontrol ti autoridad', 'd:Property:P'..param} }
			local txEmptyCat = frame:expandTemplate{ title = 'Mabalin nga awan linaon a kategoria' }
			local txWPCat    = frame:expandTemplate{ title = 'Kategoria ti Wikipedia', args = { hidden = 'yes', tracking = 'yes' } }
			local txDirtyCat = frame:expandTemplate{ title = 'Polluted category' }
			local txTOC = whichTOC( frame )
			local idCat = 'Pampanid nga agraman kadagiti panagilasin ti '..id..' '
			local wpfCat = 'Dagiti artikulo ti Wikipedia nga agraman kadagiti naperdi a panagilasin ti kontrol ti autoridad'
			local outString = txCatMore..txEmptyCat..txWPCat..txDirtyCat..txTOC..'\n'..
					'Dagiti panid iti daytoy a kategoria ket nasken laeng koma nga inayon babaen ti [[Modulo:Kontrol ti autoridad]].'..
					'[[Kategoria:'..idCat..']]'..redCatCheck(idCat)..
					'[[Kategoria:'..wpfCat..'|'..id..']]'..redCatCheck(wpfCat)
			return outString
		end
	end
	return ''
end

--[[==========================================================================]]
--[[                            Main/External Call                            ]]
--[[==========================================================================]]
function p.autoDetect( frame )
	if isCat then
		local pagesID    = mw.ustring.match(title, 'Pampanid nga agraman kadagiti panagilasin ti ([%w%.%- ]+)')
		local miscID     = mw.ustring.match(title, 'Nadumaduma a pampanid nga agraman kadagiti panagilasin ti ([%w%.%- ]+)')
		local userID     = mw.ustring.match(title, 'Pampanid ti agar-aramat nga agraman kadagiti panagilasin ti ([%w%.%- ]+)')
		local wpfaultyID = mw.ustring.match(title, 'Dagiti artikulo ti Wikipedia nga agraman kadagiti naperdi a panagilasin ti ([%w%.%- ]+)')
		local wpID       = mw.ustring.match(title, 'Dagiti artikulo ti Wikipedia nga agraman kadagiti panagilasin ti ([%w%.%- ]+)')

		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 '[[Kategoria:Pampanid nga agraman kadagiti panangilasin ti kontrol ti autoridad ti di ammo a kategoria]]'
		end
	end
	return ''
end

return p