Module:Listbox: Difference between revisions

Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.
parse extra as json
(couple bugfixes with table)
(parse extra as json)
Line 49: Line 49:
   local pagetree = { default = {} }
   local pagetree = { default = {} }
   for _, page in ipairs( pages ) do
   for _, page in ipairs( pages ) do
     -- parse extra
     -- get metadata
    local extra = page.extra
    if page.extra then
    page.extra = {}
      -- remove extra from sortkey
      page.sortkey = string.sub( page.sortkey, 1, -string.len( page.extra ) - 2 )


    if extra then
       local success, result = pcall( mw.text.jsonDecode, page.extra )
       for prop in mw.text.gsplit( extra, ',' ) do
      if success then
        if prop then
        page.extra = result
          local propvalue = mw.text.split( prop, ':' )
      else
          page.extra[propvalue[1]] = propvalue[2] or true -- for valueless flags use true
        page.sortkey = page.text .. mw.getCurrentFrame():expandTemplate{ title = 'Tt', args = { 'PARSING ERROR: Please ensure the argument to \'extra\' in this page\'s invocation of {{Cat}} is valid JSON' } }
        end
        page.extra = {}
       end
       end
 
    else page.extra = {}
      -- remove extra from sortkey
      page.sortkey = string.sub( page.sortkey, 1, -string.len( extra ) - 2 )
     end
     end


Navigation menu