popro 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -6
- data/lib/popro/progress.rb +22 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0ed84ff76f7db2ab74b649ef29f62dab630f3b12dc0e2a8cf011382814d9396
|
4
|
+
data.tar.gz: ff292d589ecdfd671fe1136079611bc45ccbec5c262c2b831baef59799732de9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 810c7e4925421c86e3585d429a948f50de6ea913042b9c3edc6d13a63557286e9ca83f2d6c973700388d5934aff9097071b78db7c6b0c3eb162e6fba6666e566
|
7
|
+
data.tar.gz: ffab387b8fbed5b19e88d58d97a3001cff0f7855b9154754acd114c6bdd53bb846085d47fb04f7ed7c3a3972315f400a71dbbb6e28519a45b30243df39180f4a
|
data/README.md
CHANGED
@@ -1,13 +1,20 @@
|
|
1
1
|
# Po'Pro: The Poor-Man's Progress Indicator
|
2
2
|
|
3
|
+
[![Version](https://badge.fury.io/rb/popro.svg)](https://badge.fury.io/rb/popro)
|
4
|
+
[![Tests](https://github.com/MikeSmithEU/PoPro/workflows/Code%20quality%20&%20unit%20tests/badge.svg)](https://github.com/MikeSmithEU/PoPro/actions?query=workflow%3A%22Code+quality+%26+unit+tests%22)
|
5
|
+
|
6
|
+
## Current TODOs
|
7
|
+
|
8
|
+
- [ ] properly update documentation
|
9
|
+
- [ ] simplify some stuff (each0?)
|
10
|
+
- [ ] 100% code coverage
|
11
|
+
|
3
12
|
## Why?
|
4
13
|
|
5
14
|
Easier and cleaner progress indication.
|
6
15
|
|
7
16
|
## How?
|
8
17
|
|
9
|
-
TODO: properly update documentation, simplify some stuff. 100% code coverage
|
10
|
-
|
11
18
|
### Basic usage
|
12
19
|
|
13
20
|
The invocation `Popro#did(yielded)` is used to signify that one step in progress has been finished.
|
@@ -263,11 +270,11 @@ end
|
|
263
270
|
## Formatters
|
264
271
|
|
265
272
|
You can set your own formatters using `Popro#formatter(&block)`. Each formatter can be a `Proc`, `block` or
|
266
|
-
class implementing the `call` method (e.g. the `
|
273
|
+
class implementing the `call` method (e.g. the `Popro::Formatter::*` classes).
|
267
274
|
|
268
275
|
The formatter will be invoked with 2 arguments:
|
269
276
|
|
270
|
-
1. `info`, an instance of `
|
277
|
+
1. `info`, an instance of `Popro::Info` containing e.g. `current` and `total`.
|
271
278
|
2. `yielded`, whatever was passed to the `Popro#did` method.
|
272
279
|
|
273
280
|
It can also be used inside blocks.
|
@@ -315,7 +322,7 @@ would output:
|
|
315
322
|
|
316
323
|
Indicator classes are responsible for communicating the progress (or not, as the case may be).
|
317
324
|
|
318
|
-
It is possible to provide your own "indicators" or use one of the provided ones (see `
|
325
|
+
It is possible to provide your own "indicators" or use one of the provided ones (see `Popro::Indicator` module).
|
319
326
|
|
320
|
-
The default `
|
327
|
+
The default `Popro::Indicator` class is `Popro::Indicator.default` (which returns an instance of `Popro::Indicator::Stream`), which outputs the progress to STDOUT each time `Popro#did` or `Popro#will` is called.
|
321
328
|
|
data/lib/popro/progress.rb
CHANGED
@@ -6,17 +6,24 @@ module Popro
|
|
6
6
|
require_relative 'info'
|
7
7
|
require_relative 'indicator'
|
8
8
|
|
9
|
+
DEFAULT_OPTIONS ||= {
|
10
|
+
total: 0,
|
11
|
+
current: 0,
|
12
|
+
}.freeze
|
13
|
+
|
9
14
|
attr_reader :context
|
10
15
|
|
11
16
|
def initialize(**options)
|
17
|
+
options.merge!(DEFAULT_OPTIONS)
|
18
|
+
|
12
19
|
@started = false
|
20
|
+
|
13
21
|
@info = Info.new(total: options.delete(:total), current: options.delete(:current))
|
14
22
|
|
15
23
|
options[:step] ||= (block_given? ? 0 : 1)
|
16
|
-
|
17
|
-
options[:info] = @info
|
18
|
-
options[:indicator] = Indicator.default unless options.key? :indicator
|
24
|
+
indicator = Indicator.default unless options.key? :indicator
|
19
25
|
|
26
|
+
options.merge!(progress: self, info: @info, indicator: indicator)
|
20
27
|
@context = Context.new(**options)
|
21
28
|
|
22
29
|
register_aliases
|
@@ -26,6 +33,12 @@ module Popro
|
|
26
33
|
done
|
27
34
|
end
|
28
35
|
|
36
|
+
# increase the total
|
37
|
+
def add(amount)
|
38
|
+
@info.total += amount
|
39
|
+
self
|
40
|
+
end
|
41
|
+
|
29
42
|
private
|
30
43
|
|
31
44
|
def register_aliases
|
@@ -35,6 +48,12 @@ module Popro
|
|
35
48
|
@context.public_send(method_name, *args, &block)
|
36
49
|
end
|
37
50
|
end
|
51
|
+
|
52
|
+
%i[current total].each do |method_name|
|
53
|
+
define_method method_name do
|
54
|
+
@info.public_send(method_name)
|
55
|
+
end
|
56
|
+
end
|
38
57
|
end
|
39
58
|
end
|
40
59
|
end
|