infobar 0.0.1 → 0.0.2

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: 2b394ca03e7b4a64c6c3aaa730c05727fc33bb4c
4
- data.tar.gz: f0d57d7647a4c43decf21a3b001a14fa46fa321b
3
+ metadata.gz: 259fca2fcc19735ccd0650f9ca07aebd363d2370
4
+ data.tar.gz: c92a5e348371aa5a241e8bdac2eb1b886e3abe79
5
5
  SHA512:
6
- metadata.gz: 1b575a6725e49e44556b4866fb45985ca19790b51321d10cc5e0581df57f71ce8f55c7b4b598bd7dfd7f3d5cffd76558c5d5da46ac1d7d8cdfeff94644ff36a2
7
- data.tar.gz: 1793197d1e8b73ae6a611824d946c634fcc3fb2abce3ccc422de02da00568009b5daec63b19088571f8a5202d3adc39af97a97e5898f1e8940dab1cf94f7ccb0
6
+ metadata.gz: 9ab2fa237f9279a5b0b99239a0afe64845193317d22588dbda3a5b4fbbcdeb887f2a84b5912cf4425b0e96d0bdfc35d4aa227cf6470a3b670d1a2182e89c0729
7
+ data.tar.gz: 2ff8ec4f87a375fcf508182ffd30544305aa6ba6eb1c2f06cbb33af3d790c84e8dc3ad93f7a59e77a9482f80e88d72be59d93a220db4f4588aaa627926aed910
data/README.md CHANGED
@@ -21,6 +21,9 @@ Display progress of computations and additional information to the terminal.
21
21
 
22
22
  ## Changes
23
23
 
24
+ * 2017-02-10 Release 0.0.2
25
+ - Add trend arrow to rate directive
26
+
24
27
  * 2017-02-08 Release 0.0.1
25
28
  - Allow disabling of delegated output via infobar.show = false
26
29
 
data/Rakefile CHANGED
@@ -20,6 +20,7 @@ GemHadar do
20
20
  dependency 'tins', '~> 1.0', '>= 1.13.2'
21
21
  dependency 'term-ansicolor', '~> 1.4'
22
22
  dependency 'complex_config', '~> 0.10'
23
+ dependency 'more_math'
23
24
  development_dependency 'rake'
24
25
  development_dependency 'simplecov'
25
26
  development_dependency 'rspec'
data/TODO.md CHANGED
@@ -3,11 +3,11 @@
3
3
  - add color gradients?
4
4
  - cumulative counters to summarize several progress bars
5
5
  - categorize do progress and display accordingly
6
- - add trend arrow to rate
7
6
  - more documentation, lol
8
7
 
9
8
  ## DONE
10
9
 
10
+ - add trend arrow to rate
11
11
  - units
12
12
  - configuration file?
13
13
  - add finished directive
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
data/infobar.gemspec CHANGED
@@ -1,24 +1,24 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: infobar 0.0.1 ruby lib
2
+ # stub: infobar 0.0.2 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "infobar".freeze
6
- s.version = "0.0.1"
6
+ s.version = "0.0.2"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2017-02-08"
11
+ s.date = "2017-02-10"
12
12
  s.description = "This gem displays progress of computations and additional information to the terminal.".freeze
13
13
  s.email = "flori@ping.de".freeze
