Module:Listbox: Difference between revisions

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