popro 0.0.1 → 0.1.1
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 +4 -4
- data/lib/popro.rb +4 -6
- data/lib/popro/context.rb +31 -32
- data/lib/popro/info.rb +0 -1
- data/lib/popro/progress.rb +1 -1
- 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: ce1a842c500f314f3ed8ba0e7e9deb5a4ece7cbf81ea11563664336cf35ddcd1
|
4
|
+
data.tar.gz: 3d313f96ff1b5dda33e51ec994ee592447e957201ebf059b86caef3d0d830c53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d68080c7a53d74a50e15fdb252f7aacbc57616a9de4aeb12bff133f715c347f07cdb6c9e2643d769a48babf01c6eb127e9e2dd6bdcd3d028d460efda34068d3b
|
7
|
+
data.tar.gz: f699ce90d06692c3ccfa71a342e1eceda39456c0599891c535f024ff0b64cec5eb8c8a56d5d91f83d96f300d5009c8098a7f73cdcb62ccf778fbc0a7feb0b96b
|
data/lib/popro.rb
CHANGED
@@ -14,15 +14,13 @@ module Popro
|
|
14
14
|
Progress.new(**options, &block)
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.each(obj,
|
17
|
+
def self.each(obj, total = nil, **options, &block)
|
18
|
+
options[:step] = 0 unless options.key? :step
|
18
19
|
new(0, **options).each(obj, total, &block).done
|
19
20
|
end
|
20
21
|
|
21
|
-
def self.
|
22
|
-
|
23
|
-
|
24
|
-
options[:step] = 0
|
25
|
-
each(obj, 0, **options, &block)
|
22
|
+
def self.each_will(obj, titler, total = nil, **options, &block)
|
23
|
+
new(0, **options).each_will(obj, titler, total, &block).done
|
26
24
|
end
|
27
25
|
|
28
26
|
def self.command_line(*_args)
|
data/lib/popro/context.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module Popro
|
4
4
|
# the progress context passed as first argument to blocks (or named argument for `Progress#each` and `Popro.each`)
|
5
5
|
|
6
|
-
WILL_CHECK_MARKS ||= '
|
6
|
+
WILL_CHECK_MARKS ||= ' ✔'
|
7
7
|
|
8
8
|
class Context
|
9
9
|
def initialize(progress:, info:, indicator:, step: 1)
|
@@ -14,25 +14,17 @@ module Popro
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def each(obj, total = nil, &block)
|
17
|
-
total
|
18
|
-
|
19
|
-
block = proc { |d| d } unless block_given?
|
20
|
-
|
21
|
-
obj.each do |*args|
|
22
|
-
did block.call(*args, progress: self)
|
17
|
+
_each(obj, total) do |*args|
|
18
|
+
did block.call(*args, progress: @info)
|
23
19
|
end
|
24
|
-
|
25
|
-
self
|
26
20
|
end
|
27
21
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
kwargs[:progress].will titler.call(*args) do
|
35
|
-
yield(*args, **kwargs)
|
22
|
+
def each_will(obj, titler, total = nil, &block)
|
23
|
+
_each(obj, total) do |*args|
|
24
|
+
title = titler.call(*args)
|
25
|
+
will(title) do
|
26
|
+
block.call(*args, progress: @info)
|
27
|
+
nil
|
36
28
|
end
|
37
29
|
end
|
38
30
|
end
|
@@ -59,25 +51,25 @@ module Popro
|
|
59
51
|
block
|
60
52
|
end
|
61
53
|
|
62
|
-
def did(yielded = nil, amount =
|
54
|
+
def did(yielded = nil, amount = nil)
|
63
55
|
@info.start unless @info.running?
|
64
|
-
|
56
|
+
amount = @step if amount.nil?
|
57
|
+
raise TypeError('amount: expected an integer') unless amount.is_a? Integer
|
58
|
+
|
59
|
+
@info.current += amount unless amount.zero?
|
60
|
+
@indicator.call(@info, yielded)
|
65
61
|
|
66
62
|
self
|
67
63
|
end
|
68
64
|
|
69
|
-
def will(title = nil,
|
70
|
-
|
71
|
-
inc 0, "#{WILL_CHECK_MARKS[0]} #{title}"
|
65
|
+
def will(title = nil, step = nil, &block)
|
66
|
+
did "#{WILL_CHECK_MARKS[0]} #{title}", 0
|
72
67
|
|
73
68
|
return self unless block_given?
|
74
69
|
|
75
|
-
|
76
|
-
yielded =
|
77
|
-
yielded
|
78
|
-
|
79
|
-
# no need to communicate to Indicator if we are not advancing (avoid double calls)
|
80
|
-
did yielded, step unless step.zero?
|
70
|
+
block.call
|
71
|
+
yielded = "#{WILL_CHECK_MARKS[1]} #{title}"
|
72
|
+
did(yielded, step || @step)
|
81
73
|
yielded
|
82
74
|
end
|
83
75
|
|
@@ -87,11 +79,18 @@ module Popro
|
|
87
79
|
|
88
80
|
private
|
89
81
|
|
90
|
-
def
|
91
|
-
|
82
|
+
def _each(obj, total = nil, &block)
|
83
|
+
total = obj.size if total.nil?
|
84
|
+
raise TypeError('total: expected an integer') unless total.is_a?(Integer) || total.nil?
|
92
85
|
|
93
|
-
@info.
|
94
|
-
|
86
|
+
@info.total += total if total.positive?
|
87
|
+
# block = proc { |d| d } unless block_given?
|
88
|
+
|
89
|
+
obj.each do |*args, **kwargs|
|
90
|
+
block.call(*args, **kwargs)
|
91
|
+
end
|
92
|
+
|
93
|
+
self
|
95
94
|
end
|
96
95
|
end
|
97
96
|
end
|
data/lib/popro/info.rb
CHANGED
data/lib/popro/progress.rb
CHANGED
@@ -30,7 +30,7 @@ module Popro
|
|
30
30
|
|
31
31
|
def register_aliases
|
32
32
|
class << self
|
33
|
-
%i[each
|
33
|
+
%i[each each_will to_proc did will formatter start done].each do |method_name|
|
34
34
|
define_method method_name do |*args, &block|
|
35
35
|
@context.public_send(method_name, *args, &block)
|
36
36
|
end
|