14
- s.extra_rdoc_files = ["README.md".freeze, "lib/infobar.rb".freeze, "lib/infobar/counter.rb".freeze, "lib/infobar/display.rb".freeze, "lib/infobar/duration.rb".freeze, "lib/infobar/fancy_interface.rb".freeze, "lib/infobar/frequency.rb".freeze, "lib/infobar/input_output.rb".freeze, "lib/infobar/message.rb".freeze, "lib/infobar/number.rb".freeze, "lib/infobar/spinner.rb".freeze, "lib/infobar/timer.rb".freeze, "lib/infobar/version.rb".freeze]
15
- s.files = [".gitignore".freeze, ".rspec".freeze, ".utilsrc".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "TODO.md".freeze, "VERSION".freeze, "infobar.gemspec".freeze, "lib/infobar.rb".freeze, "lib/infobar/counter.rb".freeze, "lib/infobar/display.rb".freeze, "lib/infobar/duration.rb".freeze, "lib/infobar/fancy_interface.rb".freeze, "lib/infobar/frequency.rb".freeze, "lib/infobar/input_output.rb".freeze, "lib/infobar/message.rb".freeze, "lib/infobar/number.rb".freeze, "lib/infobar/spinner.rb".freeze, "lib/infobar/timer.rb".freeze, "lib/infobar/version.rb".freeze, "spec/config/infobar.yml".freeze, "spec/infobar/config_spec.rb".freeze, "spec/infobar/counter_spec.rb".freeze, "spec/infobar/display_spec.rb".freeze, "spec/infobar/duration_spec.rb".freeze, "spec/infobar/frequency_spec.rb".freeze, "spec/infobar/input_output_spec.rb".freeze, "spec/infobar/message_spec.rb".freeze, "spec/infobar/number_spec.rb".freeze, "spec/infobar/spinner_spec.rb".freeze, "spec/infobar/timer_spec.rb".freeze, "spec/infobar_spec.rb".freeze, "spec/spec_helper.rb".freeze]
14
+ s.extra_rdoc_files = ["README.md".freeze, "lib/infobar.rb".freeze, "lib/infobar/counter.rb".freeze, "lib/infobar/display.rb".freeze, "lib/infobar/duration.rb".freeze, "lib/infobar/fancy_interface.rb".freeze, "lib/infobar/fifo.rb".freeze, "lib/infobar/frequency.rb".freeze, "lib/infobar/input_output.rb".freeze, "lib/infobar/message.rb".freeze, "lib/infobar/number.rb".freeze, "lib/infobar/rate.rb".freeze, "lib/infobar/spinner.rb".freeze, "lib/infobar/timer.rb".freeze, "lib/infobar/trend.rb".freeze, "lib/infobar/version.rb".freeze]
15
+ s.files = [".gitignore".freeze, ".rspec".freeze, ".utilsrc".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "TODO.md".freeze, "VERSION".freeze, "infobar.gemspec".freeze, "lib/infobar.rb".freeze, "lib/infobar/counter.rb".freeze, "lib/infobar/display.rb".freeze, "lib/infobar/duration.rb".freeze, "lib/infobar/fancy_interface.rb".freeze, "lib/infobar/fifo.rb".freeze, "lib/infobar/frequency.rb".freeze, "lib/infobar/input_output.rb".freeze, "lib/infobar/message.rb".freeze, "lib/infobar/number.rb".freeze, "lib/infobar/rate.rb".freeze, "lib/infobar/spinner.rb".freeze, "lib/infobar/timer.rb".freeze, "lib/infobar/trend.rb".freeze, "lib/infobar/version.rb".freeze, "spec/config/infobar.yml".freeze, "spec/infobar/config_spec.rb".freeze, "spec/infobar/counter_spec.rb".freeze, "spec/infobar/display_spec.rb".freeze, "spec/infobar/duration_spec.rb".freeze, "spec/infobar/fifo_spec.rb".freeze, "spec/infobar/frequency_spec.rb".freeze, "spec/infobar/input_output_spec.rb".freeze, "spec/infobar/message_spec.rb".freeze, "spec/infobar/number_spec.rb".freeze, "spec/infobar/rate_spec.rb".freeze, "spec/infobar/spinner_spec.rb".freeze, "spec/infobar/timer_spec.rb".freeze, "spec/infobar/trend_spec.rb".freeze, "spec/infobar_spec.rb".freeze, "spec/spec_helper.rb".freeze]
16
16
  s.homepage = "http://flori.github.com/infobar".freeze
