diff options
| author | s-ol <s+removethis@s-ol.nu> | 2022-03-28 14:07:05 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2022-03-28 14:24:30 +0000 |
| commit | 233291f8dc194b68f9c94240148a58bc05f5feff (patch) | |
| tree | 86fbe9213aa52e2df205a5b17177af76b3c23852 | |
| parent | remove pdf accidentally left behind (diff) | |
| download | mmm-233291f8dc194b68f9c94240148a58bc05f5feff.tar.gz mmm-233291f8dc194b68f9c94240148a58bc05f5feff.zip | |
remove Editor remnants, fix inspector
| -rw-r--r-- | build/server.moon | 138 | ||||
| -rw-r--r-- | mmm/mmmfs/browser.moon | 43 | ||||
| -rw-r--r-- | mmm/mmmfs/builtins.moon | 2 | ||||
| -rw-r--r-- | root/static/$order | 3 |
4 files changed, 54 insertions, 132 deletions
diff --git a/build/server.moon b/build/server.moon index 5dc4eed..f6784b8 100644 --- a/build/server.moon +++ b/build/server.moon @@ -34,14 +34,10 @@ class Server @flags = opts.flags - if @flags.rw == nil - @flags.rw = opts.host == 'localhost' or opts.host == '127.0.0.1' - if @flags.unsafe == nil - @flags.unsafe = not @flags.rw or opts.host == 'localhost' or opts.host == '127.0.0.1' + @flags.unsafe = opts.host == 'localhost' or opts.host == '127.0.0.1' if @flags.cache - assert not @flags.rw, "--rw and --cache are incompatible" @root = Fileder @store init_cache! @@ -93,88 +89,55 @@ class Server convert 'text/mermaid-graph', 'text/html', debugger\render!, fileder, facet.name handle: (method, path, facet, value) => - if not @flags.rw and method != 'GET' and method != 'HEAD' - return 403, 'editing not allowed' - - switch method - when 'GET', 'HEAD' - root = @root or Fileder @store - export BROWSER - BROWSER = :path - fileder = root\walk path - - if not fileder - -- fileder not found - return 404, "fileder '#{path}' not found" - - val = switch facet.name - when '?index', '?tree' - -- serve fileder index - -- '?index': one level deep - -- '?tree': recursively - depth = if facet.name == '?tree' then -1 else 1 - index = @store\get_index path, depth - convert 'table', facet.type, index, fileder, facet.name - else - if facet.type == '?' - facet.type = 'text/html' - current = fileder - while current - if type = current\get '_web_view: type' - facet.type = type\match '^%s*(.-)%s*$' - break - - if current.path == '' - break - - path, _ = dir_base current.path - current = root\walk path - - if facet.type == 'text/html+interactive' - @handle_interactive fileder, facet - else if base = facet.type\match '^DEBUG %-> (.*)' - facet.type = base - @handle_debug fileder, facet - else if not fileder\has_facet facet.name - 404, "facet '#{facet.name}' not found in fileder '#{path}'" - else - fileder\get facet - - if val - 200, val - else - 406, "cant convert facet '#{facet.name}' to '#{facet.type}'" - when 'POST' - if facet - @store\create_facet path, facet.name, facet.type, value - 200, 'ok' - else - 200, @store\create_fileder dir_base path - when 'PUT' - if facet - @store\update_facet path, facet.name, facet.type, value - 200, 'ok' - else - cmd, args = value\match '^([^\n]+)\n(.*)' - switch cmd - when 'swap' - child_a, child_b = args\match '^([^\n]+)\n([^\n]+)$' - assert child_a and child_b, "invalid arguments" - - @store\swap_fileders path, child_a, child_b - 200, 'ok' - when nil - 400, "invalid request" - else - 501, "unknown command #{cmd}" - when 'DELETE' - if facet - @store\remove_facet path, facet.name, facet.type - else - @store\remove_fileder path - 200, 'ok' + if method != 'GET' and method != 'HEAD' + return 501, "not implemented" + + root = @root or Fileder @store + export BROWSER + BROWSER = :path + fileder = root\walk path + + if not fileder + -- fileder not found + return 404, "fileder '#{path}' not found" + + val = switch facet.name + when '?index', '?tree' + -- serve fileder index + -- '?index': one level deep + -- '?tree': recursively + depth = if facet.name == '?tree' then -1 else 1 + index = @store\get_index path, depth + convert 'table', facet.type, index, fileder, facet.name else - 501, "not implemented" + if facet.type == '?' + facet.type = 'text/html' + current = fileder + while current + if type = current\get '_web_view: type' + facet.type = type\match '^%s*(.-)%s*$' + break + + if current.path == '' + break + + path, _ = dir_base current.path + current = root\walk path + + if facet.type == 'text/html+interactive' + @handle_interactive fileder, facet + else if base = facet.type\match '^DEBUG %-> (.*)' + facet.type = base + @handle_debug fileder, facet + else if not fileder\has_facet facet.name + 404, "facet '#{facet.name}' not found in fileder '#{path}'" + else + fileder\get facet + + if val + 200, val + else + 406, "cant convert facet '#{facet.name}' to '#{facet.type}'" err_and_trace = (msg) -> debug.traceback msg, 2 stream: (sv, stream) => @@ -220,8 +183,7 @@ class Server -- usage: -- moon server.moon [FLAGS] [STORE] [host] [port] -- * FLAGS - any of the following: --- --[no-]rw - enable/disable POST?PUT/DELETE operations (default: on if local) --- --[no-]unsafe - enable/disable server-side code execution when writable is on (default: on if local or --no-rw) +-- --[no-]unsafe - enable/disable server-side code execution when writable is on (default: on if local) -- --[no-]cache - cache all fileder contents (default: off) -- * STORE - see mmm/mmmfs/stores/init.moon:get_store -- * host - interface to bind to (default localhost, set to 0.0.0.0 for public hosting) diff --git a/mmm/mmmfs/browser.moon b/mmm/mmmfs/browser.moon index 0127742..8531d13 100644 --- a/mmm/mmmfs/browser.moon +++ b/mmm/mmmfs/browser.moon @@ -29,7 +29,7 @@ casts = { transform: (href) => span a (code href), :href } } -get_casts = -> combine casts, converts --, PLUGINS.editors +get_casts = -> combine casts, converts export BROWSER class Browser @@ -211,7 +211,6 @@ class Browser key @inspect_err = ReactiveVar! - @editor = ReactiveVar! with div class: 'view inspector' -- nav @@ -224,12 +223,6 @@ class Browser \append div { class: 'subnav' - ondrop: -> - print "dropped" - - onpaste: -> - print "pasted" - @inspect_prop\map (current) -> current = current and current\tostring! fileder = @fileder\get! @@ -245,23 +238,7 @@ class Browser for value in pairs fileder.facet_keys \append option value, :value, selected: value == current - button 'rm', class: 'tight', onclick: (_, e) -> - if window\confirm "continuing will permanently remove the facet '#{@inspect_prop\get!}'." - fileder = @fileder\get! - fileder\set @inspect_prop\get!, nil - @refresh true - - button 'add', class: 'tight', onclick: (_, e) -> - facet = window\prompt "please enter the facet string ('name: type' or 'type'):", 'text/markdown' - return if not facet or facet == '' or facet == js.null - fileder = @fileder\get! - fileder\set facet, '' - @inspect_prop\set Key facet - @refresh! - div style: flex: '1' - - @editor\map (e) -> e and e.saveBtn } -- error / content @@ -270,14 +247,13 @@ class Browser \append @inspect_err \append with pre class: 'content' \append keep @inspect_prop\map (prop, old) -> - @get_content facet, @inspect_err, (fileder, facet) -> + @get_content prop, @inspect_err, (fileder, facet) -> value, key = fileder\get facet assert key, "couldn't @get #{facet}" conversions = get_conversions fileder, 'mmm/dom', key.type, get_casts! assert conversions, "cannot cast '#{key.type}'" - with res = apply_conversions fileder, conversions, value, facet - @editor\set if res.EDITOR then res + apply_conversions fileder, conversions, value, facet -- children \append nav { @@ -301,19 +277,6 @@ class Browser 'justify-content': 'space-between' span '- ', (link_to child, code name), style: flex: 1 - - button '↑', disabled: i == 1, onclick: (_, e) -> - fileder\swap_children i, i - 1 - @refresh true - - button '↓', disabled: i == num, onclick: (_, e) -> - fileder\swap_children i, i + 1 - @refresh true - - button 'rm', onclick: (_, e) -> - if window\confirm "continuing will permanently remove all content in '#{child.path}'." - fileder\remove_child i - @refresh true } diff --git a/mmm/mmmfs/builtins.moon b/mmm/mmmfs/builtins.moon index 763c722..e19ecf1 100644 --- a/mmm/mmmfs/builtins.moon +++ b/mmm/mmmfs/builtins.moon @@ -44,7 +44,7 @@ string.yieldable_gsub = (str, pat, f) -> str = str\gsub '%%|', '%%' str, cnt --- list of converts, editors, scripts +-- list of converts -- converts each have -- * inp - input type. can capture subtypes using `(.+)` -- * out - output type. can substitute subtypes from inp with %1, %2 etc. diff --git a/root/static/$order b/root/static/$order deleted file mode 100644 index 08ba4e6..0000000 --- a/root/static/$order +++ /dev/null @@ -1,3 +0,0 @@ -highlight-pack -style -fengari-web |
