node-simple-router
Version:
Yet another minimalistic router for node.js
354 lines (339 loc) • 9.27 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var _argumentsToArray, async, defaultFinalCb, fs, pad, readDir, thousand_sep;
_argumentsToArray = function() {
var arg, i, len1, ret;
ret = [];
for (i = 0, len1 = arguments.length; i < len1; i++) {
arg = arguments[i];
ret.push(arg);
}
return ret;
};
async = {};
defaultFinalCb = function(err, result) {
if (arguments.length === 1) {
result = err;
err = null;
}
if (err) {
return err;
} else {
return result;
}
};
async.some = function(arr, asyncFunc, finalCb) {
if (!finalCb) {
finalCb = defaultFinalCb;
}
if (arr.length === 0) {
return finalCb(false);
} else {
return asyncFunc(arr[0], function(err, resp) {
if (arguments.length === 1) {
resp = err;
err = null;
}
if (err) {
return finalCb(err, null);
}
if (!!resp) {
return finalCb(!!resp);
} else {
return async.some(arr.slice(1), asyncFunc, finalCb);
}
});
}
};
async.every = function(arr, asyncFunc, finalCb) {
if (!finalCb) {
finalCb = defaultFinalCb;
}
if (arr.length === 0) {
return finalCb(true);
} else {
return asyncFunc(arr[0], function(err, resp) {
if (arguments.length === 1) {
resp = err;
err = null;
}
if (err) {
return finalCb(err, null);
}
if (!resp) {
return finalCb(!!resp);
} else {
return async.every(arr.slice(1), asyncFunc, finalCb);
}
});
}
};
async.map = function(arr, asyncFunc, finalCb, asyncArr) {
if (asyncArr == null) {
asyncArr = [];
}
if (!finalCb) {
finalCb = defaultFinalCb;
}
if (arr.length === 0) {
return finalCb(null, asyncArr);
} else {
return asyncFunc(arr[0], function(err, resp) {
if (arguments.length === 1) {
resp = err;
err = null;
}
if (err) {
return finalCb(err, null);
}
asyncArr.push(resp);
return async.map(arr.slice(1), asyncFunc, finalCb, asyncArr);
});
}
};
async.filter = function(arr, asyncFunc, finalCb, asyncArr) {
if (asyncArr == null) {
asyncArr = [];
}
if (!finalCb) {
finalCb = defaultFinalCb;
}
if (arr.length === 0) {
return finalCb(null, asyncArr);
} else {
return asyncFunc(arr[0], function(err, resp) {
if (arguments.length === 1) {
resp = err;
err = null;
}
if (err) {
return finalCb(err, null);
}
if (!!resp) {
asyncArr.push(arr[0]);
}
return async.filter(arr.slice(1), asyncFunc, finalCb, asyncArr);
});
}
};
async.reduce = function(arr, asyncFunc, acum, finalCb) {
if (acum == null) {
acum = 0;
}
if (!finalCb) {
finalCb = defaultFinalCb;
}
if (arr.length === 0) {
return finalCb(null, acum);
} else {
return asyncFunc(acum, arr[0], function(err, resp) {
if (arguments.length === 1) {
resp = err;
err = null;
}
if (err) {
return finalCb(err, null);
}
acum = resp;
return async.reduce(arr.slice(1), asyncFunc, acum, finalCb);
});
}
};
async.waterfall = function(funcArr, finalCb, args) {
var cb;
if (args == null) {
args = null;
}
if (!finalCb) {
finalCb = defaultFinalCb;
}
cb = function(err, args) {
if (arguments.length === 1) {
args = err;
err = null;
}
if (err) {
return finalCb(err, null);
} else {
return async.waterfall(funcArr.slice(1), finalCb, args);
}
};
if (funcArr.length === 0) {
return finalCb(null, args);
} else {
return funcArr[0](args, cb);
}
};
async.series = function(funcArr, finalCb, results) {
var cb;
if (results == null) {
results = [];
}
if (!finalCb) {
finalCb = defaultFinalCb;
}
cb = function(err, args) {
if (arguments.length === 1) {
args = err;
err = null;
}
if (err) {
return finalCb(err, results);
} else {
results.push(args);
return async.series(funcArr.slice(1), finalCb, results);
}
};
if (funcArr.length === 0) {
return finalCb(null, results);
} else {
return funcArr[0](cb);
}
};
async.parallel = function(funcArr, finalCb) {
var completed, fn, i, index, len, len1, make_parallel_cb, results;
if (!finalCb) {
finalCb = defaultFinalCb;
}
completed = 0;
len = funcArr.length;
results = new Array(len);
make_parallel_cb = function(index) {
return function(err, args) {
if (arguments.length === 1) {
args = err;
err = null;
}
if (err) {
return finalCb(err, results);
} else {
results[index] = args;
completed += 1;
if (completed === len) {
return finalCb(null, results);
}
}
};
};
for (index = i = 0, len1 = funcArr.length; i < len1; index = ++i) {
fn = funcArr[index];
fn(make_parallel_cb(index));
}
return void 0;
};
module.exports = async;
if (!(typeof module !== "undefined" && module !== null ? module.parent : void 0)) {
thousand_sep = function(num, sep) {
var resp;
if (sep == null) {
sep = ",";
}
if (!(num.toString().length > 3)) {
return num.toString();
}
resp = num.toString().split('').reverse().join('').replace(/(\d{3})/g, "$1" + sep).split('').reverse().join('');
if (resp.charAt(0) === sep) {
return resp.slice(1);
} else {
return resp;
}
};
pad = function(stri, quantity, direction, padchar) {
var dif, len, n, padstri;
if (direction == null) {
direction = "r";
}
if (padchar == null) {
padchar = " ";
}
if (stri.constructor.name === "Number") {
stri = stri.toString();
}
len = stri.length;
dif = quantity - len;
if (dif <= 0) {
return stri;
}
padstri = ((function() {
var i, ref, results1;
results1 = [];
for (n = i = 1, ref = dif; 1 <= ref ? i <= ref : i >= ref; n = 1 <= ref ? ++i : --i) {
results1.push(padchar);
}
return results1;
})()).join('');
if (direction === "r") {
return "" + stri + padstri;
} else {
return "" + padstri + stri;
}
};
fs = require('fs');
readDir = function(arg, cb) {
fs.readdir(process.cwd(), function(err, files) {
if (err) {
console.log("ERROR reading directory: ");
} else {
console.log("Current working directory: " + (process.cwd()) + "\n");
}
if (err) {
return cb(err, null);
} else {
return cb(files);
}
});
console.log("Running file system test function");
return console.log("---------------------------------\n");
};
async.waterfall([
readDir, function(files, cb) {
var len, stats;
len = files.length - 1;
stats = [];
return files.forEach(function(file, index) {
return fs.stat(file, function(err, stat) {
if (err) {
return cb(err, null);
}
stats[index] = stat;
if (index === len) {
console.log("Retrieved", stats.length, "items.\n");
return cb([files, stats]);
}
});
});
}, function(arrs, cb) {
var file, fileInfo, fileSizes, files, i, index, j, len1, len2, ref, ref1, ref2, stats;
files = arrs[0], stats = arrs[1];
fileSizes = [];
for (index = i = 0, len1 = files.length; i < len1; index = ++i) {
file = files[index];
fileSizes.push({
name: '' + file + (((ref = stats[index]) != null ? ref.isDirectory() : void 0) ? ' [DIR]' : ''),
size: (ref1 = stats[index]) != null ? ref1.size : void 0,
isFile: (ref2 = stats[index]) != null ? ref2.isFile() : void 0
});
}
fileSizes.sort(function(info1, info2) {
return info1.isFile - info2.isFile;
});
for (j = 0, len2 = fileSizes.length; j < len2; j++) {
fileInfo = fileSizes[j];
console.log(pad(fileInfo.name, 40), " --- ", pad(thousand_sep(fileInfo.size), 40, "l"), "bytes.");
}
return cb(fileSizes);
}
], function(err, fileSizes) {
var info;
if (err) {
return console.log("An error happened: " + err.message);
} else {
info = "\nTotal Size of files in " + (process.cwd()) + ": ";
info += (thousand_sep(fileSizes.reduce((function(acum, fileInfo) {
return acum + (fileInfo.isFile ? fileInfo.size : 0);
}), 0))) + " bytes.\n";
return console.log(info);
}
});
}
}).call(this);