Smazaný obsah Přidaný obsah
umožnění vlastního formátování i nezadávaných parametrů
optimalizace kódu; unifikace; DRY refaktorizace
Řádek 4:
-- @author
-- [[meta:User:Danny B.]]
local Source_module = {}
----------------------------------------
 
Řádek 19:
-- @return
-- Preprocessed wikitext
function Source_module.print( frame )
local source = mw.text.trim( frame.args[1] or "" )
if not source == "" then
error( "Missing the first argument – name of the source module" )
end
local sourceObjectExist, sourceObjectsourceTitle = pcall( require, frame:getTitle() .. "/" .. source )
source = mw.text.trim( source )
local sourceObjectExist, sourceObject = pcall( require, sourceTitle )
local sourceObjectExist, sourceObject = pcall( require, frame:getTitle() .. "/" .. source )
if not sourceObjectExist then
error( "Missing \"" .. frame:getTitle() .. "/" .. sourcesourceTitle .. "\" module" )
end
if sourceObject.editions and not sourceObject.editions.switch then
error( "\"switch\" field is missing in " .. frame:getTitle() .. "/" .. sourcesourceTitle .. ".editions" )
end
Řádek 45 ⟶ 44:
local errors = {}
local data = {}
local argumentDefaults = {
["díl"] = {
description = "díl"
},
["heslo"] = {
description = "heslo",
fillIn = "kapitola",
fill = function ( args )
return "„" .. args["heslo"] .. "“"
end
},
["rok"] = {
description = "rok vydání"
},
["strany"] = {
description = "citovaná strana či strany"
},
["vydání"] = {
description = "vydání"
},
["url"] = {
description = "odkaz na online verzi"
}
}
for param, value in pairs( templateArgs ) do
Řádek 55 ⟶ 79:
for param, value in pairs( sourceObject.arguments or {} ) do
if value.required and not args[param] then
table.insert( errors, { missingValue = { paramName = param, paramDesc = value.description or argumentDefaults[param].description } } )
end
end
 
if sourceObject.editions and args[sourceObject.editions.switch] and not sourceObject.editions[args[sourceObject.editions.switch]] then
table.insert( errors, { unknownValue = { paramName = param, paramDesc = value.description or argumentDefaults[param].description } } )
end
Řádek 100 ⟶ 124:
if sourceObject.arguments then
for param, value in pairs( sourceObject.arguments ) do
data[( value.fillIn or argumentDefaults[param].fillIn or param )] = ( value.fill and value.fill( args ) or argumentDefaults[param].fill and argumentDefaults[param].fill( args ) or args[param] )
end
end
Řádek 121 ⟶ 145:
 
----------------------------------------
return Source_module