intertext
Version:
Services for Recurrent Text-related Tasks
145 lines (125 loc) • 3.66 kB
JavaScript
// Generated by CoffeeScript 2.5.1
(function() {
'use strict';
var CND, alert, badge, cast, debug, echo, help, info, isa, log, rpr, type_of, types, urge, validate, warn, whisper,
modulo = function(a, b) { return (+a % (b = +b) + b) % b; };
//###########################################################################################################
CND = require('cnd');
rpr = CND.rpr;
badge = 'INTERTEXT/HYPHENATION';
log = CND.get_logger('plain', badge);
info = CND.get_logger('info', badge);
whisper = CND.get_logger('whisper', badge);
alert = CND.get_logger('alert', badge);
debug = CND.get_logger('debug', badge);
warn = CND.get_logger('warn', badge);
help = CND.get_logger('help', badge);
urge = CND.get_logger('urge', badge);
echo = CND.echo.bind(CND);
//...........................................................................................................
types = require('./types');
({isa, validate, cast, type_of} = types);
//-----------------------------------------------------------------------------------------------------------
this.percentage_bar = function(n) {
var R;
if (n === null || n <= 0) {
return ' ';
}
if (n >= 100) {
return '█████████████';
}
n = Math.round(n / 100 * 104);
R = '█'.repeat(Math.floor(n / 8));
switch (modulo(n, 8)) {
case 0:
R += ' ';
break;
case 1:
R += '▏';
break;
case 2:
R += '▎';
break;
case 3:
R += '▍';
break;
case 4:
R += '▌';
break;
case 5:
R += '▋';
break;
case 6:
R += '▊';
break;
case 7:
R += '▉';
}
return R.padEnd(13);
};
//-----------------------------------------------------------------------------------------------------------
this.hollow_percentage_bar = function(n) {
var R;
if (n === null || n <= 0) {
return ' ';
}
// if n >= 100 then return '░░░░░░░░░░░░░'
if (n >= 100) {
return '▓▓▓▓▓▓▓▓▓▓▓▓▓';
}
n = Math.round(n / 100 * 104);
// R = '░'.repeat n // 8
R = '▓'.repeat(Math.floor(n / 8));
switch (modulo(n, 8)) {
case 0:
R += ' ';
break;
case 1:
R += '▏';
break;
case 2:
R += '▎';
break;
case 3:
R += '▍';
break;
case 4:
R += '▌';
break;
case 5:
R += '▋';
break;
case 6:
R += '▊';
break;
case 7:
R += '▉';
}
// when 8 then R += '█'
return R.padEnd(13);
};
//###########################################################################################################
if (module === require.main) {
(async() => {
var i, n, s, sleep, t, t0;
// await @demo()
// await @demo_inserts()
t0 = Date.now();
sleep = function(dts) {
return new Promise((done) => {
return setTimeout(done, dts * 1000);
});
};
for (n = i = 0; i <= 10; n = ++i) {
s = CND.random_integer(10, 100);
// await sleep s / 1000
await sleep(50 / 1000);
t = modulo(Date.now() - t0, 100);
t0 = t;
info(`${t.toFixed(5)}`.padStart(20), '│' + (CND.reverse(this.percentage_bar(t))) + '│' + (CND.reverse(this.hollow_percentage_bar(t))) + '│');
}
return null;
})();
}
}).call(this);
//# sourceMappingURL=bar.js.map