], function($, _, Backbone, events) {
'use strict';
-
+/* globals Node */
var TEXT_NODE = Node.TEXT_NODE;
},
sameNode: function(otherNode) {
- return otherNode && this.nativeNode === otherNode.nativeNode;
+ return !!(otherNode) && this.nativeNode === otherNode.nativeNode;
},
parent: function() {
detach: function() {
var next;
- if(parent && this.isSurroundedByTextElements()) {
+ if(this.parent() && this.isSurroundedByTextElements()) {
next = this.next();
this.prev().appendText(next.getText());
next.detach();
this._$.prepend(nativeNode);
}),
+ insertAtIndex: function(nativeNode, index) {
+ var contents = this.contents();
+ if(index < contents.length) {
+ return contents[index].before(nativeNode);
+ } else if(index === contents.length) {
+ return this.append(nativeNode);
+ }
+ },
+
unwrapContent: function() {
var parent = this.parent();
if(!parent) {
createDocumentNode: function(from) {
if(!(from instanceof Node)) {
if(from.text !== undefined) {
+ /* globals document */
from = document.createTextNode(from.text);
} else {
var node = $('<' + from.tagName + '>');
},
wrapNodes: function(params) {
- if(!(params.element1.parent().sameNode(params.element2.parent()))) {
+ if(!(params.node1.parent().sameNode(params.node2.parent()))) {
throw new Error('Wrapping non-sibling nodes not supported.');
}
- var parent = params.element1.parent(),
+ var parent = params.node1.parent(),
parentContents = parent.contents(),
wrapper = this.createDocumentNode({
tagName: params._with.tagName,
attrs: params._with.attrs}),
- idx1 = parent.indexOf(params.element1),
- idx2 = parent.indexOf(params.element2);
+ idx1 = parent.indexOf(params.node1),
+ idx2 = parent.indexOf(params.node2);
if(idx1 > idx2) {
var tmp = idx1;