123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 'use strict';
-
- var BEEP_DELAY = 500;
-
- function beep() {
- process.stdout.write('\u0007');
- }
-
- function melodicalBeep(val, cb) {
- if (val.length === 0) {
- cb();
- return;
- }
-
- setTimeout(function () {
- if (val.shift() === '*') {
- beep();
- }
-
- melodicalBeep(val, cb);
- }, BEEP_DELAY);
- }
-
- module.exports = function (val, cb) {
- if (!process.stdout.isTTY ||
- process.argv.indexOf('--no-beep') !== -1 ||
- process.argv.indexOf('--beep=false') !== -1) {
- return;
- }
-
- cb = cb || function () {};
-
- if (val === parseInt(val)) {
- if (val < 0) {
- throw new TypeError('Negative numbers are not accepted');
- }
-
- if (val === 0) {
- cb();
- return;
- }
-
- for (var i = 0; i < val; i++) {
- setTimeout(function (i) {
- beep();
-
- if (i === val - 1) {
- cb();
- }
- }, BEEP_DELAY * i, i);
- }
- } else if (!val) {
- beep();
- cb();
- } else if (typeof val === 'string') {
- melodicalBeep(val.split(''), cb);
- } else {
- throw new TypeError('Not an accepted type');
- }
- };
|