klass: currentTag.attr('class'),
meta: meta,
others: others,
- rawChildren: currentTag.contents()
+ rawChildren: currentTag.contents(),
+ prepopulateOnEmpty: true
}, canvas);
['orig-before', 'orig-after', 'orig-begin', 'orig-end'].forEach(function(attr) {
hasSpanBefore = el.prev().length > 0 && getNode($(el.prev()[0])).attr('wlxml-tag') === 'span',
hasSpanAfter = el.next().length > 0 && getNode($(el.next()[0])).attr('wlxml-tag') === 'span';
- if(el.parent().hasClass('canvas-widget'))
+ if(el.parent().hasClass('canvas-widget') || elParent.attr('document-text-element') !== undefined)
return true; // continue
var addInfo = function(toAdd, where) {
expect(children[2]).to.be.instanceOf(documentElement.DocumentTextElement);
});
});
-
- describe('white characters handling', function() {
- it('says empty element node has no children', function() {
+
+ describe('empty nodes handling', function() {
+ it('says empty element node from XML source has one empty DocumentTextElement', function() {
var c = canvas.fromXML('<section></section>');
- expect(c.doc().children().length).to.equal(0);
+ expect(c.doc().children()).to.have.length(1);
+ expect(c.doc().children()[0].getText()).to.equal('');
+ });
+
+ it('allows creation of an empty element node', function() {
+ var c = canvas.fromXML('<section></section>'),
+ section = c.doc(),
+ header = section.append({tag: 'header'});
+ expect(header.children()).to.have.length(0);
});
+ });
+
+ describe('white characters handling', function() {
+
it('says element node with one space has one DocumentTextElement', function() {
var c = canvas.fromXML('<section> </section>');
expect(c.doc().children().length).to.equal(1);
describe('Basic Element inserting', function() {
it('can put new NodeElement at the end', function() {
- var c = canvas.fromXML('<section></section>'),
+ var c = canvas.fromXML('<section><div></div></section>'),
appended = c.doc().append({tag: 'header', klass: 'some.class'}),
children = c.doc().children();
- expect(children.length).to.equal(1);
- expect(children[0].sameNode(appended)).to.be.true;
+ expect(children.length).to.equal(2);
+ expect(children[1].sameNode(appended)).to.be.true;
});
it('can put new TextElement at the end', function() {
- var c = canvas.fromXML('<section></section>'),
+ var c = canvas.fromXML('<section><div><div></section>'),
appended = c.doc().append({text: 'Alice'}),
children = c.doc().children();
- expect(children.length).to.equal(1);
- expect(children[0].sameNode(appended)).to.be.true;
- expect(children[0].getText()).to.equal('Alice');
+ expect(children.length).to.equal(2);
+ expect(children[1].sameNode(appended)).to.be.true;
+ expect(children[1].getText()).to.equal('Alice');
});
it('can put new NodeElement at the beginning', function() {
it('keeps white space between XML nodes - inline case', function() {
var xmlIn = '<section>\n\n\n<span></span>\n\n\n<span></span>\n\n\n</section>',
- c = canvas.fromXML(xmlIn),
- xmlOut = c.toXML();
+ c = canvas.fromXML(xmlIn);
+
+ var xmlOut = c.toXML();
var partsIn = xmlIn.split('\n\n\n'),
partsOut = xmlOut.split('\n\n\n');