aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2018-11-08 08:53:27 +0000
committers-ol <s-ol@users.noreply.github.com>2018-11-08 08:56:43 +0000
commit95624c5cfae37bcd378263735daa16b2b0fb60c4 (patch)
treea65c003d5acb941fe456895438555680bfce59a0
parentmove tree into dist, recurive tup rendering etc. (diff)
downloadmmm-95624c5cfae37bcd378263735daa16b2b0fb60c4.tar.gz
mmm-95624c5cfae37bcd378263735daa16b2b0fb60c4.zip
cleanup
-rw-r--r--bundle_fileder.moon53
-rw-r--r--dump_tree.moon61
-rw-r--r--mmm/mmmfs/browser.moon4
-rw-r--r--mmm/mmmfs/conversion.moon8
-rw-r--r--mmm/mmmfs/fs.server.moon61
-rw-r--r--render.moon4
-rw-r--r--test.moon16
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