Modul:Wikipedia:GadgetsAll

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus


--[==[
Generiere Liste für [[Wikipedia:Technik/Skin/Gadgets/!Alle Gadgets]]
]==]
local SkinGadgets = { seek  = "^/Skin/Gadgets/([^!].+)$",
                      stack = "Modul:PageTree/WP:Technik/bot",
                      start = "Wikipedia:Technik/Skin/Gadgets/" }



local function fill( all, add, frame )
    local dd  = mw.html.create( "dd" )
    local dt  = mw.html.create( "dt" )
    local got = mw.message.new( "Gadget-" .. add )
    dt:wikitext( string.format( "[[../%s/]]", add ) )
    if got:exists() then
        s = got:plain()
        dd:wikitext( frame:preprocess( s ) )
    else
        dd:addClass( "error" )
          :wikitext( "FEHLT @@@@@@@@@@@@@@@ FEHLT" )
    end
    all:node( dt )
       :newline()
       :node( dd )
       :newline()
end -- fill()



local function first( a1, a2 )                
    return mw.ustring.lower( a1 ) < mw.ustring.lower( a2 )
end -- first()



local function f( frame )
    local lucky, pages = pcall( mw.loadData, SkinGadgets.stack )
    local r, scream
    if type( pages ) == "table" then
        pages = pages.pages
        if type( pages ) == "table" then
            local gadgets = { }
            local s
            for k, v in pairs( pages ) do
                e = pages[ i ]
                if type( v ) == "string" then
                    s =  mw.ustring.match( v, SkinGadgets.seek )
                    if s then
                        table.insert( gadgets, s )
                    end
                end
            end -- for i
            if #gadgets > 0 then
                table.sort( gadgets, first )
                r = mw.html.create( "dl" )
                for i = 1, #gadgets do
                    fill( r, gadgets[ i ], frame )
                end -- for i
            else
                scream = "Komponente 'pages' leer"
            end
        else
            scream = "Komponente 'pages' fehlt in "
            scream = scream .. SkinGadgets.stack
        end
    else
        scream = pages
    end
    if scream then
        r = mw.html.create( "div" )
        r:addClass( "error" )
         :wikitext( scream )
    end
    return tostring( r )
end -- f()



-- Export
local p = { }
p.f = function ( frame )
    return f( frame )
end -- p.f

return p