پودمان:Check2
توضیحات پودمان[ایجاد]
در صورت تمایل یک صفحهٔ توضیحات برای این پودمان اسکریبونتو ایجاد کنید. ویرایشگران میتوانند در صفحات تمرین (ایجاد | آینه) و آزمایشی (ایجاد) این پودمان را آزمایش کنند. لطفاً ردهها را به زیرصفحهٔ /توضیحات بیافزایید. زیرصفحههای این پودمان. |
local Check = {}
function Check._error( error_str, Module )
local frame = mw.getCurrentFrame()
local localArgs = frame.args
local templateArgs = frame:getParent().args
-- Allgemeine Parameter auswerten
if templateArgs['ignore_errors'] == nil
then
if localArgs['ignore_errors'] == nil then templateArgs['ignore_errors'] = '0' else templateArgs['ignore_errors'] = localArgs['ignore_errors'] end
end
if templateArgs['ignore_errors'] == '1' or templateArgs['ignore_errors'] == 'true' then return '' end
if templateArgs['no_category'] == nil
then
if localArgs['no_category'] == nil then templateArgs['no_category'] = '0' else templateArgs['no_category'] = localArgs['no_category'] end
end
if templateArgs['error_category'] == nil
then
if localArgs['error_category'] == nil
then templateArgs['error_category'] = '[[Kategorie:Fehlerberichte des Modules ' .. Module .. ']]'
else templateArgs['error_category'] = '[[Kategorie:' .. localArgs['error_category'] .. ']]' end
else templateArgs['error_category'] = '[[Kategorie:' .. templateArgs['error_category'] .. ']]'
end
-- Fehler generieren
local error_str = '<strong class="error WV-Check-Error">Fehler im Module [[Module:' .. Module .. '|' .. Module .. ']]: ' .. error_str .. '</strong>';
if templateArgs['ignore_errors'] == '1' or templateArgs['ignore_errors'] == 'true' then error_str = '' end
-- Kategorie generieren
if templateArgs['no_category'] == '0' or templateArgs['ignore_errors'] == 'false' then error_str = templateArgs['error_category'] .. error_str end
return error_str;
end
function Check._testParams ( templateArgs, params, Module )
-- Argumente des invoke-Aufrufs holen
local frame = mw.getCurrentFrame()
local localArgs = frame.args
local localArgsNew = {}
local templateArgsNew = {}
for key,value in pairs ( localArgs ) do
localArgsNew[mw.ustring.lower(tostring(key))] = value
end
for key,value in pairs ( templateArgs ) do
templateArgsNew[mw.ustring.lower(tostring(key))] = value
end
localArgs = localArgsNew
templateArgs = templateArgsNew
-- Variablen für Parameterauswertung
local errorMsg = 'Unbekannte(r) Parameter: '
local errorCat = '[[Kategorie:Vorlagen mit unbekannten Parametern]]'
local errorOccured = false
-- generell erlaubte Parameter
local paramsWhitelist = { ignore_errors = 'ignore_errors', no_category = 'no_category', error_category = 'error_category' }
-- Test ob unbekannte Parameter übergeben wurden (Tippfehler)
-- 0-9 werden auch stillschweigend akzeptiert
-- allgemeine Parameter werden auch akzeptiert
for k, v in pairs(templateArgs) do
if ( not ( ( params[k] ~= nil ) or ( paramsWhitelist[k] ~= nil ) ) ) and ( string.match ( k, '^%d*$' ) == nil )
then
errorMsg = errorMsg .. '<span style="font-weight: bold; font-style:italic">' .. k .. '</span> (über Vorlage), '
errorOccured = true
end
end
for k, v in pairs(localArgs) do
if ( not ( ( params[k] ~= nil ) or ( paramsWhitelist[k] ~= nil ) ) ) and ( string.match ( k, '^%d*$' ) == nil )
then
errorMsg = errorMsg .. '<span style="font-weight: bold; font-style:italic">' .. k .. '</span> (über invoke), '
errorOccured = true
end
end
-- Parameter für Fehlerbehandlung auswerten
if templateArgs['ignore_errors'] == nil
then
if localArgs['ignore_errors'] == nil then templateArgs['ignore_errors'] = '0' else templateArgs['ignore_errors'] = localArgs['ignore_errors'] end
end
if templateArgs['no_category'] == nil
then
if localArgs['no_category'] == nil then templateArgs['no_category'] = '0' else templateArgs['no_category'] = localArgs['no_category'] end
end
if errorOccured and ( templateArgs['ignore_errors'] == '0' or templateArgs['ignore_errors'] == 'false' )
then
errorMsg = Check._error ( string.sub ( errorMsg, 1 , string.len ( errorMsg ) - 2 ), Module )
if templateArgs['no_category'] == '0' or templateArgs['no_category'] == 'false' then errorMsg = errorMsg .. '[[Kategorie:Vorlagen mit unbekannten Parametern]]' end
else
errorMsg = ''
end
return errorMsg
end
function Check._isParamUsed ( templateArgs, paramName )
-- Argumente des invoke-Aufrufs holen
local frame = mw.getCurrentFrame()
local localArgs = frame.args
local localArgsNew = {}
local templateArgsNew = {}
-- alles klein schreiben
for key,value in pairs ( localArgs ) do
localArgsNew[mw.ustring.lower(tostring(key))] = value
end
for key,value in pairs ( templateArgs ) do
templateArgsNew[mw.ustring.lower(tostring(key))] = value
end
localArgs = localArgsNew
templateArgs = templateArgsNew
-- Test ein Parameter benutzt wurde
for k, v in pairs(templateArgs) do
if ( k == paramName ) then return true end
end
for k, v in pairs(localArgs) do
if ( k == paramName ) then return true end
end
return false
end
function Check._testFile ( file, Module )
local errorMsg = ''
--eckige Klammern vergessen
if ( string.match ( file, '^%[%[%a' ) == nil ) then
errorMsg = Check._error ( 'führende eckige Klammern bei der Dateieinbindung vergessen' , Module )
end
if ( string.match ( file, '%]%]$' ) == nil ) then
errorMsg = errorMsg .. Check._error ( 'abschließende eckige Klammern bei der Dateieinbindung vergessen' , Module )
end
return errorMsg
end
return Check