diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2018-10-27 05:48:25 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-10-27 05:48:25 +0000 |
| commit | be19e9db5cd591d0dea0603b0b82b1491e77677b (patch) | |
| tree | b944b59f57f163a3433a2e211197a0965adaea9a | |
| parent | lot more writing about tablefs (diff) | |
| download | mmm-be19e9db5cd591d0dea0603b0b82b1491e77677b.tar.gz mmm-be19e9db5cd591d0dea0603b0b82b1491e77677b.zip | |
styling
| -rw-r--r-- | app/tablefs/init.moon | 260 | ||||
| -rw-r--r-- | app/tablefs/tablefs.moon | 6 | ||||
| -rw-r--r-- | scss/main.scss | 9 |
3 files changed, 143 insertions, 132 deletions
diff --git a/app/tablefs/init.moon b/app/tablefs/init.moon index 9ad6fb9..db3a328 100644 --- a/app/tablefs/init.moon +++ b/app/tablefs/init.moon @@ -1,151 +1,149 @@ -on_client ((...) -> - export ^ - - interps = { - { - name: 'moon', - transform: (method) => method @ - }, - } +export ^ + +interps = { + { + name: 'moon', + transform: (method) => method @ + }, +} + +split = (str, delim='->') -> + return {}, str if nil == str\find delim + + -- @TODO interp chain? + interp, rest = str\match ' *(%w+) *-> *(.*)' + { interp }, rest + +class Key + new: (opts) => + if 'string' == type opts + @name, rest = opts\match '(%w+): *(.+)' + if not @name + @name = '' + rest = opts + @interps, @type = split rest, '->' + elseif 'table' == type opts + @name = opts.name + @type = assert opts.type, 'no type given' + @interps = opts.interps or {} + else + error 'wrong argument type' - split = (str, delim='->') -> - return {}, str if nil == str\find delim - - -- @TODO interp chain? - interp, rest = str\match ' *(%w+) *-> *(.*)' - { interp }, rest - - class Key - new: (opts) => - if 'string' == type opts - @name, rest = opts\match '(%w+): *(.+)' - if not @name - @name = '' - rest = opts - @interps, @type = split rest, '->' - elseif 'table' == type opts - @name = opts.name - @type = assert opts.type, 'no type given' - @interps = opts.interps or {} - else - error 'wrong argument type' + -- get a function that interpretes thi type according to @interps + get_interp: (overrides) => + return ((val) => val) if #@interps == 0 - -- get a function that interpretes thi type according to @interps - get_interp: (overrides) => - return ((val) => val) if #@interps == 0 + assert #@interps == 1, 'not supported rn' -- @TODO + _name = @interps[1] - assert #@interps == 1, 'not supported rn' -- @TODO - _name = @interps[1] + return overrides[_name] if overrides and overrides[_name] - return overrides[_name] if overrides and overrides[_name] + for { :name, :transform } in *interps + if name == _name + return transform - for { :name, :transform } in *interps - if name == _name - return transform + error "interp not found: '#{_name}'" - error "interp not found: '#{_name}'" +converts = { + { + inp: 'mmm/dom', + out: 'text/html', + transform: (node) -> if MODE == 'SERVER' then node else node.outerHTML + }, + { + inp: 'mmm/component', + out: 'mmm/dom', + transform: (...) -> + import tohtml from require 'lib.component' + tohtml ... + }, + { + -- @TODO this chained rule *should* be inferred, but that's way too hot rn + inp: 'mmm/component', + out: 'text/html', + transform: (node) -> + import tohtml from require 'lib.component' + + node = tohtml node + if MODE == 'SERVER' then node else node.outerHTML + }, +} + +table.insert converts, { + inp: 'text/html', + out: 'mmm/dom', + transform: if MODE == 'SERVER' + (...) -> ... + else + (html) -> + tmp = document\createElement 'div' + tmp.innerHTML = html + tmp.firstChild + } - converts = { - { - inp: 'mmm/dom', +do + local markdown + if MODE == 'SERVER' + success, discount = pcall require, 'discount' + markdown = discount if success + else + markdown = window and window\marked + + if markdown + table.insert converts, { + inp: 'text/markdown', out: 'text/html', - transform: (node) -> if MODE == 'SERVER' then node else node.outerHTML - }, - { - inp: 'mmm/component', + transform: markdown, + } + + -- @TODO chained w above + table.insert converts, { + inp: 'text/markdown', out: 'mmm/dom', - transform: (...) -> - import tohtml from require 'lib.component' - tohtml ... - }, - { - -- @TODO this chained rule *should* be inferred, but that's way too hot rn - inp: 'mmm/component', - out: 'text/html', - transform: (node) -> - import tohtml from require 'lib.component' + transform: if MODE == 'SERVER' + (md) -> markdown md + else + (md) -> + with document\createElement 'div' + .innerHTML = markdown md + } - node = tohtml node - if MODE == 'SERVER' then node else node.outerHTML - }, - } +class Fileder + new: (props, @children) => + if not @children + @children = for i, child in ipairs props + props[i] = nil + child - table.insert converts, { - inp: 'text/html', - out: 'mmm/dom', - transform: if MODE == 'SERVER' - (...) -> ... - else - (html) -> - tmp = document\createElement 'div' - tmp.innerHTML = html - tmp.firstChild - } + @props = { (Key k), v for k, v in pairs props } - do - local markdown - if MODE == 'SERVER' - success, discount = pcall require, 'discount' - markdown = discount if success - else - markdown = window and window\marked - - if markdown - table.insert converts, { - inp: 'text/markdown', - out: 'text/html', - transform: markdown, - } - - -- @TODO chained w above - table.insert converts, { - inp: 'text/markdown', - out: 'mmm/dom', - transform: if MODE == 'SERVER' - (md) -> markdown md - else - (md) -> - with document\createElement 'div' - .innerHTML = markdown md - } - - class Fileder - new: (props, @children) => - if not @children - @children = for i, child in ipairs props - props[i] = nil - child - - @props = { (Key k), v for k, v in pairs props } - - gett: (...) => assert @get ... - get: (name='', type, overrides) => - if not type - type = name - name = '' - - -- first pass, interps only - for key, value in pairs @props - continue unless key.name == name and key.type == type + gett: (...) => assert @get ... + get: (name='', type, overrides) => + if not type + type = name + name = '' - interp = key\get_interp overrides + -- first pass, interps only + for key, value in pairs @props + continue unless key.name == name and key.type == type - return interp @, value + interp = key\get_interp overrides - if not overrides - -- second pass, interps + converts - for key, value in pairs @props - continue unless key.name == name + return interp @, value + + if not overrides + -- second pass, interps + converts + for key, value in pairs @props + continue unless key.name == name - interp = key\get_interp! + interp = key\get_interp! - for { :inp, :out, :transform } in *converts - return transform interp @, value if inp == key.type and out == type + for { :inp, :out, :transform } in *converts + return transform interp @, value if inp == key.type and out == type - nil, "node doesn't have value for #{name}:#{type}" + nil, "node doesn't have value for #{name}:#{type}" - require = relative ... - root = require '.tablefs' +require = relative ... +root = require '.tablefs' - append root\gett 'mmm/dom' -), ... +append root\gett 'mmm/dom' diff --git a/app/tablefs/tablefs.moon b/app/tablefs/tablefs.moon index 9bec786..4983b6e 100644 --- a/app/tablefs/tablefs.moon +++ b/app/tablefs/tablefs.moon @@ -7,7 +7,11 @@ Fileder { _code = code (str) -> _code str\match '^ *(..-) *$' - article with _this = {} + center = (contents) -> + contents.style = { margin: 'auto', 'max-width': '750px' } + article contents + + center with _this = {} append = (a) -> table.insert _this, a footnote, getnotes = do diff --git a/scss/main.scss b/scss/main.scss index 07c3260..169dc1e 100644 --- a/scss/main.scss +++ b/scss/main.scss @@ -38,3 +38,12 @@ body { } } } + +pre { + color: #eeeeee; + background-color: #212121; + border-radius: 10px; + padding: 1em; + white-space: pre-wrap; + margin: 0 2em; +}
\ No newline at end of file |
