code: function NyanCat(runner, options) {
    Base.call(this, runner, options);
  
    var self = this;
    var width = (Base.window.width * 0.75) | 0;
    var nyanCatWidth = (this.nyanCatWidth = 11);
  
    this.colorIndex = 0;
    this.numberOfLines = 4;
    this.rainbowColors = self.generateColors();
    this.scoreboardWidth = 5;
    this.tick = 0;
    this.trajectories = [[], [], [], []];
    this.trajectoryWidthMax = width - nyanCatWidth;
  
    runner.on(EVENT_RUN_BEGIN, function() {
      Base.cursor.hide();
      self.draw();
    });
  
    runner.on(EVENT_TEST_PENDING, function() {
      self.draw();
    });
  
    runner.on(EVENT_TEST_PASS, function() {
      self.draw();
    });
  
    runner.on(EVENT_TEST_FAIL, function() {
      self.draw();
    });
  
    runner.once(EVENT_RUN_END, function() {
      Base.cursor.show();
      for (var i = 0; i < self.numberOfLines; i++) {
        write('\n');
      }
      self.epilogue();
    });
  }
docs: Constructs a new `Nyan` reporter instance.
  
  @public
  @class Nyan
  @memberof Mocha.reporters
  @extends Mocha.reporters.Base
  @param {Runner} runner - Instance triggers reporter actions.
  @param {Object} [options] - runner options