fixed dom filtering tests

This commit is contained in:
Kevin Jahns
2017-10-26 20:24:09 +02:00
parent ca81cdf3be
commit 74f9ceab01
5 changed files with 31 additions and 11 deletions

View File

@@ -178,7 +178,6 @@ export default class YArray extends Type {
} else {
apply()
}
return content
}
insert (pos, content) {
let left = null

View File

@@ -67,10 +67,20 @@ export default class YXmlElement extends YXmlFragment {
}
super._integrate(y)
}
/**
* Returns the string representation of the XML document.
* The attributes are ordered by attribute-name, so you can easily use this
* method to compare YXmlElements
*/
toString () {
const attrs = this.getAttributes()
const stringBuilder = []
const keys = []
for (let key in attrs) {
keys.push(key)
}
keys.sort()
for (let key in keys) {
stringBuilder.push(key + '="' + attrs[key] + '"')
}
const nodeName = this.nodeName.toLocaleLowerCase()

View File

@@ -85,12 +85,13 @@ export default class YXmlFragment extends YArray {
}
insertDomElementsAfter (prev, doms) {
const types = domToYXml(this, doms)
return this.insertAfter(prev, types)
this.insertAfter(prev, types)
return types
}
insertDomElements (pos, doms) {
const types = domToYXml(this, doms)
this.insert(pos, types)
return types.length
return types
}
bindToDom (dom) {
if (this._dom != null) {

View File

@@ -61,6 +61,15 @@ function iterateUntilUndeleted (item) {
return item
}
function _insertNodeHelper (yxml, prevExpectedNode, child) {
let insertedNodes = yxml.insertDomElementsAfter(prevExpectedNode, [child])
if (insertedNodes.length > 0) {
return insertedNodes[0]
} else {
return prevExpectedNode
}
}
/*
* 1. Check if any of the nodes was deleted
* 2. Iterate over the children.
@@ -107,7 +116,7 @@ export function applyChangesFromDom (yxml) {
} else {
childYXml._delete(y)
}
prevExpectedNode = yxml.insertDomElementsAfter(prevExpectedNode, [child])[0]
prevExpectedNode = _insertNodeHelper(yxml, prevExpectedNode, child)
} else {
prevExpectedNode = expectedNode
expectedNode = iterateUntilUndeleted(expectedNode._right)
@@ -115,11 +124,11 @@ export function applyChangesFromDom (yxml) {
// if this is the expected node id, just continue
} else {
// 2.2 fill _conten with child nodes
prevExpectedNode = yxml.insertDomElementsAfter(prevExpectedNode, [child])[0]
prevExpectedNode = _insertNodeHelper(yxml, prevExpectedNode, child)
}
} else {
// 2.1 A new node was found
prevExpectedNode = yxml.insertDomElementsAfter(prevExpectedNode, [child])[0]
prevExpectedNode = _insertNodeHelper(yxml, prevExpectedNode, child)
}
}
}