Modul:Vorlage:Dokumentation
Version vom 7. November 2017, 13:53 Uhr von te>PerfektesChaos (2017-11-07)
Die Dokumentation für dieses Modul kann unter Modul:Vorlage:Dokumentation/Doku erstellt werden
--[=[ 2017-11-07
{{Dokumentation}}
]=]
local function fake( frame, access )
local s = string.format( "[%s/%s %s]",
"https://de.wikipedia.org/wiki",
mw.uri.encode( access, "WIKI" ),
"Doku in der echten deWP" )
local e = mw.html.create( "div" )
e:css( "border", "#A000A0 2px solid" )
:css( "padding", "1em" )
:wikitext( "[[Datei:Redirectltr.png|#REDIRECT|link=]]" )
:node( mw.html.create( "span" )
:addClass( "redirectText" )
:wikitext( s ) )
return tostring( e )
end -- fake()
local function findeSchalter( area )
local i = area:find( "__", 1, true )
local r
if i then
r = area:find( "__TOC__", i, true ) or
area:find( "__NOTOC__", i, true ) or
area:find( "__INHALTSVERZEICHNIS__", i, true ) or
area:find( "__KEIN_INHALTSVERZEICHNIS__", i, true ) or
area:find( "__KEININHALTSVERZEICHNIS__", i, true )
end
return r
end -- findeSchalter()
local function findeTemplateDataTOC( area )
local i = area:find( "emplateData", 3, true )
local r
if i then
if area:find( "TOC", i + 11, true ) then
local k
if i > 100 then
i = i - 100
else
i = 1
end
i, k = area:find( "%{%{%s*[tT]emplateData%s*|", i )
if i then
r = area:find( "|%s*TOC%s*=%s*1%s*[|}]", k - 1 )
end
end
end
return r
end -- findeTemplateDataTOC()
local function furnish( area )
local i = area:find( "==", 1, true )
local r
if i then
local seek = "==[^\n]+==\n"
local init, k, n
if i == 1 then
i, k = area:find( seek, 1 )
if i == 1 then
n = 1
end
end
seek = "\n" .. seek
if i and not n then
i, k = area:find( seek, i - 1 )
end
if i then
n = 1
init = i
i, k = area:find( seek, k - 1 )
if i then
n = 2
end
end
if n == 1 then
r = "__NOTOC__\n" .. area
elseif n == 2 then
local toc = mw.html.create( "div" )
:newline()
:addClass( "nonumtoc" )
:wikitext( "__TOC__" )
:newline()
toc = tostring( toc )
if init == 1 then
r = toc .. area
else
r = string.format( "%s%s%s",
toc,
area:sub( 1, init - 1 ),
area:sub( init ) )
end
end
end
return r or area
end -- furnish()
local function f( frame )
local bottom = { }
local current = mw.title.getCurrentTitle()
local doku = mw.title.makeTitle( current.namespace,
current.text .. "/Doku" )
local sub = current.prefixedText .. "/Doku"
local r
if doku.exists then
r = frame:expandTemplate{ title = sub }
if not findeSchalter( r ) then
if not findeTemplateDataTOC( r ) then
r = furnish( r )
end
end
bottom.lonely = "1"
else
local create = { action = "edit",
preload = "Vorlage:Dokumentation/preload-doku",
summary = "Neu angelegt",
redlink = "1" }
local path = { sub, mw.uri.buildQueryString( create ) }
local setup = frame:callParserFunction( "fullurl", path )
local button = { Typ = "progressive",
["Groß"] = "1",
Link = setup,
Text = "Neue Doku-Unterseite anlegen" }
r = frame:expandTemplate{ title = "MediaWiki-Button",
args = button }
if mw.site.server:match( "%.beta%.wmflabs%.org$" ) then
r = r .. fake( frame, sub )
elseif current.namespace == 10 then
r = string.format( "%s[[Kategorie:%s]]",
r,
"Vorlage:nicht dokumentiert" )
end
end
r = r .. frame:expandTemplate{ title = "Dokumentation/footer",
args = bottom }
if current.namespace == 10 then
-- LEGACY
local cats
sub = current.text .. "/Meta"
cats = mw.title.makeTitle( 10, sub )
if cats.exists then
r = r .. frame:expandTemplate{ title = sub }
end
end
return r
end -- f()
local p = {}
function p.f( frame )
local lucky, r = pcall( f, frame )
if not lucky then
local e = mw.html.create( "span" )
:attr( "class", "error" )
:wikitext( r )
r = string.format( "%s[[Kategorie:%s/%s]]",
tostring( e ),
"Wikipedia:Vorlagenfehler",
"Vorlage:Dokumentation/Intern" )
end
return r
end -- p.f()
return p