mithril-node-render
Advanced tools
Comparing version 0.1.1 to 0.1.2
64
index.js
@@ -9,2 +9,3 @@ 'use strict'; | ||
'onclick', | ||
'onmouseout' | ||
]; | ||
@@ -16,2 +17,42 @@ | ||
function camelToDash(str) { | ||
return str.replace(/\W+/g, '-') | ||
.replace(/([a-z\d])([A-Z])/g, '$1-$2'); | ||
} | ||
function createAttrString(attrs) { | ||
if (!Object.keys(attrs).length) { | ||
return ''; | ||
} | ||
return ' ' + Object.keys(attrs).map(function(name) { | ||
if (omitAttrs.indexOf(name) >= 0) { | ||
return ''; | ||
} | ||
if (name === 'style') { | ||
var styles = attrs.style; | ||
return 'style="' + Object.keys(styles).map(function(property) { | ||
return [camelToDash(property).toLowerCase(), styles[property]].join(':'); | ||
}).join(';') + '"'; | ||
} | ||
return (name === 'className' ? 'class' : name) + '="' + attrs[name] + '"'; | ||
}).join(' '); | ||
} | ||
function createTrustedContent(view) { | ||
return Object.keys(view).map(function(key) { | ||
if (key === '$trusted') { | ||
return ''; | ||
} | ||
return view[key]; | ||
}).join(''); | ||
} | ||
function createChildrenContent(view) { | ||
if(!view.children || !view.children.length) { | ||
return ''; | ||
} | ||
return render(view.children); | ||
} | ||
function render(view) { | ||
@@ -31,24 +72,7 @@ if (!view) { | ||
if (view.$trusted) { | ||
return Object.keys(view).map(function(key) { | ||
if (key === '$trusted') { | ||
return ''; | ||
} | ||
return view[key]; | ||
}).join(''); | ||
return createTrustedContent(view); | ||
} | ||
var attrString = ''; | ||
if (view.attrs) { | ||
attrString = Object.keys(view.attrs).map(function(name) { | ||
if (omitAttrs.indexOf(name) >= 0) { | ||
return ''; | ||
} | ||
return (name === 'className' ? 'class' : name) + '="' + view.attrs[name] + '"'; | ||
}).join(' '); | ||
attrString = attrString ? ' ' + attrString : ''; | ||
} | ||
return [ | ||
'<', view.tag, attrString, '>', | ||
(view.children ? render(view.children) : ''), | ||
'<', view.tag, createAttrString(view.attrs), '>', | ||
createChildrenContent(view), | ||
'</', view.tag, '>', | ||
@@ -55,0 +79,0 @@ ].join(''); |
{ | ||
"name": "mithril-node-render", | ||
"version": "0.1.1", | ||
"version": "0.1.2", | ||
"description": "Node rending of mithril views", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
10
test.js
@@ -13,8 +13,14 @@ 'use strict'; | ||
'data-foo': 'bar', | ||
style: 'color: pink' | ||
})), '<span data-foo="bar" style="color: pink"></span>', 'should render attributes'); | ||
selected: 'selected' | ||
})), '<span data-foo="bar" selected="selected"></span>', 'should render attributes'); | ||
t.equal(render(m('ul', 'huhu')), '<ul>huhu</ul>', 'should render string'); | ||
t.equal(render([m('span'), m('div')]), '<span></span><div></div>', 'should render arrays'); | ||
t.equal(render(m('span', m('div'))), '<span><div></div></span>', 'should render children'); | ||
t.equal(render(m('span', { | ||
style: { | ||
paddingLeft: '10px', | ||
color: 'red' | ||
} | ||
})), '<span style="padding-left:10px;color:red"></span>', 'should render children'); | ||
t.end(); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
4357
90