55 lines
1.5 KiB
Plaintext
55 lines
1.5 KiB
Plaintext
/* NetRexx */
|
|
options replace format comments java crossref symbols nobinary
|
|
|
|
runSample(arg)
|
|
return
|
|
|
|
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
method sparkline(spark) private static
|
|
spark = spark.changestr(',', ' ')
|
|
bars = '\u2581 \u2582 \u2583 \u2584 \u2585 \u2586 \u2587 \u2588'
|
|
barK = bars.words()
|
|
nmin = spark.word(1)
|
|
nmax = nmin
|
|
-- get min & max values
|
|
loop iw = 1 to spark.words()
|
|
nval = spark.word(iw)
|
|
nmin = nval.min(nmin)
|
|
nmax = nval.max(nmax)
|
|
end iw
|
|
range = nmax - nmin + 1
|
|
slope = ''
|
|
loop iw = 1 to spark.words()
|
|
point = Math.ceil((spark.word(iw) - nmin + 1) / range * barK)
|
|
slope = slope || bars.word(point)
|
|
end iw
|
|
return slope nmin nmax range
|
|
|
|
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
method runSample(arg) private static
|
|
-- sample data setup
|
|
parse arg vals
|
|
sparks = 0
|
|
sparks[0] = 0
|
|
if vals = '' then do
|
|
si = sparks[0] + 1; sparks[0] = si; sparks[si] = 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
|
|
si = sparks[0] + 1; sparks[0] = si; sparks[si] = '1.5, 0.5 3.5, 2.5 5.5, 4.5 7.5, 6.5'
|
|
end
|
|
else do
|
|
loop until vals = ''
|
|
-- split input on a ! character
|
|
parse vals lst '!' vals
|
|
si = sparks[0] + 1; sparks[0] = si; sparks[si] = lst
|
|
end
|
|
end
|
|
-- run the samples
|
|
loop si = 1 to sparks[0]
|
|
vals = sparks[si]
|
|
parse sparkline(vals) slope .
|
|
say 'Input: ' vals
|
|
say 'Sparkline: ' slope
|
|
say
|
|
end si
|
|
|
|
return
|