aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dom.server.moon
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2018-10-29 08:37:40 +0000
committers-ol <s-ol@users.noreply.github.com>2018-10-29 08:40:08 +0000
commite5491bc7fbd867812500c845db99b55b35db0666 (patch)
tree7204730bc3cd99027a3104b315b6b3996bc794a4 /lib/dom.server.moon
parentbetter conversion inverence for mmmfs (diff)
downloadmmm-e5491bc7fbd867812500c845db99b55b35db0666.tar.gz
mmm-e5491bc7fbd867812500c845db99b55b35db0666.zip
rename lib.html to lib.dom
Diffstat (limited to 'lib/dom.server.moon')
-rw-r--r--lib/dom.server.moon33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/dom.server.moon b/lib/dom.server.moon
new file mode 100644
index 0000000..3a7b537
--- /dev/null
+++ b/lib/dom.server.moon
@@ -0,0 +1,33 @@
+import opairs from require 'lib.ordered'
+
+element = (element) -> (...) ->
+ children = { ... }
+
+ -- attributes are last arguments but mustn't be a ReactiveVar
+ attributes = children[#children]
+ if 'table' == (type attributes) and not attributes.node
+ table.remove children
+ else
+ attributes = {}
+
+ b = "<#{element}"
+ for k,v in opairs attributes
+ if k == 'style' and 'table' == type v
+ tmp = ''
+ for kk, vv in opairs v
+ tmp ..= "#{kk}: #{vv}; "
+ v = tmp
+ b ..= " #{k}=\"#{v}\""
+
+ -- if there is only one argument,
+ -- children can be in attributes table too
+ if #children == 0
+ children = attributes
+
+ b ..= ">" .. table.concat children, ''
+ b ..= "</#{element}>"
+ b
+
+setmetatable {}, __index: (name) =>
+ with val = element name
+ @[name] = val