Fixing text unwrapping
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Thu, 8 Aug 2013 11:01:22 +0000 (13:01 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Thu, 8 Aug 2013 11:01:22 +0000 (13:01 +0200)
modules/documentCanvas/canvas/canvas.test3.js
modules/documentCanvas/canvas/documentElement.js

index 0fe89cc..6a87d95 100644 (file)
@@ -732,6 +732,19 @@ describe('Canvas', function() {
                     expect(section.children()[0].getText()).to.equal('Alice has a cat');
                     expect(newTextContainer.sameNode(c.doc())).to.equal(true, 'unwrap returns new text parent DocumentNodeElement');
                 });
                     expect(section.children()[0].getText()).to.equal('Alice has a cat');
                     expect(newTextContainer.sameNode(c.doc())).to.equal(true, 'unwrap returns new text parent DocumentNodeElement');
                 });
+
+                it('unwraps text element from its parent - first child case', function() {
+                    var c = canvas.fromXML('<section><span class="uri">Some</span>text</section>'),
+                        section = c.doc(),
+                        span = section.children()[0];
+
+                    span.children()[0].unwrap();
+
+                    var sectionChildren = section.children();
+
+                    expect(sectionChildren).to.have.length(1);
+                    expect(sectionChildren[0].getText()).to.equal('Sometext');
+                });
             });
         });
 
             });
         });
 
index 4c09b75..7dd1f7d 100644 (file)
@@ -528,8 +528,9 @@ $.extend(DocumentTextElement.prototype, {
                     prev.setText(prev.getText() + this.getText() + next.getText());
                     next.detach();
                 } else if (prev || next) {
                     prev.setText(prev.getText() + this.getText() + next.getText());
                     next.detach();
                 } else if (prev || next) {
-                    var target = prev ? prev : next;
-                    target.setText(target.getText() + this.getText());
+                    var target = prev ? prev : next,
+                        newText = prev ? target.getText() + this.getText() : this.getText() + target.getText();
+                    target.setText(newText);
                 } else {
                     parent.after(this);
                 }
                 } else {
                     parent.after(this);
                 }