17
17
  s.rdoc_options = ["--title".freeze, "Infobar".freeze, "--main".freeze, "README.md".freeze]
18
18
  s.required_ruby_version = Gem::Requirement.new(">= 2.3".freeze)
19
19
  s.rubygems_version = "2.6.8".freeze
20
20
  s.summary = "Gem to display information about computations.".freeze
21
- s.test_files = ["spec/infobar/config_spec.rb".freeze, "spec/infobar/counter_spec.rb".freeze, "spec/infobar/display_spec.rb".freeze, "spec/infobar/duration_spec.rb".freeze, "spec/infobar/frequency_spec.rb".freeze, "spec/infobar/input_output_spec.rb".freeze, "spec/infobar/message_spec.rb".freeze, "spec/infobar/number_spec.rb".freeze, "spec/infobar/spinner_spec.rb".freeze, "spec/infobar/timer_spec.rb".freeze, "spec/infobar_spec.rb".freeze, "spec/spec_helper.rb".freeze]
21
+ s.test_files = ["spec/infobar/config_spec.rb".freeze, "spec/infobar/counter_spec.rb".freeze, "spec/infobar/display_spec.rb".freeze, "spec/infobar/duration_spec.rb".freeze, "spec/infobar/fifo_spec.rb".freeze, "spec/infobar/frequency_spec.rb".freeze, "spec/infobar/input_output_spec.rb".freeze, "spec/infobar/message_spec.rb".freeze, "spec/infobar/number_spec.rb".freeze, "spec/infobar/rate_spec.rb".freeze, "spec/infobar/spinner_spec.rb".freeze, "spec/infobar/timer_spec.rb".freeze, "spec/infobar/trend_spec.rb".freeze, "spec/infobar_spec.rb".freeze, "spec/spec_helper.rb".freeze]
22
22
 
23
23
  if s.respond_to? :specification_version then
24
24
  s.specification_version = 4
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
31
31
  s.add_runtime_dependency(%q<tins>.freeze, [">= 1.13.2", "~> 1.0"])
32
32
  s.add_runtime_dependency(%q<term-ansicolor>.freeze, ["~> 1.4"])
33
33
  s.add_runtime_dependency(%q<complex_config>.freeze, ["~> 0.10"])
34
+ s.add_runtime_dependency(%q<more_math>.freeze, [">= 0"])
34
35
  else
35
36
  s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.9.1"])
36
37
  s.add_dependency(%q<rake>.freeze, [">= 0"])
@@ -39,6 +40,7 @@ Gem::Specification.new do |s|
39
40
  s.add_dependency(%q<tins>.freeze, [">= 1.13.2", "~> 1.0"])
40
41
  s.add_dependency(%q<term-ansicolor>.freeze, ["~> 1.4"])
41
42
  s.add_dependency(%q<complex_config>.freeze, ["~> 0.10"])
43
+ s.add_dependency(%q<more_math>.freeze, [">= 0"])
42
44
  end
43
45
  else
44
46
  s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.9.1"])
@@ -48,5 +50,6 @@ Gem::Specification.new do |s|
48
50
  s.add_dependency(%q<tins>.freeze, [">= 1.13.2", "~> 1.0"])
49
51
  s.add_dependency(%q<term-ansicolor>.freeze, ["~> 1.4"])
50
52
  s.add_dependency(%q<complex_config>.freeze, ["~> 0.10"])
53
+ s.add_dependency(%q<more_math>.freeze, [">= 0"])
51
54
  end
52
55
  end
data/lib/infobar.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'tins/xt'
2
2
  require 'complex_config'
3
+ require 'more_math'
3
4
 
4
5
  class Infobar
5
6
  end
@@ -1,7 +1,7 @@
1
1
  require 'infobar/timer'
2
2
 
3
3
  class Infobar::Counter
4
- class <<
4
+ class << self
5
5
  prepend Tins::Delegate
