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