Improved diff

This commit is contained in:
2017-07-19 04:47:32 +02:00
parent 406306df37
commit 647aed0e76
3 changed files with 27 additions and 21 deletions

View File

@ -82,29 +82,35 @@ export class Diff {
for(let x = 0; x < elemB.attributes.length; x++) {
let attrib = elemB.attributes[x]
if(attrib.specified) {
// Skip mountables
if(attrib.name == "class") {
let classesA = elemA.classList
let classesB = elemB.classList
for(let className of classesA) {
if(!classesB.contains(className) && !Diff.persistentClasses.has(className)) {
classesA.remove(className)
}
}
for(let className of classesB) {
if(!classesA.contains(className)) {
classesA.add(className)
}
}
if(!attrib.specified) {
continue
}
if(attrib.name === "class") {
// If the class is exactly the same, skip this attribute.
if(elemA.getAttribute("class") === attrib.value) {
continue
}
elemA.setAttribute(attrib.name, elemB.getAttribute(attrib.name))
let classesA = elemA.classList
let classesB = elemB.classList
for(let className of classesA) {
if(!classesB.contains(className) && !Diff.persistentClasses.has(className)) {
classesA.remove(className)
}
}
for(let className of classesB) {
if(!classesA.contains(className)) {
classesA.add(className)
}
}
continue
}
elemA.setAttribute(attrib.name, elemB.getAttribute(attrib.name))
}
// Special case: Apply state of input elements