diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2018-11-06 06:24:56 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-11-06 06:24:56 +0000 |
| commit | 8c59c3152294fdbf48753c947cbda81281923f96 (patch) | |
| tree | 92bb38a7dd747cb8eb4ff06fb575e105dd7800d4 | |
| parent | implement mmmfs on real fs (diff) | |
| download | mmm-8c59c3152294fdbf48753c947cbda81281923f96.tar.gz mmm-8c59c3152294fdbf48753c947cbda81281923f96.zip | |
fix client behaviour
| -rw-r--r-- | dump_tree.moon | 49 | ||||
| -rw-r--r-- | render.moon | 2 | ||||
| -rw-r--r-- | tup.moon | 15 |
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! @@ -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" |
