Skip to content

Instantly share code, notes, and snippets.

@michaelsbradleyjr
Created September 3, 2010 15:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michaelsbradleyjr/564020 to your computer and use it in GitHub Desktop.
Save michaelsbradleyjr/564020 to your computer and use it in GitHub Desktop.
var sys = require('sys'),
fs = require('fs'),
exec = require('child_process').exec
require('Task/Joose/NodeJS')
Joose.Module('StringerHasher', function (m) {
body : {
Class('Linux_Hasher', {
trait : JooseX.CPS,
has : {
strings_and_hashes : {
is : 'rw',
init : Joose.I.Array
}
},
continued : {
methods : {
calc_hashes : function (strings_array) {
var cont = this.CONT
Joose.A.each(strings_array, function (str) {
cont.AND(function () {
var THROW = this.getTHROW()
var CONTINUE = this.getCONTINUE()
exec('echo -n ' + '\'' + str + '\'' + ' | md5sum',
function (error, stdout, stderr) {
if (error != null) {
THROW(error)
}
else {
CONTINUE(stdout,stderr)
}
}
)
})
})
cont.andThen(function () {
Joose.A.each(arguments, function (result, index) {
var stdout = result[0]
var stderr = result[1]
sys.puts(stdout)
})
this.CONTINUE(arguments)
})
}
}
}
})
var someStrings = []
for (var i = 0 ; i < 100 ; i++) {
var strLength = Math.floor(Math.random() * 100)
var str = ''
for (var j = 0 ; j < strLength ; j++) {
var cc = Math.floor(Math.random() * 65536)
str += String.fromCharCode(cc)
}
someStrings.push(str)
}
sys.puts(someStrings.length)
var hasher = new StringerHasher.Linux_Hasher()
hasher.calc_hashes(someStrings).now()
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment