aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2020-11-28 12:58:11 +0000
committers-ol <s-ol@users.noreply.github.com>2020-11-28 13:19:49 +0000
commit5946776185e1d142192f58990ea8bb71e09ee0a8 (patch)
treec100f50204f25269eff92304b3e96bad6b8ecdc3
parentportfolio: update alv slightly (diff)
downloadmmm-5946776185e1d142192f58990ea8bb71e09ee0a8.tar.gz
mmm-5946776185e1d142192f58990ea8bb71e09ee0a8.zip
make runtime JS scripts part of PLUGINS system
-rw-r--r--build/server.moon20
-rw-r--r--mmm/mmmfs/layout.moon5
-rw-r--r--mmm/mmmfs/plugins/code.moon7
-rw-r--r--mmm/mmmfs/plugins/init.moon25
-rw-r--r--mmm/mmmfs/plugins/markdown.moon3
-rw-r--r--mmm/mmmfs/plugins/mermaid.moon3
-rw-r--r--mmm/mmmfs/plugins/static.moon2
-rw-r--r--mmm/mmmfs/plugins/twitter.moon3
-rw-r--r--mmm/mmmfs/util.moon1
9 files changed, 42 insertions, 27 deletions
diff --git a/build/server.moon b/build/server.moon
index a19edb0..f13695a 100644
--- a/build/server.moon
+++ b/build/server.moon
@@ -56,21 +56,13 @@ class Server
root = Fileder @store
browser = Browser root, fileder.path, facet.name
- deps = [[
- <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.6/svg.min.js"></script>
- <script type="text/javascript" src="//unpkg.com/mermaid@8.4.0/dist/mermaid.min.js"></script>
- <script type="text/javascript" src="//unpkg.com/marked@0.7.0/marked.min.js"></script>
- <link rel="stylesheet" type="text/css" href="//unpkg.com/codemirror@5.49.2/lib/codemirror.css" />
- <script type="text/javascript" src="//unpkg.com/codemirror@5.49.2/lib/codemirror.js"></script>
- <script type="text/javascript" src="//unpkg.com/codemirror@5.49.2/mode/lua/lua.js"></script>
- <script type="text/javascript" src="//unpkg.com/codemirror@5.49.2/mode/markdown/markdown.js"></script>
- <script type="text/javascript" src="//unpkg.com/codemirror@5.49.2/addon/display/autorefresh.js"></script>
- <script type="text/javascript" src="/static/fengari-web/:text/javascript"></script>
- <script type="text/lua" src="/static/mmm/:text/lua"></script>
- <script type="text/lua">require 'mmm'; require 'mmm.mmmfs'</script>]]
-
- render browser\todom!, fileder, noview: true, scripts: deps .. "
+ render browser\todom!, fileder, noview: true, scripts: PLUGINS.scripts .. "
+ <script type=\"text/javascript\" src=\"//cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.6/svg.min.js\"></script>
+ <script type=\"text/javascript\" src=\"/static/fengari-web/:text/javascript\"></script>
+ <script type=\"text/lua\" src=\"/static/mmm/:text/lua\"></script>
<script type=\"text/lua\">
+ require 'lmm'
+ require 'mmm.mmmfs'
on_load = on_load or {}
table.insert(on_load, function()
local path = #{string.format '%q', fileder.path}
diff --git a/mmm/mmmfs/layout.moon b/mmm/mmmfs/layout.moon
index 9a33b27..a1960f1 100644
--- a/mmm/mmmfs/layout.moon
+++ b/mmm/mmmfs/layout.moon
@@ -115,7 +115,7 @@ get_meta = =>
render = (content, fileder, opts={}) ->
opts.meta or= get_meta fileder
- opts.scripts or= ''
+ opts.scripts or= PLUGINS.scripts
unless opts.noview
content = [[
@@ -143,8 +143,7 @@ render = (content, fileder, opts={}) ->
#{footer}"
buf ..= if STATIC then '' else [[
<script type="text/javascript" src="/static/highlight-pack/:text/javascript"></script>
- <script type="text/javascript">hljs.initHighlighting()</script>
- <script type="text/javascript" src="//platform.twitter.com/widgets.js" charset="utf-8"></script>]]
+ <script type="text/javascript">hljs.initHighlighting()</script>]]
buf ..= opts.scripts
buf ..= if STATIC then STATIC.scripts else ''
diff --git a/mmm/mmmfs/plugins/code.moon b/mmm/mmmfs/plugins/code.moon
index 85d0184..8ab760a 100644
--- a/mmm/mmmfs/plugins/code.moon
+++ b/mmm/mmmfs/plugins/code.moon
@@ -86,4 +86,11 @@ class Editor
Editor value, nil, fileder, key
}
}
+ scripts: [[
+ <link rel="stylesheet" type="text/css" href="//unpkg.com/codemirror@5.49.2/lib/codemirror.css" />
+ <script type="text/javascript" src="//unpkg.com/codemirror@5.49.2/lib/codemirror.js"></script>
+ <script type="text/javascript" src="//unpkg.com/codemirror@5.49.2/mode/lua/lua.js"></script>
+ <script type="text/javascript" src="//unpkg.com/codemirror@5.49.2/mode/markdown/markdown.js"></script>
+ <script type="text/javascript" src="//unpkg.com/codemirror@5.49.2/addon/display/autorefresh.js"></script>
+ ]]
}
diff --git a/mmm/mmmfs/plugins/init.moon b/mmm/mmmfs/plugins/init.moon
index 5c6feb6..93190b2 100644
--- a/mmm/mmmfs/plugins/init.moon
+++ b/mmm/mmmfs/plugins/init.moon
@@ -46,7 +46,7 @@ string.yieldable_gsub = (str, pat, f) ->
str = str\gsub '%%|', '%%'
str, cnt
--- list of converts, editors
+-- list of converts, editors, scripts
-- converts each have
-- * inp - input type. can capture subtypes using `(.+)`
-- * out - output type. can substitute subtypes from inp with %1, %2 etc.
@@ -54,6 +54,7 @@ string.yieldable_gsub = (str, pat, f) ->
-- * transform - function (val: inp, fileder) => val: out
-- @convert, @from, @to contain the convert and the concrete types
editors = {}
+scripts = ''
converts = {
{
inp: 'fn -> (.+)',
@@ -269,7 +270,7 @@ if MODE == 'CLIENT' or UNSAFE
transform: loadwith load or loadstring
}
-add_converts = (module) ->
+add_plugin = (module) ->
ok, plugin = pcall require, ".plugins.#{module}"
if not ok
@@ -286,16 +287,19 @@ add_converts = (module) ->
for editor in *plugin.editors
table.insert editors, editor
-add_converts 'code'
-add_converts 'json'
-add_converts 'markdown'
-add_converts 'mermaid'
-add_converts 'twitter'
-add_converts 'youtube'
-add_converts 'cites'
+ if plugin.scripts
+ scripts ..= plugin.scripts
+
+add_plugin 'code'
+add_plugin 'json'
+add_plugin 'markdown'
+add_plugin 'mermaid'
+add_plugin 'twitter'
+add_plugin 'youtube'
+add_plugin 'cites'
if STATIC
- add_converts 'static'
+ add_plugin 'static'
else
table.insert converts, {
inp: '(.+)',
@@ -335,4 +339,5 @@ else
{
:converts
:editors
+ :scripts
}
diff --git a/mmm/mmmfs/plugins/markdown.moon b/mmm/mmmfs/plugins/markdown.moon
index 74905e2..680fdc4 100644
--- a/mmm/mmmfs/plugins/markdown.moon
+++ b/mmm/mmmfs/plugins/markdown.moon
@@ -66,4 +66,7 @@ assert markdown, "no markdown implementation found"
html
}
}
+ scripts: [[
+ <script type="text/javascript" src="//unpkg.com/marked@0.7.0/marked.min.js"></script>
+ ]]
}
diff --git a/mmm/mmmfs/plugins/mermaid.moon b/mmm/mmmfs/plugins/mermaid.moon
index ae34afa..a5cbc7c 100644
--- a/mmm/mmmfs/plugins/mermaid.moon
+++ b/mmm/mmmfs/plugins/mermaid.moon
@@ -26,4 +26,7 @@ id_counter = 1
window.mermaid\render id, source, cb, container
}
}
+ scripts: [[
+ <script type="text/javascript" src="//unpkg.com/mermaid@8.4.0/dist/mermaid.min.js"></script>
+ ]]
}
diff --git a/mmm/mmmfs/plugins/static.moon b/mmm/mmmfs/plugins/static.moon
index d65b822..5bf9476 100644
--- a/mmm/mmmfs/plugins/static.moon
+++ b/mmm/mmmfs/plugins/static.moon
@@ -8,6 +8,8 @@ extensions = {
'text/javascript': 'js'
'text/css': 'css'
+
+ 'model/gltf-binary': 'glb'
}
{
diff --git a/mmm/mmmfs/plugins/twitter.moon b/mmm/mmmfs/plugins/twitter.moon
index b6e1adc..e3fa668 100644
--- a/mmm/mmmfs/plugins/twitter.moon
+++ b/mmm/mmmfs/plugins/twitter.moon
@@ -19,4 +19,7 @@ import div, blockquote, a from require 'mmm.dom'
}
}
}
+ scripts: [[
+ <script type="text/javascript" src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
+ ]]
}
diff --git a/mmm/mmmfs/util.moon b/mmm/mmmfs/util.moon
index 11f00fe..cd93196 100644
--- a/mmm/mmmfs/util.moon
+++ b/mmm/mmmfs/util.moon
@@ -142,6 +142,7 @@ tourl = (path, _view) ->
error "unknown embed 'wrap': '#{opts.wrap}'"
{
+ :tourl
:find_fileder
:link_to
:interactive_link