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();
    });
  }
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