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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96f8ff8cb310c0730e9667869904c3d3827a6d48
4
- data.tar.gz: 46d7c9f2e1d52b8a508637278c8a67cb7b1f3305
3
+ metadata.gz: 4728b0bd3d8e135d747b274a2d40663869bb75d0
4
+ data.tar.gz: 80629e5dbac4d58bb5774561ff1a5752ee83a76b
5
5
  SHA512:
6
- metadata.gz: dc02d9e6f7aff1f7c4faca22a690d51704a7e03d0be356abd5b999d31ea35e15ba3bb9f92ce14c38afbdee632d1fa556e49bbb94aaa568e0b80962280a874fba
7
- data.tar.gz: 2b11c28e70f7753932955e3d63792221cbbe68f2ceab3880375672e36f1aa5d1080623f99b6b026e4e58bbd403600f426dcf852b13f520f91441b095ed881f68
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
- ![](https://raw.githubusercontent.com/mguymon/spin_to_win/master/examples/demo.gif)
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
 
@@ -9,12 +9,22 @@ module SpinToWin
9
9
  include Celluloid
10
10
  include Celluloid::Notifications
11
11
 
12
- SPIN_CHARS = %w(| / - \\).freeze
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
- iter = previous_msg_size = 0
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(iter += 1)
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(iter)
70
+ $stderr.print build_message(iteration)
60
71
  $stderr.puts ''
61
72
 
62
- iter
73
+ iteration
63
74
  end
64
75
 
65
- def increment_todo!
66
- @todo_count += 1
76
+ def increment_todo!(count = 1)
77
+ @todo_count += count
67
78
  end
68
79
 
69
- def increment_done!
70
- @done_count += 1
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} #{SPIN_CHARS[position % SPIN_CHARS.length]}"
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
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module SpinToWin
3
- VERSION = '0.1.0'.freeze
3
+ VERSION = '0.1.1'.freeze
4
4
  end
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.0
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