aboutsummaryrefslogtreecommitdiffstats
path: root/render_all.moon
diff options
context:
space:
mode:
Diffstat (limited to 'render_all.moon')
-rw-r--r--render_all.moon42
1 files changed, 40 insertions, 2 deletions
diff --git a/render_all.moon b/render_all.moon
index 3d295c9..e2f171e 100644
--- a/render_all.moon
+++ b/render_all.moon
@@ -10,7 +10,6 @@ add '?/init.server'
require 'mmm'
import tohtml from require 'mmm.component'
import Browser from require 'mmm.mmmfs.browser'
-import load_tree from require 'mmm.mmmfs.zip'
import get_meta, header, footer from require 'build.layout'
export BROWSER
@@ -70,7 +69,46 @@ render = (fileder, output) ->
"
\close!
-for fileder in coroutine.wrap load_tree!\iterate
+import SQLStore from require 'mmm.mmmfs.drivers.sql'
+import Fileder, Key from require 'mmm.mmmfs.fileder'
+
+-- split filename into dirname + basename
+dir_base = (path) ->
+ dir, base = path\match '(.-)([^/]-)$'
+ if dir and #dir > 0
+ dir = dir\sub 1, #dir - 1
+
+ dir, base
+
+load_tree = (store, root='') ->
+ fileders = setmetatable {},
+ __index: (path) =>
+ with val = Fileder {}
+ .path = path
+ rawset @, path, val
+
+ root = fileders[root]
+ root.facets['name: alpha'] = ''
+ for fn, ft in store\list_facets root.path
+ val = store\load_facet root.path, fn, ft
+ root.facets[Key fn, ft] = val
+
+ for path in store\list_all_fileders root.path
+ fileder = fileders[path]
+
+ parent, name = dir_base path
+ fileder.facets['name: alpha'] = name
+ table.insert fileders[parent].children, fileder
+
+ for fn, ft in store\list_facets path
+ val = store\load_facet path, fn, ft
+ fileder.facets[Key fn, ft] = val
+
+ root
+
+tree = load_tree SQLStore!
+
+for fileder in coroutine.wrap tree\iterate
print "rendering '#{fileder.path}'..."
os.execute "mkdir -p 'out/#{fileder.path}'"
render fileder, "out/#{fileder.path}/index.html"