Comparing version 0.2.0 to 0.2.1
@@ -9,5 +9,3 @@ var _ = require('underscore') | ||
return function(state) { | ||
console.log(filterObj) | ||
return _.every(filterObj, function(val, name) { | ||
console.log(name, val, state[name]) | ||
return state[name] === val | ||
@@ -24,5 +22,5 @@ }) | ||
}) | ||
console.log(result[0]) | ||
process.nextTick(function() { | ||
cb(null, result[0]) | ||
if(result.length < 2) result = result[0] | ||
cb(null, result) | ||
}) | ||
@@ -67,3 +65,2 @@ } | ||
return _.filter(projection, function(state, key) { | ||
console.log(state) | ||
return filterFn(state) | ||
@@ -77,3 +74,2 @@ })[0] | ||
projection[key] = state | ||
console.log(projectionName, projection) | ||
cb(null) | ||
@@ -80,0 +76,0 @@ } |
var sarastro = require('sarastro') | ||
, filters = {} | ||
, allFilters = {} | ||
function getFilters(projectionName) { | ||
return allFilters[projectionName] = allFilters[projectionName] || [] | ||
} | ||
function add(projectionName, filter) { | ||
var args = sarastro(filter) | ||
, filters = getFilters(projectionName) | ||
args.pop() | ||
filters[projectionName] = { | ||
filters.push({ | ||
args: args | ||
, fn: filter | ||
} | ||
}) | ||
} | ||
function getFilter(projectionName, evt) { | ||
var getVal = function(name) { | ||
function applyFilter(projectionName, evt) { | ||
var filters = getFilters(projectionName) | ||
, argVals | ||
, selectedFilter | ||
function getVal(name) { | ||
return evt[name] | ||
} | ||
var filter = filters[projectionName] | ||
if(!filter) return | ||
var argVals = filter.args.map(getVal) | ||
if(!argVals) return | ||
function hasNoArgValue(argVal) { | ||
return !argVal | ||
} | ||
function hasAllArgVals(filter) { | ||
argVals = filter.args.map(getVal) | ||
if(argVals.some(hasNoArgValue)) return | ||
selectedFilter = filter | ||
return true | ||
} | ||
if(!filters) return | ||
if(!filters.some(hasAllArgVals)) return | ||
return function(s) { | ||
return filter.fn.apply({}, argVals.concat(s)) | ||
return selectedFilter.fn.apply({}, argVals.concat(s)) | ||
} | ||
@@ -30,3 +50,3 @@ } | ||
module.exports = getFilter | ||
module.exports = applyFilter | ||
module.exports.add = add |
@@ -32,3 +32,3 @@ { | ||
, "main": "./bjorling.js" | ||
, "version": "0.2.0" | ||
, "version": "0.2.1" | ||
} |
14539
430