fnp
/
fnpeditor.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c62820e
)
Represent empty wlxml nodes as DocumentNodeElement with empty DocumentTextElement
author
Aleksander Łukasz
<aleksander.lukasz@nowoczesnapolska.org.pl>
Fri, 9 Aug 2013 11:52:17 +0000
(13:52 +0200)
committer
Aleksander Łukasz
<aleksander.lukasz@nowoczesnapolska.org.pl>
Fri, 9 Aug 2013 11:52:17 +0000
(13:52 +0200)
modules/documentCanvas/canvas/canvas.js
patch
|
blob
|
history
modules/documentCanvas/canvas/canvas.test3.js
patch
|
blob
|
history
modules/documentCanvas/canvas/documentElement.js
patch
|
blob
|
history
diff --git
a/modules/documentCanvas/canvas/canvas.js
b/modules/documentCanvas/canvas/canvas.js
index
228bf20
..
a65375e
100644
(file)
--- a/
modules/documentCanvas/canvas/canvas.js
+++ b/
modules/documentCanvas/canvas/canvas.js
@@
-42,7
+42,8
@@
$.extend(Canvas.prototype, {
klass: currentTag.attr('class'),
meta: meta,
others: others,
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) {
}, canvas);
['orig-before', 'orig-after', 'orig-begin', 'orig-end'].forEach(function(attr) {
@@
-71,7
+72,7
@@
$.extend(Canvas.prototype, {
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';
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) {
return true; // continue
var addInfo = function(toAdd, where) {
diff --git
a/modules/documentCanvas/canvas/canvas.test3.js
b/modules/documentCanvas/canvas/canvas.test3.js
index
6a87d95
..
477aca0
100644
(file)
--- a/
modules/documentCanvas/canvas/canvas.test3.js
+++ b/
modules/documentCanvas/canvas/canvas.test3.js
@@
-250,12
+250,24
@@
describe('Canvas', function() {
expect(children[2]).to.be.instanceOf(documentElement.DocumentTextElement);
});
});
expect(children[2]).to.be.instanceOf(documentElement.DocumentTextElement);
});
});
-
- describe('
white character
s handling', function() {
- it('says empty element node
has no children
', function() {
+
+ describe('
empty node
s handling', function() {
+ it('says empty element node
from XML source has one empty DocumentTextElement
', function() {
var c = canvas.fromXML('<section></section>');
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);
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);
@@
-330,22
+342,22
@@
describe('Canvas', function() {
describe('Basic Element inserting', function() {
it('can put new NodeElement at the end', function() {
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();
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() {
});
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();
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('can put new NodeElement at the beginning', function() {
@@
-1350,8
+1362,9
@@
describe('Canvas', 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>',
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');
var partsIn = xmlIn.split('\n\n\n'),
partsOut = xmlOut.split('\n\n\n');
diff --git
a/modules/documentCanvas/canvas/documentElement.js
b/modules/documentCanvas/canvas/documentElement.js
index
7dd1f7d
..
0558a3e
100644
(file)
--- a/
modules/documentCanvas/canvas/documentElement.js
+++ b/
modules/documentCanvas/canvas/documentElement.js
@@
-148,8
+148,10
@@
$.extend(DocumentNodeElement, {
}
element.data('other-attrs', params.others);
}
element.data('other-attrs', params.others);
- if(params.rawChildren) {
+ if(params.rawChildren
&& params.rawChildren.length
) {
container.append(params.rawChildren);
container.append(params.rawChildren);
+ } else if(params.prepopulateOnEmpty) {
+ element.append(DocumentTextElement.create({text: ''}));
}
return dom;
},
}
return dom;
},