spin_to_win 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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