fnp
/
fnpeditor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
integration wip: highlight/dim/select node via family tree
[fnpeditor.git]
/
src
/
smartxml
/
smartxml.js
diff --git
a/src/smartxml/smartxml.js
b/src/smartxml/smartxml.js
index
0b12620
..
e3c831d
100644
(file)
--- a/
src/smartxml/smartxml.js
+++ b/
src/smartxml/smartxml.js
@@
-6,7
+6,7
@@
define([
], function($, _, Backbone, events) {
'use strict';
], function($, _, Backbone, events) {
'use strict';
-
+/* globals Node */
var TEXT_NODE = Node.TEXT_NODE;
var TEXT_NODE = Node.TEXT_NODE;
@@
-184,7
+184,7
@@
$.extend(ElementNode.prototype, {
detach: function() {
var next;
detach: function() {
var next;
- if(
parent
&& this.isSurroundedByTextElements()) {
+ if(
this.parent()
&& this.isSurroundedByTextElements()) {
next = this.next();
this.prev().appendText(next.getText());
next.detach();
next = this.next();
this.prev().appendText(next.getText());
next.detach();
@@
-272,6
+272,15
@@
$.extend(ElementNode.prototype, {
this._$.prepend(nativeNode);
}),
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) {
unwrapContent: function() {
var parent = this.parent();
if(!parent) {
@@
-437,6
+446,7
@@
$.extend(Document.prototype, Backbone.Events, {
createDocumentNode: function(from) {
if(!(from instanceof Node)) {
if(from.text !== undefined) {
createDocumentNode: function(from) {
if(!(from instanceof Node)) {
if(from.text !== undefined) {
+ /* globals document */
from = document.createTextNode(from.text);
} else {
var node = $('<' + from.tagName + '>');
from = document.createTextNode(from.text);
} else {
var node = $('<' + from.tagName + '>');
@@
-474,17
+484,17
@@
$.extend(Document.prototype, Backbone.Events, {
},
wrapNodes: function(params) {
},
wrapNodes: function(params) {
- if(!(params.
element1.parent().sameNode(params.element
2.parent()))) {
+ if(!(params.
node1.parent().sameNode(params.node
2.parent()))) {
throw new Error('Wrapping non-sibling nodes not supported.');
}
throw new Error('Wrapping non-sibling nodes not supported.');
}
- var parent = params.
element
1.parent(),
+ var parent = params.
node
1.parent(),
parentContents = parent.contents(),
wrapper = this.createDocumentNode({
tagName: params._with.tagName,
attrs: params._with.attrs}),
parentContents = parent.contents(),
wrapper = this.createDocumentNode({
tagName: params._with.tagName,
attrs: params._with.attrs}),
- idx1 = parent.indexOf(params.
element
1),
- idx2 = parent.indexOf(params.
element
2);
+ idx1 = parent.indexOf(params.
node
1),
+ idx2 = parent.indexOf(params.
node
2);
if(idx1 > idx2) {
var tmp = idx1;
if(idx1 > idx2) {
var tmp = idx1;