4 local t_insert = table.insert;
5 local t_sort = table.sort;
9 function sorted(params)
11 local reader = params.reader; -- iterator to get items from
12 local sorter = params.sorter; -- sorting function
13 local filter = params.filter; -- filter function
17 if filter then item = filter(item); end
18 if item then t_insert(cache, item); end
21 t_sort(cache, sorter);
31 function merged(reader, merger)
33 local item1 = reader();
34 local merged = { item1 };
37 if not item1 then return nil; end
38 local item2 = reader();
39 if not item2 then item1 = nil; return merged; end
40 if merger(item1, item2) then
43 t_insert(merged, item1);
45 --print("unmerged", merged)