diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2018-10-29 08:37:40 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-10-29 08:40:08 +0000 |
| commit | e5491bc7fbd867812500c845db99b55b35db0666 (patch) | |
| tree | 7204730bc3cd99027a3104b315b6b3996bc794a4 /lib/dom.server.moon | |
| parent | better conversion inverence for mmmfs (diff) | |
| download | mmm-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.moon | 33 |
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 |
