tessella 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +900 -0
- data/doc/README.md +74 -0
- data/doc/bitfield.md +123 -0
- data/doc/charts.md +1370 -0
- data/doc/check.rb +75 -0
- data/doc/cli.md +483 -0
- data/doc/composition.md +599 -0
- data/doc/getting-started.md +121 -0
- data/doc/glyphs.md +134 -0
- data/doc/images.md +325 -0
- data/doc/library.md +239 -0
- data/doc/lint.md +270 -0
- data/doc/meter.md +210 -0
- data/doc/rule.md +51 -0
- data/doc/seq.md +169 -0
- data/doc/sparkline.md +63 -0
- data/doc/table.md +347 -0
- data/doc/targets.md +222 -0
- data/doc/text.md +84 -0
- data/doc/tree.md +108 -0
- data/doc/wave.md +122 -0
- data/examples/README.md +103 -0
- data/examples/ages.txt +9 -0
- data/examples/bad.csv +3 -0
- data/examples/boxes.txt +3 -0
- data/examples/broken.txt +4 -0
- data/examples/calibration.rb +12 -0
- data/examples/cities.csv +4 -0
- data/examples/cjk.rb +13 -0
- data/examples/comment.rb +9 -0
- data/examples/comment.sh +13 -0
- data/examples/cpu.txt +60 -0
- data/examples/dashboard.sh +25 -0
- data/examples/datasheet.rb +16 -0
- data/examples/disc.pgm +0 -0
- data/examples/disks.sh +18 -0
- data/examples/disks.txt +5 -0
- data/examples/dose.txt +7 -0
- data/examples/drift.txt +4 -0
- data/examples/ethernet.txt +3 -0
- data/examples/figure.c +5 -0
- data/examples/fit.rb +16 -0
- data/examples/floors.rb +21 -0
- data/examples/gallery.sh +20 -0
- data/examples/gauges.sh +31 -0
- data/examples/gradient.rb +16 -0
- data/examples/growth.txt +6 -0
- data/examples/hosts.csv +4 -0
- data/examples/icmp.txt +3 -0
- data/examples/ipv4.txt +12 -0
- data/examples/kinds.csv +4 -0
- data/examples/langs.csv +4 -0
- data/examples/lint.rb +16 -0
- data/examples/load.rb +14 -0
- data/examples/login.txt +10 -0
- data/examples/neg.csv +4 -0
- data/examples/normal.txt +200 -0
- data/examples/note.txt +2 -0
- data/examples/notes-fixed.md +17 -0
- data/examples/notes.md +17 -0
- data/examples/ohlc.txt +7 -0
- data/examples/os.csv +10 -0
- data/examples/outline.txt +8 -0
- data/examples/plot.txt +5 -0
- data/examples/refusals.rb +17 -0
- data/examples/report.sh +21 -0
- data/examples/rfc.sh +22 -0
- data/examples/samples.txt +7 -0
- data/examples/shapes.pgm +0 -0
- data/examples/sizes.tsv +3 -0
- data/examples/spi.txt +6 -0
- data/examples/status.sh +23 -0
- data/examples/stem.txt +12 -0
- data/examples/table-drift.txt +4 -0
- data/examples/temps.txt +31 -0
- data/examples/trig.sh +13 -0
- data/examples/trig.txt +102 -0
- data/examples/week.txt +8 -0
- data/examples/wide.txt +2 -0
- data/exe/tessella +6 -0
- data/lib/tessella/axis.rb +71 -0
- data/lib/tessella/bitfield.rb +194 -0
- data/lib/tessella/block.rb +56 -0
- data/lib/tessella/borders.rb +85 -0
- data/lib/tessella/canvas/area.rb +155 -0
- data/lib/tessella/canvas/ascii.rb +120 -0
- data/lib/tessella/canvas/block.rb +40 -0
- data/lib/tessella/canvas/braille.rb +30 -0
- data/lib/tessella/canvas/clip.rb +49 -0
- data/lib/tessella/canvas/density.rb +51 -0
- data/lib/tessella/canvas/dot.rb +27 -0
- data/lib/tessella/canvas/eighths.rb +43 -0
- data/lib/tessella/canvas/half.rb +51 -0
- data/lib/tessella/canvas/sextant.rb +36 -0
- data/lib/tessella/canvas.rb +168 -0
- data/lib/tessella/cell.rb +10 -0
- data/lib/tessella/chart.rb +211 -0
- data/lib/tessella/check.rb +52 -0
- data/lib/tessella/cli/bitfield.rb +121 -0
- data/lib/tessella/cli/chart.rb +615 -0
- data/lib/tessella/cli/chart_candle.rb +36 -0
- data/lib/tessella/cli/chart_heatmap.rb +21 -0
- data/lib/tessella/cli/chart_help.rb +85 -0
- data/lib/tessella/cli/chart_pie.rb +38 -0
- data/lib/tessella/cli/compose.rb +156 -0
- data/lib/tessella/cli/compose_options.rb +259 -0
- data/lib/tessella/cli/glyphs.rb +97 -0
- data/lib/tessella/cli/image.rb +250 -0
- data/lib/tessella/cli/input.rb +44 -0
- data/lib/tessella/cli/iso_time.rb +28 -0
- data/lib/tessella/cli/lint.rb +102 -0
- data/lib/tessella/cli/lint_options.rb +99 -0
- data/lib/tessella/cli/main.rb +121 -0
- data/lib/tessella/cli/meter.rb +80 -0
- data/lib/tessella/cli/rule.rb +57 -0
- data/lib/tessella/cli/seq.rb +117 -0
- data/lib/tessella/cli/sparkline.rb +72 -0
- data/lib/tessella/cli/table.rb +167 -0
- data/lib/tessella/cli/text.rb +78 -0
- data/lib/tessella/cli/tree.rb +100 -0
- data/lib/tessella/cli/wave.rb +148 -0
- data/lib/tessella/cli.rb +36 -0
- data/lib/tessella/color.rb +106 -0
- data/lib/tessella/compose.rb +243 -0
- data/lib/tessella/compose_fill.rb +176 -0
- data/lib/tessella/compose_grid.rb +36 -0
- data/lib/tessella/compose_shadow.rb +41 -0
- data/lib/tessella/error.rb +13 -0
- data/lib/tessella/frame.rb +170 -0
- data/lib/tessella/glyphs.rb +106 -0
- data/lib/tessella/image.rb +454 -0
- data/lib/tessella/image_octant.rb +46 -0
- data/lib/tessella/image_petscii.rb +116 -0
- data/lib/tessella/kinds/bar.rb +344 -0
- data/lib/tessella/kinds/box.rb +213 -0
- data/lib/tessella/kinds/box_upright.rb +110 -0
- data/lib/tessella/kinds/candlestick.rb +164 -0
- data/lib/tessella/kinds/columns.rb +259 -0
- data/lib/tessella/kinds/date_axis.rb +102 -0
- data/lib/tessella/kinds/error_bars.rb +71 -0
- data/lib/tessella/kinds/heatmap.rb +130 -0
- data/lib/tessella/kinds/line.rb +173 -0
- data/lib/tessella/kinds/multibar.rb +98 -0
- data/lib/tessella/kinds/multibar_columns.rb +130 -0
- data/lib/tessella/kinds/multibar_fine.rb +45 -0
- data/lib/tessella/kinds/multibar_rows.rb +93 -0
- data/lib/tessella/kinds/pie.rb +123 -0
- data/lib/tessella/kinds/pie_rim.rb +78 -0
- data/lib/tessella/kinds/sideways.rb +62 -0
- data/lib/tessella/kinds/stem.rb +134 -0
- data/lib/tessella/kinds/threshold.rb +73 -0
- data/lib/tessella/legend.rb +31 -0
- data/lib/tessella/lint/alphabet.rb +56 -0
- data/lib/tessella/lint/drift.rb +82 -0
- data/lib/tessella/lint/fences.rb +51 -0
- data/lib/tessella/lint/geometry.rb +120 -0
- data/lib/tessella/lint/geometry_checks.rb +224 -0
- data/lib/tessella/lint/lines.rb +115 -0
- data/lib/tessella/lint/mixing.rb +61 -0
- data/lib/tessella/lint/runner.rb +73 -0
- data/lib/tessella/lint/shadows.rb +120 -0
- data/lib/tessella/lint/target_rows.rb +66 -0
- data/lib/tessella/lint.rb +158 -0
- data/lib/tessella/meter.rb +133 -0
- data/lib/tessella/meter_upright.rb +43 -0
- data/lib/tessella/png.rb +456 -0
- data/lib/tessella/raster.rb +92 -0
- data/lib/tessella/rmagick_reader.rb +52 -0
- data/lib/tessella/rule.rb +59 -0
- data/lib/tessella/seq.rb +522 -0
- data/lib/tessella/sparkline.rb +57 -0
- data/lib/tessella/stats.rb +199 -0
- data/lib/tessella/table.rb +547 -0
- data/lib/tessella/table_cells.rb +225 -0
- data/lib/tessella/target.rb +105 -0
- data/lib/tessella/text.rb +76 -0
- data/lib/tessella/text_forms.rb +150 -0
- data/lib/tessella/tree.rb +221 -0
- data/lib/tessella/version.rb +5 -0
- data/lib/tessella/wave.rb +353 -0
- data/lib/tessella/width.rb +122 -0
- data/lib/tessella/width_class.rb +77 -0
- data/lib/tessella/width_invisible.rb +66 -0
- data/lib/tessella/width_invisible_high.rb +60 -0
- data/lib/tessella.rb +94 -0
- metadata +226 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# examples/gradient.rb: a Raster built in Ruby -- no image file --
|
|
4
|
+
# drawn in three styles, side by side.
|
|
5
|
+
require "tessella"
|
|
6
|
+
|
|
7
|
+
w = h = 48
|
|
8
|
+
luma = (0...h).flat_map do |y|
|
|
9
|
+
(0...w).map { |x| Math.hypot(x - 24, y - 24) < 22 ? x / 47.0 : 0 }
|
|
10
|
+
end
|
|
11
|
+
raster = Tessella::Raster.new(width: w, height: h, luma: luma)
|
|
12
|
+
figs = %i[ramp blocks quadrant].map do |style|
|
|
13
|
+
Tessella.caption(Tessella.image(raster, style: style, width: 16),
|
|
14
|
+
text: style.to_s)
|
|
15
|
+
end
|
|
16
|
+
puts Tessella.beside(*figs, gap: 3)
|
data/examples/growth.txt
ADDED
data/examples/hosts.csv
ADDED
data/examples/icmp.txt
ADDED
data/examples/ipv4.txt
ADDED
data/examples/kinds.csv
ADDED
data/examples/langs.csv
ADDED
data/examples/lint.rb
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# examples/lint.rb: the lint from Ruby -- a figure tessella draws is
|
|
4
|
+
# clean by construction; a hand-drawn one is reported line by line,
|
|
5
|
+
# and the rulers show where its verticals stopped agreeing.
|
|
6
|
+
require "tessella"
|
|
7
|
+
|
|
8
|
+
chart = Tessella.bar(%w[ruby c rust], [12, 30, 7.5], width: 30)
|
|
9
|
+
puts "chart: #{Tessella.lint(chart.to_s, geometry: true).clean?}"
|
|
10
|
+
|
|
11
|
+
report = Tessella.lint(File.read("broken.txt"), geometry: true)
|
|
12
|
+
report.findings.each { puts "broken.txt:#{it.line}: #{it.message}" }
|
|
13
|
+
|
|
14
|
+
Tessella.lint(File.read("table-drift.txt")).rulers.each do |r|
|
|
15
|
+
puts "line #{r.line}: verticals #{r.verticals.inspect}"
|
|
16
|
+
end
|
data/examples/load.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# examples/load.rb: a bar chart and a table side by side, framed and
|
|
4
|
+
# captioned -- composition of any two figures.
|
|
5
|
+
require "tessella"
|
|
6
|
+
|
|
7
|
+
rows = Tessella::Table.parse(File.read("langs.csv"))
|
|
8
|
+
labels = rows.drop(1).map(&:first)
|
|
9
|
+
values = rows.drop(1).map { Integer(it[1], exception: false) || it[1].to_f }
|
|
10
|
+
plot = Tessella.bar(labels, values, width: 20)
|
|
11
|
+
table = Tessella.table(rows, style: :rounded)
|
|
12
|
+
fig = Tessella.beside(plot, table, gap: 2, align: :middle)
|
|
13
|
+
puts Tessella.caption(Tessella.frame(fig, title: "Load"),
|
|
14
|
+
text: "Figure 1: lines of code, in thousands")
|
data/examples/login.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
participant Browser
|
|
2
|
+
participant Server
|
|
3
|
+
participant DB
|
|
4
|
+
Browser -> Server: POST /login
|
|
5
|
+
Server -> DB: SELECT user
|
|
6
|
+
DB --> Server: row
|
|
7
|
+
Server -> Server: check hash
|
|
8
|
+
note over Server,DB: bcrypt, cost 12
|
|
9
|
+
Server ->> DB: log attempt
|
|
10
|
+
Server --> Browser: 200 + cookie
|
data/examples/neg.csv
ADDED
data/examples/normal.txt
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
0.359
|
|
2
|
+
-0.404
|
|
3
|
+
0.202
|
|
4
|
+
0.263
|
|
5
|
+
-0.634
|
|
6
|
+
1.031
|
|
7
|
+
-1.092
|
|
8
|
+
1.528
|
|
9
|
+
0.897
|
|
10
|
+
-0.984
|
|
11
|
+
0.266
|
|
12
|
+
-0.215
|
|
13
|
+
-2.427
|
|
14
|
+
2.111
|
|
15
|
+
-2.14
|
|
16
|
+
-0.896
|
|
17
|
+
0.517
|
|
18
|
+
1.054
|
|
19
|
+
-0.446
|
|
20
|
+
0.403
|
|
21
|
+
0.759
|
|
22
|
+
-0.049
|
|
23
|
+
-0.363
|
|
24
|
+
0.354
|
|
25
|
+
-2.747
|
|
26
|
+
0.946
|
|
27
|
+
0.731
|
|
28
|
+
-0.633
|
|
29
|
+
0.047
|
|
30
|
+
0.123
|
|
31
|
+
-0.239
|
|
32
|
+
-0.412
|
|
33
|
+
1.426
|
|
34
|
+
0.975
|
|
35
|
+
0.171
|
|
36
|
+
2.28
|
|
37
|
+
-0.604
|
|
38
|
+
-0.104
|
|
39
|
+
0.606
|
|
40
|
+
-2.56
|
|
41
|
+
0.775
|
|
42
|
+
0.97
|
|
43
|
+
-0.471
|
|
44
|
+
1.004
|
|
45
|
+
-0.514
|
|
46
|
+
-0.57
|
|
47
|
+
-1.967
|
|
48
|
+
-1.14
|
|
49
|
+
0.752
|
|
50
|
+
-0.573
|
|
51
|
+
-0.364
|
|
52
|
+
0.125
|
|
53
|
+
0.311
|
|
54
|
+
-1.164
|
|
55
|
+
-0.211
|
|
56
|
+
-0.678
|
|
57
|
+
-1.011
|
|
58
|
+
1.042
|
|
59
|
+
-0.279
|
|
60
|
+
-0.524
|
|
61
|
+
-0.513
|
|
62
|
+
1.118
|
|
63
|
+
-0.504
|
|
64
|
+
0.607
|
|
65
|
+
-0.381
|
|
66
|
+
1.137
|
|
67
|
+
0.319
|
|
68
|
+
-0.507
|
|
69
|
+
1.723
|
|
70
|
+
0.481
|
|
71
|
+
-1.187
|
|
72
|
+
-0.212
|
|
73
|
+
-0.275
|
|
74
|
+
0.271
|
|
75
|
+
-0.628
|
|
76
|
+
0.505
|
|
77
|
+
0.096
|
|
78
|
+
-1.14
|
|
79
|
+
0.001
|
|
80
|
+
0.374
|
|
81
|
+
1.142
|
|
82
|
+
-0.223
|
|
83
|
+
-0.851
|
|
84
|
+
-0.753
|
|
85
|
+
-0.116
|
|
86
|
+
0.144
|
|
87
|
+
-0.204
|
|
88
|
+
-0.781
|
|
89
|
+
-0.957
|
|
90
|
+
0.337
|
|
91
|
+
0.992
|
|
92
|
+
0.496
|
|
93
|
+
-2.77
|
|
94
|
+
0.113
|
|
95
|
+
-1.416
|
|
96
|
+
0.44
|
|
97
|
+
0.136
|
|
98
|
+
-1.38
|
|
99
|
+
1.337
|
|
100
|
+
0.385
|
|
101
|
+
1.06
|
|
102
|
+
1.493
|
|
103
|
+
0.917
|
|
104
|
+
-1.842
|
|
105
|
+
-0.018
|
|
106
|
+
-0.744
|
|
107
|
+
-0.748
|
|
108
|
+
-1.115
|
|
109
|
+
1.359
|
|
110
|
+
0.917
|
|
111
|
+
-1.422
|
|
112
|
+
-1.406
|
|
113
|
+
-1.274
|
|
114
|
+
-0.047
|
|
115
|
+
0.089
|
|
116
|
+
-1.385
|
|
117
|
+
-0.118
|
|
118
|
+
-0.489
|
|
119
|
+
1.294
|
|
120
|
+
-1.361
|
|
121
|
+
0.587
|
|
122
|
+
0.934
|
|
123
|
+
1.386
|
|
124
|
+
0.721
|
|
125
|
+
-0.713
|
|
126
|
+
-0.631
|
|
127
|
+
0.519
|
|
128
|
+
-0.866
|
|
129
|
+
0.138
|
|
130
|
+
-1.498
|
|
131
|
+
1.705
|
|
132
|
+
0.192
|
|
133
|
+
-0.797
|
|
134
|
+
-0.549
|
|
135
|
+
0.717
|
|
136
|
+
0.088
|
|
137
|
+
1.926
|
|
138
|
+
-0.439
|
|
139
|
+
-0.303
|
|
140
|
+
1.604
|
|
141
|
+
-2.083
|
|
142
|
+
0.138
|
|
143
|
+
1.159
|
|
144
|
+
-0.507
|
|
145
|
+
-1.472
|
|
146
|
+
-1.016
|
|
147
|
+
-2.708
|
|
148
|
+
0.768
|
|
149
|
+
-0.029
|
|
150
|
+
0.032
|
|
151
|
+
0.779
|
|
152
|
+
0.175
|
|
153
|
+
1.007
|
|
154
|
+
2.001
|
|
155
|
+
-0.128
|
|
156
|
+
-0.452
|
|
157
|
+
1.958
|
|
158
|
+
-0.383
|
|
159
|
+
1.335
|
|
160
|
+
-1.437
|
|
161
|
+
-1.855
|
|
162
|
+
-1.555
|
|
163
|
+
-0.928
|
|
164
|
+
-0.402
|
|
165
|
+
-1.175
|
|
166
|
+
0.568
|
|
167
|
+
0.596
|
|
168
|
+
0.846
|
|
169
|
+
-1.87
|
|
170
|
+
0.826
|
|
171
|
+
1.457
|
|
172
|
+
-0.204
|
|
173
|
+
-0.857
|
|
174
|
+
1.07
|
|
175
|
+
-0.845
|
|
176
|
+
-0.752
|
|
177
|
+
-0.336
|
|
178
|
+
1.838
|
|
179
|
+
-0.352
|
|
180
|
+
-0.658
|
|
181
|
+
-0.471
|
|
182
|
+
-0.333
|
|
183
|
+
-1.922
|
|
184
|
+
1.922
|
|
185
|
+
-1.032
|
|
186
|
+
-0.932
|
|
187
|
+
-2.194
|
|
188
|
+
-1.048
|
|
189
|
+
-0.606
|
|
190
|
+
0.345
|
|
191
|
+
0.521
|
|
192
|
+
-0.633
|
|
193
|
+
-0.633
|
|
194
|
+
0.401
|
|
195
|
+
-0.406
|
|
196
|
+
-1.679
|
|
197
|
+
0.058
|
|
198
|
+
-0.895
|
|
199
|
+
1.116
|
|
200
|
+
-0.543
|
data/examples/note.txt
ADDED
data/examples/notes.md
ADDED
data/examples/ohlc.txt
ADDED
data/examples/os.csv
ADDED
data/examples/plot.txt
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# examples/refusals.rb: what the library refuses, and how it says so.
|
|
4
|
+
require "tessella"
|
|
5
|
+
|
|
6
|
+
[
|
|
7
|
+
-> { Tessella.line([1, 2, 3], [1, 2]) },
|
|
8
|
+
-> { Tessella.bar(%w[a b], [1, Float::NAN]) },
|
|
9
|
+
-> { Tessella.line([1, 2], width: 0) },
|
|
10
|
+
-> { Tessella.line([1, 2], colour: true) },
|
|
11
|
+
-> { Tessella.tree("a\n b\n c") },
|
|
12
|
+
-> { Tessella.frame("é", ascii: true) }
|
|
13
|
+
].each do |call|
|
|
14
|
+
call.call
|
|
15
|
+
rescue ArgumentError => e
|
|
16
|
+
puts "#{e.class}: #{e.message}"
|
|
17
|
+
end
|
data/examples/report.sh
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# examples/report.sh -- a chart and a table drawn from one CSV, set
|
|
3
|
+
# side by side, framed and captioned: compose reads one block from
|
|
4
|
+
# stdin, so the others go through a temp directory.
|
|
5
|
+
# usage: sh report.sh [file.csv] (default langs.csv)
|
|
6
|
+
set -eu
|
|
7
|
+
|
|
8
|
+
cd -- "$(dirname -- "$0")" || exit 1
|
|
9
|
+
csv=${1:-langs.csv}
|
|
10
|
+
|
|
11
|
+
tmpdir=
|
|
12
|
+
cleanup() { [ -z "$tmpdir" ] || rm -rf -- "$tmpdir"; }
|
|
13
|
+
trap cleanup EXIT INT HUP TERM
|
|
14
|
+
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/report.XXXXXX") || exit 1
|
|
15
|
+
|
|
16
|
+
tessella chart --kind bar --width 20 -- "$csv" > "$tmpdir/chart"
|
|
17
|
+
tessella table --style rounded -- "$csv" > "$tmpdir/table"
|
|
18
|
+
tessella compose beside --gap 2 --align middle \
|
|
19
|
+
"$tmpdir/chart" "$tmpdir/table" |
|
|
20
|
+
tessella compose frame --title Load - |
|
|
21
|
+
tessella compose caption --text "Source: $csv" -
|
data/examples/rfc.sh
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# examples/rfc.sh -- an RFC-style section: a message exchange and the
|
|
3
|
+
# header it carries, both ASCII, stacked under a rule and indented
|
|
4
|
+
# three columns, as an RFC sets its figures.
|
|
5
|
+
# usage: sh rfc.sh
|
|
6
|
+
set -eu
|
|
7
|
+
|
|
8
|
+
cd -- "$(dirname -- "$0")" || exit 1
|
|
9
|
+
|
|
10
|
+
tmpdir=
|
|
11
|
+
cleanup() { [ -z "$tmpdir" ] || rm -rf -- "$tmpdir"; }
|
|
12
|
+
trap cleanup EXIT INT HUP TERM
|
|
13
|
+
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/rfc.XXXXXX") || exit 1
|
|
14
|
+
|
|
15
|
+
printf 'Client -> Server: Echo Request\nServer --> Client: Echo Reply\n' |
|
|
16
|
+
tessella seq --ascii > "$tmpdir/seq"
|
|
17
|
+
tessella bitfield icmp.txt |
|
|
18
|
+
tessella compose caption --ascii --text 'Figure 1: ICMP header' - \
|
|
19
|
+
> "$tmpdir/header"
|
|
20
|
+
tessella compose stack --ascii --gap 1 --rule '-' --center \
|
|
21
|
+
"$tmpdir/seq" "$tmpdir/header" |
|
|
22
|
+
tessella compose indent --ascii --prefix ' ' --max-width 72 -
|
data/examples/shapes.pgm
ADDED
|
Binary file
|
data/examples/sizes.tsv
ADDED
data/examples/spi.txt
ADDED
data/examples/status.sh
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# examples/status.sh -- telling bad data (exit 1) from a bad call
|
|
3
|
+
# (exit 2) in a script: draw what can be drawn, report the rest.
|
|
4
|
+
# usage: sh status.sh
|
|
5
|
+
set -eu
|
|
6
|
+
|
|
7
|
+
cd -- "$(dirname -- "$0")" || exit 1
|
|
8
|
+
|
|
9
|
+
draw() {
|
|
10
|
+
# shellcheck disable=SC3043 # local: every target sh has it
|
|
11
|
+
local status
|
|
12
|
+
status=0
|
|
13
|
+
tessella chart --kind bar --width 20 "$@" 2>/dev/null || status=$?
|
|
14
|
+
case $status in
|
|
15
|
+
0) ;;
|
|
16
|
+
1) printf '%s: bad data, skipped\n' "$*" ;;
|
|
17
|
+
*) printf '%s: bad call (exit %s)\n' "$*" "$status" ;;
|
|
18
|
+
esac
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
draw langs.csv
|
|
22
|
+
draw bad.csv
|
|
23
|
+
draw --bins 3 langs.csv
|
data/examples/stem.txt
ADDED
data/examples/temps.txt
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
date temp
|
|
2
|
+
2026-10-01 12.0
|
|
3
|
+
2026-10-02 13.5
|
|
4
|
+
2026-10-03 14.9
|
|
5
|
+
2026-10-04 16.1
|
|
6
|
+
2026-10-05 17.0
|
|
7
|
+
2026-10-06 17.7
|
|
8
|
+
2026-10-07 18.0
|
|
9
|
+
2026-10-08 17.9
|
|
10
|
+
2026-10-09 17.5
|
|
11
|
+
2026-10-10 16.7
|
|
12
|
+
2026-10-11 15.6
|
|
13
|
+
2026-10-12 14.3
|
|
14
|
+
2026-10-13 12.8
|
|
15
|
+
2026-10-14 11.4
|
|
16
|
+
2026-10-15 9.9
|
|
17
|
+
2026-10-16 8.6
|
|
18
|
+
2026-10-17 7.5
|
|
19
|
+
2026-10-18 6.6
|
|
20
|
+
2026-10-19 6.1
|
|
21
|
+
2026-10-20 6.0
|
|
22
|
+
2026-10-21 6.2
|
|
23
|
+
2026-10-22 6.8
|
|
24
|
+
2026-10-23 7.8
|
|
25
|
+
2026-10-24 9.0
|
|
26
|
+
2026-10-25 10.3
|
|
27
|
+
2026-10-26 11.8
|
|
28
|
+
2026-10-27 13.3
|
|
29
|
+
2026-10-28 14.7
|
|
30
|
+
2026-10-29 15.9
|
|
31
|
+
2026-10-30 16.9
|
data/examples/trig.sh
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# examples/trig.sh -- data made on the spot by awk, piped straight
|
|
3
|
+
# into a chart: a header row names the two series.
|
|
4
|
+
# usage: sh trig.sh
|
|
5
|
+
set -eu
|
|
6
|
+
|
|
7
|
+
awk 'BEGIN {
|
|
8
|
+
print "x sin cos"
|
|
9
|
+
for (i = 0; i <= 100; i++)
|
|
10
|
+
printf "%g %g %g\n", i / 10, sin(i / 10), cos(i / 10)
|
|
11
|
+
}' |
|
|
12
|
+
tessella chart --title trig --xlabel x --width 30 --height 6 \
|
|
13
|
+
--canvas block
|
data/examples/trig.txt
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
x sin cos
|
|
2
|
+
0.0 0.0 1.0
|
|
3
|
+
0.1 0.09983341664682815 0.9950041652780258
|
|
4
|
+
0.2 0.19866933079506122 0.9800665778412416
|
|
5
|
+
0.3 0.2955202066613396 0.955336489125606
|
|
6
|
+
0.4 0.3894183423086505 0.9210609940028851
|
|
7
|
+
0.5 0.479425538604203 0.8775825618903728
|
|
8
|
+
0.6 0.5646424733950355 0.8253356149096782
|
|
9
|
+
0.7 0.6442176872376911 0.7648421872844884
|
|
10
|
+
0.8 0.7173560908995228 0.6967067093471654
|
|
11
|
+
0.9 0.7833269096274834 0.6216099682706644
|
|
12
|
+
1.0 0.8414709848078965 0.5403023058681398
|
|
13
|
+
1.1 0.8912073600614354 0.4535961214255773
|
|
14
|
+
1.2 0.9320390859672264 0.3623577544766734
|
|
15
|
+
1.3 0.963558185417193 0.26749882862458735
|
|
16
|
+
1.4 0.9854497299884603 0.16996714290024081
|
|
17
|
+
1.5 0.9974949866040544 0.0707372016677029
|
|
18
|
+
1.6 0.9995736030415051 -0.029199522301288815
|
|
19
|
+
1.7 0.9916648104524686 -0.12884449429552486
|
|
20
|
+
1.8 0.9738476308781951 -0.2272020946930871
|
|
21
|
+
1.9 0.9463000876874145 -0.3232895668635035
|
|
22
|
+
2.0 0.9092974268256817 -0.4161468365471424
|
|
23
|
+
2.1 0.8632093666488737 -0.5048461045998576
|
|
24
|
+
2.2 0.8084964038195901 -0.5885011172553458
|
|
25
|
+
2.3 0.74570521217672 -0.6662760212798244
|
|
26
|
+
2.4 0.6754631805511506 -0.7373937155412458
|
|
27
|
+
2.5 0.5984721441039564 -0.8011436155469337
|
|
28
|
+
2.6 0.5155013718214642 -0.8568887533689473
|
|
29
|
+
2.7 0.4273798802338298 -0.9040721420170612
|
|
30
|
+
2.8 0.33498815015590466 -0.9422223406686583
|
|
31
|
+
2.9 0.23924932921398198 -0.9709581651495907
|
|
32
|
+
3.0 0.1411200080598672 -0.9899924966004454
|
|
33
|
+
3.1 0.04158066243329049 -0.9991351502732795
|
|
34
|
+
3.2 -0.058374143427580086 -0.9982947757947531
|
|
35
|
+
3.3 -0.15774569414324865 -0.9874797699088649
|
|
36
|
+
3.4 -0.25554110202683167 -0.9667981925794609
|
|
37
|
+
3.5 -0.35078322768961984 -0.9364566872907963
|
|
38
|
+
3.6 -0.44252044329485246 -0.896758416334147
|
|
39
|
+
3.7 -0.5298361409084934 -0.848100031710408
|
|
40
|
+
3.8 -0.6118578909427193 -0.7909677119144165
|
|
41
|
+
3.9 -0.6877661591839741 -0.7259323042001399
|
|
42
|
+
4.0 -0.7568024953079282 -0.6536436208636119
|
|
43
|
+
4.1 -0.8182771110644108 -0.5748239465332685
|
|
44
|
+
4.2 -0.8715757724135882 -0.4902608213406994
|
|
45
|
+
4.3 -0.9161659367494549 -0.40079917207997545
|
|
46
|
+
4.4 -0.9516020738895161 -0.30733286997841935
|
|
47
|
+
4.5 -0.977530117665097 -0.2107957994307797
|
|
48
|
+
4.6 -0.9936910036334645 -0.112152526935054
|
|
49
|
+
4.7 -0.9999232575641008 -0.01238866346289056
|
|
50
|
+
4.8 -0.9961646088358406 0.08749898343944727
|
|
51
|
+
4.9 -0.9824526126243325 0.18651236942257576
|
|
52
|
+
5.0 -0.9589242746631385 0.28366218546322625
|
|
53
|
+
5.1 -0.9258146823277321 0.37797774271298107
|
|
54
|
+
5.2 -0.8834546557201531 0.4685166713003771
|
|
55
|
+
5.3 -0.8322674422239008 0.5543743361791615
|
|
56
|
+
5.4 -0.7727644875559871 0.6346928759426347
|
|
57
|
+
5.5 -0.7055403255703919 0.70866977429126
|
|
58
|
+
5.6 -0.6312666378723208 0.7755658785102502
|
|
59
|
+
5.7 -0.5506855425976376 0.8347127848391598
|
|
60
|
+
5.8 -0.4646021794137566 0.8855195169413194
|
|
61
|
+
5.9 -0.373876664830236 0.9274784307440359
|
|
62
|
+
6.0 -0.27941549819892586 0.960170286650366
|
|
63
|
+
6.1 -0.18216250427209502 0.9832684384425847
|
|
64
|
+
6.2 -0.0830894028174964 0.9965420970232175
|
|
65
|
+
6.3 0.0168139004843506 0.9998586363834151
|
|
66
|
+
6.4 0.11654920485049364 0.9931849187581926
|
|
67
|
+
6.5 0.21511998808781552 0.9765876257280235
|
|
68
|
+
6.6 0.3115413635133787 0.9502325919585293
|
|
69
|
+
6.7 0.4048499206165983 0.9143831482353194
|
|
70
|
+
6.8 0.49411335113860894 0.8693974903498248
|
|
71
|
+
6.9 0.5784397643882002 0.8157251001253568
|
|
72
|
+
7.0 0.6569865987187891 0.7539022543433046
|
|
73
|
+
7.1 0.7289690401258765 0.6845466664428059
|
|
74
|
+
7.2 0.7936678638491531 0.6083513145322546
|
|
75
|
+
7.3 0.8504366206285648 0.5260775173811045
|
|
76
|
+
7.4 0.8987080958116269 0.43854732757439036
|
|
77
|
+
7.5 0.9379999767747389 0.3466353178350258
|
|
78
|
+
7.6 0.9679196720314865 0.25125984258225487
|
|
79
|
+
7.7 0.9881682338770004 0.15337386203786435
|
|
80
|
+
7.8 0.998543345374605 0.05395542056264886
|
|
81
|
+
7.9 0.998941341839772 -0.04600212563953695
|
|
82
|
+
8.0 0.9893582466233818 -0.14550003380861354
|
|
83
|
+
8.1 0.9698898108450863 -0.2435441537357911
|
|
84
|
+
8.2 0.9407305566797726 -0.3391548609838362
|
|
85
|
+
8.3 0.9021718337562933 -0.43137684497062084
|
|
86
|
+
8.4 0.8545989080882805 -0.5192886541166856
|
|
87
|
+
8.5 0.7984871126234903 -0.6020119026848236
|
|
88
|
+
8.6 0.7343970978741133 -0.6787200473200125
|
|
89
|
+
8.7 0.662969230082182 -0.7486466455973999
|
|
90
|
+
8.8 0.5849171928917617 -0.811093014061656
|
|
91
|
+
8.9 0.5010208564578846 -0.8654352092411123
|
|
92
|
+
9.0 0.4121184852417566 -0.9111302618846769
|
|
93
|
+
9.1 0.3190983623493521 -0.9477216021311119
|
|
94
|
+
9.2 0.22288991410024592 -0.974843621404164
|
|
95
|
+
9.3 0.1244544235070617 -0.9922253254526034
|
|
96
|
+
9.4 0.024775425453357765 -0.9996930420352065
|
|
97
|
+
9.5 -0.0751511204618093 -0.9971721561963784
|
|
98
|
+
9.6 -0.1743267812229814 -0.9846878557941267
|
|
99
|
+
9.7 -0.2717606264109442 -0.9623648798313097
|
|
100
|
+
9.8 -0.3664791292519284 -0.9304262721047533
|
|
101
|
+
9.9 -0.4575358937753214 -0.8891911526253609
|
|
102
|
+
10.0 -0.5440211108893698 -0.8390715290764524
|
data/examples/week.txt
ADDED
data/examples/wide.txt
ADDED