aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2018-11-04 10:15:04 +0000
committers-ol <s-ol@users.noreply.github.com>2018-11-04 10:29:44 +0000
commit7ce3675b20a6b8844d73cd185011d8bc11c2b942 (patch)
treeffe04f0299926492f1418295de992fadc0fac152
parentsmall fixes (diff)
downloadmmm-7ce3675b20a6b8844d73cd185011d8bc11c2b942.tar.gz
mmm-7ce3675b20a6b8844d73cd185011d8bc11c2b942.zip
preload bundles
-rw-r--r--bundle.moon24
-rw-r--r--render.moon10
-rw-r--r--tup.moon8
3 files changed, 36 insertions, 6 deletions
diff --git a/bundle.moon b/bundle.moon
new file mode 100644
index 0000000..5d855ea
--- /dev/null
+++ b/bundle.moon
@@ -0,0 +1,24 @@
+output_name = assert arg[1], "please specify the output directory"
+
+escape = (str) -> string.format '%q', str
+
+with io.open output_name, 'w'
+ \write "local p = package.preload\n"
+
+ for i=2, #arg
+ file_name = arg[i]
+
+ file = io.open file_name, 'r'
+ code = file\read '*all'
+ file\close!
+
+ module = file_name\gsub '/', '.'
+ module = module\gsub '%.lua$', ''
+ module = module\gsub '%.init$', ''
+ module = module\match '^dist%.(.*)'
+
+ file_name = escape file_name
+ code = escape code
+ module = escape module
+
+ \write "if not p[#{module}] then p[#{module}] = load(#{code}, #{file_name}) end\n"
diff --git a/render.moon b/render.moon
index 8098ba7..90b85d3 100644
--- a/render.moon
+++ b/render.moon
@@ -40,10 +40,12 @@ with io.open output_name, 'w'
<body>
#{content}
- <script defer src=\"/fengari-web.js\"></script>
- <script defer src=\"/highlight.pack.js\"></script>
- <script defer src=\"//cdnjs.cloudflare.com/ajax/libs/marked/0.5.1/marked.min.js\"></script>
- <script defer src=\"//cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.6/svg.min.js\"></script>
+ <script src=\"/highlight.pack.js\"></script>
+ <script src=\"//cdnjs.cloudflare.com/ajax/libs/marked/0.5.1/marked.min.js\"></script>
+ <script src=\"//cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.6/svg.min.js\"></script>
+ <script src=\"/fengari-web.js\"></script>
+ <script type=\"application/lua\" src=\"/mmm.bundle.lua\"></script>
+ <script type=\"application/lua\" src=\"/root.bundle.lua\"></script>
<script defer type=\"application/lua\" src=\"/mmm/init.lua\"></script>
#{rehydrate}
diff --git a/tup.moon b/tup.moon
index cdee2d4..e489120 100644
--- a/tup.moon
+++ b/tup.moon
@@ -23,14 +23,18 @@ enum_dir = do
-- 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"
+ 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$'
basename = (file\match '(.*)%.client') or basename
- print ": #{file} |> ^ MOON %b > %o^ moonc -o %o %f |> dist/#{basename}.lua"
+ 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
import module_roots from require 'mmm.mmmfs'