/** | |
* Module dependencies. | |
*/ | |
var AssertionError = require('assert').AssertionError | |
, callsite = require('callsite') | |
, fs = require('fs') | |
/** | |
* Expose `assert`. | |
*/ | |
module.exports = process.env.NO_ASSERT | |
? function(){} | |
: assert; | |
/** | |
* Assert the given `expr`. | |
*/ | |
function assert(expr) { | |
if (expr) return; | |
var stack = callsite(); | |
var call = stack[1]; | |
var file = call.getFileName(); | |
var lineno = call.getLineNumber(); | |
var src = fs.readFileSync(file, 'utf8'); | |
var line = src.split('\n')[lineno-1]; | |
var src = line.match(/assert\((.*)\)/)[1]; | |
var err = new AssertionError({ | |
message: src, | |
stackStartFunction: stack[0].getFunction() | |
}); | |
throw err; | |
} | |