Skip to content
This repository has been archived by the owner on Mar 13, 2018. It is now read-only.

Commit

Permalink
cleanup refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelw committed Jan 24, 2013
1 parent b89f0b4 commit 79581e5
Showing 1 changed file with 26 additions and 31 deletions.
57 changes: 26 additions & 31 deletions change_summary.js
Expand Up @@ -185,22 +185,6 @@
}
}

function collateRecords(changeRecords) {
var map = new Map;

changeRecords.forEach(function(record) {
var records = map.get(record.object);
if (records) {
records.push(record);
return;
}

map.set(record.object, [ record ]);
});

return map;
}

/**
* Callback looks like this
*
Expand Down Expand Up @@ -243,8 +227,10 @@
}

function removeObjectTracker(obj) {
var tracker = objectTrackers.get(obj);
objectTrackers.delete(obj);
Object.unobserve(obj, internalCallback);
tracker.dead = true;
}

function internalCallback(records) {
Expand All @@ -254,33 +240,32 @@
}

try {
var objectChangeRecordsMap = collateRecords(records);
var dirtyTrackers = new Set;

objectChangeRecordsMap.keys().forEach(function(object) {
var records = objectChangeRecordsMap.get(object);
var tracker = objectTrackers.get(object);
if (tracker)
tracker.process(objectTrackers, dirtyTrackers, records);
var activeTrackers = new Set;
records.forEach(function(record) {
var tracker = objectTrackers.get(record.object);
tracker.addChangeRecord(record);
activeTrackers.add(tracker);
});

summaries = undefined;
var results = [];
var dirtyTrackers = new Set;
activeTrackers.keys().forEach(function(tracker) {
tracker.process(objectTrackers, dirtyTrackers);
});

summaries = [];
dirtyTrackers.keys().forEach(function(tracker) {
var summary = tracker.produceSummary();
if (summary)
results.push(summary);
summaries.push(summary);
});

if (results.length)
summaries = results;
if (!summaries.length)
summaries = undefined;

if (!isDisconnecting && summaries) {
callback(summaries);
summaries = undefined;
}

} catch (ex) {
console.error(ex);
}
Expand Down Expand Up @@ -433,6 +418,7 @@
function ObjectTracker(obj) {
this.object = obj;
this.propertyObserverCount = 0;
this.changeRecords = [];
}

ObjectTracker.prototype = {
Expand Down Expand Up @@ -471,7 +457,16 @@
this.propertyObserverCount--;
},

process: function(objectTrackers, dirtyTrackers, changeRecords) {
addChangeRecord: function(changeRecord) {
this.changeRecords.push(changeRecord);
},

process: function(objectTrackers, dirtyTrackers) {
if (this.dead)
return;

var changeRecords = this.changeRecords;
this.changeRecords = [];
var added = {};
var deleted = {};
var valueChanged = {};
Expand Down

0 comments on commit 79581e5

Please sign in to comment.