Home  

Random  

Nearby  



Log in  



Settings  



Donate  



About Wikipedia  

Disclaimers  



Wikipedia





Module:List





Module  

Talk  



Language  

Watch  

View source  





This module outputs various kinds of lists. At present, it supports bulleted lists, unbulleted lists, horizontal lists, ordered lists (numbered or alphabetical), and horizontal ordered lists. It allows for easy css styling of the list or of the individual list items.

Usage

Quick usage

{{#invoke:list|function|first item|second item|third item|...}}

All parameters

{{#invoke:list|function
|first item|second item|third item|...
|start           = start number for ordered lists
|type            = type of numbering for ordered lists
|list_style_type = type of marker for ordered lists (uses CSS)
|class           = class
|style           = style
|list_style      = style for the list
|item_style      = style for all list items
|item1_style     = style for the first list item |item2_style = style for the second list item |...
|item1_value     = value for the first list item |item2_value = value for the second list item |...
|indent          = indent for horizontal lists
}}

Arguments passed from parent template

{{#invoke:list|function}}

Functions

Function name Produces Example output Template using the function
bulleted Bulleted lists

  • First item
  • Second item
  • Third item

{{bulleted list}}
unbulleted Unbulleted lists
  • First item
  • Second item
  • Third item
  • {{unbulleted list}}
    horizontal Horizontal bulleted lists
    • First item
  • Second item
  • Third item
  • {{hlist}}
    ordered Ordered lists (numbered lists and alphabetical lists)

    1. First item
    2. Second item
    3. Third item

    {{ordered list}}
    horizontal_ordered Horizontal ordered lists
    1. First item
  • Second item
  • Third item
  • {{horizontal ordered list}}

    Parameters

    Examples

    Bulleted lists

    Code Result
    {{#invoke:list|bulleted|First item|Second item|Third item}}

    • First item
    • Second item
    • Third item

    {{#invoke:list|bulleted|First item|Second item|Third item|item_style=color:blue;}}

    • First item
    • Second item
    • Third item

    {{#invoke:list|bulleted|First item|Second item|Third item|item1_style=background-color:yellow;|item2_style=background-color:silver;}}

    • First item
    • Second item
    • Third item

    Unbulleted lists

    Code Result
    {{#invoke:list|unbulleted|First item|Second item|Third item}}
    • First item
  • Second item
  • Third item
  • {{#invoke:list|unbulleted|First item|Second item|Third item|item_style=color:blue;}}
    • First item
  • Second item
  • Third item
  • {{#invoke:list|unbulleted|First item|Second item|Third item|item1_style=background-color:yellow;|item2_style=background-color:silver;}}
    • First item
  • Second item
  • Third item
  • Horizontal lists

    Code Result
    {{#invoke:list|horizontal|First item|Second item|Third item}}
    • First item
  • Second item
  • Third item
  • {{#invoke:list|horizontal|First item|Second item|Third item|indent=2}}
    • First item
  • Second item
  • Third item
  • Ordered lists

    Code Result
    {{#invoke:list|ordered|First item|Second item|Third item}}

    1. First item
    2. Second item
    3. Third item

    {{#invoke:list|ordered|First item|Second item|Third item|start=3}}

    1. First item
    2. Second item
    3. Third item

    Lowercase Roman numerals: {{#invoke:list|ordered|First item|Second item|Third item|type=i}}

    1. First item
    2. Second item
    3. Third item

    Lowercase Greek alphabet: {{#invoke:list|ordered|First item|Second item|Third item|list_style_type=lower-greek}}

    1. First item
    2. Second item
    3. Third item

    Horizontal ordered lists

    Code Result
    {{#invoke:list|horizontal_ordered|First item|Second item|Third item}}
    1. First item
  • Second item
  • Third item
  • {{#invoke:list|horizontal_ordered|First item|Second item|Third item|start=3}}
    1. First item
  • Second item
  • Third item
  • {{#invoke:list|horizontal_ordered|First item|Second item|Third item|indent=2}}
    1. First item
  • Second item
  • Third item
  • Tracking/maintenance category

    See also

    local libUtil = require('libraryUtil')
    local checkType = libUtil.checkType
    local mTableTools = require('Module:TableTools')
    
    local p = {}
    
    local listTypes = {
     ['bulleted'] = true,
     ['unbulleted'] = true,
     ['horizontal'] = true,
     ['ordered'] = true,
     ['horizontal_ordered'] = true
    }
    
    function p.makeListData(listType, args)
     -- Constructs a data table to be passed to p.renderList.
     local data = {}
    
     -- Classes and TemplateStyles
     data.classes = {}
     data.templatestyles = ''
     if listType == 'horizontal' or listType == 'horizontal_ordered' then
      table.insert(data.classes, 'hlist')
      data.templatestyles = mw.getCurrentFrame():extensionTag{
       name = 'templatestyles', args = { src = 'Hlist/styles.css' }
      }
     elseif listType == 'unbulleted' then
      table.insert(data.classes, 'plainlist')
      data.templatestyles = mw.getCurrentFrame():extensionTag{
       name = 'templatestyles', args = { src = 'Plainlist/styles.css' }
      }
     end
     table.insert(data.classes, args.class)
    
     -- Main div style
     data.style = args.style
    
     -- Indent for horizontal lists
     if listType == 'horizontal' or listType == 'horizontal_ordered' then
      local indent = tonumber(args.indent)
      indent = indent and indent * 1.6 or 0
      if indent > 0 then
       data.marginLeft = indent .. 'em'
      end
     end
     
     -- List style types for ordered lists
     -- This could be "1, 2, 3", "a, b, c", or a number of others. The list style
     -- type is either set by the "type" attribute or the "list-style-type" CSS
     -- property.
     if listType == 'ordered' or listType == 'horizontal_ordered' then 
      data.listStyleType = args.list_style_type or args['list-style-type']
      data.type = args['type']
    
      -- Detect invalid type attributes and attempt to convert them to
      -- list-style-type CSS properties.
      if data.type 
       and not data.listStyleType
       and not tostring(data.type):find('^%s*[1AaIi]%s*$')
      then
       data.listStyleType = data.type
       data.type = nil
      end
     end
     
     -- List tag type
     if listType == 'ordered' or listType == 'horizontal_ordered' then
      data.listTag = 'ol'
     else
      data.listTag = 'ul'
     end
    
     -- Start number for ordered lists
     data.start = args.start
     if listType == 'horizontal_ordered' then
      -- Apply fix to get start numbers working with horizontal ordered lists.
      local startNum = tonumber(data.start)
      if startNum then
       data.counterReset = 'listitem ' .. tostring(startNum - 1)
      end
     end
    
     -- List style
      -- ul_style and ol_style are included for backwards compatibility. No
      -- distinction is made for ordered or unordered lists.
     data.listStyle = args.list_style
    
     -- List items
     -- li_style is included for backwards compatibility. item_style was included
     -- to be easier to understand for non-coders.
     data.itemStyle = args.item_style or args.li_style
     data.items = {}
     for _, num in ipairs(mTableTools.numKeys(args)) do
      local item = {}
      item.content = args[num]
      item.style = args['item' .. tostring(num) .. '_style']
       or args['item_style' .. tostring(num)]
      item.value = args['item' .. tostring(num) .. '_value']
       or args['item_value' .. tostring(num)]
      table.insert(data.items, item)
     end
     
     return data
    end
    
    function p.renderList(data)
     -- Renders the list HTML.
     
     -- Return the blank string if there are no list items.
     if type(data.items) ~= 'table' or #data.items < 1 then
      return ''
     end
     
     -- Render the main div tag.
     local root = mw.html.create('div')
     for _, class in ipairs(data.classes or {}) do
      root:addClass(class)
     end
     root:css{['margin-left'] = data.marginLeft}
     if data.style then
      root:cssText(data.style)
     end
    
     -- Render the list tag.
     local list = root:tag(data.listTag or 'ul')
     list
      :attr{start = data.start, type = data.type}
      :css{
       ['counter-reset'] = data.counterReset,
       ['list-style-type'] = data.listStyleType
      }
     if data.listStyle then
      list:cssText(data.listStyle)
     end
    
     -- Render the list items
     for _, t in ipairs(data.items or {}) do
      local item = list:tag('li')
      if data.itemStyle then
       item:cssText(data.itemStyle)
      end
      if t.style then
       item:cssText(t.style)
      end
      item
       :attr{value = t.value}
       :wikitext(t.content)
     end
    
     return data.templatestyles .. tostring(root)
    end
    
    function p.renderTrackingCategories(args)
     local isDeprecated = false -- Tracks deprecated parameters.
     for k, v in pairs(args) do
      k = tostring(k)
      if k:find('^item_style%d+$') or k:find('^item_value%d+$') then
       isDeprecated = true
       break
      end
     end
     local ret = ''
     if isDeprecated then
      ret = ret .. '[[Category:List templates with deprecated parameters]]'
     end
     return ret
    end
    
    function p.makeList(listType, args)
     if not listType or not listTypes[listType] then
      error(string.format(
       "bad argument #1 to 'makeList' ('%s' is not a valid list type)",
       tostring(listType)
      ), 2)
     end
     checkType('makeList', 2, args, 'table')
     local data = p.makeListData(listType, args)
     local list = p.renderList(data)
     local trackingCategories = p.renderTrackingCategories(args)
     return list .. trackingCategories
    end
    
    for listType in pairs(listTypes) do
     p[listType] = function (frame)
      local mArguments = require('Module:Arguments')
      local origArgs = mArguments.getArgs(frame, {
       frameOnly = ((frame and frame.args and frame.args.frameonly or '') ~= ''),
       valueFunc = function (key, value)
       if not value or not mw.ustring.find(value, '%S') then return nil end
       if mw.ustring.find(value, '^%s*[%*#;:]') then
        return value
       else
        return value:match('^%s*(.-)%s*$')
       end
       return nil
      end
      })
      -- Copy all the arguments to a new table, for faster indexing.
      local args = {}
      for k, v in pairs(origArgs) do
       args[k] = v
      end
      return p.makeList(listType, args)
     end
    end
    
    return p
    

    Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:List&oldid=1224650061"
     



    Last edited on 19 May 2024, at 16:45  


    Languages

     


    Afrikaans
    Alemannisch
    Anarâškielâ
    Аԥсшәа
    العربية
    Արեւմտահայերէն
    Asturianu
    Avañe'
    Авар
    Azərbaycanca
    تۆرکجه
    Basa Bali

     / Bân-lâm-gú
    Basa Banyumasan
    Башҡортса
    Беларуская
    Беларуская (тарашкевіца)

    Bikol Central
    Български
    Bosanski
    Brezhoneg
    Буряад
    Català
    Чӑвашла
    Cebuano
    Čeština
    Chamoru
    ChiShona
    Corsu
    Cymraeg
    Dansk
    الدارجة
    Eesti
    Ελληνικά
    Español
    Esperanto
    Euskara
    فارسی
    Fiji Hindi
    Føroyskt
    Français
    Gaeilge
    Galego
    ГӀалгӀай

      / Gõychi Konknni
    /Hak-kâ-ngî
    Хальмг

    Hausa
    Hawaiʻi
    Հայերեն
    ि
    Hrvatski
    Bahasa Hulontalo
    Ido
    Igbo
    Ilokano
    Bahasa Indonesia
    Ирон
    IsiXhosa
    IsiZulu
    Íslenska
    Italiano
    עברית
    Jawa


    Kernowek
    Ikirundi
    Kurdî
    Ladin

    Latviešu
    Lëtzebuergesch
    Lietuvių
    Magyar
    ि
    Македонски

    Malti
    Māori

    مصرى

    مازِرونی
    Bahasa Melayu
    Mfantse
     / Mìng-dĕ̤ng-nḡ
    Mirandés
    Мокшень
    Монгол

    Na Vosa Vakaviti
    Nederlands

     

    Нохчийн
    Nordfriisk
    Norsk bokmål
    Norsk nynorsk
    ି
    Oʻzbekcha / ўзбекча


    Papiamentu
    پښتو
    Português
    Qaraqalpaqsha
    Qırımtatarca
    Română
    Русиньскый
    Русский
    Саха тыла
    Sakizaya
    Gagana Samoa


    Scots
    Setswana
    Shqip

    Simple English
    سنڌي
    Slovenščina
    کوردی
    Српски / srpski
    Srpskohrvatski / српскохрватски
    Sunda
    Suomi
    Svenska
    Tagalog
    ி
    Татарча / tatarça
     

    Tetun

    Thuɔŋjäŋ

    Тоҷикӣ
    Türkçe
    Türkmençe
    Українська
    اردو
    Vèneto
    Tiếng Vit
    Volapük
    Wayuunaiki

    Winaray

    Yorùbá

    Zazaki

    Dagaare
     

    Wikipedia


    This page was last edited on 19 May 2024, at 16:45 (UTC).

    Content is available under CC BY-SA 4.0 unless otherwise noted.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Terms of Use

    Desktop