Module:Listbox: Difference between revisions

Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.
change how to exclude, from "exclude=true" to "group=exclude" - so we get it from 'extra' instead of parsing the page
(accept 'hide' arg)
(change how to exclude, from "exclude=true" to "group=exclude" - so we get it from 'extra' instead of parsing the page)
Line 24: Line 24:
   local groups = { default = {} }
   local groups = { default = {} }
   for _, page in ipairs( pages ) do
   for _, page in ipairs( pages ) do
     -- remove extra from sortkey
     if page.extra ~= 'exclude' then
    if page.extra then page.sortkey = string.sub( page.sortkey, 1, -string.len( page.extra ) - 2 ) end
      -- remove extra from sortkey
      if page.extra then page.sortkey = string.sub( page.sortkey, 1, -string.len( page.extra ) - 2 ) end


    if getPageProps then
      if getPageProps then
      local pageContent = mw.title.new( page.text ):getContent()
        local pageContent = mw.title.new( page.text ):getContent()
      page.args = Args.fromPageContent( pageContent, 'Cat%s*|%s*' .. categoryName )
        page.args = Args.fromPageContent( pageContent, 'Cat%s*|%s*' .. categoryName )
    else
      else
      page.args = {}
        page.args = {}
    end
      end


    -- add page to group
      -- add page to group
    page.args.group = page.extra or 'default'
      page.args.group = page.extra or 'default'
    page.__index = page -- allow variants to fall back to page
      page.__index = page -- allow variants to fall back to page
    page.args.__index = page.args -- allow variants' args to fall back to page's args
      page.args.__index = page.args -- allow variants' args to fall back to page's args
    local variants = page.args.variant or {{}} -- that's a table containing a single table (variant) with no properties (overrides)
      local variants = page.args.variant or {{}} -- that's a table containing a single table (variant) with no properties (overrides)
    for _, variant in ipairs( variants ) do
      for _, variant in ipairs( variants ) do
      setmetatable( variant, page.args )
        setmetatable( variant, page.args )
      if not variant.exclude then
         groups[variant.group] = groups[variant.group] or {}
         groups[variant.group] = groups[variant.group] or {}
         groups[variant.group][#groups[variant.group] + 1] = setmetatable( { args = variant }, page )
         groups[variant.group][#groups[variant.group] + 1] = setmetatable( { args = variant }, page )

Navigation menu