src/js/libs/spiritual-edb.js
function(newnode, oldnode, ids) {
		var result = true;
		var update = null;
		if (this._attschanged(newnode.attributes, oldnode.attributes, ids)) {
			var newid = this._assistant.id(newnode);
			var oldid = this._assistant.id(oldnode);
			if (newid && newid === oldid) {
				update = new edbml.AttsUpdate(this._doc).setup(oldid, newnode, oldnode);
				this._updates.collect(update, ids);
			} else {
				result = false;
			}
		}
		return result;
	}
function(newnode, oldnode, ids) {
		var result = true;
		var update = null;
		if (this._attschanged(newnode.attributes, oldnode.attributes, ids)) {
			var newid = this._assistant.id(newnode);
			var oldid = this._assistant.id(oldnode);
			if (newid && newid === oldid) {
				update = new edbml.AttsUpdate(this._doc).setup(oldid, newnode, oldnode);
				this._updates.collect(update, ids);
			} else {
				result = false;
			}
		}
		return result;
	}
function ( newnode , oldnode , ids ) { var result = true ; var update = null ; if ( this . _attschanged ( newnode . attributes , oldnode . attributes , ids ) ) { var newid = this . _assistant . id ( newnode ) ; var oldid = this . _assistant . id ( oldnode ) ; if ( newid && newid === oldid ) { update = new edbml . AttsUpdate ( this . _doc ) . setup ( oldid , newnode , oldnode ) ; this . _updates . collect ( update , ids ) ; } else { result = false ; } } return result ; }
Same id trigges attribute synchronization;
different id triggers hard update of ancestor.
@param {Element} newnode
@param {Element} oldnode
@param {Map<String,boolean>} ids
@returns {boolean} When false, replace "hard" and stop crawling.
Same id trigges attribute synchronization ; different id triggers hard update of ancestor .