mithril-node-render
Advanced tools
Comparing version 0.1.2 to 0.1.3
29
index.js
'use strict'; | ||
var omitAttrs = [ | ||
'config', | ||
'onmousedown', | ||
'onmousemove', | ||
'onmouseover', | ||
'onclick', | ||
'onmouseout' | ||
]; | ||
function isArray(thing) { | ||
@@ -23,17 +14,17 @@ return Object.prototype.toString.call(thing) === '[object Array]'; | ||
if (!Object.keys(attrs).length) { | ||
return ''; | ||
return; | ||
} | ||
return ' ' + Object.keys(attrs).map(function(name) { | ||
if (omitAttrs.indexOf(name) >= 0) { | ||
return ''; | ||
return Object.keys(attrs).map(function(name) { | ||
if (typeof attrs[name] === 'function') { | ||
return; | ||
} | ||
if (name === 'style') { | ||
var styles = attrs.style; | ||
return 'style="' + Object.keys(styles).map(function(property) { | ||
return ' style="' + Object.keys(styles).map(function(property) { | ||
return [camelToDash(property).toLowerCase(), styles[property]].join(':'); | ||
}).join(';') + '"'; | ||
} | ||
return (name === 'className' ? 'class' : name) + '="' + attrs[name] + '"'; | ||
}).join(' '); | ||
return ' ' + (name === 'className' ? 'class' : name) + '="' + attrs[name] + '"'; | ||
}).join(''); | ||
} | ||
@@ -73,5 +64,9 @@ | ||
} | ||
var children = createChildrenContent(view); | ||
if (!children) { | ||
return ['<', view.tag, createAttrString(view.attrs), ' />'].join(''); | ||
} | ||
return [ | ||
'<', view.tag, createAttrString(view.attrs), '>', | ||
createChildrenContent(view), | ||
children, | ||
'</', view.tag, '>', | ||
@@ -78,0 +73,0 @@ ].join(''); |
{ | ||
"name": "mithril-node-render", | ||
"version": "0.1.2", | ||
"version": "0.1.3", | ||
"description": "Node rending of mithril views", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
22
test.js
@@ -8,13 +8,21 @@ 'use strict'; | ||
test('render', function(t) { | ||
t.equal(render(m('span')), '<span></span>', 'should render tag'); | ||
t.equal(render(m('.foo')), '<div class="foo"></div>', 'should render classname'); | ||
t.equal(render(m('#bar')), '<div id="bar"></div>', 'should render id'); | ||
t.equal(render(m('span', 'content')), | ||
'<span>content</span>', 'should render tag'); | ||
t.equal(render(m('.foo', 'content')), | ||
'<div class="foo">content</div>', 'should render classname'); | ||
t.equal(render(m('#bar', 'content')), | ||
'<div id="bar">content</div>', 'should render id'); | ||
t.equal(render(m('br')), '<br />', 'should render short nodes when no children'); | ||
t.equal(render(m('span', { | ||
'data-foo': 'bar', | ||
selected: 'selected' | ||
})), '<span data-foo="bar" selected="selected"></span>', 'should render attributes'); | ||
})), '<span data-foo="bar" selected="selected" />', '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', 'foo'), m('div', 'bar')]), | ||
'<span>foo</span><div>bar</div>', 'should render arrays'); | ||
t.equal(render(m('span', m('div'))), '<span><div /></span>', 'should render children'); | ||
t.equal(render(m('span', { | ||
onmousemove: function(event) {} | ||
})), '<span />', 'should not render events'); | ||
t.equal(render(m('span', { | ||
style: { | ||
@@ -24,4 +32,4 @@ paddingLeft: '10px', | ||
} | ||
})), '<span style="padding-left:10px;color:red"></span>', 'should render children'); | ||
})), '<span style="padding-left:10px;color:red" />', 'should render children'); | ||
t.end(); | ||
}); |
4640
94