Modul:Check2: Unterschied zwischen den Versionen

Aus skandinavien-wiki.net
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 38: Zeile 38:
function Check._testParams ( templateArgs, params, modul )
function Check._testParams ( templateArgs, params, modul )
    
    
-- Argumente des invoke-Aufrufs holen
  -- Argumente des invoke-Aufrufs holen
local frame = mw.getCurrentFrame()
  local frame = mw.getCurrentFrame()
local localArgs = frame.args
  local localArgs = frame.args


local localArgsNew = {}
  local localArgsNew = {}
local templateArgsNew = {}
  local templateArgsNew = {}
 
for key,value in pairs ( localArgs ) do
  for key,value in pairs ( localArgs ) do
localArgsNew[mw.ustring.lower(tostring(key))] = value
      localArgsNew[mw.ustring.lower(tostring(key))] = value
end
  end
for key,value in pairs ( templateArgs ) do
  for key,value in pairs ( templateArgs ) do
templateArgsNew[mw.ustring.lower(tostring(key))] = value
      templateArgsNew[mw.ustring.lower(tostring(key))] = value
end
  end
localArgs = localArgsNew
  localArgs = localArgsNew
templateArgs = templateArgsNew
  templateArgs = templateArgsNew


-- Variablen für Parameterauswertung
  -- Variablen für Parameterauswertung
local errorMsg = 'Unbekannte(r) Parameter: '
  local errorMsg = 'Unbekannte(r) Parameter: '
local errorCat = '[[Kategorie:Vorlagen mit unbekannten Parametern]]'
  local errorCat = '[[Kategorie:Vorlagen mit unbekannten Parametern]]'
local errorOccured = false
  local errorOccured = false
 
-- generell erlaubte Parameter
  -- generell erlaubte Parameter
local paramsWhitelist = { ignore_errors = 'ignore_errors', no_category = 'no_category', error_category = 'error_category' }
  local paramsWhitelist = { ignore_errors = 'ignore_errors', no_category = 'no_category', error_category = 'error_category' }
    
    
   -- Test ob unbekannte Parameter übergeben wurden (Tippfehler)
   -- Test ob unbekannte Parameter übergeben wurden (Tippfehler)
Zeile 104: Zeile 104:
function Check._isParamUsed ( templateArgs, paramName )
function Check._isParamUsed ( templateArgs, paramName )
    
    
-- Argumente des invoke-Aufrufs holen
  -- Argumente des invoke-Aufrufs holen
local frame = mw.getCurrentFrame()
  local frame = mw.getCurrentFrame()
local localArgs = frame.args
  local localArgs = frame.args
 
local localArgsNew = {}
  local localArgsNew = {}
local templateArgsNew = {}
  local templateArgsNew = {}


-- alles klein schreiben
  -- alles klein schreiben
for key,value in pairs ( localArgs ) do
  for key,value in pairs ( localArgs ) do
localArgsNew[mw.ustring.lower(tostring(key))] = value
      localArgsNew[mw.ustring.lower(tostring(key))] = value
end
  end
for key,value in pairs ( templateArgs ) do
  for key,value in pairs ( templateArgs ) do
templateArgsNew[mw.ustring.lower(tostring(key))] = value
      templateArgsNew[mw.ustring.lower(tostring(key))] = value
end
  end
localArgs = localArgsNew
  localArgs = localArgsNew
templateArgs = templateArgsNew
  templateArgs = templateArgsNew
    
    
-- Test ein Parameter benutzt wurde
  -- Test ein Parameter benutzt wurde
for k, v in pairs(templateArgs) do
  for k, v in pairs(templateArgs) do
if  ( k == paramName ) then return true end
      if  ( k == paramName ) then return true end
end
  end
 
     
for k, v in pairs(localArgs) do
  for k, v in pairs(localArgs) do
if  ( k == paramName ) then return true end
      if  ( k == paramName ) then return true end
end
  end
    
    
   return false
   return false
end
end


function Check._testFile ( file, modul )
function Check._testFile ( file, modul, allowTemplates )
 
 
   local errorMsg = ''
   local errorMsg = ''
  if ( allowTemplates == nil ) then allowTemplates = false end
    
    
   --eckige Klammern vergessen
   --eckige Klammern vergessen
   if ( string.match ( file, '^%[%[%a' ) == nil ) then
   if ( string.match ( file, '^%[%[%a' ) == nil ) then
       errorMsg = Check._error ( 'führende eckige Klammern bei der Dateieinbindung vergessen' , modul )
       if ( not ( allowTemplates and string.match ( file, '^%{%{%a' ) ~= nil ) ) then
        errorMsg = Check._error ( 'führende eckige Klammern bei der Dateieinbindung vergessen' , modul )
      end
   end
   end
   if ( string.match ( file, '%]%]$' ) == nil ) then
   if ( string.match ( file, '%]%]$' ) == nil ) then
       errorMsg = errorMsg .. Check._error ( 'abschließende eckige Klammern bei der Dateieinbindung vergessen' , modul )
       if ( not ( allowTemplates and string.match ( file, '^%{%{%a' ) ~= nil ) ) then
        errorMsg = errorMsg .. Check._error ( 'abschließende eckige Klammern bei der Dateieinbindung vergessen' , modul )
      end
   end
   end
    
    

Version vom 4. Februar 2016, 21:40 Uhr

Die Dokumentation für dieses Modul kann unter Modul:Check2/doc erstellt werden

local Check = {}

function Check._error( error_str, modul )
   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 Moduls ' .. modul .. ']]' 
         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 Modul [[Modul:' .. modul .. '|' .. modul .. ']]: ' .. 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, modul )
   
   -- 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 ), modul )
         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, modul, allowTemplates )

   local errorMsg = ''

   if ( allowTemplates == nil ) then allowTemplates = false end
   
   --eckige Klammern vergessen
   if ( string.match ( file, '^%[%[%a' ) == nil ) then
      if ( not ( allowTemplates and string.match ( file, '^%{%{%a' ) ~= nil ) ) then 
         errorMsg = Check._error ( 'führende eckige Klammern bei der Dateieinbindung vergessen' , modul )
      end
   end
   if ( string.match ( file, '%]%]$' ) == nil ) then
      if ( not ( allowTemplates and string.match ( file, '^%{%{%a' ) ~= nil ) ) then 
         errorMsg = errorMsg .. Check._error ( 'abschließende eckige Klammern bei der Dateieinbindung vergessen' , modul )
      end
   end
   
   return errorMsg
end

return Check