| // Report Creator |
| // ============== |
| // |
| // Wrapper of Istanbul's report creator to allow registering |
| // custom reporters |
| |
| // Dependencies |
| // ------------ |
| var istanbulReports = require('istanbul-reports') |
| |
| var customReporterMap = {} |
| |
| function register (reporter) { |
| var registeredType = reporter.TYPE |
| if (!registeredType) { |
| throw new Error('Registering a custom reporter requires a type!') |
| } |
| |
| customReporterMap[registeredType] = reporter |
| return registeredType |
| } |
| |
| function create (type, opts) { |
| var Reporter = customReporterMap[type] |
| if (Reporter) { |
| return new Reporter(opts) |
| } |
| |
| // fallback to istanbul's report creator if reporter isn't found |
| return istanbulReports.create(type, opts) |
| } |
| |
| function reset () { |
| customReporterMap = {} |
| } |
| |
| module.exports = { |
| create: create, |
| register: register, |
| reset: reset |
| } |