Modul:Liste

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Informationen zu dieser Dokumentation
Modul Liste

Modulbeschreibung

Modul zur Erzeugung von Listen.

Funktionen

erzeugeListe

Funktion zur Erzeugung von Listen. Diese Funktion kann auch in Lua-Modulen direkt aufgerufen werden. Hierzu müssen die Argumente als table übergeben werden. Beispiel:

local Liste = require('Modul:Liste')

Liste.erzeugeListe({ abstand = "1em", liste = { ... } })

Die Liste kann folgendermaßen übergeben werden:

  • Angabe der Listenelemente in den Parametern item1, item2 bis itemn
  • Übergabe einer table oder einer Iterator-Funktion als Parameter liste
  • Übergabe einer Liste in Wikitext-Format als Parameter liste

Beispiele

Beispiel 1:

Liste mit Block-Elementen
{{#invoke:Liste|erzeugeListe
|item1=
# A
# B
|item2=
# C
# D
}}

Ergebnis:

    Beispiel 2:

    Liste mit Abständen
    {{#invoke:Liste|erzeugeListe|abstand=1em|liste=
    # Item 1
    # Item 2
    # Item 3}}
    

    Ergebnis:

      Beispiel 3:

      Liste mit Icons
      {{#invoke:Liste|erzeugeListe|icon=Office-book.svg|icon_size=x20px|liste=
      * Buch 1
      * Buch 2
      * Buch 3}}
      

      Ergebnis:

        Parameter

        • type (optional) – Typ der Liste (entweder ol oder ul) (Standardwert: ul)
        • abstand – Abstand zwischen den Listenelementen (Angabe wie bei CSS)
        • icon (optional) – Dateiname des anzuzeigenden Icons (Standardwert: kein spezielles Icon wird verwendet)
        • icon_size – Größe des Icons
        • kein_icon_verweis – Icons haben keinen Verweis auf das originale Bild, wenn dieser Parameter gesetzt ist

        Information


        --- Modul zur Erzeugung von Listen.
        
        local Liste = {}
        
        local utils = require("Modul:Utils")
        
        --- Funktion zur Erzeugung von Listen. 
        -- Diese Funktion kann auch in Lua-Modulen direkt aufgerufen werden. Hierzu müssen die Argumente als table
        -- übergeben werden. Beispiel:
        --
        -- <pre>
        -- local Liste = require('Modul:Liste')
        -- 
        -- Liste.erzeugeListe({ abstand = "1em", liste = { ... } })
        -- </pre>
        --
        -- Die Liste kann folgendermaßen übergeben werden:
        --
        -- * Angabe der Listenelemente in den Parametern <code>item1</code>, <code>item2</code> bis <code>item''n''</code>
        -- * Übergabe einer <code>table</code> oder einer Iterator-Funktion als Parameter <code>liste</code>
        -- * Übergabe einer Liste in Wikitext-Format als Parameter <code>liste</code>
        --
        -- @example 
        --     @description Liste mit Block-Elementen
        --     @code {{#invoke:Liste|erzeugeListe
        --             |item1=
        --               # A
        --               # B
        --             |item2=
        --               # C
        --               # D
        --           }}
        --
        -- @example 
        --     @description Liste mit Abständen
        --     @code {{#invoke:Liste|erzeugeListe|abstand=1em|liste=
        --           # Item 1
        --           # Item 2
        --           # Item 3}}
        --
        -- @example 
        --     @description Liste mit Icons
        --     @code {{#invoke:Liste|erzeugeListe|icon=Office-book.svg|icon_size=x20px|liste=
        --           * Buch 1
        --           * Buch 2
        --           * Buch 3}}
        --
        -- @param type Typ der Liste (entweder <code>ol</code> oder <code>ul</code>)
        --    @default_value ul
        -- @param abstand Abstand zwischen den Listenelementen (Angabe wie bei CSS)
        -- @param icon Dateiname des anzuzeigenden Icons
        --    @default_value kein spezielles Icon wird verwendet
        -- @param icon_size Größe des Icons
        -- @param kein_icon_verweis Icons haben keinen Verweis auf das originale Bild, wenn dieser Parameter gesetzt ist
        function Liste.erzeugeListe(frame)
            return Liste.createListOutput(frame:getParent(), frame:getParent().args)
        end
        
        function Liste.createListOutput(list, args)
            local list_type = args.type or "ul"
            local icon_code = ""
            
            if args.icon then
                icon_code = "[[Datei:" .. args.icon .. "|"
                if args.icon_size then icon_code = icon_code .. args.icon_size .. "|" end
                if args.kein_icon_verweis then icon_code = icon_code .. "verweis=|" end
                
                icon_code = icon_code .. "alt=]] "
            end
            
            if args.liste then
                args.liste = mw.text.trim(args.liste)
                
                if utils.starts(args.liste, "#") then list_type = "ol" end
            end
            
            local result = mw.html.create( list_type )
        
            if args.icon then
                result:css('list-style','none'):css('margin-left', '0')
            end
            
            for i, item in ipairs( utils.to_table(list, "item", "liste") ) do
                li = result:tag("li")
        
                if args.abstand and i > 0 then
                    li:css("margin-top", args.abstand)
                end
                
                if args["item1"] then li:newline() end
        
                li:wikitext(icon_code .. item)
        
                if args["item1"] then li:newline() end
        
                li:done()
            end
            
            return tostring(result:done())
        end
        
        return Liste