diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2018-11-07 05:22:50 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-11-07 05:22:50 +0000 |
| commit | f8ecf87bc560f5ac0fc1eeb97537dfc76daad9de (patch) | |
| tree | ec0f0ec7623acd5814da661fb34af06598150234 | |
| parent | style inspector code (diff) | |
| download | mmm-f8ecf87bc560f5ac0fc1eeb97537dfc76daad9de.tar.gz mmm-f8ecf87bc560f5ac0fc1eeb97537dfc76daad9de.zip | |
add $order mechanism
| -rw-r--r-- | mmm/mmmfs/fs.server.moon | 22 | ||||
| -rw-r--r-- | root/$order | 4 |
2 files changed, 25 insertions, 1 deletions
diff --git a/mmm/mmmfs/fs.server.moon b/mmm/mmmfs/fs.server.moon index 5b0d45d..a1f5293 100644 --- a/mmm/mmmfs/fs.server.moon +++ b/mmm/mmmfs/fs.server.moon @@ -1,4 +1,5 @@ import Fileder from require 'mmm.mmmfs.fileder' +import opairs from require 'mmm.ordered' require 'lfs' readfile = (name) -> @@ -21,20 +22,39 @@ load_fileder = (path='root/', name='') -> path ..= '/' unless '/' == path\sub -1 with Fileder 'name: alpha': name + order = nil + children = {} + for entry in lfs.dir path continue if entry == '.' or entry == '..' continue if entry == 'init.moon' + if entry == '$order' + order = [line for line in io.lines path .. entry] + continue + attr = lfs.attributes path .. entry switch attr.mode when 'file' key, value = load_property path, entry .props[key] = value when 'directory' - table.insert .children, load_fileder path, entry + children[entry] = load_fileder path, entry else error "unknown file type: #{attr.mode}" + if order + -- order from order file + for i, name in pairs order + child = assert children[name], "child in $order but not fs: #{name} of #{path}" + table.insert .children, child + children[name] = nil + + -- sort remainder alphabeticalally + for name, child in opairs children + table.insert .children, child + warn "child #{name} of #{path} not in $order!" if order + { :load_property :load_fileder diff --git a/root/$order b/root/$order new file mode 100644 index 0000000..eda69e3 --- /dev/null +++ b/root/$order @@ -0,0 +1,4 @@ +articles +experiments +animations +meta |
