Skip to content

Commit

Permalink
Merge pull request #121 from jharding/115-fix
Browse files Browse the repository at this point in the history
Fix bug introduced in #115
  • Loading branch information
jharding committed Mar 22, 2013
2 parents 6aa3da3 + 88b09b1 commit 49b5e48
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 40 deletions.
72 changes: 35 additions & 37 deletions src/dataset.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,35 +108,41 @@ var Dataset = (function() {
}
},

_processData: function(data) {
var that = this, itemHash = {}, adjacencyList = {};
_transformDatum: function(datum) {
var value = utils.isString(datum) ? datum : datum[this.valueKey],
tokens = datum.tokens || utils.tokenizeText(value),
item = { value: value, tokens: tokens };

if (utils.isString(datum)) {
item.datum = {};
item.datum[this.valueKey] = datum;
}

utils.each(data, function(i, datum) {
var value = utils.isString(datum) ? datum : datum[that.valueKey],
tokens = datum.tokens || utils.tokenizeText(value),
item = { value: value, tokens: tokens },
id;

if (utils.isString(datum)) {
item.datum = {};
item.datum[that.valueKey] = datum;
}
else {
item.datum = datum;
}

else {
item.datum = datum;
}
// filter out falsy tokens
item.tokens = utils.filter(item.tokens, function(token) {
return !utils.isBlankString(token);
});

// filter out falsy tokens
item.tokens = utils.filter(item.tokens, function(token) {
return !utils.isBlankString(token);
});
// normalize tokens
item.tokens = utils.map(item.tokens, function(token) {
return token.toLowerCase();
});

// normalize tokens
item.tokens = utils.map(item.tokens, function(token) {
return token.toLowerCase();
});
return item;
},

_processData: function(data) {
var that = this, itemHash = {}, adjacencyList = {};

utils.each(data, function(i, datum) {
var item = that._transformDatum(datum),
id = utils.getUniqueId(item.value);

itemHash[id = utils.getUniqueId(item.value)] = item;
itemHash[id] = item;

utils.each(item.tokens, function(i, token) {
var character = token.charAt(0),
Expand Down Expand Up @@ -255,23 +261,15 @@ var Dataset = (function() {
suggestions = suggestions.slice(0);

// convert remote suggestions to object
utils.each(data, function(i, remoteItem) {
var isDuplicate = false;

remoteItem = utils.isString(remoteItem) ?
{ value: remoteItem } : remoteItem;
utils.each(data, function(i, datum) {
var item = that._transformDatum(datum), isDuplicate;

// checks for duplicates
utils.each(suggestions, function(i, suggestion) {
if (remoteItem.value === suggestion.value) {
isDuplicate = true;

// break out of each loop
return false;
}
isDuplicate = utils.some(suggestions, function(suggestion) {
return item.value === suggestion.value;
});

!isDuplicate && suggestions.push(remoteItem);
!isDuplicate && suggestions.push(item);

// if we're at the limit, we no longer need to process
// the remote results and can break out of the each loop
Expand Down
6 changes: 3 additions & 3 deletions test/dataset_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ describe('Dataset', function() {

it('concatenates local and remote results and dedups them', function() {
var spy = jasmine.createSpy(),
remote = [expectedItemHash.grape, expectedItemHash.cake];
remote = [fixtureDatums[0], fixtureStrings[2]];

this.dataset.transport.get.andCallFake(function(q, cb) { cb(remote); });

Expand All @@ -351,14 +351,14 @@ describe('Dataset', function() {
expect(spy.callCount).toBe(2);

// local suggestions
expect(spy.argsForCall[0]).toContain([
expect(spy.argsForCall[0][0]).toEqual([
expectedItemHash.coconut,
expectedItemHash.cake,
expectedItemHash.coffee
]);

// local + remote suggestions
expect(spy.argsForCall[1]).toContain([
expect(spy.argsForCall[1][0]).toEqual([
expectedItemHash.coconut,
expectedItemHash.cake,
expectedItemHash.coffee,
Expand Down

0 comments on commit 49b5e48

Please # to comment.