6
6
  end
7
7
 
@@ -23,6 +23,8 @@ class Infobar::Counter
23
23
 
24
24
  delegate :rate, to: :@timer
25
25
 
26
+ delegate :fifo, to: :@timer, as: :fifo_rate
27
+
26
28
  delegate :average_time, to: :@timer
27
29
 
28
30
  def started?
@@ -0,0 +1,40 @@
1
+ class Infobar::FIFO
2
+ include Enumerable
3
+
4
+ def initialize(n)
5
+ @n = n
6
+ clear
7
+ end
8
+
9
+ def max_size
10
+ @n
11
+ end
12
+
13
+ def <<(value)
14
+ @i += 1
15
+ if @i > @n
16
+ @values.shift
17
+ @i -= 1
18
+ end
19
+ @values.push(value)
20
+ self
21
+ end
22
+
23
+ def each(&block)
24
+ @values.each(&block)
25
+ self
26
+ end
27
+
28
+ def empty?
29
+ @i.zero?
30
+ end
31
+
32
+ alias size count
33
+
34
+ def clear
35
+ @i = 0
36
+ @values = []
37
+ self
38
+ end
39
+ end
40
+
@@ -1,6 +1,7 @@
1
1
  require 'infobar/spinner'
2
2
  require 'infobar/duration'
3
3
  require 'infobar/number'
4
+ require 'infobar/rate'
4
5
 
5
6
  class Infobar::Message
6
7
  class << self
@@ -88,12 +89,8 @@ class Infobar::Message
88
89
  end
89
90
 
90
91
  # rate with or without units
91
- register('%r', unit: nil, prefix: 1000, format: '%f %U') do |directive, opts|
92
- if opts[:unit]
93
- Tins::Unit.format(Infobar.counter.rate, **opts)
94
- else
95
- Infobar.counter.rate
96
- end
92
+ register('%r', unit: nil, prefix: 1000, format: '%.3f%U%t') do |directive, opts|
93
+ Infobar::Rate.new(Infobar.counter.rate, Infobar.counter.fifo_rate, **opts)
97
94
  end
98
95
 
99
96
  # average time as a duration
@@ -0,0 +1,28 @@
1
+ require 'infobar/trend'
2
+
3
+ class Infobar::Rate
4
+ def initialize(value, fifo_values = [], **opts)
5
+ opts[:format] = add_trend(opts[:format], fifo_values)
6
+ @string =
7
+ if opts[:format].include?('%U')
8
+ Tins::Unit.format(value, **opts)
9
+ else
10
+ opts[:format] % value
11
+ end
12
+ end
13
+
14
+ def to_s
15
+ @string
16
+ end
17
+
18
+ private
19
+
20
+ def add_trend(format, fifo_values)
21
+ if fifo_values.empty?
22
+ format.gsub('%t', ?⤿)
23
+ else
24
+ trend = Infobar::Trend.new(fifo_values)
25
+ format.gsub('%t', trend.to_s)
26
+ end
27
+ end
28
+ end
data/lib/infobar/timer.rb CHANGED
@@ -1,13 +1,18 @@
1
+ require 'infobar/fifo'
2
+
1
3
  class Infobar::Timer
2
4
  def initialize
3
5
  @n = 0
4
6
  @x = 0.0
7
+ @fifo = Infobar::FIFO.new(30)
5
8
  end
6
9
 
7
10
  attr_reader :x
8
11
 
9
12
  attr_reader :n
10
13
 
14
+ attr_reader :fifo
15
+
11
16
  def add(time, count)
12
17
  case @n
13
18
  when 0
@@ -42,6 +47,7 @@ class Infobar::Timer
42
47
  def <<(x)
43
48
  @n +=1
44
49
  @x += (x - @x) / @n
50
+ @fifo << rate
45
51
  self
46
52
  end
47
53
  end
