load_nodes_from_json = function(thread_data, cursor_id) -- massage JSON into a table from id to node Nodes = {} -- id to object Nodes[thread_data.id] = thread_data for _,x in ipairs(thread_data.descendants) do Nodes[x.id] = x end -- initialize Root Root = thread_data -- compute children for _,x in pairs(Nodes) do parent_id = x.in_reply_to_id if x.id ~= Root.id then assert(parent_id) local parent = Nodes[parent_id] if parent then -- watch out for private posts if parent.children == nil then parent.children = {} end table.insert(parent.children, x.id) end end end -- sort children by time for _,x in pairs(Nodes) do if x.children then table.sort(x.children) end end end