diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2018-11-08 08:53:27 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-11-08 08:56:43 +0000 |
| commit | 95624c5cfae37bcd378263735daa16b2b0fb60c4 (patch) | |
| tree | a65c003d5acb941fe456895438555680bfce59a0 | |
| parent | move tree into dist, recurive tup rendering etc. (diff) | |
| download | mmm-95624c5cfae37bcd378263735daa16b2b0fb60c4.tar.gz mmm-95624c5cfae37bcd378263735daa16b2b0fb60c4.zip | |
cleanup
| -rw-r--r-- | bundle_fileder.moon | 53 | ||||
| -rw-r--r-- | dump_tree.moon | 61 | ||||
| -rw-r--r-- | mmm/mmmfs/browser.moon | 4 | ||||
| -rw-r--r-- | mmm/mmmfs/conversion.moon | 8 | ||||
| -rw-r--r-- | mmm/mmmfs/fs.server.moon | 61 | ||||
| -rw-r--r-- | render.moon | 4 | ||||
| -rw-r--r-- | test.moon | 16 |
7 files changed, 42 insertions, 165 deletions
diff --git a/bundle_fileder.moon b/bundle_fileder.moon index 7c0fb26..9ef2381 100644 --- a/bundle_fileder.moon +++ b/bundle_fileder.moon @@ -1,8 +1,8 @@ -package.moonpath = './?.server.moon;./?/init.server.moon;' .. package.moonpath -require 'mmm.init' -import Key from require 'mmm.mmmfs' -import load_fileder, load_property from require 'mmm.mmmfs.fs' +require 'mmm' +import Fileder, Key from require 'mmm.mmmfs.fileder' +import opairs from require 'mmm.ordered' import to_lua from require 'moonscript.base' +require 'lfs' -- usage: -- moon bundle_fileder.moon <dirname> <facets>... -- <children>... @@ -16,29 +16,48 @@ children_bundles = {} do addto = facets for file in *arg[2,] + continue if file == 'Tupdefault.lua' + if file == '--' addto = children_bundles continue table.insert addto, file --- dump a fileder subtree as Lua source -dump_fileder = do - escape = (str) -> string.format '%q', tostring str - compile = (old, new, val) -> escape "-- this property has been transpiled from '#{old}' +readfile = (name) -> + file = io.open name, 'r' + with file\read '*all' + file\close! + +-- load a fs file as a fileder property +load_property = (path, filename) -> + key = (filename\match '(.*)%.%w+') or filename + key = Key key\gsub '%$', '/' + + value = readfile path .. filename + + key, value + +-- escape a string for lua aparser +escape = (str) -> string.format '%q', tostring str + +-- compile a moonscript facet to lua +compile = (old, new, val) -> "-- this property has been transpiled from '#{old}' -- to '#{new}' for execution in the browser. -- refer to the original property as the source. #{to_lua val}" +-- dump a fileder subtree as Lua source +dump_fileder = do _dump = (fileder, root=false) -> code = "Fileder {" for key, val in pairs fileder.props - code ..= "\n[#{escape key}] = #{escape val}," - - if root and key.type\match '^text/moonscript %->' - newkey = Key key.name, key.type\gsub '^text/moonscript %-> (.*)', 'text/lua -> %1' - code ..= "\n[fromcache(#{escape newkey}, #{escape key})] = #{compile key, newkey, val}," + if key.original + key = "fromcache(#{escape key}, #{escape key.original})" + else + key = escape key + code ..= "\n[#{key}] = #{escape val}," for child in *fileder.children code ..= "\n#{_dump child}," @@ -59,9 +78,6 @@ end return #{_dump fileder, true} " -import Fileder from require 'mmm.mmmfs.fileder' -import opairs from require 'mmm.ordered' - with io.open '$bundle.lua', 'w' \write dump_fileder with Fileder 'name: alpha': dirname order = nil @@ -74,6 +90,11 @@ with io.open '$bundle.lua', 'w' key, value = load_property '', facet .props[key] = value + if key.type\match '^text/moonscript %->' + new_key = Key key.name, key.type\gsub '^text/moonscript %-> (.*)', 'text/lua -> %1' + new_key.original = key + .props[new_key] = compile key, new_key, value + for child in *children_bundles -- @BUG: child bundles are malformed due to Tup bug ($ symbol) child = child\gsub '/%.lua$', '/$bundle.lua' diff --git a/dump_tree.moon b/dump_tree.moon deleted file mode 100644 index a35a223..0000000 --- a/dump_tree.moon +++ /dev/null @@ -1,61 +0,0 @@ -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 - - compile = (old, new, val) -> escape " --- this property has been transpiled from '#{old}' --- to '#{new}' for execution in the browser. --- refer to the original property as the source. -#{to_lua val}" - - _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 ..= " - [fromcache(#{escape newkey}, #{escape key})] = #{compile key, newkey, val}," - - for child in *fileder.children - code ..= " - #{_dump child}," - - code ..= " - }" - code - - - (fileder) -> " - local mmmfs = require 'mmm.mmmfs' - local Key, Fileder = mmmfs.Key, mmmfs.Fileder - local function fromcache(str, orig) - local key = Key(str) - key.original = Key(orig) - return key - end - - return #{_dump fileder} - " - -with io.open output_name, 'w' - \write dump_fileder root diff --git a/mmm/mmmfs/browser.moon b/mmm/mmmfs/browser.moon index a40b5cf..62212df 100644 --- a/mmm/mmmfs/browser.moon +++ b/mmm/mmmfs/browser.moon @@ -23,7 +23,7 @@ for convert in *converts table.insert casts, convert class Browser - new: (@root, path='/', rehydrate=false) => + new: (@root, path='', rehydrate=false) => -- root fileder assert @root, 'root fileder is nil' @@ -69,7 +69,7 @@ class Browser href = '' path = path\match '^/(.*)' - \append path_segment 'root', '/' + \append path_segment 'root', '' while path name, rest = path\match '^(%w+)/(.*)' diff --git a/mmm/mmmfs/conversion.moon b/mmm/mmmfs/conversion.moon index 6896c7d..a976727 100644 --- a/mmm/mmmfs/conversion.moon +++ b/mmm/mmmfs/conversion.moon @@ -52,12 +52,8 @@ converts = { (html) -> div html else (html) -> - tmp = document\createElement 'div' - tmp.innerHTML = html - -- if tmp.childElementCount == 1 - -- tmp.firstChild - -- else - tmp + with document\createElement 'div' + .innerHTML = html }, { inp: 'text/lua -> (.+)', diff --git a/mmm/mmmfs/fs.server.moon b/mmm/mmmfs/fs.server.moon deleted file mode 100644 index a1f5293..0000000 --- a/mmm/mmmfs/fs.server.moon +++ /dev/null @@ -1,61 +0,0 @@ -import Fileder from require 'mmm.mmmfs.fileder' -import opairs from require 'mmm.ordered' -require 'lfs' - -readfile = (name) -> - file = io.open name, 'r' - with file\read '*all' - file\close! - --- load a fs file as a fileder property -load_property = (path, filename) -> - key = (filename\match '(.*)%.%w+') or filename - key = key\gsub '%$', '/' - - value = readfile path .. filename - - key, value - --- load a fs directory as a fileder -load_fileder = (path='root/', name='') -> - path = path .. 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' - 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/render.moon b/render.moon index 681b1db..5284e66 100644 --- a/render.moon +++ b/render.moon @@ -1,7 +1,5 @@ -package.moonpath = './?.server.moon;./?/init.server.moon;' .. package.moonpath -require 'mmm.init' +require 'mmm' import render from require 'mmm.mmmfs' -import load_fileder from require 'mmm.mmmfs.fs' -- usage: -- moon render.moon <path_to_root> diff --git a/test.moon b/test.moon deleted file mode 100644 index 7d18982..0000000 --- a/test.moon +++ /dev/null @@ -1,16 +0,0 @@ -package.moonpath = './?.server.moon;./?/init.server.moon;' .. package.moonpath -require 'mmm.init' -import render from require 'mmm.mmmfs' -import load_fileder from require 'mmm.mmmfs.fs' - --- usage: --- moon render.moon <output> <fileder_path> -{ output_name, path } = arg - -assert output_name, "please specify the output filename as an argument" -assert path, "please specify the path name to build as an argument" - -root = load_fileder 'root' .. path -root\mount path - -print root |
