From 5946776185e1d142192f58990ea8bb71e09ee0a8 Mon Sep 17 00:00:00 2001 From: s-ol Date: Sat, 28 Nov 2020 13:58:11 +0100 Subject: make runtime JS scripts part of PLUGINS system --- build/server.moon | 20 ++++++-------------- mmm/mmmfs/layout.moon | 5 ++--- mmm/mmmfs/plugins/code.moon | 7 +++++++ mmm/mmmfs/plugins/init.moon | 25 +++++++++++++++---------- mmm/mmmfs/plugins/markdown.moon | 3 +++ mmm/mmmfs/plugins/mermaid.moon | 3 +++ mmm/mmmfs/plugins/static.moon | 2 ++ mmm/mmmfs/plugins/twitter.moon | 3 +++ 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 = [[ - - - - - - - - - - - ]] - - render browser\todom!, fileder, noview: true, scripts: deps .. " + render browser\todom!, fileder, noview: true, scripts: PLUGINS.scripts .. " + + + - - ]] + ]] 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: [[ + + + + + + ]] } 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: [[ + + ]] } 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: [[ + + ]] } 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: [[ + + ]] } 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 -- cgit v1.2.3