hyperglue
Version:
update html elements by mapping query selectors to attributes, text, and hypertext
53 lines (46 loc) • 1.2 kB
JavaScript
var test = require('tape');
var hyperglue = require('../../');
var html = [
'<div id="rows">',
'<div class="row">',
'<span class="name"></span>',
'<span class="message"></span>',
'</div>',
'<b>ahoy!</b>',
'</div>'
].join('');
var expected = [
'<div id="rows">',
'<div class="row">',
'<span class="name">T-REX</span>',
'<span class="message">RAWR</span>',
'</div>',
'<div class="row">',
'<span class="name">robot</span>',
'<span class="message">beep boop</span>',
'</div>',
'<div class="row">',
'<span class="name">Dr X</span>',
'<span class="message">mwahaha</span>',
'</div>',
'<b>ahoy!</b>',
'</div>'
].join('');
test('array', function (t) {
t.plan(1);
var res = hyperglue(html, {
'.row': [
{ '.name': 'T-REX', '.message': 'RAWR' },
{ '.name': 'robot', '.message': 'beep boop' },
{ '.name': 'Dr X', '.message': 'mwahaha' }
]
}).outerHTML;
t.equal(fudge(res), fudge(expected));
});
function fudge (html) {
return html.toLowerCase()
.replace(/\r\n/g, '\n')
.replace(/"/g, '')
.replace(/\n/g, '')
;
}