diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2020-11-28 12:58:11 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2020-11-28 13:19:49 +0000 |
| commit | 5946776185e1d142192f58990ea8bb71e09ee0a8 (patch) | |
| tree | c100f50204f25269eff92304b3e96bad6b8ecdc3 | |
| parent | portfolio: update alv slightly (diff) | |
| download | mmm-5946776185e1d142192f58990ea8bb71e09ee0a8.tar.gz mmm-5946776185e1d142192f58990ea8bb71e09ee0a8.zip | |
make runtime JS scripts part of PLUGINS system
| -rw-r--r-- | build/server.moon | 20 | ||||
| -rw-r--r-- | mmm/mmmfs/layout.moon | 5 | ||||
| -rw-r--r-- | mmm/mmmfs/plugins/code.moon | 7 | ||||
| -rw-r--r-- | mmm/mmmfs/plugins/init.moon | 25 | ||||
| -rw-r--r-- | mmm/mmmfs/plugins/markdown.moon | 3 | ||||
| -rw-r--r-- | mmm/mmmfs/plugins/mermaid.moon | 3 | ||||
| -rw-r--r-- | mmm/mmmfs/plugins/static.moon | 2 | ||||
| -rw-r--r-- | mmm/mmmfs/plugins/twitter.moon | 3 | ||||
| -rw-r--r-- | mmm/mmmfs/util.moon | 1 |
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 |