@@ -0,0 +1,25 @@
1
+ class Infobar::Trend
2
+ def initialize(values, symbols: %i[ ↘ → ↗ ])
3
+ @values = values
4
+ @symbols = symbols
5
+ @string = arrow
6
+ end
7
+
8
+ def to_s
9
+ @string
10
+ end
11
+
12
+ private
13
+
14
+ def arrow
15
+ lr = MoreMath::LinearRegression.new(@values)
16
+ case
17
+ when lr.slope_zero?
18
+ @symbols[1]
19
+ when lr.a > 0
20
+ @symbols[2]
21
+ else
22
+ @symbols[0]
23
+ end.to_s
24
+ end
25
+ end
@@ -1,6 +1,6 @@
1
1
  class Infobar
2
2
  # Infobar version
3
- VERSION = '0.0.1'
3
+ VERSION = '0.0.2'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe Infobar::FIFO do
4
+ let :fifo do
5
+ described_class.new(3)
6
+ end
7
+
8
+ it 'has max_size' do
9
+ expect(fifo.max_size).to eq 3
10
+ end
11
+
12
+ it 'has size' do
13
+ expect(fifo.size).to eq 0
14
+ fifo << 1
15
+ expect(fifo.size).to eq 1
16
+ end
17
+
18
+ it 'has size <= max_size' do
19
+ fifo << 1 << 2 << 3 << 4
20
+ expect(fifo.size).to eq 3
21
+ end
22
+
23
+ it 'can be added to' do
24
+ fifo << 1 << 2
25
+ expect(fifo.to_a).to eq [ 1, 2 ]
26
+ end
27
+
28
+ it 'can be empty' do
29
+ expect(fifo).to be_empty
30
+ end
31
+
32
+ it 'can be non-empty' do
33
+ fifo << 1
34
+ expect(fifo).not_to be_empty
35
+ end
36
+
37
+ it 'can be cleared' do
38
+ fifo << 1
39
+ expect(fifo).not_to be_empty
40
+ expect(fifo.clear).to be_empty
41
+ end
42
+ end
@@ -33,7 +33,7 @@ describe Infobar::Message do
33
33
  it 'can be interpolated' do
34
34
  Time.dummy(now) do
35
35
  expect(message.to_str).to eq(
36
- "23 42 19 Test 0.55 0.452 54.76 45.24 00:00:02 00:00:21 00:00:19 11:11:30 1.0 00:01.000000 – %"
36
+ "23 42 19 Test 0.55 0.452 54.76 45.24 00:00:02 00:00:21 00:00:19 11:11:30 1.000→ 00:01.000000 – %"
37
37
  )
38
38
  end
39
39
  end
@@ -57,6 +57,14 @@ describe Infobar::Message do
57
57
  end
58
58
  end
59
59
 
60
+ it 'can display eta in native format' do
61
+ Time.dummy(now) do
62
+ message =
63
+ described_class.new(format: 'test %E', '%E' => { format: nil }).to_str
64
+ expect(message).to eq "test #{now + 19}"
65
+ end
66
+ end
67
+
60
68
  it 'can be converted into a format string' do
61
69
  expect(message.to_s).to eq format
62
70
  end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Infobar::Rate do
4
+ context 'with trend' do
5
+ let :rate do
6
+ described_class.new(23.45, (1..10).to_a, format: '%.2f%t')
7
+ end
8
+
9
+ it 'can be displayed' do
10
+ expect(rate.to_s).to eq '23.45↗'
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe Infobar::Trend do
4
+ let :trend do
5
+ described_class.new(values)
6
+ end
7
+
8
+ context 'downwards' do
9
+ let :values do
10
+ (1..10).to_a.reverse
11
+ end
12
+
13
+ it 'can be a string' do
14
+ expect(trend.to_s).to eq ?↘
15
+ end
16
+ end
17
+
18
+ context 'sideways' do
19
+ let :values do
20
+ [ Math::PI ] * 10
21
+ end
22
+
23
+ it 'can be a string' do
24
+ expect(trend.to_s).to eq ?→
25
+ end
26
+ end
27
+
28
+ context 'upwards' do
29
+ let :values do
30
+ (1..10).to_a
31
+ end
32
+
33
+ it 'can be a string' do
34
+ expect(trend.to_s).to eq ?↗
35
+ end
36
+ end
37
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infobar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-08 00:00:00.000000000 Z
11
+ date: 2017-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -114,6 +114,20 @@ dependencies:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0.10'
117
+ - !ruby/object:Gem::Dependency
118
+ name: more_math
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
117
131
  description: This gem displays progress of computations and additional information
