| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- var prr = require('prr')
 
- function init (type, message, cause) {
 
-   if (!!message && typeof message != 'string') {
 
-     message = message.message || message.name
 
-   }
 
-   prr(this, {
 
-       type    : type
 
-     , name    : type
 
-       // can be passed just a 'cause'
 
-     , cause   : typeof message != 'string' ? message : cause
 
-     , message : message
 
-   }, 'ewr')
 
- }
 
- // generic prototype, not intended to be actually used - helpful for `instanceof`
 
- function CustomError (message, cause) {
 
-   Error.call(this)
 
-   if (Error.captureStackTrace)
 
-     Error.captureStackTrace(this, this.constructor)
 
-   init.call(this, 'CustomError', message, cause)
 
- }
 
- CustomError.prototype = new Error()
 
- function createError (errno, type, proto) {
 
-   var err = function (message, cause) {
 
-     init.call(this, type, message, cause)
 
-     //TODO: the specificity here is stupid, errno should be available everywhere
 
-     if (type == 'FilesystemError') {
 
-       this.code    = this.cause.code
 
-       this.path    = this.cause.path
 
-       this.errno   = this.cause.errno
 
-       this.message =
 
-         (errno.errno[this.cause.errno]
 
-           ? errno.errno[this.cause.errno].description
 
-           : this.cause.message)
 
-         + (this.cause.path ? ' [' + this.cause.path + ']' : '')
 
-     }
 
-     Error.call(this)
 
-     if (Error.captureStackTrace)
 
-       Error.captureStackTrace(this, err)
 
-   }
 
-   err.prototype = !!proto ? new proto() : new CustomError()
 
-   return err
 
- }
 
- module.exports = function (errno) {
 
-   var ce = function (type, proto) {
 
-     return createError(errno, type, proto)
 
-   }
 
-   return {
 
-       CustomError     : CustomError
 
-     , FilesystemError : ce('FilesystemError')
 
-     , createError     : ce
 
-   }
 
- }
 
 
  |