| /** | |
| * 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; | |
| } | |