aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2018-11-06 06:24:56 +0000
committers-ol <s-ol@users.noreply.github.com>2018-11-06 06:24:56 +0000
commit8c59c3152294fdbf48753c947cbda81281923f96 (patch)
tree92bb38a7dd747cb8eb4ff06fb575e105dd7800d4
parentimplement mmmfs on real fs (diff)
downloadmmm-8c59c3152294fdbf48753c947cbda81281923f96.tar.gz
mmm-8c59c3152294fdbf48753c947cbda81281923f96.zip
fix client behaviour
-rw-r--r--dump_tree.moon49
-rw-r--r--render.moon2
-rw-r--r--tup.moon15
3 files changed, 54 insertions, 12 deletions
diff --git a/dump_tree.moon b/dump_tree.moon
new file mode 100644
index 0000000..72259cd
--- /dev/null
+++ b/dump_tree.moon
@@ -0,0 +1,49 @@
+package.moonpath = './?.server.moon;./?/init.server.moon;' .. package.moonpath
+require 'mmm.init'
+import Key from require 'mmm.mmmfs'
+import load_fileder from require 'mmm.mmmfs.fs'
+import to_lua from require 'moonscript.base'
+
+-- usage:
+-- moon render.moon <output> [fileder_path]
+{ output_name, path } = arg
+
+assert output_name, "please specify the output filename as an argument"
+path or= '/'
+
+root = load_fileder 'root' .. path
+root\mount path
+
+-- dump a fileder subtree as Lua source
+dump_fileder = do
+ escape = (str) -> string.format '%q', tostring str
+
+ _dump = (fileder) ->
+ code = "Fileder {"
+
+ for key, val in pairs fileder.props
+ code ..= "
+ [#{escape key}] = #{escape val},"
+
+ if key.type\match '^text/moonscript %->'
+ newkey = Key key.name, key.type\gsub '^text/moonscript %-> (.*)', 'text/lua -> %1'
+ code ..= "
+ [#{escape newkey}] = #{escape to_lua val},"
+
+ for child in *fileder.children
+ code ..= "
+ #{_dump child},"
+
+ code ..= "
+ }"
+ code
+
+
+ (fileder) -> "
+ local Fileder = (require 'mmm.mmmfs').Fileder
+
+ return #{_dump fileder}
+ "
+
+with io.open output_name, 'w'
+ \write dump_fileder root
diff --git a/render.moon b/render.moon
index b53708b..66272ec 100644
--- a/render.moon
+++ b/render.moon
@@ -42,7 +42,7 @@ with io.open output_name, 'w'
<script type=\"application/lua\" src=\"/root.bundle.lua\"></script>
<script defer type=\"application/lua\" src=\"/mmm/init.lua\"></script>
- #{'' or rehydrate}
+ #{rehydrate}
</body>
</html>"
\close!
diff --git a/tup.moon b/tup.moon
index 0b21610..1888a00 100644
--- a/tup.moon
+++ b/tup.moon
@@ -20,12 +20,6 @@ enum_dir = do
coroutine.wrap -> yieldtree dir
-- COMPILE MOONSCRIPT
--- mmmfs tree
--- for file in enum_dir 'root'
--- basename = assert file\match '(.*)%.moon$'
--- print ": #{file} |> ^ MOON %b > %o^ moonc -o %o %f |> dist/#{basename}.lua {root_src}"
-
--- mmm
for file in enum_dir 'mmm'
continue if file\match '%.server%.moon$'
basename = assert file\match '(.*)%.moon$'
@@ -33,10 +27,12 @@ for file in enum_dir 'mmm'
print ": #{file} |> ^ MOON %b > %o^ moonc -o %o %f |> dist/#{basename}.lua {mmm_src}"
-- GENERATE BUNDLES
--- print ": {root_src} |> ^ BUNDLE root^ moon bundle.moon %o %f |> dist/root.bundle.lua"
print ": {mmm_src} |> ^ BUNDLE mmm^ moon bundle.moon %o %f |> dist/mmm.bundle.lua"
--- PRE-RENDER MMMFS
+-- COMPILE AND DUMP TREE
+print ": |> ^ DUMP root^ moon dump_tree.moon %o |> dist/root.lua"
+
+-- PRE-RENDER TREE
import load_fileder from require 'mmm.mmmfs.fs'
root = load_fileder!
@@ -46,9 +42,6 @@ for fileder in coroutine.wrap root\iterate
name = fileder\gett 'name: alpha'
{ :path, :source_module } = fileder
- -- module_roots[source_module] or= fileder.path
- -- prefix_path = module_roots[source_module]
-
path = '/' if path == ''
print ": |> ^ HTML #{path}^ moon render.moon %o '#{path}' |> dist#{path}/index.html"