guv
Version:
Grid Utilization Virgilante
39 lines (33 loc) • 1.07 kB
text/coffeescript
# guv - Scaling governor of cloud workers
# (c) 2015 The Grid
# guv may be freely distributed under the MIT license
async = require 'async'
# : function(key, value, cb). cb: function(err, returnvalue)
exports.mapDictionaryAsync = (obj, func, callback) ->
f = (key, cb) ->
value = obj[key]
func key, value, (err, returnvalue) ->
return callback err, { key: key, returnvalue: returnvalue }
keys = Object.keys obj
async.map keys, f, (err, results) ->
return callback err if err
objresults = {}
for item in results
objresults[item.key] = item.returnvalue
return callback err, objresults
# returns true if predicate() is true for all items in sequence, else false
exports.all = (sequence, predicate) ->
for i in [0...sequence.length]
p = predicate sequence[i]
return false if not p
return true
exports.arraymax = (sequence, predicate) ->
max = null
for i in [0...sequence.length]
val = sequence[i]
if not max?
max = val
else
if val > max
max = val
return max