Bearbeiten von „Modul:Vorlage:Anker“
Zur Navigation springen
Zur Suche springen
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 1: | Zeile 1: | ||
local | local Anchor = { suite = "AnchorTemplate", | ||
serial = "2019-12-24", | |||
item = 79414611 | |||
} | |||
--[=[ | --[=[ | ||
Template:Anchor {{Anker}} | |||
]=] | ]=] | ||
local Failsafe | local Failsafe = Anchor | ||
local Config = { | local Config = { | ||
badPattern = "[#'\"%[%]<> | badPattern = "[%%#'\"%[%]<>]", | ||
globalPage = { | globalPage = { "bodyContent", | ||
"catlinks", | "catlinks", | ||
"centralNotice", | "centralNotice", | ||
"content", | "content", | ||
"contentSub", | "contentSub", | ||
"editform", | "editform", | ||
"editpage-copywarn", | "editpage-copywarn", | ||
Zeile 28: | Zeile 23: | ||
"fundraising", | "fundraising", | ||
"jump-to-nav", | "jump-to-nav", | ||
"page-actions", | "page-actions", | ||
"siteNotice", | "siteNotice", | ||
"siteSub", | "siteSub", | ||
"toc", | "toc", | ||
"top" }, | |||
"top | |||
globalPatterns = { "^mw%-[%l%-]+$", | globalPatterns = { "^mw%-[%l%-]+$", | ||
"^ca%-[%l%-]+$", | "^ca%-[%l%-]+$", | ||
"^n%-[%l%-]+$", | "^n%-[%l%-]+$", | ||
"^pt?%-[%l%-]+$", | |||
"^pt%-[%l%-]+$", | |||
"^wp%u" }, | "^wp%u" }, | ||
errCat = false, | errCat = false, | ||
Zeile 56: | Zeile 46: | ||
de = "Parameter unbekannt:" } | de = "Parameter unbekannt:" } | ||
} | } | ||
Zeile 116: | Zeile 53: | ||
-- apply -- string, with message key | -- apply -- string, with message key | ||
-- Returns message text; at least English | -- Returns message text; at least English | ||
local entry = Config[ apply ] | local entry = Config[ apply ] | ||
local r | local r | ||
Zeile 140: | Zeile 76: | ||
-- adjust -- string or nil | -- adjust -- string or nil | ||
-- Returns boolean | -- Returns boolean | ||
local r | local r = false | ||
if | if adjust then | ||
r = mw.text.trim( adjust ) | r = mw.text.trim( adjust ) | ||
if r ~= "" and r ~= "0" then | if r ~= "" and r ~= "0" then | ||
r = true | r = true | ||
end | end | ||
end | end | ||
return r | return r | ||
Zeile 156: | Zeile 90: | ||
local function fair( assembly ) | local function fair( assembly ) | ||
-- Create HTML code for anchors | -- Create HTML code for anchors | ||
-- assembly -- sequence table, with | -- assembly -- sequence table, with identtifiers | ||
-- Returns HTML string | -- Returns HTML string | ||
local collection = mw.html.create( "" ) | local collection = mw.html.create( "" ) | ||
Zeile 190: | Zeile 124: | ||
local scope = Config.errClass | local scope = Config.errClass | ||
local story = factory( alert ) | local story = factory( alert ) | ||
local TemplUtl = | local lucky, TemplUtl = pcall( require, "Module:TemplUtl" ) | ||
local r, scope, style | local r, scope, style | ||
if type( TemplUtl ) == "table | if type( TemplUtl ) == "table" then | ||
TemplUtl = TemplUtl.TemplUtl() | TemplUtl = TemplUtl.TemplUtl() | ||
end | end | ||
if Config.self then | if Config.self then | ||
Zeile 215: | Zeile 143: | ||
story = string.format( "%s %s", story, about ) | story = string.format( "%s %s", story, about ) | ||
end | end | ||
if TemplUtl then | if type( TemplUtl ) == "table" then | ||
r = TemplUtl.failure( story, | r = TemplUtl.failure( story, | ||
not Config.errHide, | not Config.errHide, | ||
Zeile 255: | Zeile 183: | ||
return r | return r | ||
end -- fault() | end -- fault() | ||
Zeile 276: | Zeile 192: | ||
-- Returns appropriate string | -- Returns appropriate string | ||
local r | local r | ||
if | if argsF then | ||
Config.errCat = argsF.errCat | Config.errCat = argsF.errCat | ||
Config.errClasses = argsF.errClasses | Config.errClasses = argsF.errClasses | ||
Config.errHide = faculty( argsF.errHide ) | Config.errHide = faculty( argsF.errHide ) | ||
Config.errNS = argsF.errNS | Config.errNS = argsF.errNS | ||
if mw.site.server:find( "de.wikipedia.org", 1, true ) then | |||
if mw.site.server:find( "de.wikipedia.", 1, true ) then | Config.errClasses = "Linkwartung" | ||
Config.errClasses | Config.errHide = true | ||
Config.errHide | Config.errNS = 0 | ||
Config.errNS | |||
end | end | ||
end | end | ||
if type( argsT ) == "table" then | if type( argsT ) == "table" then | ||
local | local checked = { } | ||
local tocheck = { } | |||
local further = function ( add ) | |||
local s = mw.text.unstripNoWiki( add ) | |||
s = s:gsub( " +", "_" ) | |||
:gsub( "_+", "_" ) | |||
table.insert( checked, s ) | |||
end | |||
local s, unknown | |||
for k, v in pairs( argsT ) do | for k, v in pairs( argsT ) do | ||
s = type( k ) | |||
if s == "number" then | |||
v = mw.text.trim( v ) | v = mw.text.trim( v ) | ||
if v | if v ~= "" then | ||
v | table.insert( tocheck, v ) | ||
end | end | ||
k = false | k = false | ||
elseif s == "string" then | |||
if k:match( "^x[1-9]%d*" ) then | |||
further( v ) | |||
k = false | k = false | ||
end | end | ||
end | end | ||
if k then | if k then | ||
unknown = | if not unknown then | ||
unknown = { } | |||
end | |||
table.insert( unknown, k ) | table.insert( unknown, k ) | ||
end | end | ||
end -- for k, v | end -- for k, v | ||
if unknown then | if unknown then | ||
e = mw.html.create( "code" ) | local e = mw.html.create( "code" ) | ||
:css( "white-space", "nowrap" ) | |||
:wikitext( table.concat( unknown, " " ) ) | |||
s = string.format( " in [[%s]]", | s = string.format( " in [[%s]]", | ||
Config.frame:getTitle() ) | Config.frame:getTitle() ) | ||
Zeile 327: | Zeile 243: | ||
:wikitext( s ) | :wikitext( s ) | ||
r = fault( "errUnkown", tostring( e ) ) | r = fault( "errUnkown", tostring( e ) ) | ||
else | |||
local | local bad, e | ||
local flop = function ( a, alter ) | |||
if not bad then | |||
local | bad = { } | ||
for | end | ||
if | e = mw.html.create( "code" ) | ||
:wikitext( a ) | |||
if alter then | |||
e:css( "white-space", "nowrap" ) | |||
end | |||
table.insert( bad, tostring( e ) ) | |||
end | |||
local legal, s | |||
for i = 1, #tocheck do | |||
s = tocheck[ i ] | |||
if s:match( "^%d" ) or | |||
s:match( Config.badPattern ) or | |||
s:match( "&#%a+;" ) then | |||
legal = false | |||
else | else | ||
legal = true | |||
for k = 1, #Config.globalPatterns do | |||
if s:match( Config.globalPatterns[ k ] ) then | |||
legal = false | |||
break -- k = 1, #Config.globalPatterns | |||
end | |||
end -- k = 1, #Config.globalPatterns | |||
end | end | ||
if not legal then | if not legal then | ||
flop( mw.text.encode( s ), true ) | |||
else | |||
further( s ) | |||
end | end | ||
end -- for k, | end -- i = 1, #tocheck | ||
for i = 1, #checked do | |||
s = checked[ i ] | |||
end | for k = 1, #Config.globalPage do | ||
if s == Config.globalPage[ k ] then | |||
flop( s ) | |||
break -- k = 1, #Config.globalPage | |||
end | |||
end -- k = 1, #Config.globalPage | |||
end -- i = 1, #checked | |||
if bad then | if bad then | ||
s = string.format( "%s in [[%s]]", | s = string.format( "%s in [[%s]]", | ||
table.concat( bad, ", " ), | table.concat( bad, ", " ), | ||
Config.frame:getParent():getTitle() ) | Config.frame:getParent():getTitle() ) | ||
r = | r = fault( "errInvalid", s ) | ||
elseif #checked == 0 then | |||
r = fault( "errNoFragments" ) | |||
else | |||
r = fair( checked ) | |||
end | end | ||
end | end | ||
end | end | ||
return r or "" | return r or "" | ||
end -- main() | end -- main() | ||
Zeile 521: | Zeile 366: | ||
end -- p.f() | end -- p.f() | ||
p. | p.flops = function ( frame ) | ||
local r = "" | local r = "" | ||
local sep = "" | local sep = "" | ||
Zeile 541: | Zeile 378: | ||
end -- k = 1, #Config.globalPage | end -- k = 1, #Config.globalPage | ||
return r | return r | ||
end -- p. | end -- p.flops() | ||
p.failsafe = function ( frame ) | p.failsafe = function ( frame ) | ||
Zeile 560: | Zeile 397: | ||
return Failsafe.failsafe( since ) or "" | return Failsafe.failsafe( since ) or "" | ||
end -- p.failsafe() | end -- p.failsafe() | ||
return p | return p |