simple-dynamo
Version:
Abstraction of Amazons Dynamo DB Service. Usage of AWS DynamoDB incredible simple.
142 lines (138 loc) • 3.89 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var _;
_ = require("underscore");
module.exports = {
params: function(obj, params) {
if (_.all(params, function(key, idx) {
return obj[key] != null;
})) {
return true;
} else {
return false;
}
},
runSeries: function(fns, callback) {
var completed, data, iterate;
if (fns.length === 0) {
return callback();
}
completed = 0;
data = [];
iterate = function() {
return fns[completed](function(results) {
data[completed] = results;
if (++completed === fns.length) {
if (callback) {
return callback(data);
}
} else {
return iterate();
}
});
};
return iterate();
},
runParallel: function(fns, callback) {
var completed, data, iterate, started;
if (fns.length === 0) {
return callback();
}
started = 0;
completed = 0;
data = [];
iterate = function() {
fns[started]((function(i) {
return function(results) {
data[i] = results;
if (++completed === fns.length) {
if (callback) {
callback(data);
}
}
};
})(started));
if (++started !== fns.length) {
return iterate();
}
};
return iterate();
},
checkArray: function(ar) {
if (_.isArray(ar)) {
return _.any(ar, _.identity);
} else {
return _.identity(ar);
}
},
reduceObj: function(obj, keys) {
var key, ret, val;
ret = {};
for (key in obj) {
val = obj[key];
if (keys.indexOf(key) >= 0) {
ret[key] = val;
}
}
return ret;
},
extend: function() {
var clone, copy, deep, i, isArray, isPlainObject, length, name, options, src, target;
target = arguments[0] || {};
i = 1;
length = arguments.length;
deep = false;
if (typeof target === "boolean") {
deep = target;
target = arguments[1] || {};
i = 2;
}
if (typeof target !== "object" && !typeof target === "function") {
target = {};
}
isArray = function(obj) {
if (toString.call(copy) === "[object Array]") {
return true;
} else {
return false;
}
};
isPlainObject = function(obj) {
var has_is_property_of_method, has_own_constructor, key, last_key;
if (!obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval) {
return false;
}
has_own_constructor = hasOwnProperty.call(obj, "constructor");
has_is_property_of_method = hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf");
if (obj.constructor && !has_own_constructor && !has_is_property_of_method) {
return false;
}
for (key in obj) {
last_key = key;
}
return typeof last_key === "undefined" || hasOwnProperty.call(obj, last_key);
};
while (i < length) {
if ((options = arguments[i]) !== null) {
for (name in options) {
src = target[name];
copy = options[name];
if (target === copy) {
continue;
}
if (deep && copy && (isPlainObject(copy) || isArray(copy))) {
clone = (src && (isPlainObject(src) || isArray(src)) ? src : (isArray(copy) ? [] : {}));
target[name] = utils.extend(deep, clone, copy);
} else {
if (typeof copy !== "undefined") {
target[name] = copy;
}
}
}
}
i++;
}
return target;
}
};
}).call(this);