aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2018-10-27 05:48:25 +0000
committers-ol <s-ol@users.noreply.github.com>2018-10-27 05:48:25 +0000
commitbe19e9db5cd591d0dea0603b0b82b1491e77677b (patch)
treeb944b59f57f163a3433a2e211197a0965adaea9a
parentlot more writing about tablefs (diff)
downloadmmm-be19e9db5cd591d0dea0603b0b82b1491e77677b.tar.gz
mmm-be19e9db5cd591d0dea0603b0b82b1491e77677b.zip
styling
-rw-r--r--app/tablefs/init.moon260
-rw-r--r--app/tablefs/tablefs.moon6
-rw-r--r--scss/main.scss9
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