git.s-ol.nu mmm / a62f63b
implement children ordering in stores.fs s-ol 3 years ago
1 changed file(s) with 18 addition(s) and 5 deletion(s). Raw diff Collapse all Expand all
2121
2222 -- fileders
2323 list_fileders_in: (path='') =>
24 paths = for entry_name in lfs.dir @root .. path
24 entries = {}
25 for entry_name in lfs.dir @root .. path
2526 continue if '.' == entry_name\sub 1, 1
2627 entry_path = @root .. "#{path}/#{entry_name}"
2728 if 'directory' ~= lfs.attributes entry_path, 'mode'
2829 continue
2930
30 "#{path}/#{entry_name}"
31 entries[entry_name] = "#{path}/#{entry_name}"
3132
32 table.sort paths
33 sorted = {}
34
35 order_file = @root .. "#{path}/$order"
36 if 'file' == lfs.attributes order_file, 'mode'
37 for line in io.lines order_file
38 path = assert entries[line], "entry in $order but not on disk: #{line}"
39 table.insert sorted, path
40 sorted[line] = true
41
42 entries = [path for entry, path in pairs entries when not sorted[entry]]
43 table.sort entries
44 for path in *entries
45 table.insert sorted, path
46
3347 coroutine.wrap ->
34 -- @TODO: respect $order
35 for path in *paths
48 for path in *sorted
3649 coroutine.yield path
3750
3851 create_fileder: (parent, name) =>