Merge pull request #310 from SamDuvall/fix-xml-clone

Fix XmlElement.clone and XmlFragment.clone
This commit is contained in:
Kevin Jahns 2021-08-02 16:12:39 +02:00 committed by GitHub
commit 0ea0a35521
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 2 deletions

View File

@ -82,7 +82,7 @@ export class YXmlElement extends YXmlFragment {
el.setAttribute(key, attrs[key])
}
// @ts-ignore
el.insert(0, el.toArray().map(item => item instanceof AbstractType ? item.clone() : item))
el.insert(0, this.toArray().map(item => item instanceof AbstractType ? item.clone() : item))
return el
}

View File

@ -167,7 +167,7 @@ export class YXmlFragment extends AbstractType {
clone () {
const el = new YXmlFragment()
// @ts-ignore
el.insert(0, el.toArray().map(item => item instanceof AbstractType ? item.clone() : item))
el.insert(0, this.toArray().map(item => item instanceof AbstractType ? item.clone() : item))
return el
}

View File

@ -150,3 +150,21 @@ export const testInsertafter = tc => {
el.insertAfter(deepsecond1, [new Y.XmlText()])
})
}
/**
* @param {t.TestCase} tc
*/
export const testClone = tc => {
const ydoc = new Y.Doc()
const yxml = ydoc.getXmlFragment()
const first = new Y.XmlText('text')
const second = new Y.XmlElement('p')
const third = new Y.XmlElement('p')
yxml.push([first, second, third])
t.compareArrays(yxml.toArray(), [first, second, third])
const cloneYxml = yxml.clone()
t.assert(cloneYxml.length === 3)
t.assert(cloneYxml.toJSON() === yxml.toJSON())
}