aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2018-11-07 05:22:50 +0000
committers-ol <s-ol@users.noreply.github.com>2018-11-07 05:22:50 +0000
commitf8ecf87bc560f5ac0fc1eeb97537dfc76daad9de (patch)
treeec0f0ec7623acd5814da661fb34af06598150234
parentstyle inspector code (diff)
downloadmmm-f8ecf87bc560f5ac0fc1eeb97537dfc76daad9de.tar.gz
mmm-f8ecf87bc560f5ac0fc1eeb97537dfc76daad9de.zip
add $order mechanism
-rw-r--r--mmm/mmmfs/fs.server.moon22
-rw-r--r--root/$order4
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