expect(section.getWlxmlClass()).to.be.undefined;
});
});
+
+ it('returns DocumentNodeElement instance from HTMLElement', function() {
+ var c = canvas.fromXML('<section></section>'),
+ htmlElement = c.doc().dom().get(0),
+ element = c.getDocumentElement(htmlElement);
+ expect(element).to.be.instanceOf(documentElement.DocumentNodeElement);
+ expect(element.sameNode(c.doc()));
+ });
+
+ it('returns DocumentTextElement instance from Text Node', function() {
+ var c = canvas.fromXML('<section>Alice</section>'),
+ textNode = c.doc().children(0)[0].dom().get(0),
+ element = c.getDocumentElement(textNode);
+ expect(element).to.be.instanceOf(documentElement.DocumentTextElement);
+ expect(element.sameNode(c.doc().children()[0]));
+ });
});
expect(returned.getWlxmlClass()).to.equal('some.class');
});
- it('wraps part of DocumentTextElement', function() {
- var c = canvas.fromXML('<section>Alice has a cat</section>'),
- text = c.doc().children()[0];
-
- var returned = text.wrapWithNodeElement({tag: 'header', klass: 'some.class', start: 5, end: 12}),
- children = c.doc().children();
-
- expect(children.length).to.equal(3);
-
- expect(children[0]).to.be.instanceOf(documentElement.DocumentTextElement);
- expect(children[0].getText()).to.equal('Alice');
+ describe('wrapping part of DocumentTextElement', function() {
+ [{start: 5, end: 12}, {start: 12, end: 5}].forEach(function(offsets) {
+ it('wraps in the middle ' + offsets.start + '/' + offsets.end, function() {
+ var c = canvas.fromXML('<section>Alice has a cat</section>'),
+ text = c.doc().children()[0];
+
+ var returned = text.wrapWithNodeElement({tag: 'header', klass: 'some.class', start: offsets.start, end: offsets.end}),
+ children = c.doc().children();
+
+ expect(children.length).to.equal(3);
+
+ expect(children[0]).to.be.instanceOf(documentElement.DocumentTextElement);
+ expect(children[0].getText()).to.equal('Alice');
+
+ expect(children[1].sameNode(returned)).to.be.true;
+ expect(returned.getWlxmlTag()).to.equal('header');
+ expect(returned.getWlxmlClass()).to.equal('some.class');
+ expect(children[1].children().length).to.equal(1);
+ expect(children[1].children()[0].getText()).to.equal(' has a ');
+
+ expect(children[2]).to.be.instanceOf(documentElement.DocumentTextElement);
+ expect(children[2].getText()).to.equal('cat');
+ });
+ });
- expect(children[1].sameNode(returned)).to.be.true;
- expect(returned.getWlxmlTag()).to.equal('header');
- expect(returned.getWlxmlClass()).to.equal('some.class');
- expect(children[1].children().length).to.equal(1);
- expect(children[1].children()[0].getText()).to.equal(' has a ');
+ it('wraps whole text inside DocumentTextElement if offsets span entire content', function() {
+ var c = canvas.fromXML('<section>Alice has a cat</section>'),
+ text = c.doc().children()[0];
+
+ var returned = text.wrapWithNodeElement({tag: 'header', klass: 'some.class', start: 0, end: 15}),
+ children = c.doc().children();
- expect(children[2]).to.be.instanceOf(documentElement.DocumentTextElement);
- expect(children[2].getText()).to.equal('cat');
+ expect(children.length).to.equal(1);
+ expect(children[0]).to.be.instanceOf(documentElement.DocumentNodeElement);
+ expect(children[0].children()[0].getText()).to.equal('Alice has a cat');
+ });
});
it('wraps text spanning multiple sibling DocumentTextNodes', function() {
expect(item3.children()[0].getText()).to.equal('1.2', 'third item ok');
expect(item4.children()[0].getText()).to.equal('2', 'fourth item ok');
});
+
+ it('extracts items out of outer most list when merge flag is set to false', function() {
+ var c = canvas.fromXML('\
+ <section>\
+ <div class="list.items">\
+ <div class="item">0</div>\
+ <div class="item">\
+ <div class="list.items">\
+ <div class="item">1.1</div>\
+ <div class="item">1.2</div>\
+ </div>\
+ </div>\
+ <div class="item">2</div>\
+ </div>\
+ </section>'),
+ section = c.doc(),
+ list = section.children()[0],
+ nestedList = list.children()[1].children()[0],
+ nestedListItem = nestedList.children()[0];
+
+ var test = c.list.extractItems({element1: nestedListItem, element2: nestedListItem, merge: false});
+
+ expect(test).to.equal(true, 'extraction status ok');
+
+ var sectionChildren = section.children(),
+ extractedItem = sectionChildren[1];
+
+ expect(sectionChildren.length).to.equal(3, 'section has three children');
+ expect(sectionChildren[0].is('list')).to.equal(true, 'first child is a list');
+
+ expect(extractedItem.getWlxmlTag()).to.equal('div', 'extracted item is a wlxml div');
+ expect(extractedItem.getWlxmlClass()).to.equal(undefined, 'extracted item has no wlxml class');
+ expect(extractedItem.children()[0].getText()).to.equal('1.1', 'extracted item ok');
+ expect(sectionChildren[2].is('list')).to.equal(true, 'second child is a list');
+ });
});
});