Modul:MonitorTemplateArguments
Dokumentaci tohoto modulu lze vytvořit na stránce Nápověda:Modul:MonitorTemplateArguments
-- @brief
-- Monitoring of template arguments.
--
-- @author
-- [[meta:User:Danny B.]]
local _module = {}
----------------------------------------
local kpairs = require( "Module:Iterators" ).kpairs
local mixedScalarTypes = require( "Module:SortingComparators" ).mixedScalarTypes
-- @brief
-- Returns the argument name as a trimmed string or number depending on what applies
--
-- @param
-- argumentString String to be examined
--
-- @return
-- String|Number Argument name
function _module.getArgumentName( argumentString )
local output
output = mw.text.trim( argumentString )
output = tonumber( output ) and tonumber( output ) or output
return output
end
-- @brief
-- Creates the argument monitoring category name
--
-- @param
-- templateName Monitored template
-- argumentName Monitored argument
-- argumentValue Value or value type of monitored argument
--
-- @return
-- Wikitext Monitoring category
function _module.getArgumentMonitoringCategory( templateName, argumentName, argumentValue )
local output
output = mw.ustring.format( "[[Kategorie:Monitoring:%s/%s/%s]]", templateName, tostring( argumentName ), argumentValue )
return output
end
-- @brief
-- Creates the argument presence monitoring category name
--
-- @param
-- templateName Monitored template
-- argumentName Monitored argument
-- argumentValue Value type of monitored argument
--
-- @return
-- Wikitext Monitoring category
function _module.getArgumentPresenceMonitoringCategory( templateName, argumentName, argumentValue )
local output
argumentValue = " " .. argumentValue
output = _module.getArgumentMonitoringCategory( templateName, argumentName, argumentValue )
return output
end
-- @brief
-- Creates the Wikidata status monitoring category name
--
-- @param
-- templateName Monitored template
-- argumentName Monitored argument
-- argumentValue Value type of Wikidata status
--
-- @return
-- Wikitext Monitoring category
function _module.getWikidataStatusMonitoringCategory( templateName, argumentName, argumentValue )
local output
argumentValue = mw.ustring.format( " Wikidata/%s", argumentValue )
output = _module.getArgumentMonitoringCategory( templateName, argumentName, argumentValue )
return output
end
-- @brief
-- Monitors the presence and emptiness of given parameter
--
-- @param
-- frame The current frame object
--
-- @return
-- PreprocessedWikitext Relevant monitoring category
function _module.printArgumentPresence( frame )
local output = ""
local templateName = mw.title.new( frame:getParent():getTitle() ).text
local argName = _module.getArgumentName( frame.args["parametr"] )
local passedArg = frame:getParent().args[argName]
local result = "nepřítomný"
if passedArg then
result = mw.text.trim( passedArg ) == "" and "prázdný" or "vyplněný"
end
output = output .. _module.getArgumentPresenceMonitoringCategory( templateName, argName, result )
output = frame:preprocess( output )
return output
end
-- @brief
-- Monitors the presence and emptiness of all passed and enumerated available parameters
--
-- @param
-- frame The current frame object
--
-- @return
-- PreprocessedWikitext Relevant monitoring categories
function _module.printArgumentsPresence( frame )
local output = ""
local templateName = mw.title.new( frame:getParent():getTitle() ).text
local availableArgs = frame.args
local passedArgs = frame:getParent().args
local argVals = {}
for _, arg in ipairs( availableArgs ) do
argVals[_module.getArgumentName( arg )] = "nepřítomný"
end
for arg, val in pairs( passedArgs ) do
argVals[arg] = mw.text.trim( val ) == "" and "prázdný" or "vyplněný"
end
for arg, val in kpairs( argVals, mixedScalarTypes ) do
output = output .. _module.getArgumentPresenceMonitoringCategory( templateName, arg, val )
end
output = frame:preprocess( output )
return output
end
-- @brief
-- Monitors the status of possible Wikidata values in template parameters
--
-- @param
-- frame The current frame object
--
-- @return
-- PreprocessedWikitext Relevant monitoring categories
function _module.printWikidataStatus( frame )
local output = ""
local templateName = mw.title.new( frame:getParent():getTitle() ).text
local wikidataArgs = frame.args
local templateArgs = frame:getParent().args
local argVals = {}
for arg, val in pairs( wikidataArgs ) do
local wikidataVal = wikidataArgs[arg] and mw.text.trim( wikidataArgs[arg] )
local templateVal = templateArgs[arg] and mw.text.trim( templateArgs[arg] )
wikidataVal = wikidataVal ~= "" and wikidataVal or nil
templateVal = templateVal ~= "" and templateVal or nil
if wikidataVal then
argVals[arg] = "převzato"
if templateVal then
argVals[arg] = wikidataVal == templateVal and "shodné" or "rozdílné"
end
else
argVals[arg] = nil
end
end
for arg, val in kpairs( argVals, mixedScalarTypes ) do
output = output .. _module.getWikidataStatusMonitoringCategory( templateName, arg, val )
end
output = frame:preprocess( output )
return output
end
----------------------------------------
return _module