Zum Inhalt springen

Modul:Liste

Aus Wikibooks

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