UNPKG

luhn-generator

Version:

A generator of numbers that passes the validation of Luhn algorithm or Luhn formula, also known as the 'modulus 10' or 'mod 10' algorithm

109 lines (88 loc) 2.3 kB
'use strict'; /** * @module Landing */ /** * Module dependencies. */ var Base = require('./base'); var inherits = require('../utils').inherits; var constants = require('../runner').constants; var EVENT_RUN_BEGIN = constants.EVENT_RUN_BEGIN; var EVENT_RUN_END = constants.EVENT_RUN_END; var EVENT_TEST_END = constants.EVENT_TEST_END; var STATE_FAILED = require('../runnable').constants.STATE_FAILED; var cursor = Base.cursor; var color = Base.color; /** * Expose `Landing`. */ exports = module.exports = Landing; /** * Airplane color. */ Base.colors.plane = 0; /** * Airplane crash color. */ Base.colors['plane crash'] = 31; /** * Runway color. */ Base.colors.runway = 90; /** * Constructs a new `Landing` reporter instance. * * @public * @class * @memberof Mocha.reporters * @extends Mocha.reporters.Base * @param {Runner} runner - Instance triggers reporter actions. * @param {Object} [options] - runner options */ function Landing(runner, options) { Base.call(this, runner, options); var self = this; var width = (Base.window.width * 0.75) | 0; var total = runner.total; var stream = process.stdout; var plane = color('plane', '✈'); var crashed = -1; var n = 0; function runway() { var buf = Array(width).join('-'); return ' ' + color('runway', buf); } runner.on(EVENT_RUN_BEGIN, function() { stream.write('\n\n\n '); cursor.hide(); }); runner.on(EVENT_TEST_END, function(test) { // check if the plane crashed var col = crashed === -1 ? ((width * ++n) / total) | 0 : crashed; // show the crash if (test.state === STATE_FAILED) { plane = color('plane crash', '✈'); crashed = col; } // render landing strip stream.write('\u001b[' + (width + 1) + 'D\u001b[2A'); stream.write(runway()); stream.write('\n '); stream.write(color('runway', Array(col).join('⋅'))); stream.write(plane); stream.write(color('runway', Array(width - col).join('⋅') + '\n')); stream.write(runway()); stream.write('\u001b[0m'); }); runner.once(EVENT_RUN_END, function() { cursor.show(); process.stdout.write('\n'); self.epilogue(); }); } /** * Inherit from `Base.prototype`. */ inherits(Landing, Base); Landing.description = 'Unicode landing strip';