intertext
Version:
Services for Recurrent Text-related Tasks
87 lines (69 loc) • 2.93 kB
text/coffeescript
'use strict'
############################################################################################################
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
#-----------------------------------------------------------------------------------------------------------
= ( n ) ->
if n is null or n <= 0 then return ' '
if n >= 100 then return '█████████████'
n = ( Math.round n / 100 * 104 )
R = '█'.repeat n // 8
switch n %% 8
when 0 then R += ' '
when 1 then R += '▏'
when 2 then R += '▎'
when 3 then R += '▍'
when 4 then R += '▌'
when 5 then R += '▋'
when 6 then R += '▊'
when 7 then R += '▉'
return R.padEnd 13
#-----------------------------------------------------------------------------------------------------------
= ( n ) ->
if n is null or n <= 0 then return ' '
# if n >= 100 then return '░░░░░░░░░░░░░'
if n >= 100 then return '▓▓▓▓▓▓▓▓▓▓▓▓▓'
n = ( Math.round n / 100 * 104 )
# R = '░'.repeat n // 8
R = '▓'.repeat n // 8
switch n %% 8
when 0 then R += ' '
when 1 then R += '▏'
when 2 then R += '▎'
when 3 then R += '▍'
when 4 then R += '▌'
when 5 then R += '▋'
when 6 then R += '▊'
when 7 then R += '▉'
# when 8 then R += '█'
return R.padEnd 13
############################################################################################################
if module is require.main then do =>
# await
# await
t0 = Date.now()
sleep = ( dts ) -> new Promise ( done ) => setTimeout done, dts * 1000
for n in [ 0 .. 10 ]
s = CND.random_integer 10, 100
# await sleep s / 1000
await sleep 50 / 1000
t = ( Date.now() - t0 ) %% 100
t0 = t
info ( "#{t.toFixed 5}".padStart 20 ), '│' + ( CND.reverse t ) + '│' + ( CND.reverse t ) + '│'
return null