progress_bar_none_overload_3000 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 719f7523aadebfd84b5272fa56fd14853b224a1b7e2f0468296c0370ac9660a3
4
+ data.tar.gz: d4628bc971a432526985a25985f4851298aa4a2c46769c2b6ce19b56e356459d
5
+ SHA512:
6
+ metadata.gz: 98fde7f1c59ad16e7c3c9145bb67c3ffdef172362b4113862b30af8bc2a07d8f325bf892b5a782a9771d12e18697fcfb27dbf4d448f3b6fa5d6911c823f6fe1e
7
+ data.tar.gz: 3d3439f3a568b8d74835e7ee23269e28d3cde012e0f8315751d9b4f7d62efe5273e7be6f40f7015006fca0f68505c710212f26b26b0b3341f095f59dd18e56b8
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ # Licensing
2
+
3
+ This project is governed by multiple terms and policies:
4
+
5
+
6
+ ## Free Art License 1.1
7
+
8
+ <https://artlibre.org/licence/lal/en/>
9
+
10
+
11
+ ## Protein Database Terms of Service
12
+
13
+ <https://www.rcsb.org/pages/policies>
14
+
15
+
16
+ ## Anna's Archive Privacy Policy
17
+
18
+ <https://annas-archive.org/privacy>
19
+
20
+ SPDX-License-Identifier: CC0-1.0
data/README.md ADDED
@@ -0,0 +1,250 @@
1
+ # PROGRESS🦫BAR🦫NONE
2
+
3
+ Animated progress bars for Ruby CLI applications with 15+ color palettes, 20+ bar styles, real-time metrics, sparkline graphs, Gantt charts, and terminal graphics support.
4
+
5
+ Brand name: `PROGRESS🦫BAR🦫NONE`. Ruby API aliases: `Cockpit3000`, `PROGRESSBARNONE`, `ProgressBarNone` -- all equivalent.
6
+
7
+ ## Installation
8
+
9
+ Add to your Gemfile:
10
+
11
+ ~~~ruby
12
+ gem "progress_bar_none_overload_3000"
13
+ ~~~
14
+
15
+ Or install directly:
16
+
17
+ ~~~bash
18
+ gem install progress_bar_none_overload_3000
19
+ ~~~
20
+
21
+ ## Features
22
+
23
+ - **Color gradients** -- 15+ palettes with true-color RGB interpolation (crystal, fire, ocean, neon, synthwave, vaporwave, acid, matrix, and more)
24
+ - **Bar styles** -- 20+ styles including crystal, blocks, dots, fire, nyan, matrix, glitch, electric, cyberpunk
25
+ - **Spinners** -- 27 spinner animations (braille, moon, clock, arrows, rocket, etc.)
26
+ - **Real-time metrics** -- Automatic avg/min/max/cumulative tracking with sparkline graphs
27
+ - **Gantt charts** -- Task timeline rendering with SVG export and Tufte-inspired defaults
28
+ - **Multi-bar** -- Nested progress bars with automatic palette/style cycling
29
+ - **Terminal graphics** -- Kitty and iTerm2 inline image protocol support
30
+ - **Decorative frames** -- ASCII borders, banners, and title frames
31
+ - **Simple API** -- `.with_progress` on any Enumerable
32
+ - **Zero dependencies** -- Pure Ruby
33
+
34
+ ## Quick start
35
+
36
+ ~~~ruby
37
+ require "cockpit3000"
38
+
39
+ (1..100).with_progress.each do |i|
40
+ sleep(0.01)
41
+ end
42
+ ~~~
43
+
44
+ ## Usage
45
+
46
+ ### Basic progress bar
47
+
48
+ ~~~ruby
49
+ # Simple progress
50
+ items.with_progress.each { |item| process(item) }
51
+
52
+ # With title
53
+ items.with_progress(title: "Processing").each { |item| process(item) }
54
+
55
+ # Custom style and palette
56
+ items.with_progress(
57
+ title: "Loading",
58
+ style: :blocks,
59
+ palette: :fire,
60
+ width: 50
61
+ ).each { |item| load(item) }
62
+ ~~~
63
+
64
+ ### Tracking custom metrics
65
+
66
+ Return a hash from your block to automatically track metrics:
67
+
68
+ ~~~ruby
69
+ files.with_progress(title: "Analyzing Files").each do |file|
70
+ content = File.read(file)
71
+
72
+ # Return metrics -- they are tracked and displayed
73
+ {
74
+ size_kb: content.bytesize / 1024.0,
75
+ lines: content.lines.count,
76
+ words: content.split.count
77
+ }
78
+ end
79
+ ~~~
80
+
81
+ This displays real-time sparkline graphs for each metric showing:
82
+
83
+ - **avg** -- Running average
84
+ - **min** -- Minimum value seen
85
+ - **max** -- Maximum value seen
86
+ - **sum** -- Cumulative sum
87
+
88
+ ### Direct API
89
+
90
+ For more control, use the `Bar` class directly:
91
+
92
+ ~~~ruby
93
+ bar = ProgressBarNone::Bar.new(
94
+ total: items.count,
95
+ title: "Processing",
96
+ palette: :ocean
97
+ )
98
+
99
+ bar.start
100
+
101
+ items.each do |item|
102
+ result = process(item)
103
+ bar.increment(metrics: { duration: result.time, size: result.bytes })
104
+ end
105
+
106
+ bar.finish
107
+ ~~~
108
+
109
+ ### Multi-bar (nested progress)
110
+
111
+ ~~~ruby
112
+ multi = ProgressBarNone::MultiBar.new(title: "Build pipeline")
113
+
114
+ phases = [
115
+ { name: "Compile", units: 10, palette: :forest, style: :blocks },
116
+ { name: "Link", units: 6, palette: :sunset, style: :crystal },
117
+ { name: "Package", units: 4, palette: :ocean, style: :dots }
118
+ ]
119
+
120
+ phases.each do |phase|
121
+ (1..phase[:units]).with_progress(
122
+ title: phase[:name],
123
+ palette: phase[:palette],
124
+ style: phase[:style]
125
+ ).each { |_i| sleep(0.05) }
126
+ end
127
+ ~~~
128
+
129
+ ### Terminal presets
130
+
131
+ ~~~ruby
132
+ # Light terminal (higher contrast)
133
+ (1..30).with_progress(
134
+ title: "Day shift",
135
+ palette: :ocean,
136
+ style: :blocks,
137
+ spinner: :clock
138
+ ).each { sleep(0.03) }
139
+
140
+ # Dark terminal (neon aesthetics)
141
+ (1..30).with_progress(
142
+ title: "Night shift",
143
+ palette: :matrix,
144
+ style: :cyberpunk,
145
+ rainbow_mode: true,
146
+ spinner: :sparkle,
147
+ glow: true
148
+ ).each { sleep(0.03) }
149
+ ~~~
150
+
151
+ ### ProgressBar compatibility
152
+
153
+ Drop-in replacement for the `ruby-progressbar` API:
154
+
155
+ ~~~ruby
156
+ bar = ProgressBar.create(total: 100, title: "Working")
157
+ 100.times { bar.increment }
158
+ bar.finish
159
+ ~~~
160
+
161
+ ## Styles
162
+
163
+ | Style | Characters | Best for |
164
+ | ------- | --------- | -------- |
165
+ | `:crystal` | `βŸ¨β–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘βŸ©` | Modern terminals |
166
+ | `:blocks` | `[β–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘]` | Standard look |
167
+ | `:dots` | `(●●●●○○○○)` | Minimal |
168
+ | `:arrows` | `Β«β–Άβ–Άβ–Άβ–Άβ–Ήβ–Ήβ–Ήβ–ΉΒ»` | Directional |
169
+ | `:ascii` | `[####----]` | Maximum compatibility |
170
+
171
+ ## Color palettes
172
+
173
+ | Palette | Colors | Mood |
174
+ | --------- | ------ | ------ |
175
+ | `:crystal` | Cyan to Purple to Pink | Elegant, modern |
176
+ | `:fire` | Orange to Yellow | Warm, energetic |
177
+ | `:ocean` | Deep blue to Turquoise | Calm, professional |
178
+ | `:forest` | Deep green to Light green | Natural, growth |
179
+ | `:sunset` | Purple to Orange to Yellow | Vibrant, dramatic |
180
+ | `:rainbow` | Full spectrum | Colorful |
181
+ | `:mono` | Grayscale | Subtle, accessible |
182
+
183
+ ## Display elements
184
+
185
+ ~~~text
186
+ Processing Items
187
+ 45.0% βŸ¨β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘βŸ©
188
+ β Ή 45/100 4.5/s 10.0s ETA 12.2s
189
+
190
+ latency_ms β–β–‚β–ƒβ–„β–…β–†β–‡β–ˆβ–†β–…β–„β–ƒβ–‚β– avg:45.2 min:12 max:89 sum:2034
191
+ throughput β–‡β–†β–…β–„β–ƒβ–‚β–β–‚β–ƒβ–„β–…β–†β–‡β–ˆ avg:1.2K min:800 max:2.1K sum:54K
192
+ ~~~
193
+
194
+ Elements shown: progress percentage, animated progress bar, spinner, items completed/total, processing rate, elapsed time, ETA, and custom metrics with sparkline graphs.
195
+
196
+ ## Requirements
197
+
198
+ - Ruby 4.0+
199
+ - Terminal with Unicode support (for best results)
200
+ - True color support recommended (falls back gracefully)
201
+
202
+ ## Demo
203
+
204
+ Run the interactive demo:
205
+
206
+ ~~~bash
207
+ ruby bin/demo
208
+ ~~~
209
+
210
+ ## Benchmarks
211
+
212
+ Run locally:
213
+
214
+ ~~~bash
215
+ ruby test/benchmark🦫_test.rb # human-readable table
216
+ ruby test/benchmark🦫_test.rb --json # JSON for CI ingestion
217
+ BENCH_JSON=1 ruby test/benchmark🦫_test.rb --compare prior.json # compare against a prior run
218
+ ~~~
219
+
220
+ CI runs the full matrix (Ruby versions x OS x shell) on every push to main and archives results in `docs/benchmarks/`. The collation script (`bin/collate_benchmarks.rb`) generates comparison tables across environments.
221
+
222
+ ### Local baseline (CRuby 4.0.2 / macOS / zsh)
223
+
224
+ | Benchmark | Wall (s) | CPU (s) | Mem delta (KB) | Objects |
225
+ | --- | ---: | ---: | ---: | ---: |
226
+ | `ansi_strip_10k_calls` | 0.4458 | 0.4420 | 21,392 | 30,023 |
227
+ | `sparkline_1000_values` | 0.0644 | 0.0638 | 2,496 | 150,042 |
228
+ | `memory_stress_100_bars` | 0.0150 | 0.0149 | 1,408 | 64,524 |
229
+ | `ansi_color_18_palettes_x_1000` | 0.0111 | 0.0111 | 672 | 61,001 |
230
+ | `frames_all_styles` | 0.0054 | 0.0053 | 0 | 44,832 |
231
+ | `basic_progress_5000` | 0.0037 | 0.0037 | 32 | 15,362 |
232
+ | `direct_bar_api_5000` | 0.0035 | 0.0035 | 0 | 15,372 |
233
+ | `all_28_spinners` | 0.0030 | 0.0030 | 336 | 13,714 |
234
+ | `all_21_styles` | 0.0022 | 0.0022 | 32 | 10,405 |
235
+ | `all_18_palettes` | 0.0021 | 0.0021 | 576 | 8,335 |
236
+ | **Total (20 benchmarks)** | **0.564** | **0.559** | **peak: 49 MB** | **433,728** |
237
+
238
+ ## License
239
+
240
+ This project is governed by multiple terms and policies:
241
+
242
+ - [Free Art License 1.1](https://artlibre.org/licence/lal/en/)
243
+ - [Protein Database Terms of Service](https://www.rcsb.org/pages/policies)
244
+ - [Anna's Archive Privacy Policy](https://annas-archive.org/privacy)
245
+
246
+ SPDX: CC0-1.0. See `LICENSE` for details.
247
+
248
+ ## Author
249
+
250
+ Karl Amort -- [Bluesky](https://bsky.app/profile/amort.berlin) / [X](https://x.com/amortberlin)
@@ -0,0 +1 @@
1
+ require_relative "progressbarnone"
@@ -0,0 +1 @@
1
+ require_relative "progress🦫bar🦫none"