118
132
  to the terminal.
119
133
  email: flori@ping.de
@@ -126,12 +140,15 @@ extra_rdoc_files:
126
140
  - lib/infobar/display.rb
127
141
  - lib/infobar/duration.rb
128
142
  - lib/infobar/fancy_interface.rb
143
+ - lib/infobar/fifo.rb
129
144
  - lib/infobar/frequency.rb
130
145
  - lib/infobar/input_output.rb
131
146
  - lib/infobar/message.rb
132
147
  - lib/infobar/number.rb
148
+ - lib/infobar/rate.rb
133
149
  - lib/infobar/spinner.rb
134
150
  - lib/infobar/timer.rb
151
+ - lib/infobar/trend.rb
135
152
  - lib/infobar/version.rb
136
153
  files:
137
154
  - ".gitignore"
@@ -148,24 +165,30 @@ files:
148
165
  - lib/infobar/display.rb
149
166
  - lib/infobar/duration.rb
150
167
  - lib/infobar/fancy_interface.rb
168
+ - lib/infobar/fifo.rb
151
169
  - lib/infobar/frequency.rb
152
170
  - lib/infobar/input_output.rb
153
171
  - lib/infobar/message.rb
154
172
  - lib/infobar/number.rb
173
+ - lib/infobar/rate.rb
155
174
  - lib/infobar/spinner.rb
156
175
  - lib/infobar/timer.rb
176
+ - lib/infobar/trend.rb
157
177
  - lib/infobar/version.rb
158
178
  - spec/config/infobar.yml
159
179
  - spec/infobar/config_spec.rb
160
180
  - spec/infobar/counter_spec.rb
161
181
  - spec/infobar/display_spec.rb
162
182
  - spec/infobar/duration_spec.rb
183
+ - spec/infobar/fifo_spec.rb
163
184
  - spec/infobar/frequency_spec.rb
164
185
  - spec/infobar/input_output_spec.rb
165
186
  - spec/infobar/message_spec.rb
166
187
  - spec/infobar/number_spec.rb
188
+ - spec/infobar/rate_spec.rb
167
189
  - spec/infobar/spinner_spec.rb
168
190
  - spec/infobar/timer_spec.rb
191
+ - spec/infobar/trend_spec.rb
169
192
  - spec/infobar_spec.rb
170
193
  - spec/spec_helper.rb
171
194
  homepage: http://flori.github.com/infobar
@@ -200,11 +223,14 @@ test_files:
200
223
  - spec/infobar/counter_spec.rb
201
224
  - spec/infobar/display_spec.rb
202
225
  - spec/infobar/duration_spec.rb
226
+ - spec/infobar/fifo_spec.rb
203
227
  - spec/infobar/frequency_spec.rb
204
228
  - spec/infobar/input_output_spec.rb
205
229
  - spec/infobar/message_spec.rb
206
230
  - spec/infobar/number_spec.rb
231
+ - spec/infobar/rate_spec.rb
207
232
  - spec/infobar/spinner_spec.rb
208
233
  - spec/infobar/timer_spec.rb
234
+ - spec/infobar/trend_spec.rb
209
235
  - spec/infobar_spec.rb
210
236
  - spec/spec_helper.rb