spin_to_win 0.1.0 → 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/README.md +40 -9
- data/lib/spin_to_win/spinner.rb +24 -13
- data/lib/spin_to_win/version.rb +1 -1
- data/lib/spin_to_win.rb +2 -2
- data/spin_to_win.gemspec +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4728b0bd3d8e135d747b274a2d40663869bb75d0
|
4
|
+
data.tar.gz: 80629e5dbac4d58bb5774561ff1a5752ee83a76b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b482c290ec777e4f8a1808bf776cceca1c8c2ee7b39f1523c65f425c490ca063ab160d11c6aad845d36d5d199a0735cc10587e364142b3070420f4759a58c67
|
7
|
+
data.tar.gz: 751c8e491815a5249be4135e46445b3afb1962681e5d9e6cd468cdef8885d2924184a5af161980a26eaab45275b6d0e08eb95927acb5b5fb9b67772150fbb1ef
|
data/README.md
CHANGED
@@ -3,6 +3,46 @@
|
|
3
3
|
Simple ruby spinner that allows on the fly notifications in the format of:
|
4
4
|
|
5
5
|
:title :spinner :finished of :todo [:banner]
|
6
|
+
|
7
|
+
The bare bones spinner is
|
8
|
+
|
9
|
+
SpinToWin.with_spinner { sleep 1 }
|
10
|
+
|
11
|
+
\
|
12
|
+
|
13
|
+
With a title is
|
14
|
+
|
15
|
+
SpinToWin.with_spinner('Zzzz') { sleep 1 }`
|
16
|
+
|
17
|
+
Zzzz \
|
18
|
+
|
19
|
+
With a title and banner:
|
20
|
+
|
21
|
+
SpinToWin.with_spinner('Zzzz') { |spinner| spinner.banner('sleepy'); sleep 1 }
|
22
|
+
|
23
|
+
Zzzz \ [sleepy]
|
24
|
+
|
25
|
+
The title is persistent but the banner can be changed with calls to the yielded `spinner`
|
26
|
+
|
27
|
+
With title, banner, and todos
|
28
|
+
|
29
|
+
SpinToWin.with_spinner('Zzzz') do |spinner|
|
30
|
+
spinner.increment_todo!(3)
|
31
|
+
|
32
|
+
spinner.banner('snore')
|
33
|
+
sleep 1
|
34
|
+
spinner.increment_done!
|
35
|
+
|
36
|
+
spinner.banner('dream')
|
37
|
+
sleep 1
|
38
|
+
spinner.increment_done!
|
39
|
+
|
40
|
+
spinner.banner('wake up!')
|
41
|
+
sleep 1
|
42
|
+
spinner.increment_done!
|
43
|
+
end
|
44
|
+
|
45
|
+
Zzzz \ 3 of 3 [wake up!]
|
6
46
|
|
7
47
|
## Installation
|
8
48
|
|
@@ -21,15 +61,6 @@ Or install it yourself as:
|
|
21
61
|
$ gem install spin_to_win
|
22
62
|
|
23
63
|
## Usage
|
24
|
-
|
25
|
-

|
26
|
-
|
27
|
-
SpinToWin.with_spinner('Fancy Demo') do |spinner|
|
28
|
-
spinner.banner 'step 1'
|
29
|
-
sleep 1
|
30
|
-
spinner.banner 'step 2'
|
31
|
-
sleep 1
|
32
|
-
end
|
33
64
|
|
34
65
|
Fancy Demo \ 1 of 3 [step 1]
|
35
66
|
|
data/lib/spin_to_win/spinner.rb
CHANGED
@@ -9,12 +9,22 @@ module SpinToWin
|
|
9
9
|
include Celluloid
|
10
10
|
include Celluloid::Notifications
|
11
11
|
|
12
|
-
|
12
|
+
LINE_CHARS = %w(| / - \\).freeze
|
13
|
+
BRAILLE_CHARS = %w(⣾ ⣽ ⣻ ⢿ ⡿ ⣟ ⣯ ⣷).freeze
|
14
|
+
BAR_CHARS = %w(┤ ┘ ┴ └ ├ ┌ ┬ ┐).freeze
|
15
|
+
CIRCLE_CHAR = %w(◐ ◓ ◑ ◒).freeze
|
16
|
+
|
17
|
+
SPIN_CHARSET = {
|
18
|
+
line: LINE_CHARS,
|
19
|
+
braille: BRAILLE_CHARS,
|
20
|
+
bar: BAR_CHARS,
|
21
|
+
circle: CIRCLE_CHAR
|
22
|
+
}.freeze
|
13
23
|
|
14
24
|
class << self
|
15
25
|
# rubocop:disable UnusedMethodArgument
|
16
|
-
def with_spinner(title = nil, &blk)
|
17
|
-
spinner = Spinner.new(title)
|
26
|
+
def with_spinner(title = nil, charset: :line, &blk)
|
27
|
+
spinner = Spinner.new(title, charset: charset)
|
18
28
|
the_spin = spinner.future.spin
|
19
29
|
result = yield(spinner)
|
20
30
|
spinner.complete!
|
@@ -26,8 +36,9 @@ module SpinToWin
|
|
26
36
|
# rubocop:enable UnusedMethodArgument
|
27
37
|
end
|
28
38
|
|
29
|
-
def initialize(title = nil)
|
39
|
+
def initialize(title = nil, charset: :line)
|
30
40
|
@title = title
|
41
|
+
@charset = SPIN_CHARSET[charset.to_sym]
|
31
42
|
|
32
43
|
subscribe('spinner_increment_todo', :on_increment_todo)
|
33
44
|
subscribe('spinner_increment_done', :on_increment_done)
|
@@ -40,7 +51,7 @@ module SpinToWin
|
|
40
51
|
|
41
52
|
def spin(fps = 12)
|
42
53
|
delay = 1.0 / fps
|
43
|
-
|
54
|
+
iteration = previous_msg_size = 0
|
44
55
|
|
45
56
|
init_spinner
|
46
57
|
|
@@ -48,7 +59,7 @@ module SpinToWin
|
|
48
59
|
while @run
|
49
60
|
output_log
|
50
61
|
|
51
|
-
msg = build_message(
|
62
|
+
msg = build_message(iteration += 1)
|
52
63
|
previous_msg_size = print_message(msg, previous_msg_size, delay)
|
53
64
|
end
|
54
65
|
|
@@ -56,18 +67,18 @@ module SpinToWin
|
|
56
67
|
puts "WARNING: spinner completed with pending jobs #{@done_count} of #{@todo_count}"
|
57
68
|
end
|
58
69
|
|
59
|
-
$stderr.print build_message(
|
70
|
+
$stderr.print build_message(iteration)
|
60
71
|
$stderr.puts ''
|
61
72
|
|
62
|
-
|
73
|
+
iteration
|
63
74
|
end
|
64
75
|
|
65
|
-
def increment_todo!
|
66
|
-
@todo_count +=
|
76
|
+
def increment_todo!(count = 1)
|
77
|
+
@todo_count += count
|
67
78
|
end
|
68
79
|
|
69
|
-
def increment_done!
|
70
|
-
@done_count +=
|
80
|
+
def increment_done!(count = 1)
|
81
|
+
@done_count += count
|
71
82
|
end
|
72
83
|
|
73
84
|
def complete!
|
@@ -126,7 +137,7 @@ module SpinToWin
|
|
126
137
|
end
|
127
138
|
|
128
139
|
def build_message(position)
|
129
|
-
msg = "#{@title} #{
|
140
|
+
msg = "#{@title} #{@charset[position % @charset.length]}"
|
130
141
|
msg << " #{@done_count} of #{@todo_count}" if @todo_count > 0
|
131
142
|
msg << " [#{@banner_queue.join('|')}]" unless @banner_queue.empty?
|
132
143
|
msg
|
data/lib/spin_to_win/version.rb
CHANGED
data/lib/spin_to_win.rb
CHANGED
@@ -29,8 +29,8 @@ module SpinToWin
|
|
29
29
|
Celluloid::Notifications.notifier.publish('spinner_remove_banner', msg)
|
30
30
|
end
|
31
31
|
|
32
|
-
def with_spinner(title = nil, &blk)
|
33
|
-
SpinToWin::Spinner.with_spinner(title, &blk)
|
32
|
+
def with_spinner(title = nil, charset: :line, &blk)
|
33
|
+
SpinToWin::Spinner.with_spinner(title, charset: charset, &blk)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
data/spin_to_win.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency 'celluloid'
|
21
|
+
spec.add_dependency 'celluloid', '~> 0.17'
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.10"
|
23
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
24
|
spec.add_development_dependency "pry"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spin_to_win
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Guymon
|
@@ -14,16 +14,16 @@ dependencies:
|
|
14
14
|
name: celluloid
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '0.17'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '0.17'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|