Skip to content

Instantly share code, notes, and snippets.

@matehat
Created March 27, 2010 02:18
Show Gist options
  • Save matehat/345656 to your computer and use it in GitHub Desktop.
Save matehat/345656 to your computer and use it in GitHub Desktop.
handleerr: (fn, arg) ->>
if ([err, out]: fn arg, defer)[0] then throw error(err)
else resume out
safe_readdir: handleerr <- {}, fs.readdir
safe_readfile: handleerr <- {}, fs.readFile
readFirstFile: (dir) ->>
try:
files: safe_readdir dir, defer
resume safe_readFile files[o], defer
catch err
puts "Error while reading first file: $err"
==>
var handleerr, readFirstFile, safe_readdir, safe_readfile;
handleerr = function handleerr(fn, arg, _a) {
fn(arg, (function(__this) {
var __func = function(_b) {
var _c, err, out;
if ((function() {
_c = _b;
err = _c[0];
out = _c[1];
return [err, out];
}).call(this)[0]) {
throw error(err);
} else {
return _a(out);
}
};
return (function() {
return __func.apply(__this, arguments);
});
})(this));
return null;
};
safe_readdir = (function(func, obj, args) {
return function() {
return func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0)));
};
}(handleerr, {}, [fs.readdir]));
safe_readfile = (function(func, obj, args) {
return function() {
return func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0)));
};
}(handleerr, {}, [fs.readFile]));
readFirstFile = function readFirstFile(dir, _a) {
try {
safe_readdir(dir, (function(__this) {
var __func = function() {
var files;
try {
files = (arguments.length > 1 ? Array.prototype.slice(arguments, 0) : arguments[0]);
safe_readFile(files[o], (function(__this) {
var __func = function(_b) {
try {
return _a(_b);
} catch (err) {
return puts("Error while reading first file: " + err);
}
};
return (function() {
return __func.apply(__this, arguments);
});
})(this));
return null;
} catch (err) {
return puts("Error while reading first file: " + err);
}
};
return (function() {
return __func.apply(__this, arguments);
});
})(this));
return null;
} catch (err) {
return puts("Error while reading first file: " + err);
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment