blackbox 4.0.3 → 4.0.4

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
- SHA1:
3
- metadata.gz: db0c7a14307af202cc6c2068f5caf3894b4999df
4
- data.tar.gz: 011e9fe07575b3f2ce88db28cfa473e78249a1f1
2
+ SHA256:
3
+ metadata.gz: a75dc7b8e492b44ce83849329fbecc8597a8cc49864518f0fbf171e18beddf99
4
+ data.tar.gz: 5f9974e1a560d5da0530bfbd78d62c5bf174e4a142c08431c897f1d5dba75196
5
5
  SHA512:
6
- metadata.gz: 593f70ce2fb76cf5512b5c28ce4d81f07a69cd37663b4ce145fa4afefd38be2b32aba6eb41faf3f4827e4467600aaea360850ff7618ff9c26d61c30800a93289
7
- data.tar.gz: e326e1f013c632cee2dccbff3e7bfb04e5e251dd80dbe8bf1141920e5aaffa4b2dbe4aa269ed0e92cae9a2f67329cb22e83eec483f7372ff4cfeca220ecd7268
6
+ metadata.gz: 0ba852fa447008259d28621ce7335aa3b4b35e3258ec78946a80b6d4a3cbf20035ce5eb029a2db46946d9887b96a58ddb5a32b8ecaf339db65d8f3143d165b6b
7
+ data.tar.gz: 4db2790a85ab902c9a608b8bac2517012a9c0758bbc849c5e739e9abde153397405c518954d3edf0f6602b965d224c82230ab1431c6bb3ad756cacb4b0477e17
@@ -23,3 +23,24 @@ Style/FormatString:
23
23
  Performance/RedundantMerge:
24
24
  Exclude:
25
25
  - 'lib/blackbox/gem.rb'
26
+
27
+ Metrics/BlockLength:
28
+ Max: 420
29
+
30
+ Naming/UncommunicativeMethodParamName:
31
+ Exclude:
32
+ - lib/blackbox/gem.rb
33
+ - lib/blackbox/crypto.rb
34
+
35
+ Performance/Caller:
36
+ Exclude:
37
+ - lib/blackbox/gem.rb
38
+
39
+ Style/NumericPredicate:
40
+ Exclude:
41
+ - lib/blackbox/crypto.rb
42
+ - lib/blackbox/unix.rb
43
+
44
+ Style/CommentedKeyword:
45
+ Exclude:
46
+ - lib/blackbox/crypto.rb
@@ -1 +1 @@
1
- 2.4.0
1
+ 2.5.1
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  source 'https://rubygems.org'
3
4
 
4
5
  # Specify your gem's dependencies in nanoaes.gemspec
data/Guardfile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  guard :rspec, cmd: 'bundle exec rspec -f Fuubar' do
3
4
  require 'guard/rspec/dsl'
4
5
  dsl = Guard::RSpec::Dsl.new(self)
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'bundler/gem_tasks'
3
4
 
4
5
  require 'rspec/core/rake_task'
@@ -1,6 +1,6 @@
1
- # -*- encoding: utf-8 -*-
2
1
  # frozen_string_literal: true
3
- lib = File.expand_path('../lib', __FILE__)
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'blackbox/version'
6
6
 
@@ -20,21 +20,21 @@ Gem::Specification.new do |gem|
20
20
  gem.require_paths = ['lib']
21
21
  gem.required_ruby_version = '>= 2.3.0'
22
22
 
23
- gem.add_development_dependency 'rake'
24
- gem.add_development_dependency 'rspec'
25
- gem.add_development_dependency 'simplecov'
26
- gem.add_development_dependency 'redcarpet'
27
- gem.add_development_dependency 'yard'
28
23
  gem.add_development_dependency 'bump'
24
+ gem.add_development_dependency 'fuubar'
29
25
  gem.add_development_dependency 'guard'
30
26
  gem.add_development_dependency 'guard-rspec'
31
- gem.add_development_dependency 'fuubar'
32
- gem.add_development_dependency 'timecop'
27
+ gem.add_development_dependency 'rake'
28
+ gem.add_development_dependency 'redcarpet'
29
+ gem.add_development_dependency 'rspec'
33
30
  gem.add_development_dependency 'rubocop'
31
+ gem.add_development_dependency 'simplecov'
32
+ gem.add_development_dependency 'timecop'
33
+ gem.add_development_dependency 'yard'
34
34
 
35
+ gem.add_dependency 'chronic_duration', '~> 0.10.6'
35
36
  gem.add_dependency 'gem_update_checker', '~> 0.2.0'
36
37
  gem.add_dependency 'lolcat', '~> 90.8.8'
37
- gem.add_dependency 'rainbow', '~> 2.2.0'
38
- gem.add_dependency 'chronic_duration', '~> 0.10.6'
38
+ gem.add_dependency 'rainbow', '~> 3.0.0'
39
39
  gem.add_dependency 'versionomy', '~> 0.5.0'
40
40
  end
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "result": {
3
- "covered_percent": 82.59
3
+ "covered_percent": 82.22
4
4
  }
5
5
  }
@@ -2,6 +2,7 @@
2
2
  "RSpec": {
3
3
  "coverage": {
4
4
  "/Users/moe/code/busyloop/blackbox/lib/blackbox/crypto.rb": [
5
+ null,
5
6
  null,
6
7
  1,
7
8
  1,
@@ -132,19 +133,18 @@
132
133
  3,
133
134
  3,
134
135
  3,
135
- 1,
136
+ 2,
136
137
  null,
137
138
  null,
138
139
  null,
139
140
  null,
140
- 2,
141
- null,
142
141
  null,
143
142
  null,
144
143
  null,
145
144
  null
146
145
  ],
147
146
  "/Users/moe/code/busyloop/blackbox/lib/blackbox/gem.rb": [
147
+ null,
148
148
  null,
149
149
  1,
150
150
  1,
@@ -229,9 +229,9 @@
229
229
  null,
230
230
  null,
231
231
  6,
232
- 4,
232
+ 6,
233
233
  null,
234
- 2,
234
+ 0,
235
235
  null,
236
236
  null,
237
237
  6,
@@ -241,6 +241,7 @@
241
241
  null
242
242
  ],
243
243
  "/Users/moe/code/busyloop/blackbox/lib/blackbox/hash.rb": [
244
+ null,
244
245
  null,
245
246
  1,
246
247
  null,
@@ -292,6 +293,7 @@
292
293
  null
293
294
  ],
294
295
  "/Users/moe/code/busyloop/blackbox/lib/blackbox/number.rb": [
296
+ null,
295
297
  null,
296
298
  1,
297
299
  null,
@@ -371,7 +373,7 @@
371
373
  null,
372
374
  10,
373
375
  null,
374
- null,
376
+ 1,
375
377
  1,
376
378
  null,
377
379
  null,
@@ -421,7 +423,7 @@
421
423
  12,
422
424
  null,
423
425
  null,
424
- null,
426
+ 1,
425
427
  1,
426
428
  null,
427
429
  null,
@@ -466,7 +468,7 @@
466
468
  16,
467
469
  16,
468
470
  16,
469
- null,
471
+ 1,
470
472
  1,
471
473
  null,
472
474
  null,
@@ -475,6 +477,7 @@
475
477
  null
476
478
  ],
477
479
  "/Users/moe/code/busyloop/blackbox/lib/blackbox/string.rb": [
480
+ null,
478
481
  null,
479
482
  1,
480
483
  null,
@@ -495,7 +498,7 @@
495
498
  ],
496
499
  "/Users/moe/code/busyloop/blackbox/lib/blackbox/unix.rb": [
497
500
  null,
498
- 1,
501
+ null,
499
502
  1,
500
503
  1,
501
504
  1,
@@ -540,7 +543,7 @@
540
543
  0,
541
544
  0,
542
545
  0,
543
- null,
546
+ 0,
544
547
  0,
545
548
  0,
546
549
  0,
@@ -560,7 +563,7 @@
560
563
  0,
561
564
  null,
562
565
  null,
563
- 0,
566
+ null,
564
567
  null,
565
568
  0,
566
569
  0,
@@ -609,6 +612,6 @@
609
612
  null
610
613
  ]
611
614
  },
612
- "timestamp": 1501158215
615
+ "timestamp": 1534561738
613
616
  }
614
617
  }
@@ -3,38 +3,38 @@
3
3
  <head>
4
4
  <title>Code coverage for Blackbox</title>
5
5
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
- <script src='./assets/0.10.0/application.js' type='text/javascript'></script>
7
- <link href='./assets/0.10.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
8
- <link rel="shortcut icon" type="image/png" href="./assets/0.10.0/favicon_yellow.png" />
9
- <link rel="icon" type="image/png" href="./assets/0.10.0/favicon.png" />
6
+ <script src='./assets/0.10.2/application.js' type='text/javascript'></script>
7
+ <link href='./assets/0.10.2/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
8
+ <link rel="shortcut icon" type="image/png" href="./assets/0.10.2/favicon_yellow.png" />
9
+ <link rel="icon" type="image/png" href="./assets/0.10.2/favicon.png" />
10
10
  </head>
11
11
 
12
12
  <body>
13
13
  <div id="loading">
14
- <img src="./assets/0.10.0/loading.gif" alt="loading"/>
14
+ <img src="./assets/0.10.2/loading.gif" alt="loading"/>
15
15
  </div>
16
16
  <div id="wrapper" style="display:none;">
17
- <div class="timestamp">Generated <abbr class="timeago" title="2017-07-27T14:23:35+02:00">2017-07-27T14:23:35+02:00</abbr></div>
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2018-08-18T05:08:58+02:00">2018-08-18T05:08:58+02:00</abbr></div>
18
18
  <ul class="group_tabs"></ul>
19
19
 
20
20
  <div id="content">
21
21
  <div class="file_list_container" id="AllFiles">
22
22
  <h2>
23
23
  <span class="group_name">All Files</span>
24
- (<span class="covered_percent"><span class="yellow">82.59%</span></span>
24
+ (<span class="covered_percent"><span class="yellow">82.22%</span></span>
25
25
  covered at
26
26
  <span class="covered_strength">
27
27
  <span class="green">
28
- 38.42
28
+ 38.26
29
29
  </span>
30
30
  </span> hits/line)
31
31
  </h2>
32
32
  <a name="AllFiles"></a>
33
33
  <div>
34
34
  <b>6</b> files in total.
35
- <b>224</b> relevant lines.
35
+ <b>225</b> relevant lines.
36
36
  <span class="green"><b>185</b> lines covered</span> and
37
- <span class="red"><b>39</b> lines missed </span>
37
+ <span class="red"><b>40</b> lines missed </span>
38
38
  </div>
39
39
  <table class="file_list">
40
40
  <thead>
@@ -53,27 +53,27 @@
53
53
  <tr>
54
54
  <td class="strong"><a href="#f65d5c5fcad29642ef7df71c31f708bfebe1c731" class="src_link" title="lib/blackbox/crypto.rb">lib/blackbox/crypto.rb</a></td>
55
55
  <td class="green strong">100.0 %</td>
56
- <td>141</td>
57
- <td>48</td>
58
- <td>48</td>
56
+ <td>140</td>
57
+ <td>47</td>
58
+ <td>47</td>
59
59
  <td>0</td>
60
- <td>156.8</td>
60
+ <td>160.1</td>
61
61
  </tr>
62
62
 
63
63
  <tr>
64
64
  <td class="strong"><a href="#192e300fd7769b750c82567439ee016f85516f3d" class="src_link" title="lib/blackbox/gem.rb">lib/blackbox/gem.rb</a></td>
65
- <td class="green strong">100.0 %</td>
66
- <td>94</td>
67
- <td>34</td>
65
+ <td class="green strong">97.06 %</td>
66
+ <td>95</td>
68
67
  <td>34</td>
69
- <td>0</td>
68
+ <td>33</td>
69
+ <td>1</td>
70
70
  <td>8.1</td>
71
71
  </tr>
72
72
 
73
73
  <tr>
74
74
  <td class="strong"><a href="#636c073a27c86cd147d7b0f717311b3b9eded478" class="src_link" title="lib/blackbox/hash.rb">lib/blackbox/hash.rb</a></td>
75
75
  <td class="green strong">100.0 %</td>
76
- <td>49</td>
76
+ <td>50</td>
77
77
  <td>13</td>
78
78
  <td>13</td>
79
79
  <td>0</td>
@@ -83,17 +83,17 @@
83
83
  <tr>
84
84
  <td class="strong"><a href="#09e4da465507022615e91e2292a827cde0e5535c" class="src_link" title="lib/blackbox/number.rb">lib/blackbox/number.rb</a></td>
85
85
  <td class="green strong">100.0 %</td>
86
- <td>181</td>
87
- <td>52</td>
88
- <td>52</td>
86
+ <td>182</td>
87
+ <td>55</td>
88
+ <td>55</td>
89
89
  <td>0</td>
90
- <td>9.4</td>
90
+ <td>9.0</td>
91
91
  </tr>
92
92
 
93
93
  <tr>
94
94
  <td class="strong"><a href="#1503164dbfa2b2b494fd2100a9b38b04be306a6e" class="src_link" title="lib/blackbox/string.rb">lib/blackbox/string.rb</a></td>
95
95
  <td class="green strong">100.0 %</td>
96
- <td>17</td>
96
+ <td>18</td>
97
97
  <td>5</td>
98
98
  <td>5</td>
99
99
  <td>0</td>
@@ -102,10 +102,10 @@
102
102
 
103
103
  <tr>
104
104
  <td class="strong"><a href="#ef107940f0bb318164d36d5de1cd48192edb65f2" class="src_link" title="lib/blackbox/unix.rb">lib/blackbox/unix.rb</a></td>
105
- <td class="red strong">45.83 %</td>
105
+ <td class="red strong">45.07 %</td>
106
106
  <td>113</td>
107
- <td>72</td>
108
- <td>33</td>
107
+ <td>71</td>
108
+ <td>32</td>
109
109
  <td>39</td>
110
110
  <td>1.5</td>
111
111
  </tr>
@@ -119,8 +119,8 @@
119
119
  </div>
120
120
 
121
121
  <div id="footer">
122
- Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.12.0
123
- and simplecov-html v0.10.0<br/>
122
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.16.1
123
+ and simplecov-html v0.10.2<br/>
124
124
  using RSpec
125
125
  </div>
126
126
 
@@ -131,8 +131,8 @@
131
131
  <h3>lib/blackbox/crypto.rb</h3>
132
132
  <h4><span class="green">100.0 %</span> covered</h4>
133
133
  <div>
134
- <b>48</b> relevant lines.
135
- <span class="green"><b>48</b> lines covered</span> and
134
+ <b>47</b> relevant lines.
135
+ <span class="green"><b>47</b> lines covered</span> and
136
136
  <span class="red"><b>0</b> lines missed.</span>
137
137
  </div>
138
138
  </div>
@@ -146,841 +146,835 @@
146
146
  <code class="ruby"># frozen_string_literal: true</code>
147
147
  </li>
148
148
 
149
- <li class="covered" data-hits="1" data-linenumber="2">
149
+ <li class="never" data-hits="" data-linenumber="2">
150
+
151
+
152
+ <code class="ruby"></code>
153
+ </li>
154
+
155
+ <li class="covered" data-hits="1" data-linenumber="3">
150
156
  <span class="hits">1</span>
151
157
 
152
158
  <code class="ruby">require &#39;openssl&#39;</code>
153
159
  </li>
154
160
 
155
- <li class="covered" data-hits="1" data-linenumber="3">
161
+ <li class="covered" data-hits="1" data-linenumber="4">
156
162
  <span class="hits">1</span>
157
163
 
158
164
  <code class="ruby">require &#39;base64&#39;</code>
159
165
  </li>
160
166
 
161
- <li class="covered" data-hits="1" data-linenumber="4">
167
+ <li class="covered" data-hits="1" data-linenumber="5">
162
168
  <span class="hits">1</span>
163
169
 
164
170
  <code class="ruby">require &#39;chronic_duration&#39;</code>
165
171
  </li>
166
172
 
167
- <li class="never" data-hits="" data-linenumber="5">
173
+ <li class="never" data-hits="" data-linenumber="6">
168
174
 
169
175
 
170
176
  <code class="ruby"></code>
171
177
  </li>
172
178
 
173
- <li class="covered" data-hits="1" data-linenumber="6">
179
+ <li class="covered" data-hits="1" data-linenumber="7">
174
180
  <span class="hits">1</span>
175
181
 
176
182
  <code class="ruby">module BB</code>
177
183
  </li>
178
184
 
179
- <li class="never" data-hits="" data-linenumber="7">
185
+ <li class="never" data-hits="" data-linenumber="8">
180
186
 
181
187
 
182
188
  <code class="ruby"> # Crypto utilities.</code>
183
189
  </li>
184
190
 
185
- <li class="covered" data-hits="1" data-linenumber="8">
191
+ <li class="covered" data-hits="1" data-linenumber="9">
186
192
  <span class="hits">1</span>
187
193
 
188
194
  <code class="ruby"> module Crypto</code>
189
195
  </li>
190
196
 
191
- <li class="covered" data-hits="1" data-linenumber="9">
197
+ <li class="covered" data-hits="1" data-linenumber="10">
192
198
  <span class="hits">1</span>
193
199
 
194
200
  <code class="ruby"> class &lt;&lt; self</code>
195
201
  </li>
196
202
 
197
- <li class="never" data-hits="" data-linenumber="10">
203
+ <li class="never" data-hits="" data-linenumber="11">
198
204
 
199
205
 
200
206
  <code class="ruby"> # Encrypt a String.</code>
201
207
  </li>
202
208
 
203
- <li class="never" data-hits="" data-linenumber="11">
209
+ <li class="never" data-hits="" data-linenumber="12">
204
210
 
205
211
 
206
212
  <code class="ruby"> #</code>
207
213
  </li>
208
214
 
209
- <li class="never" data-hits="" data-linenumber="12">
215
+ <li class="never" data-hits="" data-linenumber="13">
210
216
 
211
217
 
212
218
  <code class="ruby"> # @param [String] plaintext Input String (plaintext)</code>
213
219
  </li>
214
220
 
215
- <li class="never" data-hits="" data-linenumber="13">
221
+ <li class="never" data-hits="" data-linenumber="14">
216
222
 
217
223
 
218
224
  <code class="ruby"> # @param [String] key Encryption key</code>
219
225
  </li>
220
226
 
221
- <li class="never" data-hits="" data-linenumber="14">
227
+ <li class="never" data-hits="" data-linenumber="15">
222
228
 
223
229
 
224
230
  <code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
225
231
  </li>
226
232
 
227
- <li class="never" data-hits="" data-linenumber="15">
233
+ <li class="never" data-hits="" data-linenumber="16">
228
234
 
229
235
 
230
236
  <code class="ruby"> # @param [String] iv Initialization vector</code>
231
237
  </li>
232
238
 
233
- <li class="never" data-hits="" data-linenumber="16">
239
+ <li class="never" data-hits="" data-linenumber="17">
234
240
 
235
241
 
236
242
  <code class="ruby"> # @return [String] When iv == nil: iv_length+iv+ciphertext</code>
237
243
  </li>
238
244
 
239
- <li class="never" data-hits="" data-linenumber="17">
245
+ <li class="never" data-hits="" data-linenumber="18">
240
246
 
241
247
 
242
248
  <code class="ruby"> # @return [String] When iv != nil: ciphertext</code>
243
249
  </li>
244
250
 
245
- <li class="covered" data-hits="1" data-linenumber="18">
251
+ <li class="covered" data-hits="1" data-linenumber="19">
246
252
  <span class="hits">1</span>
247
253
 
248
254
  <code class="ruby"> def encrypt(plaintext, key, cipher_type = &#39;aes-256-cbc&#39;, iv = nil)</code>
249
255
  </li>
250
256
 
251
- <li class="covered" data-hits="702" data-linenumber="19">
257
+ <li class="covered" data-hits="702" data-linenumber="20">
252
258
  <span class="hits">702</span>
253
259
 
254
260
  <code class="ruby"> cipher = OpenSSL::Cipher.new(cipher_type)</code>
255
261
  </li>
256
262
 
257
- <li class="covered" data-hits="702" data-linenumber="20">
263
+ <li class="covered" data-hits="702" data-linenumber="21">
258
264
  <span class="hits">702</span>
259
265
 
260
266
  <code class="ruby"> cipher.encrypt</code>
261
267
  </li>
262
268
 
263
- <li class="covered" data-hits="702" data-linenumber="21">
269
+ <li class="covered" data-hits="702" data-linenumber="22">
264
270
  <span class="hits">702</span>
265
271
 
266
272
  <code class="ruby"> cipher.key = key</code>
267
273
  </li>
268
274
 
269
- <li class="covered" data-hits="700" data-linenumber="22">
275
+ <li class="covered" data-hits="700" data-linenumber="23">
270
276
  <span class="hits">700</span>
271
277
 
272
278
  <code class="ruby"> if iv.nil?</code>
273
279
  </li>
274
280
 
275
- <li class="covered" data-hits="430" data-linenumber="23">
281
+ <li class="covered" data-hits="430" data-linenumber="24">
276
282
  <span class="hits">430</span>
277
283
 
278
284
  <code class="ruby"> iv = cipher.random_iv</code>
279
285
  </li>
280
286
 
281
- <li class="covered" data-hits="430" data-linenumber="24">
287
+ <li class="covered" data-hits="430" data-linenumber="25">
282
288
  <span class="hits">430</span>
283
289
 
284
290
  <code class="ruby"> [iv.length].pack(&#39;C&#39;) + iv + cipher.update(plaintext) + cipher.final</code>
285
291
  </li>
286
292
 
287
- <li class="never" data-hits="" data-linenumber="25">
293
+ <li class="never" data-hits="" data-linenumber="26">
288
294
 
289
295
 
290
296
  <code class="ruby"> else</code>
291
297
  </li>
292
298
 
293
- <li class="covered" data-hits="270" data-linenumber="26">
299
+ <li class="covered" data-hits="270" data-linenumber="27">
294
300
  <span class="hits">270</span>
295
301
 
296
302
  <code class="ruby"> cipher.iv = iv</code>
297
303
  </li>
298
304
 
299
- <li class="covered" data-hits="270" data-linenumber="27">
305
+ <li class="covered" data-hits="270" data-linenumber="28">
300
306
  <span class="hits">270</span>
301
307
 
302
308
  <code class="ruby"> cipher.update(plaintext) + cipher.final</code>
303
309
  </li>
304
310
 
305
- <li class="never" data-hits="" data-linenumber="28">
311
+ <li class="never" data-hits="" data-linenumber="29">
306
312
 
307
313
 
308
314
  <code class="ruby"> end</code>
309
315
  </li>
310
316
 
311
- <li class="never" data-hits="" data-linenumber="29">
317
+ <li class="never" data-hits="" data-linenumber="30">
312
318
 
313
319
 
314
320
  <code class="ruby"> end</code>
315
321
  </li>
316
322
 
317
- <li class="never" data-hits="" data-linenumber="30">
323
+ <li class="never" data-hits="" data-linenumber="31">
318
324
 
319
325
 
320
326
  <code class="ruby"></code>
321
327
  </li>
322
328
 
323
- <li class="never" data-hits="" data-linenumber="31">
329
+ <li class="never" data-hits="" data-linenumber="32">
324
330
 
325
331
 
326
332
  <code class="ruby"> # Decrypt a String.</code>
327
333
  </li>
328
334
 
329
- <li class="never" data-hits="" data-linenumber="32">
335
+ <li class="never" data-hits="" data-linenumber="33">
330
336
 
331
337
 
332
338
  <code class="ruby"> #</code>
333
339
  </li>
334
340
 
335
- <li class="never" data-hits="" data-linenumber="33">
341
+ <li class="never" data-hits="" data-linenumber="34">
336
342
 
337
343
 
338
344
  <code class="ruby"> # @param [String] ciphertext Input String (ciphertext)</code>
339
345
  </li>
340
346
 
341
- <li class="never" data-hits="" data-linenumber="34">
347
+ <li class="never" data-hits="" data-linenumber="35">
342
348
 
343
349
 
344
350
  <code class="ruby"> # @param [String] key Encryption key</code>
345
351
  </li>
346
352
 
347
- <li class="never" data-hits="" data-linenumber="35">
353
+ <li class="never" data-hits="" data-linenumber="36">
348
354
 
349
355
 
350
356
  <code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
351
357
  </li>
352
358
 
353
- <li class="never" data-hits="" data-linenumber="36">
359
+ <li class="never" data-hits="" data-linenumber="37">
354
360
 
355
361
 
356
362
  <code class="ruby"> # @param [String] iv Initialization vector</code>
357
363
  </li>
358
364
 
359
- <li class="never" data-hits="" data-linenumber="37">
365
+ <li class="never" data-hits="" data-linenumber="38">
360
366
 
361
367
 
362
368
  <code class="ruby"> # @return [String] Plaintext</code>
363
369
  </li>
364
370
 
365
- <li class="covered" data-hits="1" data-linenumber="38">
371
+ <li class="covered" data-hits="1" data-linenumber="39">
366
372
  <span class="hits">1</span>
367
373
 
368
374
  <code class="ruby"> def decrypt(ciphertext, key, cipher_type = &#39;aes-256-cbc&#39;, iv = nil)</code>
369
375
  </li>
370
376
 
371
- <li class="covered" data-hits="372" data-linenumber="39">
377
+ <li class="covered" data-hits="372" data-linenumber="40">
372
378
  <span class="hits">372</span>
373
379
 
374
380
  <code class="ruby"> cipher = OpenSSL::Cipher.new(cipher_type)</code>
375
381
  </li>
376
382
 
377
- <li class="covered" data-hits="372" data-linenumber="40">
383
+ <li class="covered" data-hits="372" data-linenumber="41">
378
384
  <span class="hits">372</span>
379
385
 
380
386
  <code class="ruby"> cipher.decrypt</code>
381
387
  </li>
382
388
 
383
- <li class="covered" data-hits="372" data-linenumber="41">
389
+ <li class="covered" data-hits="372" data-linenumber="42">
384
390
  <span class="hits">372</span>
385
391
 
386
392
  <code class="ruby"> cipher.key = key</code>
387
393
  </li>
388
394
 
389
- <li class="covered" data-hits="372" data-linenumber="42">
395
+ <li class="covered" data-hits="372" data-linenumber="43">
390
396
  <span class="hits">372</span>
391
397
 
392
398
  <code class="ruby"> if iv.nil?</code>
393
399
  </li>
394
400
 
395
- <li class="covered" data-hits="282" data-linenumber="43">
401
+ <li class="covered" data-hits="282" data-linenumber="44">
396
402
  <span class="hits">282</span>
397
403
 
398
404
  <code class="ruby"> iv_len = ciphertext.slice!(0).unpack(&#39;C&#39;)[0]</code>
399
405
  </li>
400
406
 
401
- <li class="covered" data-hits="282" data-linenumber="44">
407
+ <li class="covered" data-hits="282" data-linenumber="45">
402
408
  <span class="hits">282</span>
403
409
 
404
- <code class="ruby"> cipher.iv = ciphertext.slice!(0..iv_len - 1) unless 0 == iv_len</code>
410
+ <code class="ruby"> cipher.iv = ciphertext.slice!(0..iv_len - 1) unless iv_len == 0</code>
405
411
  </li>
406
412
 
407
- <li class="never" data-hits="" data-linenumber="45">
413
+ <li class="never" data-hits="" data-linenumber="46">
408
414
 
409
415
 
410
416
  <code class="ruby"> else</code>
411
417
  </li>
412
418
 
413
- <li class="covered" data-hits="90" data-linenumber="46">
419
+ <li class="covered" data-hits="90" data-linenumber="47">
414
420
  <span class="hits">90</span>
415
421
 
416
422
  <code class="ruby"> cipher.iv = iv</code>
417
423
  </li>
418
424
 
419
- <li class="never" data-hits="" data-linenumber="47">
425
+ <li class="never" data-hits="" data-linenumber="48">
420
426
 
421
427
 
422
428
  <code class="ruby"> end</code>
423
429
  </li>
424
430
 
425
- <li class="covered" data-hits="372" data-linenumber="48">
431
+ <li class="covered" data-hits="372" data-linenumber="49">
426
432
  <span class="hits">372</span>
427
433
 
428
434
  <code class="ruby"> cipher.update(ciphertext) + cipher.final</code>
429
435
  </li>
430
436
 
431
- <li class="never" data-hits="" data-linenumber="49">
437
+ <li class="never" data-hits="" data-linenumber="50">
432
438
 
433
439
 
434
440
  <code class="ruby"> end</code>
435
441
  </li>
436
442
 
437
- <li class="never" data-hits="" data-linenumber="50">
443
+ <li class="never" data-hits="" data-linenumber="51">
438
444
 
439
445
 
440
446
  <code class="ruby"></code>
441
447
  </li>
442
448
 
443
- <li class="never" data-hits="" data-linenumber="51">
449
+ <li class="never" data-hits="" data-linenumber="52">
444
450
 
445
451
 
446
452
  <code class="ruby"> # Encrypt a String and encode the resulting ciphertext to Base64.</code>
447
453
  </li>
448
454
 
449
- <li class="never" data-hits="" data-linenumber="52">
455
+ <li class="never" data-hits="" data-linenumber="53">
450
456
 
451
457
 
452
458
  <code class="ruby"> #</code>
453
459
  </li>
454
460
 
455
- <li class="never" data-hits="" data-linenumber="53">
461
+ <li class="never" data-hits="" data-linenumber="54">
456
462
 
457
463
 
458
464
  <code class="ruby"> # @param [String] plaintext Input String (plaintext)</code>
459
465
  </li>
460
466
 
461
- <li class="never" data-hits="" data-linenumber="54">
467
+ <li class="never" data-hits="" data-linenumber="55">
462
468
 
463
469
 
464
470
  <code class="ruby"> # @param [String] key Encryption key</code>
465
471
  </li>
466
472
 
467
- <li class="never" data-hits="" data-linenumber="55">
473
+ <li class="never" data-hits="" data-linenumber="56">
468
474
 
469
475
 
470
476
  <code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
471
477
  </li>
472
478
 
473
- <li class="never" data-hits="" data-linenumber="56">
479
+ <li class="never" data-hits="" data-linenumber="57">
474
480
 
475
481
 
476
482
  <code class="ruby"> # @param [String] iv Initialization vector</code>
477
483
  </li>
478
484
 
479
- <li class="never" data-hits="" data-linenumber="57">
485
+ <li class="never" data-hits="" data-linenumber="58">
480
486
 
481
487
 
482
488
  <code class="ruby"> # @return [String] When iv == nil: base64(iv_length+iv+ciphertext)</code>
483
489
  </li>
484
490
 
485
- <li class="never" data-hits="" data-linenumber="58">
491
+ <li class="never" data-hits="" data-linenumber="59">
486
492
 
487
493
 
488
494
  <code class="ruby"> # @return [String] When iv != nil: base64(ciphertext)</code>
489
495
  </li>
490
496
 
491
- <li class="covered" data-hits="1" data-linenumber="59">
497
+ <li class="covered" data-hits="1" data-linenumber="60">
492
498
  <span class="hits">1</span>
493
499
 
494
500
  <code class="ruby"> def encrypt_base64(plaintext, key, cipher_type = &#39;aes-256-cbc&#39;, iv = nil)</code>
495
501
  </li>
496
502
 
497
- <li class="covered" data-hits="246" data-linenumber="60">
503
+ <li class="covered" data-hits="246" data-linenumber="61">
498
504
  <span class="hits">246</span>
499
505
 
500
506
  <code class="ruby"> Base64.strict_encode64(encrypt(plaintext, key, cipher_type, iv))</code>
501
507
  </li>
502
508
 
503
- <li class="never" data-hits="" data-linenumber="61">
509
+ <li class="never" data-hits="" data-linenumber="62">
504
510
 
505
511
 
506
512
  <code class="ruby"> end</code>
507
513
  </li>
508
514
 
509
- <li class="never" data-hits="" data-linenumber="62">
515
+ <li class="never" data-hits="" data-linenumber="63">
510
516
 
511
517
 
512
518
  <code class="ruby"></code>
513
519
  </li>
514
520
 
515
- <li class="never" data-hits="" data-linenumber="63">
521
+ <li class="never" data-hits="" data-linenumber="64">
516
522
 
517
523
 
518
524
  <code class="ruby"> # Decode and Decrypt a Base64-String.</code>
519
525
  </li>
520
526
 
521
- <li class="never" data-hits="" data-linenumber="64">
527
+ <li class="never" data-hits="" data-linenumber="65">
522
528
 
523
529
 
524
530
  <code class="ruby"> #</code>
525
531
  </li>
526
532
 
527
- <li class="never" data-hits="" data-linenumber="65">
533
+ <li class="never" data-hits="" data-linenumber="66">
528
534
 
529
535
 
530
536
  <code class="ruby"> # @param [String] ciphertext Input String (base64(ciphertext))</code>
531
537
  </li>
532
538
 
533
- <li class="never" data-hits="" data-linenumber="66">
539
+ <li class="never" data-hits="" data-linenumber="67">
534
540
 
535
541
 
536
542
  <code class="ruby"> # @param [String] key Encryption key</code>
537
543
  </li>
538
544
 
539
- <li class="never" data-hits="" data-linenumber="67">
545
+ <li class="never" data-hits="" data-linenumber="68">
540
546
 
541
547
 
542
548
  <code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
543
549
  </li>
544
550
 
545
- <li class="never" data-hits="" data-linenumber="68">
551
+ <li class="never" data-hits="" data-linenumber="69">
546
552
 
547
553
 
548
554
  <code class="ruby"> # @param [String] iv Initialization vector</code>
549
555
  </li>
550
556
 
551
- <li class="never" data-hits="" data-linenumber="69">
557
+ <li class="never" data-hits="" data-linenumber="70">
552
558
 
553
559
 
554
560
  <code class="ruby"> # @return [String] Plaintext</code>
555
561
  </li>
556
562
 
557
- <li class="covered" data-hits="1" data-linenumber="70">
563
+ <li class="covered" data-hits="1" data-linenumber="71">
558
564
  <span class="hits">1</span>
559
565
 
560
566
  <code class="ruby"> def decrypt_base64(ciphertext, key, cipher_type = &#39;aes-256-cbc&#39;, iv = nil)</code>
561
567
  </li>
562
568
 
563
- <li class="covered" data-hits="123" data-linenumber="71">
569
+ <li class="covered" data-hits="123" data-linenumber="72">
564
570
  <span class="hits">123</span>
565
571
 
566
572
  <code class="ruby"> decrypt(Base64.decode64(ciphertext), key, cipher_type, iv)</code>
567
573
  </li>
568
574
 
569
- <li class="never" data-hits="" data-linenumber="72">
575
+ <li class="never" data-hits="" data-linenumber="73">
570
576
 
571
577
 
572
578
  <code class="ruby"> end</code>
573
579
  </li>
574
580
 
575
- <li class="never" data-hits="" data-linenumber="73">
581
+ <li class="never" data-hits="" data-linenumber="74">
576
582
 
577
583
 
578
584
  <code class="ruby"></code>
579
585
  </li>
580
586
 
581
- <li class="never" data-hits="" data-linenumber="74">
587
+ <li class="never" data-hits="" data-linenumber="75">
582
588
 
583
589
 
584
590
  <code class="ruby"> # Encrypt a String and encode the resulting ciphertext to urlsafe Base64.</code>
585
591
  </li>
586
592
 
587
- <li class="never" data-hits="" data-linenumber="75">
593
+ <li class="never" data-hits="" data-linenumber="76">
588
594
 
589
595
 
590
596
  <code class="ruby"> #</code>
591
597
  </li>
592
598
 
593
- <li class="never" data-hits="" data-linenumber="76">
599
+ <li class="never" data-hits="" data-linenumber="77">
594
600
 
595
601
 
596
602
  <code class="ruby"> # @param [String] plaintext Input String (plaintext)</code>
597
603
  </li>
598
604
 
599
- <li class="never" data-hits="" data-linenumber="77">
605
+ <li class="never" data-hits="" data-linenumber="78">
600
606
 
601
607
 
602
608
  <code class="ruby"> # @param [String] key Encryption key</code>
603
609
  </li>
604
610
 
605
- <li class="never" data-hits="" data-linenumber="78">
611
+ <li class="never" data-hits="" data-linenumber="79">
606
612
 
607
613
 
608
614
  <code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
609
615
  </li>
610
616
 
611
- <li class="never" data-hits="" data-linenumber="79">
617
+ <li class="never" data-hits="" data-linenumber="80">
612
618
 
613
619
 
614
620
  <code class="ruby"> # @param [String] iv Initialization vector</code>
615
621
  </li>
616
622
 
617
- <li class="never" data-hits="" data-linenumber="80">
623
+ <li class="never" data-hits="" data-linenumber="81">
618
624
 
619
625
 
620
626
  <code class="ruby"> # @return [String] When iv == nil: urlsafe_base64(iv_length+iv+ciphertext)</code>
621
627
  </li>
622
628
 
623
- <li class="never" data-hits="" data-linenumber="81">
629
+ <li class="never" data-hits="" data-linenumber="82">
624
630
 
625
631
 
626
632
  <code class="ruby"> # @return [String] When iv != nil: urlsafe_base64(ciphertext)</code>
627
633
  </li>
628
634
 
629
- <li class="covered" data-hits="1" data-linenumber="82">
635
+ <li class="covered" data-hits="1" data-linenumber="83">
630
636
  <span class="hits">1</span>
631
637
 
632
638
  <code class="ruby"> def encrypt_urlsafe_base64(plaintext, key, cipher_type = &#39;aes-256-cbc&#39;, iv = nil)</code>
633
639
  </li>
634
640
 
635
- <li class="covered" data-hits="251" data-linenumber="83">
641
+ <li class="covered" data-hits="251" data-linenumber="84">
636
642
  <span class="hits">251</span>
637
643
 
638
644
  <code class="ruby"> Base64.urlsafe_encode64(encrypt(plaintext, key, cipher_type, iv))</code>
639
645
  </li>
640
646
 
641
- <li class="never" data-hits="" data-linenumber="84">
647
+ <li class="never" data-hits="" data-linenumber="85">
642
648
 
643
649
 
644
650
  <code class="ruby"> end</code>
645
651
  </li>
646
652
 
647
- <li class="never" data-hits="" data-linenumber="85">
653
+ <li class="never" data-hits="" data-linenumber="86">
648
654
 
649
655
 
650
656
  <code class="ruby"></code>
651
657
  </li>
652
658
 
653
- <li class="never" data-hits="" data-linenumber="86">
659
+ <li class="never" data-hits="" data-linenumber="87">
654
660
 
655
661
 
656
662
  <code class="ruby"> # Decode and Decrypt an urlsafe Base64-String.</code>
657
663
  </li>
658
664
 
659
- <li class="never" data-hits="" data-linenumber="87">
665
+ <li class="never" data-hits="" data-linenumber="88">
660
666
 
661
667
 
662
668
  <code class="ruby"> #</code>
663
669
  </li>
664
670
 
665
- <li class="never" data-hits="" data-linenumber="88">
671
+ <li class="never" data-hits="" data-linenumber="89">
666
672
 
667
673
 
668
674
  <code class="ruby"> # @param [String] ciphertext Input String (urlsafe_base64(ciphertext))</code>
669
675
  </li>
670
676
 
671
- <li class="never" data-hits="" data-linenumber="89">
677
+ <li class="never" data-hits="" data-linenumber="90">
672
678
 
673
679
 
674
680
  <code class="ruby"> # @param [String] key Encryption key</code>
675
681
  </li>
676
682
 
677
- <li class="never" data-hits="" data-linenumber="90">
683
+ <li class="never" data-hits="" data-linenumber="91">
678
684
 
679
685
 
680
686
  <code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
681
687
  </li>
682
688
 
683
- <li class="never" data-hits="" data-linenumber="91">
689
+ <li class="never" data-hits="" data-linenumber="92">
684
690
 
685
691
 
686
692
  <code class="ruby"> # @param [String] iv Initialization vector</code>
687
693
  </li>
688
694
 
689
- <li class="never" data-hits="" data-linenumber="92">
695
+ <li class="never" data-hits="" data-linenumber="93">
690
696
 
691
697
 
692
698
  <code class="ruby"> # @return [String] Plaintext</code>
693
699
  </li>
694
700
 
695
- <li class="covered" data-hits="1" data-linenumber="93">
701
+ <li class="covered" data-hits="1" data-linenumber="94">
696
702
  <span class="hits">1</span>
697
703
 
698
704
  <code class="ruby"> def decrypt_urlsafe_base64(ciphertext, key, cipher_type = &#39;aes-256-cbc&#39;, iv = nil)</code>
699
705
  </li>
700
706
 
701
- <li class="covered" data-hits="126" data-linenumber="94">
707
+ <li class="covered" data-hits="126" data-linenumber="95">
702
708
  <span class="hits">126</span>
703
709
 
704
710
  <code class="ruby"> decrypt(Base64.urlsafe_decode64(ciphertext), key, cipher_type, iv)</code>
705
711
  </li>
706
712
 
707
- <li class="never" data-hits="" data-linenumber="95">
713
+ <li class="never" data-hits="" data-linenumber="96">
708
714
 
709
715
 
710
716
  <code class="ruby"> end</code>
711
717
  </li>
712
718
 
713
- <li class="never" data-hits="" data-linenumber="96">
719
+ <li class="never" data-hits="" data-linenumber="97">
714
720
 
715
721
 
716
722
  <code class="ruby"> end</code>
717
723
  </li>
718
724
 
719
- <li class="never" data-hits="" data-linenumber="97">
725
+ <li class="never" data-hits="" data-linenumber="98">
720
726
 
721
727
 
722
728
  <code class="ruby"></code>
723
729
  </li>
724
730
 
725
- <li class="never" data-hits="" data-linenumber="98">
731
+ <li class="never" data-hits="" data-linenumber="99">
726
732
 
727
733
 
728
734
  <code class="ruby"> # Secure Control Token.</code>
729
735
  </li>
730
736
 
731
- <li class="covered" data-hits="1" data-linenumber="99">
737
+ <li class="covered" data-hits="1" data-linenumber="100">
732
738
  <span class="hits">1</span>
733
739
 
734
740
  <code class="ruby"> class ControlToken</code>
735
741
  </li>
736
742
 
737
- <li class="covered" data-hits="1" data-linenumber="100">
743
+ <li class="covered" data-hits="1" data-linenumber="101">
738
744
  <span class="hits">1</span>
739
745
 
740
746
  <code class="ruby"> class &lt;&lt; self</code>
741
747
  </li>
742
748
 
743
- <li class="never" data-hits="" data-linenumber="101">
749
+ <li class="never" data-hits="" data-linenumber="102">
744
750
 
745
751
 
746
752
  <code class="ruby"> # Encode and encrypt an urlsafe ControlToken.</code>
747
753
  </li>
748
754
 
749
- <li class="never" data-hits="" data-linenumber="102">
755
+ <li class="never" data-hits="" data-linenumber="103">
750
756
 
751
757
 
752
758
  <code class="ruby"> #</code>
753
759
  </li>
754
760
 
755
- <li class="never" data-hits="" data-linenumber="103">
761
+ <li class="never" data-hits="" data-linenumber="104">
756
762
 
757
763
 
758
764
  <code class="ruby"> # @param [String] op Operation id</code>
759
765
  </li>
760
766
 
761
- <li class="never" data-hits="" data-linenumber="104">
767
+ <li class="never" data-hits="" data-linenumber="105">
762
768
 
763
769
 
764
770
  <code class="ruby"> # @param [Array] args Arguments (Strings)</code>
765
771
  </li>
766
772
 
767
- <li class="never" data-hits="" data-linenumber="105">
773
+ <li class="never" data-hits="" data-linenumber="106">
768
774
 
769
775
 
770
776
  <code class="ruby"> # @param [Fixnum] expire_in</code>
771
777
  </li>
772
778
 
773
- <li class="never" data-hits="" data-linenumber="106">
779
+ <li class="never" data-hits="" data-linenumber="107">
774
780
 
775
781
 
776
782
  <code class="ruby"> # @param [String] key Encryption key</code>
777
783
  </li>
778
784
 
779
- <li class="never" data-hits="" data-linenumber="107">
785
+ <li class="never" data-hits="" data-linenumber="108">
780
786
 
781
787
 
782
788
  <code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
783
789
  </li>
784
790
 
785
- <li class="never" data-hits="" data-linenumber="108">
791
+ <li class="never" data-hits="" data-linenumber="109">
786
792
 
787
793
 
788
794
  <code class="ruby"> # @return [String] ControlToken (urlsafe base64)</code>
789
795
  </li>
790
796
 
791
- <li class="covered" data-hits="1" data-linenumber="109">
797
+ <li class="covered" data-hits="1" data-linenumber="110">
792
798
  <span class="hits">1</span>
793
799
 
794
800
  <code class="ruby"> def create(op, args, expire_in = 900, key = ENV[&#39;CONTROLTOKEN_SECRET&#39;], cipher_type = &#39;aes-256-cbc&#39;)</code>
795
801
  </li>
796
802
 
797
- <li class="covered" data-hits="6" data-linenumber="110">
803
+ <li class="covered" data-hits="6" data-linenumber="111">
798
804
  <span class="hits">6</span>
799
805
 
800
806
  <code class="ruby"> raise ArgumentError, &#39;key can not be blank&#39; if key.nil? || key.empty?</code>
801
807
  </li>
802
808
 
803
- <li class="never" data-hits="" data-linenumber="111">
809
+ <li class="never" data-hits="" data-linenumber="112">
804
810
 
805
811
 
806
812
  <code class="ruby"> # If you&#39;re reading this in the year 2038: Hi there! :-)</code>
807
813
  </li>
808
814
 
809
- <li class="covered" data-hits="5" data-linenumber="112">
815
+ <li class="covered" data-hits="5" data-linenumber="113">
810
816
  <span class="hits">5</span>
811
817
 
812
818
  <code class="ruby"> [Time.now.to_i + expire_in].pack(&#39;l&lt;&#39;)</code>
813
819
  </li>
814
820
 
815
- <li class="covered" data-hits="5" data-linenumber="113">
821
+ <li class="covered" data-hits="5" data-linenumber="114">
816
822
  <span class="hits">5</span>
817
823
 
818
824
  <code class="ruby"> body = ([[Time.now.to_i + expire_in].pack(&#39;l&lt;&#39;), op] + args).join(&quot;\x00&quot;)</code>
819
825
  </li>
820
826
 
821
- <li class="covered" data-hits="5" data-linenumber="114">
827
+ <li class="covered" data-hits="5" data-linenumber="115">
822
828
  <span class="hits">5</span>
823
829
 
824
830
  <code class="ruby"> BB::Crypto.encrypt_urlsafe_base64(body, key, cipher_type)</code>
825
831
  </li>
826
832
 
827
- <li class="never" data-hits="" data-linenumber="115">
833
+ <li class="never" data-hits="" data-linenumber="116">
828
834
 
829
835
 
830
836
  <code class="ruby"> end</code>
831
837
  </li>
832
838
 
833
- <li class="never" data-hits="" data-linenumber="116">
839
+ <li class="never" data-hits="" data-linenumber="117">
834
840
 
835
841
 
836
842
  <code class="ruby"></code>
837
843
  </li>
838
844
 
839
- <li class="never" data-hits="" data-linenumber="117">
845
+ <li class="never" data-hits="" data-linenumber="118">
840
846
 
841
847
 
842
848
  <code class="ruby"> # Decrypt and parse an urlsafe ControlToken.</code>
843
849
  </li>
844
850
 
845
- <li class="never" data-hits="" data-linenumber="118">
851
+ <li class="never" data-hits="" data-linenumber="119">
846
852
 
847
853
 
848
854
  <code class="ruby"> #</code>
849
855
  </li>
850
856
 
851
- <li class="never" data-hits="" data-linenumber="119">
857
+ <li class="never" data-hits="" data-linenumber="120">
852
858
 
853
859
 
854
860
  <code class="ruby"> # @param [String] token Input String (urlsafe base64)</code>
855
861
  </li>
856
862
 
857
- <li class="never" data-hits="" data-linenumber="120">
863
+ <li class="never" data-hits="" data-linenumber="121">
858
864
 
859
865
 
860
866
  <code class="ruby"> # @param [String] key Encryption key</code>
861
867
  </li>
862
868
 
863
- <li class="never" data-hits="" data-linenumber="121">
869
+ <li class="never" data-hits="" data-linenumber="122">
864
870
 
865
871
 
866
872
  <code class="ruby"> # @param [Boolean] force Decode expired token (suppress ArgumentError)</code>
867
873
  </li>
868
874
 
869
- <li class="never" data-hits="" data-linenumber="122">
875
+ <li class="never" data-hits="" data-linenumber="123">
870
876
 
871
877
 
872
878
  <code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
873
879
  </li>
874
880
 
875
- <li class="never" data-hits="" data-linenumber="123">
881
+ <li class="never" data-hits="" data-linenumber="124">
876
882
 
877
883
 
878
884
  <code class="ruby"> # @return [Hash] Token payload</code>
879
885
  </li>
880
886
 
881
- <li class="covered" data-hits="1" data-linenumber="124">
887
+ <li class="covered" data-hits="1" data-linenumber="125">
882
888
  <span class="hits">1</span>
883
889
 
884
890
  <code class="ruby"> def parse(token, key = ENV[&#39;CONTROLTOKEN_SECRET&#39;], force = false, cipher_type = &#39;aes-256-cbc&#39;)</code>
885
891
  </li>
886
892
 
887
- <li class="covered" data-hits="3" data-linenumber="125">
893
+ <li class="covered" data-hits="3" data-linenumber="126">
888
894
  <span class="hits">3</span>
889
895
 
890
896
  <code class="ruby"> raise ArgumentError, &#39;key can not be blank&#39; if key.nil? || key.empty?</code>
891
897
  </li>
892
898
 
893
- <li class="covered" data-hits="3" data-linenumber="126">
899
+ <li class="covered" data-hits="3" data-linenumber="127">
894
900
  <span class="hits">3</span>
895
901
 
896
902
  <code class="ruby"> body = BB::Crypto.decrypt_urlsafe_base64(token, key, cipher_type)</code>
897
903
  </li>
898
904
 
899
- <li class="covered" data-hits="3" data-linenumber="127">
905
+ <li class="covered" data-hits="3" data-linenumber="128">
900
906
  <span class="hits">3</span>
901
907
 
902
908
  <code class="ruby"> valid_until, op, *args = body.split(&quot;\x00&quot;)</code>
903
909
  </li>
904
910
 
905
- <li class="covered" data-hits="3" data-linenumber="128">
911
+ <li class="covered" data-hits="3" data-linenumber="129">
906
912
  <span class="hits">3</span>
907
913
 
908
914
  <code class="ruby"> valid_until = valid_until.unpack(&#39;l&lt;&#39;)[0]</code>
909
915
  </li>
910
916
 
911
- <li class="covered" data-hits="3" data-linenumber="129">
917
+ <li class="covered" data-hits="3" data-linenumber="130">
912
918
  <span class="hits">3</span>
913
919
 
914
920
  <code class="ruby"> expired = Time.now.to_i &gt; valid_until</code>
915
921
  </li>
916
922
 
917
- <li class="covered" data-hits="3" data-linenumber="130">
923
+ <li class="covered" data-hits="3" data-linenumber="131">
918
924
  <span class="hits">3</span>
919
925
 
920
- <code class="ruby"> if expired &amp;&amp; !force</code>
921
- </li>
922
-
923
- <li class="covered" data-hits="1" data-linenumber="131">
924
- <span class="hits">1</span>
925
-
926
- <code class="ruby"> raise ArgumentError, &quot;Token expired at #{Time.at(valid_until)} (#{ChronicDuration.output(Time.now.to_i - valid_until)} ago)&quot;</code>
926
+ <code class="ruby"> raise ArgumentError, &quot;Token expired at #{Time.at(valid_until)} (#{ChronicDuration.output(Time.now.to_i - valid_until)} ago)&quot; if expired &amp;&amp; !force</code>
927
927
  </li>
928
928
 
929
- <li class="never" data-hits="" data-linenumber="132">
930
-
929
+ <li class="covered" data-hits="2" data-linenumber="132">
930
+ <span class="hits">2</span>
931
931
 
932
- <code class="ruby"> end</code>
932
+ <code class="ruby"> { valid_until: valid_until,</code>
933
933
  </li>
934
934
 
935
935
  <li class="never" data-hits="" data-linenumber="133">
936
936
 
937
937
 
938
- <code class="ruby"> { valid_until: valid_until,</code>
938
+ <code class="ruby"> op: op,</code>
939
939
  </li>
940
940
 
941
941
  <li class="never" data-hits="" data-linenumber="134">
942
942
 
943
943
 
944
- <code class="ruby"> op: op,</code>
944
+ <code class="ruby"> args: args,</code>
945
945
  </li>
946
946
 
947
947
  <li class="never" data-hits="" data-linenumber="135">
948
948
 
949
949
 
950
- <code class="ruby"> args: args,</code>
951
- </li>
952
-
953
- <li class="covered" data-hits="2" data-linenumber="136">
954
- <span class="hits">2</span>
955
-
956
950
  <code class="ruby"> expired: expired }</code>
957
951
  </li>
958
952
 
959
- <li class="never" data-hits="" data-linenumber="137">
953
+ <li class="never" data-hits="" data-linenumber="136">
960
954
 
961
955
 
962
956
  <code class="ruby"> end</code>
963
957
  </li>
964
958
 
965
- <li class="never" data-hits="" data-linenumber="138">
959
+ <li class="never" data-hits="" data-linenumber="137">
966
960
 
967
961
 
968
962
  <code class="ruby"> end</code>
969
963
  </li>
970
964
 
971
- <li class="never" data-hits="" data-linenumber="139">
965
+ <li class="never" data-hits="" data-linenumber="138">
972
966
 
973
967
 
974
968
  <code class="ruby"> end # /BB::Crypto::Token</code>
975
969
  </li>
976
970
 
977
- <li class="never" data-hits="" data-linenumber="140">
971
+ <li class="never" data-hits="" data-linenumber="139">
978
972
 
979
973
 
980
974
  <code class="ruby"> end # /BB::Crypto</code>
981
975
  </li>
982
976
 
983
- <li class="never" data-hits="" data-linenumber="141">
977
+ <li class="never" data-hits="" data-linenumber="140">
984
978
 
985
979
 
986
980
  <code class="ruby">end</code>
@@ -989,15 +983,16 @@
989
983
  </ol>
990
984
  </pre>
991
985
  </div>
986
+
992
987
 
993
988
  <div class="source_table" id="192e300fd7769b750c82567439ee016f85516f3d">
994
989
  <div class="header">
995
990
  <h3>lib/blackbox/gem.rb</h3>
996
- <h4><span class="green">100.0 %</span> covered</h4>
991
+ <h4><span class="green">97.06 %</span> covered</h4>
997
992
  <div>
998
993
  <b>34</b> relevant lines.
999
- <span class="green"><b>34</b> lines covered</span> and
1000
- <span class="red"><b>0</b> lines missed.</span>
994
+ <span class="green"><b>33</b> lines covered</span> and
995
+ <span class="red"><b>1</b> lines missed.</span>
1001
996
  </div>
1002
997
  </div>
1003
998
 
@@ -1010,559 +1005,565 @@
1010
1005
  <code class="ruby"># frozen_string_literal: true</code>
1011
1006
  </li>
1012
1007
 
1013
- <li class="covered" data-hits="1" data-linenumber="2">
1014
- <span class="hits">1</span>
1008
+ <li class="never" data-hits="" data-linenumber="2">
1015
1009
 
1016
- <code class="ruby">require &#39;versionomy&#39;</code>
1010
+
1011
+ <code class="ruby"></code>
1017
1012
  </li>
1018
1013
 
1019
1014
  <li class="covered" data-hits="1" data-linenumber="3">
1020
1015
  <span class="hits">1</span>
1021
1016
 
1022
- <code class="ruby">module BB</code>
1017
+ <code class="ruby">require &#39;versionomy&#39;</code>
1023
1018
  </li>
1024
1019
 
1025
- <li class="never" data-hits="" data-linenumber="4">
1020
+ <li class="covered" data-hits="1" data-linenumber="4">
1021
+ <span class="hits">1</span>
1022
+
1023
+ <code class="ruby">module BB</code>
1024
+ </li>
1025
+
1026
+ <li class="never" data-hits="" data-linenumber="5">
1026
1027
 
1027
1028
 
1028
1029
  <code class="ruby"> # Gem utilities.</code>
1029
1030
  </li>
1030
1031
 
1031
- <li class="covered" data-hits="1" data-linenumber="5">
1032
+ <li class="covered" data-hits="1" data-linenumber="6">
1032
1033
  <span class="hits">1</span>
1033
1034
 
1034
1035
  <code class="ruby"> module Gem</code>
1035
1036
  </li>
1036
1037
 
1037
- <li class="covered" data-hits="1" data-linenumber="6">
1038
+ <li class="covered" data-hits="1" data-linenumber="7">
1038
1039
  <span class="hits">1</span>
1039
1040
 
1040
1041
  <code class="ruby"> class &lt;&lt; self</code>
1041
1042
  </li>
1042
1043
 
1043
- <li class="never" data-hits="" data-linenumber="7">
1044
+ <li class="never" data-hits="" data-linenumber="8">
1044
1045
 
1045
1046
 
1046
1047
  <code class="ruby"> # Return information about the currently installed gem</code>
1047
1048
  </li>
1048
1049
 
1049
- <li class="never" data-hits="" data-linenumber="8">
1050
+ <li class="never" data-hits="" data-linenumber="9">
1050
1051
 
1051
1052
 
1052
1053
  <code class="ruby"> # version and the latest available version on rubygems.org.</code>
1053
1054
  </li>
1054
1055
 
1055
- <li class="never" data-hits="" data-linenumber="9">
1056
+ <li class="never" data-hits="" data-linenumber="10">
1056
1057
 
1057
1058
 
1058
1059
  <code class="ruby"> #</code>
1059
1060
  </li>
1060
1061
 
1061
- <li class="never" data-hits="" data-linenumber="10">
1062
+ <li class="never" data-hits="" data-linenumber="11">
1062
1063
 
1063
1064
 
1064
1065
  <code class="ruby"> # @param [Hash] opts the options to create a message with.</code>
1065
1066
  </li>
1066
1067
 
1067
- <li class="never" data-hits="" data-linenumber="11">
1068
+ <li class="never" data-hits="" data-linenumber="12">
1068
1069
 
1069
1070
 
1070
1071
  <code class="ruby"> # @option opts [Fixnum] :check_interval how frequently to query rubygems.org (default: 3600)</code>
1071
1072
  </li>
1072
1073
 
1073
- <li class="never" data-hits="" data-linenumber="12">
1074
+ <li class="never" data-hits="" data-linenumber="13">
1074
1075
 
1075
1076
 
1076
1077
  <code class="ruby"> # @option opts [String] :disabling_env_var (default: #{GEMNAME}_DISABLE_VERSION_CHECK)</code>
1077
1078
  </li>
1078
1079
 
1079
- <li class="never" data-hits="" data-linenumber="13">
1080
+ <li class="never" data-hits="" data-linenumber="14">
1080
1081
 
1081
1082
 
1082
1083
  <code class="ruby"> # @option opts [] :from (&#39;nobody&#39;) From address</code>
1083
1084
  </li>
1084
1085
 
1085
- <li class="never" data-hits="" data-linenumber="14">
1086
+ <li class="never" data-hits="" data-linenumber="15">
1086
1087
 
1087
1088
 
1088
1089
  <code class="ruby"> # @return [Hash] result</code>
1089
1090
  </li>
1090
1091
 
1091
- <li class="never" data-hits="" data-linenumber="15">
1092
+ <li class="never" data-hits="" data-linenumber="16">
1092
1093
 
1093
1094
 
1094
1095
  <code class="ruby"> # * :gem_name =&gt; name of current gem</code>
1095
1096
  </li>
1096
1097
 
1097
- <li class="never" data-hits="" data-linenumber="16">
1098
+ <li class="never" data-hits="" data-linenumber="17">
1098
1099
 
1099
1100
 
1100
1101
  <code class="ruby"> # * :gem_installed_version =&gt; installed version</code>
1101
1102
  </li>
1102
1103
 
1103
- <li class="never" data-hits="" data-linenumber="17">
1104
+ <li class="never" data-hits="" data-linenumber="18">
1104
1105
 
1105
1106
 
1106
1107
  <code class="ruby"> # * :gem_latest_version =&gt; latest version on rubygems.org</code>
1107
1108
  </li>
1108
1109
 
1109
- <li class="never" data-hits="" data-linenumber="18">
1110
+ <li class="never" data-hits="" data-linenumber="19">
1110
1111
 
1111
1112
 
1112
1113
  <code class="ruby"> # * :last_checked_for_update =&gt; timestamp of last query to rubygems.org</code>
1113
1114
  </li>
1114
1115
 
1115
- <li class="never" data-hits="" data-linenumber="19">
1116
+ <li class="never" data-hits="" data-linenumber="20">
1116
1117
 
1117
1118
 
1118
1119
  <code class="ruby"> # * :next_check_for_update =&gt; timestamp of next query to rubygems.org</code>
1119
1120
  </li>
1120
1121
 
1121
- <li class="never" data-hits="" data-linenumber="20">
1122
+ <li class="never" data-hits="" data-linenumber="21">
1122
1123
 
1123
1124
 
1124
1125
  <code class="ruby"> # * :gem_update_available =&gt; update available?</code>
1125
1126
  </li>
1126
1127
 
1127
- <li class="never" data-hits="" data-linenumber="21">
1128
+ <li class="never" data-hits="" data-linenumber="22">
1128
1129
 
1129
1130
 
1130
1131
  <code class="ruby"> # * :installed_is_latest =&gt; is installed version == latest available version?</code>
1131
1132
  </li>
1132
1133
 
1133
- <li class="covered" data-hits="1" data-linenumber="22">
1134
+ <li class="covered" data-hits="1" data-linenumber="23">
1134
1135
  <span class="hits">1</span>
1135
1136
 
1136
1137
  <code class="ruby"> def version_info(*_, **opts)</code>
1137
1138
  </li>
1138
1139
 
1139
- <li class="covered" data-hits="8" data-linenumber="23">
1140
+ <li class="covered" data-hits="8" data-linenumber="24">
1140
1141
  <span class="hits">8</span>
1141
1142
 
1142
1143
  <code class="ruby"> ret = {</code>
1143
1144
  </li>
1144
1145
 
1145
- <li class="never" data-hits="" data-linenumber="24">
1146
+ <li class="never" data-hits="" data-linenumber="25">
1146
1147
 
1147
1148
 
1148
1149
  <code class="ruby"> gem_name: :unknown,</code>
1149
1150
  </li>
1150
1151
 
1151
- <li class="never" data-hits="" data-linenumber="25">
1152
+ <li class="never" data-hits="" data-linenumber="26">
1152
1153
 
1153
1154
 
1154
1155
  <code class="ruby"> gem_installed_version: :unknown,</code>
1155
1156
  </li>
1156
1157
 
1157
- <li class="never" data-hits="" data-linenumber="26">
1158
+ <li class="never" data-hits="" data-linenumber="27">
1158
1159
 
1159
1160
 
1160
1161
  <code class="ruby"> gem_latest_version: :unknown,</code>
1161
1162
  </li>
1162
1163
 
1163
- <li class="never" data-hits="" data-linenumber="27">
1164
+ <li class="never" data-hits="" data-linenumber="28">
1164
1165
 
1165
1166
 
1166
1167
  <code class="ruby"> gem_update_available: false,</code>
1167
1168
  </li>
1168
1169
 
1169
- <li class="never" data-hits="" data-linenumber="28">
1170
+ <li class="never" data-hits="" data-linenumber="29">
1170
1171
 
1171
1172
 
1172
1173
  <code class="ruby"> last_checked_for_update: :unknown,</code>
1173
1174
  </li>
1174
1175
 
1175
- <li class="never" data-hits="" data-linenumber="29">
1176
+ <li class="never" data-hits="" data-linenumber="30">
1176
1177
 
1177
1178
 
1178
1179
  <code class="ruby"> next_check_for_update: :unknown,</code>
1179
1180
  </li>
1180
1181
 
1181
- <li class="never" data-hits="" data-linenumber="30">
1182
+ <li class="never" data-hits="" data-linenumber="31">
1182
1183
 
1183
1184
 
1184
1185
  <code class="ruby"> installed_is_latest: true</code>
1185
1186
  </li>
1186
1187
 
1187
- <li class="never" data-hits="" data-linenumber="31">
1188
+ <li class="never" data-hits="" data-linenumber="32">
1188
1189
 
1189
1190
 
1190
1191
  <code class="ruby"> }</code>
1191
1192
  </li>
1192
1193
 
1193
- <li class="never" data-hits="" data-linenumber="32">
1194
+ <li class="never" data-hits="" data-linenumber="33">
1194
1195
 
1195
1196
 
1196
1197
  <code class="ruby"></code>
1197
1198
  </li>
1198
1199
 
1199
- <li class="covered" data-hits="8" data-linenumber="33">
1200
+ <li class="covered" data-hits="8" data-linenumber="34">
1200
1201
  <span class="hits">8</span>
1201
1202
 
1202
1203
  <code class="ruby"> calling_file = caller[0].split(&#39;:&#39;)[0]</code>
1203
1204
  </li>
1204
1205
 
1205
- <li class="covered" data-hits="8" data-linenumber="34">
1206
+ <li class="covered" data-hits="8" data-linenumber="35">
1206
1207
  <span class="hits">8</span>
1207
1208
 
1208
1209
  <code class="ruby"> spec = ::Gem::Specification.find do |s|</code>
1209
1210
  </li>
1210
1211
 
1211
- <li class="covered" data-hits="96" data-linenumber="35">
1212
+ <li class="covered" data-hits="96" data-linenumber="36">
1212
1213
  <span class="hits">96</span>
1213
1214
 
1214
1215
  <code class="ruby"> File.fnmatch(File.join(s.full_gem_path, &#39;*&#39;), calling_file)</code>
1215
1216
  </li>
1216
1217
 
1217
- <li class="never" data-hits="" data-linenumber="36">
1218
+ <li class="never" data-hits="" data-linenumber="37">
1218
1219
 
1219
1220
 
1220
1221
  <code class="ruby"> end</code>
1221
1222
  </li>
1222
1223
 
1223
- <li class="never" data-hits="" data-linenumber="37">
1224
+ <li class="never" data-hits="" data-linenumber="38">
1224
1225
 
1225
1226
 
1226
1227
  <code class="ruby"></code>
1227
1228
  </li>
1228
1229
 
1229
- <li class="covered" data-hits="8" data-linenumber="38">
1230
+ <li class="covered" data-hits="8" data-linenumber="39">
1230
1231
  <span class="hits">8</span>
1231
1232
 
1232
1233
  <code class="ruby"> ret[:gem_installed_version] = spec&amp;.version&amp;.to_s || :unknown</code>
1233
1234
  </li>
1234
1235
 
1235
- <li class="covered" data-hits="8" data-linenumber="39">
1236
+ <li class="covered" data-hits="8" data-linenumber="40">
1236
1237
  <span class="hits">8</span>
1237
1238
 
1238
1239
  <code class="ruby"> ret[:gem_name] = spec&amp;.name || :unknown</code>
1239
1240
  </li>
1240
1241
 
1241
- <li class="never" data-hits="" data-linenumber="40">
1242
+ <li class="never" data-hits="" data-linenumber="41">
1242
1243
 
1243
1244
 
1244
1245
  <code class="ruby"></code>
1245
1246
  </li>
1246
1247
 
1247
- <li class="covered" data-hits="8" data-linenumber="41">
1248
+ <li class="covered" data-hits="8" data-linenumber="42">
1248
1249
  <span class="hits">8</span>
1249
1250
 
1250
1251
  <code class="ruby"> opts = { # defaults</code>
1251
1252
  </li>
1252
1253
 
1253
- <li class="never" data-hits="" data-linenumber="42">
1254
+ <li class="never" data-hits="" data-linenumber="43">
1254
1255
 
1255
1256
 
1256
1257
  <code class="ruby"> check_interval: 3600,</code>
1257
1258
  </li>
1258
1259
 
1259
- <li class="never" data-hits="" data-linenumber="43">
1260
+ <li class="never" data-hits="" data-linenumber="44">
1260
1261
 
1261
1262
 
1262
1263
  <code class="ruby"> disabling_env_var: &quot;#{ret[:gem_name].upcase}_DISABLE_VERSION_CHECK&quot;</code>
1263
1264
  </li>
1264
1265
 
1265
- <li class="never" data-hits="" data-linenumber="44">
1266
+ <li class="never" data-hits="" data-linenumber="45">
1266
1267
 
1267
1268
 
1268
1269
  <code class="ruby"> }.merge(opts)</code>
1269
1270
  </li>
1270
1271
 
1271
- <li class="never" data-hits="" data-linenumber="45">
1272
+ <li class="never" data-hits="" data-linenumber="46">
1272
1273
 
1273
1274
 
1274
1275
  <code class="ruby"></code>
1275
1276
  </li>
1276
1277
 
1277
- <li class="covered" data-hits="8" data-linenumber="46">
1278
+ <li class="covered" data-hits="8" data-linenumber="47">
1278
1279
  <span class="hits">8</span>
1279
1280
 
1280
1281
  <code class="ruby"> return ret if ret[:gem_name] == :unknown</code>
1281
1282
  </li>
1282
1283
 
1283
- <li class="covered" data-hits="8" data-linenumber="47">
1284
+ <li class="covered" data-hits="8" data-linenumber="48">
1284
1285
  <span class="hits">8</span>
1285
1286
 
1286
1287
  <code class="ruby"> return ret if ret[:gem_installed_version] == :unknown</code>
1287
1288
  </li>
1288
1289
 
1289
- <li class="covered" data-hits="8" data-linenumber="48">
1290
+ <li class="covered" data-hits="8" data-linenumber="49">
1290
1291
  <span class="hits">8</span>
1291
1292
 
1292
1293
  <code class="ruby"> if opts[:disabling_env_var] &amp;&amp; ENV.include?(opts[:disabling_env_var])</code>
1293
1294
  </li>
1294
1295
 
1295
- <li class="covered" data-hits="1" data-linenumber="49">
1296
+ <li class="covered" data-hits="1" data-linenumber="50">
1296
1297
  <span class="hits">1</span>
1297
1298
 
1298
1299
  <code class="ruby"> ret[:next_check_for_update] = :never</code>
1299
1300
  </li>
1300
1301
 
1301
- <li class="covered" data-hits="1" data-linenumber="50">
1302
+ <li class="covered" data-hits="1" data-linenumber="51">
1302
1303
  <span class="hits">1</span>
1303
1304
 
1304
1305
  <code class="ruby"> return ret</code>
1305
1306
  </li>
1306
1307
 
1307
- <li class="never" data-hits="" data-linenumber="51">
1308
+ <li class="never" data-hits="" data-linenumber="52">
1308
1309
 
1309
1310
 
1310
1311
  <code class="ruby"> end</code>
1311
1312
  </li>
1312
1313
 
1313
- <li class="never" data-hits="" data-linenumber="52">
1314
+ <li class="never" data-hits="" data-linenumber="53">
1314
1315
 
1315
1316
 
1316
1317
  <code class="ruby"></code>
1317
1318
  </li>
1318
1319
 
1319
- <li class="covered" data-hits="7" data-linenumber="53">
1320
+ <li class="covered" data-hits="7" data-linenumber="54">
1320
1321
  <span class="hits">7</span>
1321
1322
 
1322
1323
  <code class="ruby"> require &#39;gem_update_checker&#39;</code>
1323
1324
  </li>
1324
1325
 
1325
- <li class="covered" data-hits="7" data-linenumber="54">
1326
+ <li class="covered" data-hits="7" data-linenumber="55">
1326
1327
  <span class="hits">7</span>
1327
1328
 
1328
1329
  <code class="ruby"> require &#39;tmpdir&#39;</code>
1329
1330
  </li>
1330
1331
 
1331
- <li class="covered" data-hits="7" data-linenumber="55">
1332
+ <li class="covered" data-hits="7" data-linenumber="56">
1332
1333
  <span class="hits">7</span>
1333
1334
 
1334
1335
  <code class="ruby"> require &#39;fileutils&#39;</code>
1335
1336
  </li>
1336
1337
 
1337
- <li class="never" data-hits="" data-linenumber="56">
1338
+ <li class="never" data-hits="" data-linenumber="57">
1338
1339
 
1339
1340
 
1340
1341
  <code class="ruby"></code>
1341
1342
  </li>
1342
1343
 
1343
- <li class="covered" data-hits="7" data-linenumber="57">
1344
+ <li class="covered" data-hits="7" data-linenumber="58">
1344
1345
  <span class="hits">7</span>
1345
1346
 
1346
1347
  <code class="ruby"> statefile_path = File.join(Dir.tmpdir, &quot;#{ret[:gem_name]}-#{ret[:gem_installed_version]}.last_update_check&quot;)</code>
1347
1348
  </li>
1348
1349
 
1349
- <li class="never" data-hits="" data-linenumber="58">
1350
+ <li class="never" data-hits="" data-linenumber="59">
1350
1351
 
1351
1352
 
1352
1353
  <code class="ruby"></code>
1353
1354
  </li>
1354
1355
 
1355
- <li class="covered" data-hits="7" data-linenumber="59">
1356
+ <li class="covered" data-hits="7" data-linenumber="60">
1356
1357
  <span class="hits">7</span>
1357
1358
 
1358
1359
  <code class="ruby"> last_check_at = nil</code>
1359
1360
  </li>
1360
1361
 
1361
- <li class="covered" data-hits="7" data-linenumber="60">
1362
+ <li class="covered" data-hits="7" data-linenumber="61">
1362
1363
  <span class="hits">7</span>
1363
1364
 
1364
1365
  <code class="ruby"> begin</code>
1365
1366
  </li>
1366
1367
 
1367
- <li class="covered" data-hits="7" data-linenumber="61">
1368
+ <li class="covered" data-hits="7" data-linenumber="62">
1368
1369
  <span class="hits">7</span>
1369
1370
 
1370
1371
  <code class="ruby"> last_check_at = File.stat(statefile_path).mtime</code>
1371
1372
  </li>
1372
1373
 
1373
- <li class="never" data-hits="" data-linenumber="62">
1374
+ <li class="never" data-hits="" data-linenumber="63">
1374
1375
 
1375
1376
 
1376
- <code class="ruby"> rescue</code>
1377
+ <code class="ruby"> rescue StandardError</code>
1377
1378
  </li>
1378
1379
 
1379
- <li class="covered" data-hits="1" data-linenumber="63">
1380
+ <li class="covered" data-hits="1" data-linenumber="64">
1380
1381
  <span class="hits">1</span>
1381
1382
 
1382
1383
  <code class="ruby"> last_check_at = Time.at(0)</code>
1383
1384
  </li>
1384
1385
 
1385
- <li class="never" data-hits="" data-linenumber="64">
1386
+ <li class="never" data-hits="" data-linenumber="65">
1386
1387
 
1387
1388
 
1388
1389
  <code class="ruby"> end</code>
1389
1390
  </li>
1390
1391
 
1391
- <li class="never" data-hits="" data-linenumber="65">
1392
+ <li class="never" data-hits="" data-linenumber="66">
1392
1393
 
1393
1394
 
1394
1395
  <code class="ruby"></code>
1395
1396
  </li>
1396
1397
 
1397
- <li class="covered" data-hits="7" data-linenumber="66">
1398
+ <li class="covered" data-hits="7" data-linenumber="67">
1398
1399
  <span class="hits">7</span>
1399
1400
 
1400
1401
  <code class="ruby"> ret.merge!(</code>
1401
1402
  </li>
1402
1403
 
1403
- <li class="never" data-hits="" data-linenumber="67">
1404
+ <li class="never" data-hits="" data-linenumber="68">
1404
1405
 
1405
1406
 
1406
1407
  <code class="ruby"> last_checked_for_update: last_check_at,</code>
1407
1408
  </li>
1408
1409
 
1409
- <li class="never" data-hits="" data-linenumber="68">
1410
+ <li class="never" data-hits="" data-linenumber="69">
1410
1411
 
1411
1412
 
1412
1413
  <code class="ruby"> next_check_for_update: last_check_at + opts[:check_interval]</code>
1413
1414
  </li>
1414
1415
 
1415
- <li class="never" data-hits="" data-linenumber="69">
1416
+ <li class="never" data-hits="" data-linenumber="70">
1416
1417
 
1417
1418
 
1418
1419
  <code class="ruby"> )</code>
1419
1420
  </li>
1420
1421
 
1421
- <li class="never" data-hits="" data-linenumber="70">
1422
+ <li class="never" data-hits="" data-linenumber="71">
1422
1423
 
1423
1424
 
1424
1425
  <code class="ruby"></code>
1425
1426
  </li>
1426
1427
 
1427
- <li class="covered" data-hits="7" data-linenumber="71">
1428
+ <li class="covered" data-hits="7" data-linenumber="72">
1428
1429
  <span class="hits">7</span>
1429
1430
 
1430
1431
  <code class="ruby"> return ret if last_check_at + opts[:check_interval] &gt; Time.now &amp;&amp; !opts[:force_check]</code>
1431
1432
  </li>
1432
1433
 
1433
- <li class="never" data-hits="" data-linenumber="72">
1434
+ <li class="never" data-hits="" data-linenumber="73">
1434
1435
 
1435
1436
 
1436
1437
  <code class="ruby"></code>
1437
1438
  </li>
1438
1439
 
1439
- <li class="covered" data-hits="6" data-linenumber="73">
1440
+ <li class="covered" data-hits="6" data-linenumber="74">
1440
1441
  <span class="hits">6</span>
1441
1442
 
1442
1443
  <code class="ruby"> checker = GemUpdateChecker::Client.new(ret[:gem_name], ret[:gem_installed_version])</code>
1443
1444
  </li>
1444
1445
 
1445
- <li class="covered" data-hits="6" data-linenumber="74">
1446
+ <li class="covered" data-hits="6" data-linenumber="75">
1446
1447
  <span class="hits">6</span>
1447
1448
 
1448
1449
  <code class="ruby"> last_check_at = Time.now</code>
1449
1450
  </li>
1450
1451
 
1451
- <li class="never" data-hits="" data-linenumber="75">
1452
+ <li class="never" data-hits="" data-linenumber="76">
1452
1453
 
1453
1454
 
1454
1455
  <code class="ruby"></code>
1455
1456
  </li>
1456
1457
 
1457
- <li class="covered" data-hits="6" data-linenumber="76">
1458
+ <li class="covered" data-hits="6" data-linenumber="77">
1458
1459
  <span class="hits">6</span>
1459
1460
 
1460
1461
  <code class="ruby"> ret.merge!(</code>
1461
1462
  </li>
1462
1463
 
1463
- <li class="never" data-hits="" data-linenumber="77">
1464
+ <li class="never" data-hits="" data-linenumber="78">
1464
1465
 
1465
1466
 
1466
1467
  <code class="ruby"> gem_latest_version: checker.latest_version,</code>
1467
1468
  </li>
1468
1469
 
1469
- <li class="never" data-hits="" data-linenumber="78">
1470
+ <li class="never" data-hits="" data-linenumber="79">
1470
1471
 
1471
1472
 
1472
1473
  <code class="ruby"> last_checked_for_update: last_check_at,</code>
1473
1474
  </li>
1474
1475
 
1475
- <li class="never" data-hits="" data-linenumber="79">
1476
+ <li class="never" data-hits="" data-linenumber="80">
1476
1477
 
1477
1478
 
1478
1479
  <code class="ruby"> next_check_for_update: last_check_at + opts[:check_interval],</code>
1479
1480
  </li>
1480
1481
 
1481
- <li class="never" data-hits="" data-linenumber="80">
1482
+ <li class="never" data-hits="" data-linenumber="81">
1482
1483
 
1483
1484
 
1484
1485
  <code class="ruby"> installed_is_latest: ret[:gem_installed_version] == checker.latest_version,</code>
1485
1486
  </li>
1486
1487
 
1487
- <li class="never" data-hits="" data-linenumber="81">
1488
+ <li class="never" data-hits="" data-linenumber="82">
1488
1489
 
1489
1490
 
1490
1491
  <code class="ruby"> gem_update_available: Versionomy.parse(ret[:gem_installed_version]) &lt; Versionomy.parse(checker.latest_version)</code>
1491
1492
  </li>
1492
1493
 
1493
- <li class="never" data-hits="" data-linenumber="82">
1494
+ <li class="never" data-hits="" data-linenumber="83">
1494
1495
 
1495
1496
 
1496
1497
  <code class="ruby"> )</code>
1497
1498
  </li>
1498
1499
 
1499
- <li class="never" data-hits="" data-linenumber="83">
1500
+ <li class="never" data-hits="" data-linenumber="84">
1500
1501
 
1501
1502
 
1502
1503
  <code class="ruby"></code>
1503
1504
  </li>
1504
1505
 
1505
- <li class="covered" data-hits="6" data-linenumber="84">
1506
+ <li class="covered" data-hits="6" data-linenumber="85">
1506
1507
  <span class="hits">6</span>
1507
1508
 
1508
1509
  <code class="ruby"> if ret[:installed_is_latest] || opts[:force_check]</code>
1509
1510
  </li>
1510
1511
 
1511
- <li class="covered" data-hits="4" data-linenumber="85">
1512
- <span class="hits">4</span>
1512
+ <li class="covered" data-hits="6" data-linenumber="86">
1513
+ <span class="hits">6</span>
1513
1514
 
1514
1515
  <code class="ruby"> FileUtils.touch(statefile_path, mtime: Time.now)</code>
1515
1516
  </li>
1516
1517
 
1517
- <li class="never" data-hits="" data-linenumber="86">
1518
+ <li class="never" data-hits="" data-linenumber="87">
1518
1519
 
1519
1520
 
1520
1521
  <code class="ruby"> else</code>
1521
1522
  </li>
1522
1523
 
1523
- <li class="covered" data-hits="2" data-linenumber="87">
1524
- <span class="hits">2</span>
1524
+ <li class="missed" data-hits="0" data-linenumber="88">
1525
+
1525
1526
 
1526
1527
  <code class="ruby"> ret[:next_check_for_update] = Time.now</code>
1527
1528
  </li>
1528
1529
 
1529
- <li class="never" data-hits="" data-linenumber="88">
1530
+ <li class="never" data-hits="" data-linenumber="89">
1530
1531
 
1531
1532
 
1532
1533
  <code class="ruby"> end</code>
1533
1534
  </li>
1534
1535
 
1535
- <li class="never" data-hits="" data-linenumber="89">
1536
+ <li class="never" data-hits="" data-linenumber="90">
1536
1537
 
1537
1538
 
1538
1539
  <code class="ruby"></code>
1539
1540
  </li>
1540
1541
 
1541
- <li class="covered" data-hits="6" data-linenumber="90">
1542
+ <li class="covered" data-hits="6" data-linenumber="91">
1542
1543
  <span class="hits">6</span>
1543
1544
 
1544
1545
  <code class="ruby"> ret</code>
1545
1546
  </li>
1546
1547
 
1547
- <li class="never" data-hits="" data-linenumber="91">
1548
+ <li class="never" data-hits="" data-linenumber="92">
1548
1549
 
1549
1550
 
1550
1551
  <code class="ruby"> end</code>
1551
1552
  </li>
1552
1553
 
1553
- <li class="never" data-hits="" data-linenumber="92">
1554
+ <li class="never" data-hits="" data-linenumber="93">
1554
1555
 
1555
1556
 
1556
1557
  <code class="ruby"> end</code>
1557
1558
  </li>
1558
1559
 
1559
- <li class="never" data-hits="" data-linenumber="93">
1560
+ <li class="never" data-hits="" data-linenumber="94">
1560
1561
 
1561
1562
 
1562
1563
  <code class="ruby"> end</code>
1563
1564
  </li>
1564
1565
 
1565
- <li class="never" data-hits="" data-linenumber="94">
1566
+ <li class="never" data-hits="" data-linenumber="95">
1566
1567
 
1567
1568
 
1568
1569
  <code class="ruby">end</code>
@@ -1571,6 +1572,7 @@
1571
1572
  </ol>
1572
1573
  </pre>
1573
1574
  </div>
1575
+
1574
1576
 
1575
1577
  <div class="source_table" id="636c073a27c86cd147d7b0f717311b3b9eded478">
1576
1578
  <div class="header">
@@ -1592,289 +1594,295 @@
1592
1594
  <code class="ruby"># frozen_string_literal: true</code>
1593
1595
  </li>
1594
1596
 
1595
- <li class="covered" data-hits="1" data-linenumber="2">
1597
+ <li class="never" data-hits="" data-linenumber="2">
1598
+
1599
+
1600
+ <code class="ruby"></code>
1601
+ </li>
1602
+
1603
+ <li class="covered" data-hits="1" data-linenumber="3">
1596
1604
  <span class="hits">1</span>
1597
1605
 
1598
1606
  <code class="ruby">module BB</code>
1599
1607
  </li>
1600
1608
 
1601
- <li class="never" data-hits="" data-linenumber="3">
1609
+ <li class="never" data-hits="" data-linenumber="4">
1602
1610
 
1603
1611
 
1604
1612
  <code class="ruby"> # Hash utilities.</code>
1605
1613
  </li>
1606
1614
 
1607
- <li class="covered" data-hits="1" data-linenumber="4">
1615
+ <li class="covered" data-hits="1" data-linenumber="5">
1608
1616
  <span class="hits">1</span>
1609
1617
 
1610
1618
  <code class="ruby"> module Hash</code>
1611
1619
  </li>
1612
1620
 
1613
- <li class="covered" data-hits="1" data-linenumber="5">
1621
+ <li class="covered" data-hits="1" data-linenumber="6">
1614
1622
  <span class="hits">1</span>
1615
1623
 
1616
1624
  <code class="ruby"> class &lt;&lt; self</code>
1617
1625
  </li>
1618
1626
 
1619
- <li class="never" data-hits="" data-linenumber="6">
1627
+ <li class="never" data-hits="" data-linenumber="7">
1620
1628
 
1621
1629
 
1622
1630
  <code class="ruby"> # Symbolize all top level keys.</code>
1623
1631
  </li>
1624
1632
 
1625
- <li class="never" data-hits="" data-linenumber="7">
1633
+ <li class="never" data-hits="" data-linenumber="8">
1626
1634
 
1627
1635
 
1628
1636
  <code class="ruby"> #</code>
1629
1637
  </li>
1630
1638
 
1631
- <li class="never" data-hits="" data-linenumber="8">
1639
+ <li class="never" data-hits="" data-linenumber="9">
1632
1640
 
1633
1641
 
1634
1642
  <code class="ruby"> # @param [Hash] hash Input hash</code>
1635
1643
  </li>
1636
1644
 
1637
- <li class="never" data-hits="" data-linenumber="9">
1645
+ <li class="never" data-hits="" data-linenumber="10">
1638
1646
 
1639
1647
 
1640
1648
  <code class="ruby"> # @return [Hash] Output hash (with symbolized keys)</code>
1641
1649
  </li>
1642
1650
 
1643
- <li class="covered" data-hits="1" data-linenumber="10">
1651
+ <li class="covered" data-hits="1" data-linenumber="11">
1644
1652
  <span class="hits">1</span>
1645
1653
 
1646
1654
  <code class="ruby"> def symbolize_keys(hash)</code>
1647
1655
  </li>
1648
1656
 
1649
- <li class="covered" data-hits="112" data-linenumber="11">
1657
+ <li class="covered" data-hits="112" data-linenumber="12">
1650
1658
  <span class="hits">112</span>
1651
1659
 
1652
1660
  <code class="ruby"> hash.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }</code>
1653
1661
  </li>
1654
1662
 
1655
- <li class="never" data-hits="" data-linenumber="12">
1663
+ <li class="never" data-hits="" data-linenumber="13">
1656
1664
 
1657
1665
 
1658
1666
  <code class="ruby"> end</code>
1659
1667
  </li>
1660
1668
 
1661
- <li class="never" data-hits="" data-linenumber="13">
1669
+ <li class="never" data-hits="" data-linenumber="14">
1662
1670
 
1663
1671
 
1664
1672
  <code class="ruby"></code>
1665
1673
  </li>
1666
1674
 
1667
- <li class="never" data-hits="" data-linenumber="14">
1675
+ <li class="never" data-hits="" data-linenumber="15">
1668
1676
 
1669
1677
 
1670
1678
  <code class="ruby"> # Recursively flatten a hash to property-style format.</code>
1671
1679
  </li>
1672
1680
 
1673
- <li class="never" data-hits="" data-linenumber="15">
1681
+ <li class="never" data-hits="" data-linenumber="16">
1674
1682
 
1675
1683
 
1676
1684
  <code class="ruby"> # This is a lossy conversion and should only be used for display-purposes.</code>
1677
1685
  </li>
1678
1686
 
1679
- <li class="never" data-hits="" data-linenumber="16">
1687
+ <li class="never" data-hits="" data-linenumber="17">
1680
1688
 
1681
1689
 
1682
1690
  <code class="ruby"> #</code>
1683
1691
  </li>
1684
1692
 
1685
- <li class="never" data-hits="" data-linenumber="17">
1693
+ <li class="never" data-hits="" data-linenumber="18">
1686
1694
 
1687
1695
 
1688
1696
  <code class="ruby"> # @example</code>
1689
1697
  </li>
1690
1698
 
1691
- <li class="never" data-hits="" data-linenumber="18">
1699
+ <li class="never" data-hits="" data-linenumber="19">
1692
1700
 
1693
1701
 
1694
1702
  <code class="ruby"> # input = { :a =&gt; { :b =&gt; :c } }</code>
1695
1703
  </li>
1696
1704
 
1697
- <li class="never" data-hits="" data-linenumber="19">
1705
+ <li class="never" data-hits="" data-linenumber="20">
1698
1706
 
1699
1707
 
1700
1708
  <code class="ruby"> # BB::Hash.flatten_prop_style(input)</code>
1701
1709
  </li>
1702
1710
 
1703
- <li class="never" data-hits="" data-linenumber="20">
1711
+ <li class="never" data-hits="" data-linenumber="21">
1704
1712
 
1705
1713
 
1706
1714
  <code class="ruby"> # =&gt; {&quot;a.b&quot;=&gt;:c}</code>
1707
1715
  </li>
1708
1716
 
1709
- <li class="never" data-hits="" data-linenumber="21">
1717
+ <li class="never" data-hits="" data-linenumber="22">
1710
1718
 
1711
1719
 
1712
1720
  <code class="ruby"> #</code>
1713
1721
  </li>
1714
1722
 
1715
- <li class="never" data-hits="" data-linenumber="22">
1723
+ <li class="never" data-hits="" data-linenumber="23">
1716
1724
 
1717
1725
 
1718
1726
  <code class="ruby"> # @example</code>
1719
1727
  </li>
1720
1728
 
1721
- <li class="never" data-hits="" data-linenumber="23">
1729
+ <li class="never" data-hits="" data-linenumber="24">
1722
1730
 
1723
1731
 
1724
1732
  <code class="ruby"> # input = { :a =&gt; { :b =&gt; [:c, :d, :e] } }</code>
1725
1733
  </li>
1726
1734
 
1727
- <li class="never" data-hits="" data-linenumber="24">
1735
+ <li class="never" data-hits="" data-linenumber="25">
1728
1736
 
1729
1737
 
1730
1738
  <code class="ruby"> # BB::Hash.flatten_prop_style(input)</code>
1731
1739
  </li>
1732
1740
 
1733
- <li class="never" data-hits="" data-linenumber="25">
1741
+ <li class="never" data-hits="" data-linenumber="26">
1734
1742
 
1735
1743
 
1736
1744
  <code class="ruby"> # =&gt; {&quot;a.b&quot;=&gt;&quot;c,d,e&quot;}</code>
1737
1745
  </li>
1738
1746
 
1739
- <li class="never" data-hits="" data-linenumber="26">
1747
+ <li class="never" data-hits="" data-linenumber="27">
1740
1748
 
1741
1749
 
1742
1750
  <code class="ruby"> #</code>
1743
1751
  </li>
1744
1752
 
1745
- <li class="never" data-hits="" data-linenumber="27">
1753
+ <li class="never" data-hits="" data-linenumber="28">
1746
1754
 
1747
1755
 
1748
1756
  <code class="ruby"> # @param [Hash] input Input hash</code>
1749
1757
  </li>
1750
1758
 
1751
- <li class="never" data-hits="" data-linenumber="28">
1759
+ <li class="never" data-hits="" data-linenumber="29">
1752
1760
 
1753
1761
 
1754
1762
  <code class="ruby"> # @param [Hash] opts Options</code>
1755
1763
  </li>
1756
1764
 
1757
- <li class="never" data-hits="" data-linenumber="29">
1765
+ <li class="never" data-hits="" data-linenumber="30">
1758
1766
 
1759
1767
 
1760
1768
  <code class="ruby"> # @option opts [String] :delimiter</code>
1761
1769
  </li>
1762
1770
 
1763
- <li class="never" data-hits="" data-linenumber="30">
1771
+ <li class="never" data-hits="" data-linenumber="31">
1764
1772
 
1765
1773
 
1766
1774
  <code class="ruby"> # Key delimiter (Default: &#39;.&#39;)</code>
1767
1775
  </li>
1768
1776
 
1769
- <li class="never" data-hits="" data-linenumber="31">
1777
+ <li class="never" data-hits="" data-linenumber="32">
1770
1778
 
1771
1779
 
1772
1780
  <code class="ruby"> # @param [Hash] output (leave this blank)</code>
1773
1781
  </li>
1774
1782
 
1775
- <li class="never" data-hits="" data-linenumber="32">
1783
+ <li class="never" data-hits="" data-linenumber="33">
1776
1784
 
1777
1785
 
1778
1786
  <code class="ruby"> # @return [Hash] Output hash (flattened)</code>
1779
1787
  </li>
1780
1788
 
1781
- <li class="covered" data-hits="1" data-linenumber="33">
1789
+ <li class="covered" data-hits="1" data-linenumber="34">
1782
1790
  <span class="hits">1</span>
1783
1791
 
1784
1792
  <code class="ruby"> def flatten_prop_style(input = {}, opts = {}, output = {})</code>
1785
1793
  </li>
1786
1794
 
1787
- <li class="covered" data-hits="10" data-linenumber="34">
1795
+ <li class="covered" data-hits="10" data-linenumber="35">
1788
1796
  <span class="hits">10</span>
1789
1797
 
1790
1798
  <code class="ruby"> input.each do |key, value|</code>
1791
1799
  </li>
1792
1800
 
1793
- <li class="covered" data-hits="22" data-linenumber="35">
1801
+ <li class="covered" data-hits="22" data-linenumber="36">
1794
1802
  <span class="hits">22</span>
1795
1803
 
1796
1804
  <code class="ruby"> key = opts[:prefix].nil? ? key.to_s : &quot;#{opts[:prefix]}#{opts[:delimiter] || &#39;.&#39;}#{key}&quot;</code>
1797
1805
  </li>
1798
1806
 
1799
- <li class="covered" data-hits="22" data-linenumber="36">
1807
+ <li class="covered" data-hits="22" data-linenumber="37">
1800
1808
  <span class="hits">22</span>
1801
1809
 
1802
1810
  <code class="ruby"> case value</code>
1803
1811
  </li>
1804
1812
 
1805
- <li class="never" data-hits="" data-linenumber="37">
1813
+ <li class="never" data-hits="" data-linenumber="38">
1806
1814
 
1807
1815
 
1808
1816
  <code class="ruby"> when ::Hash</code>
1809
1817
  </li>
1810
1818
 
1811
- <li class="covered" data-hits="9" data-linenumber="38">
1819
+ <li class="covered" data-hits="9" data-linenumber="39">
1812
1820
  <span class="hits">9</span>
1813
1821
 
1814
1822
  <code class="ruby"> flatten_prop_style(value, opts.merge(prefix: key), output)</code>
1815
1823
  </li>
1816
1824
 
1817
- <li class="never" data-hits="" data-linenumber="39">
1825
+ <li class="never" data-hits="" data-linenumber="40">
1818
1826
 
1819
1827
 
1820
1828
  <code class="ruby"> when Array</code>
1821
1829
  </li>
1822
1830
 
1823
- <li class="covered" data-hits="4" data-linenumber="40">
1831
+ <li class="covered" data-hits="4" data-linenumber="41">
1824
1832
  <span class="hits">4</span>
1825
1833
 
1826
1834
  <code class="ruby"> output[key] = value.join(&#39;,&#39;)</code>
1827
1835
  </li>
1828
1836
 
1829
- <li class="never" data-hits="" data-linenumber="41">
1837
+ <li class="never" data-hits="" data-linenumber="42">
1830
1838
 
1831
1839
 
1832
1840
  <code class="ruby"> else</code>
1833
1841
  </li>
1834
1842
 
1835
- <li class="covered" data-hits="9" data-linenumber="42">
1843
+ <li class="covered" data-hits="9" data-linenumber="43">
1836
1844
  <span class="hits">9</span>
1837
1845
 
1838
1846
  <code class="ruby"> output[key] = value</code>
1839
1847
  </li>
1840
1848
 
1841
- <li class="never" data-hits="" data-linenumber="43">
1849
+ <li class="never" data-hits="" data-linenumber="44">
1842
1850
 
1843
1851
 
1844
1852
  <code class="ruby"> end</code>
1845
1853
  </li>
1846
1854
 
1847
- <li class="never" data-hits="" data-linenumber="44">
1855
+ <li class="never" data-hits="" data-linenumber="45">
1848
1856
 
1849
1857
 
1850
1858
  <code class="ruby"> end</code>
1851
1859
  </li>
1852
1860
 
1853
- <li class="covered" data-hits="10" data-linenumber="45">
1861
+ <li class="covered" data-hits="10" data-linenumber="46">
1854
1862
  <span class="hits">10</span>
1855
1863
 
1856
1864
  <code class="ruby"> output</code>
1857
1865
  </li>
1858
1866
 
1859
- <li class="never" data-hits="" data-linenumber="46">
1867
+ <li class="never" data-hits="" data-linenumber="47">
1860
1868
 
1861
1869
 
1862
1870
  <code class="ruby"> end</code>
1863
1871
  </li>
1864
1872
 
1865
- <li class="never" data-hits="" data-linenumber="47">
1873
+ <li class="never" data-hits="" data-linenumber="48">
1866
1874
 
1867
1875
 
1868
1876
  <code class="ruby"> end</code>
1869
1877
  </li>
1870
1878
 
1871
- <li class="never" data-hits="" data-linenumber="48">
1879
+ <li class="never" data-hits="" data-linenumber="49">
1872
1880
 
1873
1881
 
1874
1882
  <code class="ruby"> end</code>
1875
1883
  </li>
1876
1884
 
1877
- <li class="never" data-hits="" data-linenumber="49">
1885
+ <li class="never" data-hits="" data-linenumber="50">
1878
1886
 
1879
1887
 
1880
1888
  <code class="ruby">end</code>
@@ -1883,14 +1891,15 @@
1883
1891
  </ol>
1884
1892
  </pre>
1885
1893
  </div>
1894
+
1886
1895
 
1887
1896
  <div class="source_table" id="09e4da465507022615e91e2292a827cde0e5535c">
1888
1897
  <div class="header">
1889
1898
  <h3>lib/blackbox/number.rb</h3>
1890
1899
  <h4><span class="green">100.0 %</span> covered</h4>
1891
1900
  <div>
1892
- <b>52</b> relevant lines.
1893
- <span class="green"><b>52</b> lines covered</span> and
1901
+ <b>55</b> relevant lines.
1902
+ <span class="green"><b>55</b> lines covered</span> and
1894
1903
  <span class="red"><b>0</b> lines missed.</span>
1895
1904
  </div>
1896
1905
  </div>
@@ -1904,1081 +1913,1087 @@
1904
1913
  <code class="ruby"># frozen_string_literal: true</code>
1905
1914
  </li>
1906
1915
 
1907
- <li class="covered" data-hits="1" data-linenumber="2">
1916
+ <li class="never" data-hits="" data-linenumber="2">
1917
+
1918
+
1919
+ <code class="ruby"></code>
1920
+ </li>
1921
+
1922
+ <li class="covered" data-hits="1" data-linenumber="3">
1908
1923
  <span class="hits">1</span>
1909
1924
 
1910
1925
  <code class="ruby">require &#39;blackbox/hash&#39;</code>
1911
1926
  </li>
1912
1927
 
1913
- <li class="never" data-hits="" data-linenumber="3">
1928
+ <li class="never" data-hits="" data-linenumber="4">
1914
1929
 
1915
1930
 
1916
1931
  <code class="ruby"></code>
1917
1932
  </li>
1918
1933
 
1919
- <li class="covered" data-hits="1" data-linenumber="4">
1934
+ <li class="covered" data-hits="1" data-linenumber="5">
1920
1935
  <span class="hits">1</span>
1921
1936
 
1922
1937
  <code class="ruby">module BB</code>
1923
1938
  </li>
1924
1939
 
1925
- <li class="never" data-hits="" data-linenumber="5">
1940
+ <li class="never" data-hits="" data-linenumber="6">
1926
1941
 
1927
1942
 
1928
1943
  <code class="ruby"> # String utilities.</code>
1929
1944
  </li>
1930
1945
 
1931
- <li class="covered" data-hits="1" data-linenumber="6">
1946
+ <li class="covered" data-hits="1" data-linenumber="7">
1932
1947
  <span class="hits">1</span>
1933
1948
 
1934
1949
  <code class="ruby"> module Number</code>
1935
1950
  </li>
1936
1951
 
1937
- <li class="covered" data-hits="1" data-linenumber="7">
1952
+ <li class="covered" data-hits="1" data-linenumber="8">
1938
1953
  <span class="hits">1</span>
1939
1954
 
1940
1955
  <code class="ruby"> class &lt;&lt; self</code>
1941
1956
  </li>
1942
1957
 
1943
- <li class="covered" data-hits="1" data-linenumber="8">
1958
+ <li class="covered" data-hits="1" data-linenumber="9">
1944
1959
  <span class="hits">1</span>
1945
1960
 
1946
- <code class="ruby"> STORAGE_UNITS = %w(byte k M G T P E Z Y).freeze</code>
1961
+ <code class="ruby"> STORAGE_UNITS = %w[byte k M G T P E Z Y].freeze</code>
1947
1962
  </li>
1948
1963
 
1949
- <li class="never" data-hits="" data-linenumber="9">
1964
+ <li class="never" data-hits="" data-linenumber="10">
1950
1965
 
1951
1966
 
1952
1967
  <code class="ruby"></code>
1953
1968
  </li>
1954
1969
 
1955
- <li class="never" data-hits="" data-linenumber="10">
1970
+ <li class="never" data-hits="" data-linenumber="11">
1956
1971
 
1957
1972
 
1958
1973
  <code class="ruby"> ##</code>
1959
1974
  </li>
1960
1975
 
1961
- <li class="never" data-hits="" data-linenumber="11">
1976
+ <li class="never" data-hits="" data-linenumber="12">
1962
1977
 
1963
1978
 
1964
1979
  <code class="ruby"> # Formats the bytes in +number+ into a more understandable representation</code>
1965
1980
  </li>
1966
1981
 
1967
- <li class="never" data-hits="" data-linenumber="12">
1982
+ <li class="never" data-hits="" data-linenumber="13">
1968
1983
 
1969
1984
 
1970
1985
  <code class="ruby"> # (e.g., giving it 1500 yields 1.5k). This method is useful for</code>
1971
1986
  </li>
1972
1987
 
1973
- <li class="never" data-hits="" data-linenumber="13">
1988
+ <li class="never" data-hits="" data-linenumber="14">
1974
1989
 
1975
1990
 
1976
1991
  <code class="ruby"> # reporting file sizes to users. This method returns nil if</code>
1977
1992
  </li>
1978
1993
 
1979
- <li class="never" data-hits="" data-linenumber="14">
1994
+ <li class="never" data-hits="" data-linenumber="15">
1980
1995
 
1981
1996
 
1982
1997
  <code class="ruby"> # +number+ cannot be converted into a number. You can customize the</code>
1983
1998
  </li>
1984
1999
 
1985
- <li class="never" data-hits="" data-linenumber="15">
2000
+ <li class="never" data-hits="" data-linenumber="16">
1986
2001
 
1987
2002
 
1988
2003
  <code class="ruby"> # format in the +options+ hash.</code>
1989
2004
  </li>
1990
2005
 
1991
- <li class="never" data-hits="" data-linenumber="16">
2006
+ <li class="never" data-hits="" data-linenumber="17">
1992
2007
 
1993
2008
 
1994
2009
  <code class="ruby"> #</code>
1995
2010
  </li>
1996
2011
 
1997
- <li class="never" data-hits="" data-linenumber="17">
2012
+ <li class="never" data-hits="" data-linenumber="18">
1998
2013
 
1999
2014
 
2000
2015
  <code class="ruby"> # @overload to_human_size(number, options={})</code>
2001
2016
  </li>
2002
2017
 
2003
- <li class="never" data-hits="" data-linenumber="18">
2018
+ <li class="never" data-hits="" data-linenumber="19">
2004
2019
 
2005
2020
 
2006
2021
  <code class="ruby"> # @param [Fixnum] number</code>
2007
2022
  </li>
2008
2023
 
2009
- <li class="never" data-hits="" data-linenumber="19">
2024
+ <li class="never" data-hits="" data-linenumber="20">
2010
2025
 
2011
2026
 
2012
2027
  <code class="ruby"> # Number value to format.</code>
2013
2028
  </li>
2014
2029
 
2015
- <li class="never" data-hits="" data-linenumber="20">
2030
+ <li class="never" data-hits="" data-linenumber="21">
2016
2031
 
2017
2032
 
2018
2033
  <code class="ruby"> # @param [Hash] options</code>
2019
2034
  </li>
2020
2035
 
2021
- <li class="never" data-hits="" data-linenumber="21">
2036
+ <li class="never" data-hits="" data-linenumber="22">
2022
2037
 
2023
2038
 
2024
2039
  <code class="ruby"> # Options for formatter.</code>
2025
2040
  </li>
2026
2041
 
2027
- <li class="never" data-hits="" data-linenumber="22">
2042
+ <li class="never" data-hits="" data-linenumber="23">
2028
2043
 
2029
2044
 
2030
2045
  <code class="ruby"> # @option options [Fixnum] :precision (1)</code>
2031
2046
  </li>
2032
2047
 
2033
- <li class="never" data-hits="" data-linenumber="23">
2048
+ <li class="never" data-hits="" data-linenumber="24">
2034
2049
 
2035
2050
 
2036
2051
  <code class="ruby"> # Sets the level of precision.</code>
2037
2052
  </li>
2038
2053
 
2039
- <li class="never" data-hits="" data-linenumber="24">
2054
+ <li class="never" data-hits="" data-linenumber="25">
2040
2055
 
2041
2056
 
2042
2057
  <code class="ruby"> # @option options [String] :separator (&quot;.&quot;)</code>
2043
2058
  </li>
2044
2059
 
2045
- <li class="never" data-hits="" data-linenumber="25">
2060
+ <li class="never" data-hits="" data-linenumber="26">
2046
2061
 
2047
2062
 
2048
2063
  <code class="ruby"> # Sets the separator between the units.</code>
2049
2064
  </li>
2050
2065
 
2051
- <li class="never" data-hits="" data-linenumber="26">
2066
+ <li class="never" data-hits="" data-linenumber="27">
2052
2067
 
2053
2068
 
2054
2069
  <code class="ruby"> # @option options [String] :delimiter (&quot;&quot;)</code>
2055
2070
  </li>
2056
2071
 
2057
- <li class="never" data-hits="" data-linenumber="27">
2072
+ <li class="never" data-hits="" data-linenumber="28">
2058
2073
 
2059
2074
 
2060
2075
  <code class="ruby"> # Sets the thousands delimiter.</code>
2061
2076
  </li>
2062
2077
 
2063
- <li class="never" data-hits="" data-linenumber="28">
2078
+ <li class="never" data-hits="" data-linenumber="29">
2064
2079
 
2065
2080
 
2066
2081
  <code class="ruby"> # @option options [String] :kilo (1024)</code>
2067
2082
  </li>
2068
2083
 
2069
- <li class="never" data-hits="" data-linenumber="29">
2084
+ <li class="never" data-hits="" data-linenumber="30">
2070
2085
 
2071
2086
 
2072
2087
  <code class="ruby"> # Sets the number of bytes in a kilobyte.</code>
2073
2088
  </li>
2074
2089
 
2075
- <li class="never" data-hits="" data-linenumber="30">
2090
+ <li class="never" data-hits="" data-linenumber="31">
2076
2091
 
2077
2092
 
2078
2093
  <code class="ruby"> # @option options [String] :format (&quot;%n%u&quot;)</code>
2079
2094
  </li>
2080
2095
 
2081
- <li class="never" data-hits="" data-linenumber="31">
2096
+ <li class="never" data-hits="" data-linenumber="32">
2082
2097
 
2083
2098
 
2084
2099
  <code class="ruby"> # Sets the display format.</code>
2085
2100
  </li>
2086
2101
 
2087
- <li class="never" data-hits="" data-linenumber="32">
2102
+ <li class="never" data-hits="" data-linenumber="33">
2088
2103
 
2089
2104
 
2090
2105
  <code class="ruby"> #</code>
2091
2106
  </li>
2092
2107
 
2093
- <li class="never" data-hits="" data-linenumber="33">
2108
+ <li class="never" data-hits="" data-linenumber="34">
2094
2109
 
2095
2110
 
2096
2111
  <code class="ruby"> # @return [String] The formatted representation of bytes</code>
2097
2112
  </li>
2098
2113
 
2099
- <li class="never" data-hits="" data-linenumber="34">
2114
+ <li class="never" data-hits="" data-linenumber="35">
2100
2115
 
2101
2116
 
2102
2117
  <code class="ruby"> #</code>
2103
2118
  </li>
2104
2119
 
2105
- <li class="never" data-hits="" data-linenumber="35">
2120
+ <li class="never" data-hits="" data-linenumber="36">
2106
2121
 
2107
2122
 
2108
2123
  <code class="ruby"> # @example</code>
2109
2124
  </li>
2110
2125
 
2111
- <li class="never" data-hits="" data-linenumber="36">
2126
+ <li class="never" data-hits="" data-linenumber="37">
2112
2127
 
2113
2128
 
2114
2129
  <code class="ruby"> # to_human_size(123) # =&gt; 123</code>
2115
2130
  </li>
2116
2131
 
2117
- <li class="never" data-hits="" data-linenumber="37">
2132
+ <li class="never" data-hits="" data-linenumber="38">
2118
2133
 
2119
2134
 
2120
2135
  <code class="ruby"> # to_human_size(1234) # =&gt; 1.2k</code>
2121
2136
  </li>
2122
2137
 
2123
- <li class="never" data-hits="" data-linenumber="38">
2138
+ <li class="never" data-hits="" data-linenumber="39">
2124
2139
 
2125
2140
 
2126
2141
  <code class="ruby"> # to_human_size(12345) # =&gt; 12.1k</code>
2127
2142
  </li>
2128
2143
 
2129
- <li class="never" data-hits="" data-linenumber="39">
2144
+ <li class="never" data-hits="" data-linenumber="40">
2130
2145
 
2131
2146
 
2132
2147
  <code class="ruby"> # to_human_size(1234567) # =&gt; 1.2M</code>
2133
2148
  </li>
2134
2149
 
2135
- <li class="never" data-hits="" data-linenumber="40">
2150
+ <li class="never" data-hits="" data-linenumber="41">
2136
2151
 
2137
2152
 
2138
2153
  <code class="ruby"> # to_human_size(1234567890) # =&gt; 1.1G</code>
2139
2154
  </li>
2140
2155
 
2141
- <li class="never" data-hits="" data-linenumber="41">
2156
+ <li class="never" data-hits="" data-linenumber="42">
2142
2157
 
2143
2158
 
2144
2159
  <code class="ruby"> # to_human_size(1234567890123) # =&gt; 1.1T</code>
2145
2160
  </li>
2146
2161
 
2147
- <li class="never" data-hits="" data-linenumber="42">
2162
+ <li class="never" data-hits="" data-linenumber="43">
2148
2163
 
2149
2164
 
2150
2165
  <code class="ruby"> # to_human_size(1234567, :precision =&gt; 2) # =&gt; 1.18M</code>
2151
2166
  </li>
2152
2167
 
2153
- <li class="never" data-hits="" data-linenumber="43">
2168
+ <li class="never" data-hits="" data-linenumber="44">
2154
2169
 
2155
2170
 
2156
2171
  <code class="ruby"> # to_human_size(483989, :precision =&gt; 0) # =&gt; 473k</code>
2157
2172
  </li>
2158
2173
 
2159
- <li class="never" data-hits="" data-linenumber="44">
2174
+ <li class="never" data-hits="" data-linenumber="45">
2160
2175
 
2161
2176
 
2162
2177
  <code class="ruby"> # to_human_size(1234567, :precision =&gt; 2, :separator =&gt; &#39;,&#39;) # =&gt; 1,18M</code>
2163
2178
  </li>
2164
2179
 
2165
- <li class="never" data-hits="" data-linenumber="45">
2180
+ <li class="never" data-hits="" data-linenumber="46">
2166
2181
 
2167
2182
 
2168
2183
  <code class="ruby"> #</code>
2169
2184
  </li>
2170
2185
 
2171
- <li class="covered" data-hits="1" data-linenumber="46">
2186
+ <li class="covered" data-hits="1" data-linenumber="47">
2172
2187
  <span class="hits">1</span>
2173
2188
 
2174
2189
  <code class="ruby"> def to_human_size(number, args = {})</code>
2175
2190
  </li>
2176
2191
 
2177
- <li class="covered" data-hits="13" data-linenumber="47">
2192
+ <li class="covered" data-hits="13" data-linenumber="48">
2178
2193
  <span class="hits">13</span>
2179
2194
 
2180
2195
  <code class="ruby"> begin</code>
2181
2196
  </li>
2182
2197
 
2183
- <li class="covered" data-hits="13" data-linenumber="48">
2198
+ <li class="covered" data-hits="13" data-linenumber="49">
2184
2199
  <span class="hits">13</span>
2185
2200
 
2186
2201
  <code class="ruby"> Float(number)</code>
2187
2202
  </li>
2188
2203
 
2189
- <li class="never" data-hits="" data-linenumber="49">
2204
+ <li class="never" data-hits="" data-linenumber="50">
2190
2205
 
2191
2206
 
2192
- <code class="ruby"> rescue</code>
2207
+ <code class="ruby"> rescue StandardError</code>
2193
2208
  </li>
2194
2209
 
2195
- <li class="covered" data-hits="1" data-linenumber="50">
2210
+ <li class="covered" data-hits="1" data-linenumber="51">
2196
2211
  <span class="hits">1</span>
2197
2212
 
2198
2213
  <code class="ruby"> return nil</code>
2199
2214
  </li>
2200
2215
 
2201
- <li class="never" data-hits="" data-linenumber="51">
2216
+ <li class="never" data-hits="" data-linenumber="52">
2202
2217
 
2203
2218
 
2204
2219
  <code class="ruby"> end</code>
2205
2220
  </li>
2206
2221
 
2207
- <li class="never" data-hits="" data-linenumber="52">
2222
+ <li class="never" data-hits="" data-linenumber="53">
2208
2223
 
2209
2224
 
2210
2225
  <code class="ruby"></code>
2211
2226
  </li>
2212
2227
 
2213
- <li class="covered" data-hits="12" data-linenumber="53">
2228
+ <li class="covered" data-hits="12" data-linenumber="54">
2214
2229
  <span class="hits">12</span>
2215
2230
 
2216
2231
  <code class="ruby"> options = BB::Hash.symbolize_keys(args)</code>
2217
2232
  </li>
2218
2233
 
2219
- <li class="never" data-hits="" data-linenumber="54">
2234
+ <li class="never" data-hits="" data-linenumber="55">
2220
2235
 
2221
2236
 
2222
2237
  <code class="ruby"></code>
2223
2238
  </li>
2224
2239
 
2225
- <li class="covered" data-hits="12" data-linenumber="55">
2240
+ <li class="covered" data-hits="12" data-linenumber="56">
2226
2241
  <span class="hits">12</span>
2227
2242
 
2228
2243
  <code class="ruby"> precision ||= (options[:precision] || 1)</code>
2229
2244
  </li>
2230
2245
 
2231
- <li class="covered" data-hits="12" data-linenumber="56">
2246
+ <li class="covered" data-hits="12" data-linenumber="57">
2232
2247
  <span class="hits">12</span>
2233
2248
 
2234
2249
  <code class="ruby"> separator ||= (options[:separator] || &#39;.&#39;)</code>
2235
2250
  </li>
2236
2251
 
2237
- <li class="covered" data-hits="12" data-linenumber="57">
2252
+ <li class="covered" data-hits="12" data-linenumber="58">
2238
2253
  <span class="hits">12</span>
2239
2254
 
2240
2255
  <code class="ruby"> delimiter ||= (options[:delimiter] || &#39;&#39;)</code>
2241
2256
  </li>
2242
2257
 
2243
- <li class="covered" data-hits="12" data-linenumber="58">
2258
+ <li class="covered" data-hits="12" data-linenumber="59">
2244
2259
  <span class="hits">12</span>
2245
2260
 
2246
2261
  <code class="ruby"> kilo ||= (options[:kilo] || 1024)</code>
2247
2262
  </li>
2248
2263
 
2249
- <li class="covered" data-hits="12" data-linenumber="59">
2264
+ <li class="covered" data-hits="12" data-linenumber="60">
2250
2265
  <span class="hits">12</span>
2251
2266
 
2252
2267
  <code class="ruby"> storage_units_format ||= (options[:format] || &#39;%n%u&#39;)</code>
2253
2268
  </li>
2254
2269
 
2255
- <li class="never" data-hits="" data-linenumber="60">
2270
+ <li class="never" data-hits="" data-linenumber="61">
2256
2271
 
2257
2272
 
2258
2273
  <code class="ruby"></code>
2259
2274
  </li>
2260
2275
 
2261
- <li class="covered" data-hits="12" data-linenumber="61">
2276
+ <li class="covered" data-hits="12" data-linenumber="62">
2262
2277
  <span class="hits">12</span>
2263
2278
 
2264
2279
  <code class="ruby"> begin</code>
2265
2280
  </li>
2266
2281
 
2267
- <li class="covered" data-hits="12" data-linenumber="62">
2282
+ <li class="covered" data-hits="12" data-linenumber="63">
2268
2283
  <span class="hits">12</span>
2269
2284
 
2270
2285
  <code class="ruby"> if number.to_i &lt; kilo</code>
2271
2286
  </li>
2272
2287
 
2273
- <li class="covered" data-hits="1" data-linenumber="63">
2288
+ <li class="covered" data-hits="1" data-linenumber="64">
2274
2289
  <span class="hits">1</span>
2275
2290
 
2276
2291
  <code class="ruby"> storage_units_format.gsub(/%n/, number.to_i.to_s).gsub(/%u/, &#39;&#39;)</code>
2277
2292
  </li>
2278
2293
 
2279
- <li class="never" data-hits="" data-linenumber="64">
2294
+ <li class="never" data-hits="" data-linenumber="65">
2280
2295
 
2281
2296
 
2282
2297
  <code class="ruby"> else</code>
2283
2298
  </li>
2284
2299
 
2285
- <li class="covered" data-hits="10" data-linenumber="65">
2300
+ <li class="covered" data-hits="10" data-linenumber="66">
2286
2301
  <span class="hits">10</span>
2287
2302
 
2288
2303
  <code class="ruby"> max_exp = STORAGE_UNITS.size - 1</code>
2289
2304
  </li>
2290
2305
 
2291
- <li class="covered" data-hits="10" data-linenumber="66">
2306
+ <li class="covered" data-hits="10" data-linenumber="67">
2292
2307
  <span class="hits">10</span>
2293
2308
 
2294
2309
  <code class="ruby"> number = Float(number)</code>
2295
2310
  </li>
2296
2311
 
2297
- <li class="covered" data-hits="10" data-linenumber="67">
2312
+ <li class="covered" data-hits="10" data-linenumber="68">
2298
2313
  <span class="hits">10</span>
2299
2314
 
2300
2315
  <code class="ruby"> exponent = (Math.log(number) / Math.log(kilo)).to_i # Convert to base</code>
2301
2316
  </li>
2302
2317
 
2303
- <li class="covered" data-hits="10" data-linenumber="68">
2318
+ <li class="covered" data-hits="10" data-linenumber="69">
2304
2319
  <span class="hits">10</span>
2305
2320
 
2306
2321
  <code class="ruby"> exponent = max_exp if exponent &gt; max_exp # we need this to avoid overflow for the highest unit</code>
2307
2322
  </li>
2308
2323
 
2309
- <li class="covered" data-hits="10" data-linenumber="69">
2324
+ <li class="covered" data-hits="10" data-linenumber="70">
2310
2325
  <span class="hits">10</span>
2311
2326
 
2312
2327
  <code class="ruby"> number /= kilo**exponent</code>
2313
2328
  </li>
2314
2329
 
2315
- <li class="never" data-hits="" data-linenumber="70">
2330
+ <li class="never" data-hits="" data-linenumber="71">
2316
2331
 
2317
2332
 
2318
2333
  <code class="ruby"></code>
2319
2334
  </li>
2320
2335
 
2321
- <li class="covered" data-hits="10" data-linenumber="71">
2336
+ <li class="covered" data-hits="10" data-linenumber="72">
2322
2337
  <span class="hits">10</span>
2323
2338
 
2324
2339
  <code class="ruby"> unit = STORAGE_UNITS[exponent]</code>
2325
2340
  </li>
2326
2341
 
2327
- <li class="never" data-hits="" data-linenumber="72">
2342
+ <li class="never" data-hits="" data-linenumber="73">
2328
2343
 
2329
2344
 
2330
2345
  <code class="ruby"></code>
2331
2346
  </li>
2332
2347
 
2333
- <li class="covered" data-hits="10" data-linenumber="73">
2348
+ <li class="covered" data-hits="10" data-linenumber="74">
2334
2349
  <span class="hits">10</span>
2335
2350
 
2336
2351
  <code class="ruby"> escaped_separator = Regexp.escape(separator)</code>
2337
2352
  </li>
2338
2353
 
2339
- <li class="covered" data-hits="10" data-linenumber="74">
2354
+ <li class="covered" data-hits="10" data-linenumber="75">
2340
2355
  <span class="hits">10</span>
2341
2356
 
2342
2357
  <code class="ruby"> formatted_number = with_precision(number,</code>
2343
2358
  </li>
2344
2359
 
2345
- <li class="never" data-hits="" data-linenumber="75">
2360
+ <li class="never" data-hits="" data-linenumber="76">
2346
2361
 
2347
2362
 
2348
2363
  <code class="ruby"> precision: precision,</code>
2349
2364
  </li>
2350
2365
 
2351
- <li class="never" data-hits="" data-linenumber="76">
2366
+ <li class="never" data-hits="" data-linenumber="77">
2352
2367
 
2353
2368
 
2354
2369
  <code class="ruby"> separator: separator,</code>
2355
2370
  </li>
2356
2371
 
2357
- <li class="never" data-hits="" data-linenumber="77">
2372
+ <li class="never" data-hits="" data-linenumber="78">
2358
2373
 
2359
2374
 
2360
2375
  <code class="ruby"> delimiter: delimiter).sub(/(#{escaped_separator})(\d*[1-9])?0+\z/, &#39;\1\2&#39;).sub(/#{escaped_separator}\z/, &#39;&#39;)</code>
2361
2376
  </li>
2362
2377
 
2363
- <li class="covered" data-hits="10" data-linenumber="78">
2378
+ <li class="covered" data-hits="10" data-linenumber="79">
2364
2379
  <span class="hits">10</span>
2365
2380
 
2366
2381
  <code class="ruby"> storage_units_format.gsub(/%n/, formatted_number).gsub(/%u/, unit)</code>
2367
2382
  </li>
2368
2383
 
2369
- <li class="never" data-hits="" data-linenumber="79">
2384
+ <li class="never" data-hits="" data-linenumber="80">
2370
2385
 
2371
2386
 
2372
2387
  <code class="ruby"> end</code>
2373
2388
  </li>
2374
2389
 
2375
- <li class="never" data-hits="" data-linenumber="80">
2376
-
2390
+ <li class="covered" data-hits="1" data-linenumber="81">
2391
+ <span class="hits">1</span>
2377
2392
 
2378
- <code class="ruby"> rescue</code>
2393
+ <code class="ruby"> rescue StandardError</code>
2379
2394
  </li>
2380
2395
 
2381
- <li class="covered" data-hits="1" data-linenumber="81">
2396
+ <li class="covered" data-hits="1" data-linenumber="82">
2382
2397
  <span class="hits">1</span>
2383
2398
 
2384
2399
  <code class="ruby"> number</code>
2385
2400
  </li>
2386
2401
 
2387
- <li class="never" data-hits="" data-linenumber="82">
2402
+ <li class="never" data-hits="" data-linenumber="83">
2388
2403
 
2389
2404
 
2390
2405
  <code class="ruby"> end</code>
2391
2406
  </li>
2392
2407
 
2393
- <li class="never" data-hits="" data-linenumber="83">
2408
+ <li class="never" data-hits="" data-linenumber="84">
2394
2409
 
2395
2410
 
2396
2411
  <code class="ruby"> end</code>
2397
2412
  </li>
2398
2413
 
2399
- <li class="never" data-hits="" data-linenumber="84">
2414
+ <li class="never" data-hits="" data-linenumber="85">
2400
2415
 
2401
2416
 
2402
2417
  <code class="ruby"></code>
2403
2418
  </li>
2404
2419
 
2405
- <li class="never" data-hits="" data-linenumber="85">
2420
+ <li class="never" data-hits="" data-linenumber="86">
2406
2421
 
2407
2422
 
2408
2423
  <code class="ruby"> ##</code>
2409
2424
  </li>
2410
2425
 
2411
- <li class="never" data-hits="" data-linenumber="86">
2426
+ <li class="never" data-hits="" data-linenumber="87">
2412
2427
 
2413
2428
 
2414
2429
  <code class="ruby"> # Formats a +number+ with the specified level of &lt;tt&gt;:precision&lt;/tt&gt; (e.g., 112.32 has a precision of 2).</code>
2415
2430
  </li>
2416
2431
 
2417
- <li class="never" data-hits="" data-linenumber="87">
2432
+ <li class="never" data-hits="" data-linenumber="88">
2418
2433
 
2419
2434
 
2420
2435
  <code class="ruby"> # This method returns nil if +number+ cannot be converted into a number.</code>
2421
2436
  </li>
2422
2437
 
2423
- <li class="never" data-hits="" data-linenumber="88">
2438
+ <li class="never" data-hits="" data-linenumber="89">
2424
2439
 
2425
2440
 
2426
2441
  <code class="ruby"> # You can customize the format in the +options+ hash.</code>
2427
2442
  </li>
2428
2443
 
2429
- <li class="never" data-hits="" data-linenumber="89">
2444
+ <li class="never" data-hits="" data-linenumber="90">
2430
2445
 
2431
2446
 
2432
2447
  <code class="ruby"> #</code>
2433
2448
  </li>
2434
2449
 
2435
- <li class="never" data-hits="" data-linenumber="90">
2450
+ <li class="never" data-hits="" data-linenumber="91">
2436
2451
 
2437
2452
 
2438
2453
  <code class="ruby"> # @overload with_precision(number, options={})</code>
2439
2454
  </li>
2440
2455
 
2441
- <li class="never" data-hits="" data-linenumber="91">
2456
+ <li class="never" data-hits="" data-linenumber="92">
2442
2457
 
2443
2458
 
2444
2459
  <code class="ruby"> # @param [Fixnum, Float] number</code>
2445
2460
  </li>
2446
2461
 
2447
- <li class="never" data-hits="" data-linenumber="92">
2462
+ <li class="never" data-hits="" data-linenumber="93">
2448
2463
 
2449
2464
 
2450
2465
  <code class="ruby"> # Number value to format.</code>
2451
2466
  </li>
2452
2467
 
2453
- <li class="never" data-hits="" data-linenumber="93">
2468
+ <li class="never" data-hits="" data-linenumber="94">
2454
2469
 
2455
2470
 
2456
2471
  <code class="ruby"> # @param [Hash] options</code>
2457
2472
  </li>
2458
2473
 
2459
- <li class="never" data-hits="" data-linenumber="94">
2474
+ <li class="never" data-hits="" data-linenumber="95">
2460
2475
 
2461
2476
 
2462
2477
  <code class="ruby"> # Options for formatter.</code>
2463
2478
  </li>
2464
2479
 
2465
- <li class="never" data-hits="" data-linenumber="95">
2480
+ <li class="never" data-hits="" data-linenumber="96">
2466
2481
 
2467
2482
 
2468
2483
  <code class="ruby"> # @option options [Fixnum] :precision (3)</code>
2469
2484
  </li>
2470
2485
 
2471
- <li class="never" data-hits="" data-linenumber="96">
2486
+ <li class="never" data-hits="" data-linenumber="97">
2472
2487
 
2473
2488
 
2474
2489
  <code class="ruby"> # Sets the level of precision.</code>
2475
2490
  </li>
2476
2491
 
2477
- <li class="never" data-hits="" data-linenumber="97">
2492
+ <li class="never" data-hits="" data-linenumber="98">
2478
2493
 
2479
2494
 
2480
2495
  <code class="ruby"> # @option options [String] :separator (&quot;.&quot;)</code>
2481
2496
  </li>
2482
2497
 
2483
- <li class="never" data-hits="" data-linenumber="98">
2498
+ <li class="never" data-hits="" data-linenumber="99">
2484
2499
 
2485
2500
 
2486
2501
  <code class="ruby"> # Sets the separator between the units.</code>
2487
2502
  </li>
2488
2503
 
2489
- <li class="never" data-hits="" data-linenumber="99">
2504
+ <li class="never" data-hits="" data-linenumber="100">
2490
2505
 
2491
2506
 
2492
2507
  <code class="ruby"> # @option options [String] :delimiter (&quot;&quot;)</code>
2493
2508
  </li>
2494
2509
 
2495
- <li class="never" data-hits="" data-linenumber="100">
2510
+ <li class="never" data-hits="" data-linenumber="101">
2496
2511
 
2497
2512
 
2498
2513
  <code class="ruby"> # Sets the thousands delimiter.</code>
2499
2514
  </li>
2500
2515
 
2501
- <li class="never" data-hits="" data-linenumber="101">
2516
+ <li class="never" data-hits="" data-linenumber="102">
2502
2517
 
2503
2518
 
2504
2519
  <code class="ruby"> #</code>
2505
2520
  </li>
2506
2521
 
2507
- <li class="never" data-hits="" data-linenumber="102">
2522
+ <li class="never" data-hits="" data-linenumber="103">
2508
2523
 
2509
2524
 
2510
2525
  <code class="ruby"> # @return [String] The formatted representation of the number.</code>
2511
2526
  </li>
2512
2527
 
2513
- <li class="never" data-hits="" data-linenumber="103">
2528
+ <li class="never" data-hits="" data-linenumber="104">
2514
2529
 
2515
2530
 
2516
2531
  <code class="ruby"> #</code>
2517
2532
  </li>
2518
2533
 
2519
- <li class="never" data-hits="" data-linenumber="104">
2534
+ <li class="never" data-hits="" data-linenumber="105">
2520
2535
 
2521
2536
 
2522
2537
  <code class="ruby"> # @example</code>
2523
2538
  </li>
2524
2539
 
2525
- <li class="never" data-hits="" data-linenumber="105">
2540
+ <li class="never" data-hits="" data-linenumber="106">
2526
2541
 
2527
2542
 
2528
2543
  <code class="ruby"> # with_precision(111.2345) # =&gt; 111.235</code>
2529
2544
  </li>
2530
2545
 
2531
- <li class="never" data-hits="" data-linenumber="106">
2546
+ <li class="never" data-hits="" data-linenumber="107">
2532
2547
 
2533
2548
 
2534
2549
  <code class="ruby"> # with_precision(111.2345, :precision =&gt; 2) # =&gt; 111.23</code>
2535
2550
  </li>
2536
2551
 
2537
- <li class="never" data-hits="" data-linenumber="107">
2552
+ <li class="never" data-hits="" data-linenumber="108">
2538
2553
 
2539
2554
 
2540
2555
  <code class="ruby"> # with_precision(13, :precision =&gt; 5) # =&gt; 13.00000</code>
2541
2556
  </li>
2542
2557
 
2543
- <li class="never" data-hits="" data-linenumber="108">
2558
+ <li class="never" data-hits="" data-linenumber="109">
2544
2559
 
2545
2560
 
2546
2561
  <code class="ruby"> # with_precision(389.32314, :precision =&gt; 0) # =&gt; 389</code>
2547
2562
  </li>
2548
2563
 
2549
- <li class="never" data-hits="" data-linenumber="109">
2564
+ <li class="never" data-hits="" data-linenumber="110">
2550
2565
 
2551
2566
 
2552
2567
  <code class="ruby"> # with_precision(1111.2345, :precision =&gt; 2, :separator =&gt; &#39;,&#39;, :delimiter =&gt; &#39;.&#39;)</code>
2553
2568
  </li>
2554
2569
 
2555
- <li class="never" data-hits="" data-linenumber="110">
2570
+ <li class="never" data-hits="" data-linenumber="111">
2556
2571
 
2557
2572
 
2558
2573
  <code class="ruby"> # # =&gt; 1.111,23</code>
2559
2574
  </li>
2560
2575
 
2561
- <li class="never" data-hits="" data-linenumber="111">
2576
+ <li class="never" data-hits="" data-linenumber="112">
2562
2577
 
2563
2578
 
2564
2579
  <code class="ruby"> #</code>
2565
2580
  </li>
2566
2581
 
2567
- <li class="covered" data-hits="1" data-linenumber="112">
2582
+ <li class="covered" data-hits="1" data-linenumber="113">
2568
2583
  <span class="hits">1</span>
2569
2584
 
2570
2585
  <code class="ruby"> def with_precision(number, args)</code>
2571
2586
  </li>
2572
2587
 
2573
- <li class="covered" data-hits="14" data-linenumber="113">
2588
+ <li class="covered" data-hits="14" data-linenumber="114">
2574
2589
  <span class="hits">14</span>
2575
2590
 
2576
2591
  <code class="ruby"> begin</code>
2577
2592
  </li>
2578
2593
 
2579
- <li class="covered" data-hits="14" data-linenumber="114">
2594
+ <li class="covered" data-hits="14" data-linenumber="115">
2580
2595
  <span class="hits">14</span>
2581
2596
 
2582
2597
  <code class="ruby"> Float(number)</code>
2583
2598
  </li>
2584
2599
 
2585
- <li class="never" data-hits="" data-linenumber="115">
2600
+ <li class="never" data-hits="" data-linenumber="116">
2586
2601
 
2587
2602
 
2588
- <code class="ruby"> rescue</code>
2603
+ <code class="ruby"> rescue StandardError</code>
2589
2604
  </li>
2590
2605
 
2591
- <li class="covered" data-hits="1" data-linenumber="116">
2606
+ <li class="covered" data-hits="1" data-linenumber="117">
2592
2607
  <span class="hits">1</span>
2593
2608
 
2594
2609
  <code class="ruby"> return nil</code>
2595
2610
  </li>
2596
2611
 
2597
- <li class="never" data-hits="" data-linenumber="117">
2612
+ <li class="never" data-hits="" data-linenumber="118">
2598
2613
 
2599
2614
 
2600
2615
  <code class="ruby"> end</code>
2601
2616
  </li>
2602
2617
 
2603
- <li class="never" data-hits="" data-linenumber="118">
2618
+ <li class="never" data-hits="" data-linenumber="119">
2604
2619
 
2605
2620
 
2606
2621
  <code class="ruby"></code>
2607
2622
  </li>
2608
2623
 
2609
- <li class="covered" data-hits="13" data-linenumber="119">
2624
+ <li class="covered" data-hits="13" data-linenumber="120">
2610
2625
  <span class="hits">13</span>
2611
2626
 
2612
2627
  <code class="ruby"> options = BB::Hash.symbolize_keys(args)</code>
2613
2628
  </li>
2614
2629
 
2615
- <li class="never" data-hits="" data-linenumber="120">
2630
+ <li class="never" data-hits="" data-linenumber="121">
2616
2631
 
2617
2632
 
2618
2633
  <code class="ruby"></code>
2619
2634
  </li>
2620
2635
 
2621
- <li class="covered" data-hits="13" data-linenumber="121">
2636
+ <li class="covered" data-hits="13" data-linenumber="122">
2622
2637
  <span class="hits">13</span>
2623
2638
 
2624
2639
  <code class="ruby"> precision ||= (options[:precision] || 3)</code>
2625
2640
  </li>
2626
2641
 
2627
- <li class="covered" data-hits="13" data-linenumber="122">
2642
+ <li class="covered" data-hits="13" data-linenumber="123">
2628
2643
  <span class="hits">13</span>
2629
2644
 
2630
2645
  <code class="ruby"> separator ||= (options[:separator] || &#39;.&#39;)</code>
2631
2646
  </li>
2632
2647
 
2633
- <li class="covered" data-hits="13" data-linenumber="123">
2648
+ <li class="covered" data-hits="13" data-linenumber="124">
2634
2649
  <span class="hits">13</span>
2635
2650
 
2636
2651
  <code class="ruby"> delimiter ||= (options[:delimiter] || &#39;&#39;)</code>
2637
2652
  </li>
2638
2653
 
2639
- <li class="never" data-hits="" data-linenumber="124">
2654
+ <li class="never" data-hits="" data-linenumber="125">
2640
2655
 
2641
2656
 
2642
2657
  <code class="ruby"></code>
2643
2658
  </li>
2644
2659
 
2645
- <li class="covered" data-hits="13" data-linenumber="125">
2660
+ <li class="covered" data-hits="13" data-linenumber="126">
2646
2661
  <span class="hits">13</span>
2647
2662
 
2648
2663
  <code class="ruby"> begin</code>
2649
2664
  </li>
2650
2665
 
2651
- <li class="covered" data-hits="13" data-linenumber="126">
2666
+ <li class="covered" data-hits="13" data-linenumber="127">
2652
2667
  <span class="hits">13</span>
2653
2668
 
2654
2669
  <code class="ruby"> rounded_number = (Float(number) * (10**precision)).round.to_f / 10**precision</code>
2655
2670
  </li>
2656
2671
 
2657
- <li class="covered" data-hits="12" data-linenumber="127">
2672
+ <li class="covered" data-hits="12" data-linenumber="128">
2658
2673
  <span class="hits">12</span>
2659
2674
 
2660
2675
  <code class="ruby"> with_delimiter(&quot;%01.#{precision}f&quot; % rounded_number,</code>
2661
2676
  </li>
2662
2677
 
2663
- <li class="never" data-hits="" data-linenumber="128">
2678
+ <li class="never" data-hits="" data-linenumber="129">
2664
2679
 
2665
2680
 
2666
2681
  <code class="ruby"> separator: separator,</code>
2667
2682
  </li>
2668
2683
 
2669
- <li class="never" data-hits="" data-linenumber="129">
2684
+ <li class="never" data-hits="" data-linenumber="130">
2670
2685
 
2671
2686
 
2672
2687
  <code class="ruby"> delimiter: delimiter)</code>
2673
2688
  </li>
2674
2689
 
2675
- <li class="never" data-hits="" data-linenumber="130">
2676
-
2690
+ <li class="covered" data-hits="1" data-linenumber="131">
2691
+ <span class="hits">1</span>
2677
2692
 
2678
- <code class="ruby"> rescue</code>
2693
+ <code class="ruby"> rescue StandardError</code>
2679
2694
  </li>
2680
2695
 
2681
- <li class="covered" data-hits="1" data-linenumber="131">
2696
+ <li class="covered" data-hits="1" data-linenumber="132">
2682
2697
  <span class="hits">1</span>
2683
2698
 
2684
2699
  <code class="ruby"> number</code>
2685
2700
  </li>
2686
2701
 
2687
- <li class="never" data-hits="" data-linenumber="132">
2702
+ <li class="never" data-hits="" data-linenumber="133">
2688
2703
 
2689
2704
 
2690
2705
  <code class="ruby"> end</code>
2691
2706
  </li>
2692
2707
 
2693
- <li class="never" data-hits="" data-linenumber="133">
2708
+ <li class="never" data-hits="" data-linenumber="134">
2694
2709
 
2695
2710
 
2696
2711
  <code class="ruby"> end</code>
2697
2712
  </li>
2698
2713
 
2699
- <li class="never" data-hits="" data-linenumber="134">
2714
+ <li class="never" data-hits="" data-linenumber="135">
2700
2715
 
2701
2716
 
2702
2717
  <code class="ruby"></code>
2703
2718
  </li>
2704
2719
 
2705
- <li class="never" data-hits="" data-linenumber="135">
2720
+ <li class="never" data-hits="" data-linenumber="136">
2706
2721
 
2707
2722
 
2708
2723
  <code class="ruby"> ##</code>
2709
2724
  </li>
2710
2725
 
2711
- <li class="never" data-hits="" data-linenumber="136">
2726
+ <li class="never" data-hits="" data-linenumber="137">
2712
2727
 
2713
2728
 
2714
2729
  <code class="ruby"> # Formats a +number+ with grouped thousands using +delimiter+ (e.g., 12,324).</code>
2715
2730
  </li>
2716
2731
 
2717
- <li class="never" data-hits="" data-linenumber="137">
2732
+ <li class="never" data-hits="" data-linenumber="138">
2718
2733
 
2719
2734
 
2720
2735
  <code class="ruby"> # This method returns nil if +number+ cannot be converted into a number.</code>
2721
2736
  </li>
2722
2737
 
2723
- <li class="never" data-hits="" data-linenumber="138">
2738
+ <li class="never" data-hits="" data-linenumber="139">
2724
2739
 
2725
2740
 
2726
2741
  <code class="ruby"> # You can customize the format in the +options+ hash.</code>
2727
2742
  </li>
2728
2743
 
2729
- <li class="never" data-hits="" data-linenumber="139">
2744
+ <li class="never" data-hits="" data-linenumber="140">
2730
2745
 
2731
2746
 
2732
2747
  <code class="ruby"> #</code>
2733
2748
  </li>
2734
2749
 
2735
- <li class="never" data-hits="" data-linenumber="140">
2750
+ <li class="never" data-hits="" data-linenumber="141">
2736
2751
 
2737
2752
 
2738
2753
  <code class="ruby"> # @overload with_delimiter(number, options={})</code>
2739
2754
  </li>
2740
2755
 
2741
- <li class="never" data-hits="" data-linenumber="141">
2756
+ <li class="never" data-hits="" data-linenumber="142">
2742
2757
 
2743
2758
 
2744
2759
  <code class="ruby"> # @param [Fixnum, Float] number</code>
2745
2760
  </li>
2746
2761
 
2747
- <li class="never" data-hits="" data-linenumber="142">
2762
+ <li class="never" data-hits="" data-linenumber="143">
2748
2763
 
2749
2764
 
2750
2765
  <code class="ruby"> # Number value to format.</code>
2751
2766
  </li>
2752
2767
 
2753
- <li class="never" data-hits="" data-linenumber="143">
2768
+ <li class="never" data-hits="" data-linenumber="144">
2754
2769
 
2755
2770
 
2756
2771
  <code class="ruby"> # @param [Hash] options</code>
2757
2772
  </li>
2758
2773
 
2759
- <li class="never" data-hits="" data-linenumber="144">
2774
+ <li class="never" data-hits="" data-linenumber="145">
2760
2775
 
2761
2776
 
2762
2777
  <code class="ruby"> # Options for formatter.</code>
2763
2778
  </li>
2764
2779
 
2765
- <li class="never" data-hits="" data-linenumber="145">
2780
+ <li class="never" data-hits="" data-linenumber="146">
2766
2781
 
2767
2782
 
2768
2783
  <code class="ruby"> # @option options [String] :delimiter (&quot;, &quot;)</code>
2769
2784
  </li>
2770
2785
 
2771
- <li class="never" data-hits="" data-linenumber="146">
2786
+ <li class="never" data-hits="" data-linenumber="147">
2772
2787
 
2773
2788
 
2774
2789
  <code class="ruby"> # Sets the thousands delimiter.</code>
2775
2790
  </li>
2776
2791
 
2777
- <li class="never" data-hits="" data-linenumber="147">
2792
+ <li class="never" data-hits="" data-linenumber="148">
2778
2793
 
2779
2794
 
2780
2795
  <code class="ruby"> # @option options [String] :separator (&quot;.&quot;)</code>
2781
2796
  </li>
2782
2797
 
2783
- <li class="never" data-hits="" data-linenumber="148">
2798
+ <li class="never" data-hits="" data-linenumber="149">
2784
2799
 
2785
2800
 
2786
2801
  <code class="ruby"> # Sets the separator between the units.</code>
2787
2802
  </li>
2788
2803
 
2789
- <li class="never" data-hits="" data-linenumber="149">
2804
+ <li class="never" data-hits="" data-linenumber="150">
2790
2805
 
2791
2806
 
2792
2807
  <code class="ruby"> #</code>
2793
2808
  </li>
2794
2809
 
2795
- <li class="never" data-hits="" data-linenumber="150">
2810
+ <li class="never" data-hits="" data-linenumber="151">
2796
2811
 
2797
2812
 
2798
2813
  <code class="ruby"> # @return [String] The formatted representation of the number.</code>
2799
2814
  </li>
2800
2815
 
2801
- <li class="never" data-hits="" data-linenumber="151">
2816
+ <li class="never" data-hits="" data-linenumber="152">
2802
2817
 
2803
2818
 
2804
2819
  <code class="ruby"> #</code>
2805
2820
  </li>
2806
2821
 
2807
- <li class="never" data-hits="" data-linenumber="152">
2822
+ <li class="never" data-hits="" data-linenumber="153">
2808
2823
 
2809
2824
 
2810
2825
  <code class="ruby"> # @example</code>
2811
2826
  </li>
2812
2827
 
2813
- <li class="never" data-hits="" data-linenumber="153">
2828
+ <li class="never" data-hits="" data-linenumber="154">
2814
2829
 
2815
2830
 
2816
2831
  <code class="ruby"> # with_delimiter(12345678) # =&gt; 12,345,678</code>
2817
2832
  </li>
2818
2833
 
2819
- <li class="never" data-hits="" data-linenumber="154">
2834
+ <li class="never" data-hits="" data-linenumber="155">
2820
2835
 
2821
2836
 
2822
2837
  <code class="ruby"> # with_delimiter(12345678.05) # =&gt; 12,345,678.05</code>
2823
2838
  </li>
2824
2839
 
2825
- <li class="never" data-hits="" data-linenumber="155">
2840
+ <li class="never" data-hits="" data-linenumber="156">
2826
2841
 
2827
2842
 
2828
2843
  <code class="ruby"> # with_delimiter(12345678, :delimiter =&gt; &quot;.&quot;) # =&gt; 12.345.678</code>
2829
2844
  </li>
2830
2845
 
2831
- <li class="never" data-hits="" data-linenumber="156">
2846
+ <li class="never" data-hits="" data-linenumber="157">
2832
2847
 
2833
2848
 
2834
2849
  <code class="ruby"> # with_delimiter(12345678, :separator =&gt; &quot;,&quot;) # =&gt; 12,345,678</code>
2835
2850
  </li>
2836
2851
 
2837
- <li class="never" data-hits="" data-linenumber="157">
2852
+ <li class="never" data-hits="" data-linenumber="158">
2838
2853
 
2839
2854
 
2840
2855
  <code class="ruby"> # with_delimiter(98765432.98, :delimiter =&gt; &quot; &quot;, :separator =&gt; &quot;,&quot;)</code>
2841
2856
  </li>
2842
2857
 
2843
- <li class="never" data-hits="" data-linenumber="158">
2858
+ <li class="never" data-hits="" data-linenumber="159">
2844
2859
 
2845
2860
 
2846
2861
  <code class="ruby"> # # =&gt; 98 765 432,98</code>
2847
2862
  </li>
2848
2863
 
2849
- <li class="never" data-hits="" data-linenumber="159">
2864
+ <li class="never" data-hits="" data-linenumber="160">
2850
2865
 
2851
2866
 
2852
2867
  <code class="ruby"> #</code>
2853
2868
  </li>
2854
2869
 
2855
- <li class="covered" data-hits="1" data-linenumber="160">
2870
+ <li class="covered" data-hits="1" data-linenumber="161">
2856
2871
  <span class="hits">1</span>
2857
2872
 
2858
2873
  <code class="ruby"> def with_delimiter(number, args = {})</code>
2859
2874
  </li>
2860
2875
 
2861
- <li class="covered" data-hits="17" data-linenumber="161">
2876
+ <li class="covered" data-hits="17" data-linenumber="162">
2862
2877
  <span class="hits">17</span>
2863
2878
 
2864
2879
  <code class="ruby"> begin</code>
2865
2880
  </li>
2866
2881
 
2867
- <li class="covered" data-hits="17" data-linenumber="162">
2882
+ <li class="covered" data-hits="17" data-linenumber="163">
2868
2883
  <span class="hits">17</span>
2869
2884
 
2870
2885
  <code class="ruby"> Float(number)</code>
2871
2886
  </li>
2872
2887
 
2873
- <li class="never" data-hits="" data-linenumber="163">
2888
+ <li class="never" data-hits="" data-linenumber="164">
2874
2889
 
2875
2890
 
2876
- <code class="ruby"> rescue</code>
2891
+ <code class="ruby"> rescue StandardError</code>
2877
2892
  </li>
2878
2893
 
2879
- <li class="covered" data-hits="1" data-linenumber="164">
2894
+ <li class="covered" data-hits="1" data-linenumber="165">
2880
2895
  <span class="hits">1</span>
2881
2896
 
2882
2897
  <code class="ruby"> return nil</code>
2883
2898
  </li>
2884
2899
 
2885
- <li class="never" data-hits="" data-linenumber="165">
2900
+ <li class="never" data-hits="" data-linenumber="166">
2886
2901
 
2887
2902
 
2888
2903
  <code class="ruby"> end</code>
2889
2904
  </li>
2890
2905
 
2891
- <li class="covered" data-hits="16" data-linenumber="166">
2906
+ <li class="covered" data-hits="16" data-linenumber="167">
2892
2907
  <span class="hits">16</span>
2893
2908
 
2894
2909
  <code class="ruby"> options = BB::Hash.symbolize_keys(args)</code>
2895
2910
  </li>
2896
2911
 
2897
- <li class="never" data-hits="" data-linenumber="167">
2912
+ <li class="never" data-hits="" data-linenumber="168">
2898
2913
 
2899
2914
 
2900
2915
  <code class="ruby"></code>
2901
2916
  </li>
2902
2917
 
2903
- <li class="covered" data-hits="16" data-linenumber="168">
2918
+ <li class="covered" data-hits="16" data-linenumber="169">
2904
2919
  <span class="hits">16</span>
2905
2920
 
2906
2921
  <code class="ruby"> delimiter ||= (options[:delimiter] || &#39;,&#39;)</code>
2907
2922
  </li>
2908
2923
 
2909
- <li class="covered" data-hits="16" data-linenumber="169">
2924
+ <li class="covered" data-hits="16" data-linenumber="170">
2910
2925
  <span class="hits">16</span>
2911
2926
 
2912
2927
  <code class="ruby"> separator ||= (options[:separator] || &#39;.&#39;)</code>
2913
2928
  </li>
2914
2929
 
2915
- <li class="never" data-hits="" data-linenumber="170">
2930
+ <li class="never" data-hits="" data-linenumber="171">
2916
2931
 
2917
2932
 
2918
2933
  <code class="ruby"></code>
2919
2934
  </li>
2920
2935
 
2921
- <li class="covered" data-hits="16" data-linenumber="171">
2936
+ <li class="covered" data-hits="16" data-linenumber="172">
2922
2937
  <span class="hits">16</span>
2923
2938
 
2924
2939
  <code class="ruby"> begin</code>
2925
2940
  </li>
2926
2941
 
2927
- <li class="covered" data-hits="16" data-linenumber="172">
2942
+ <li class="covered" data-hits="16" data-linenumber="173">
2928
2943
  <span class="hits">16</span>
2929
2944
 
2930
2945
  <code class="ruby"> parts = number.to_s.split(&#39;.&#39;)</code>
2931
2946
  </li>
2932
2947
 
2933
- <li class="covered" data-hits="16" data-linenumber="173">
2948
+ <li class="covered" data-hits="16" data-linenumber="174">
2934
2949
  <span class="hits">16</span>
2935
2950
 
2936
2951
  <code class="ruby"> parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, &quot;\\1#{delimiter}&quot;)</code>
2937
2952
  </li>
2938
2953
 
2939
- <li class="covered" data-hits="16" data-linenumber="174">
2954
+ <li class="covered" data-hits="16" data-linenumber="175">
2940
2955
  <span class="hits">16</span>
2941
2956
 
2942
2957
  <code class="ruby"> parts.join(separator)</code>
2943
2958
  </li>
2944
2959
 
2945
- <li class="never" data-hits="" data-linenumber="175">
2946
-
2960
+ <li class="covered" data-hits="1" data-linenumber="176">
2961
+ <span class="hits">1</span>
2947
2962
 
2948
- <code class="ruby"> rescue</code>
2963
+ <code class="ruby"> rescue StandardError</code>
2949
2964
  </li>
2950
2965
 
2951
- <li class="covered" data-hits="1" data-linenumber="176">
2966
+ <li class="covered" data-hits="1" data-linenumber="177">
2952
2967
  <span class="hits">1</span>
2953
2968
 
2954
2969
  <code class="ruby"> number</code>
2955
2970
  </li>
2956
2971
 
2957
- <li class="never" data-hits="" data-linenumber="177">
2972
+ <li class="never" data-hits="" data-linenumber="178">
2958
2973
 
2959
2974
 
2960
2975
  <code class="ruby"> end</code>
2961
2976
  </li>
2962
2977
 
2963
- <li class="never" data-hits="" data-linenumber="178">
2978
+ <li class="never" data-hits="" data-linenumber="179">
2964
2979
 
2965
2980
 
2966
2981
  <code class="ruby"> end</code>
2967
2982
  </li>
2968
2983
 
2969
- <li class="never" data-hits="" data-linenumber="179">
2984
+ <li class="never" data-hits="" data-linenumber="180">
2970
2985
 
2971
2986
 
2972
2987
  <code class="ruby"> end</code>
2973
2988
  </li>
2974
2989
 
2975
- <li class="never" data-hits="" data-linenumber="180">
2990
+ <li class="never" data-hits="" data-linenumber="181">
2976
2991
 
2977
2992
 
2978
2993
  <code class="ruby"> end</code>
2979
2994
  </li>
2980
2995
 
2981
- <li class="never" data-hits="" data-linenumber="181">
2996
+ <li class="never" data-hits="" data-linenumber="182">
2982
2997
 
2983
2998
 
2984
2999
  <code class="ruby">end</code>
@@ -2987,6 +3002,7 @@
2987
3002
  </ol>
2988
3003
  </pre>
2989
3004
  </div>
3005
+
2990
3006
 
2991
3007
  <div class="source_table" id="1503164dbfa2b2b494fd2100a9b38b04be306a6e">
2992
3008
  <div class="header">
@@ -3008,97 +3024,103 @@
3008
3024
  <code class="ruby"># frozen_string_literal: true</code>
3009
3025
  </li>
3010
3026
 
3011
- <li class="covered" data-hits="1" data-linenumber="2">
3027
+ <li class="never" data-hits="" data-linenumber="2">
3028
+
3029
+
3030
+ <code class="ruby"></code>
3031
+ </li>
3032
+
3033
+ <li class="covered" data-hits="1" data-linenumber="3">
3012
3034
  <span class="hits">1</span>
3013
3035
 
3014
3036
  <code class="ruby">module BB</code>
3015
3037
  </li>
3016
3038
 
3017
- <li class="never" data-hits="" data-linenumber="3">
3039
+ <li class="never" data-hits="" data-linenumber="4">
3018
3040
 
3019
3041
 
3020
3042
  <code class="ruby"> # String utilities.</code>
3021
3043
  </li>
3022
3044
 
3023
- <li class="covered" data-hits="1" data-linenumber="4">
3045
+ <li class="covered" data-hits="1" data-linenumber="5">
3024
3046
  <span class="hits">1</span>
3025
3047
 
3026
3048
  <code class="ruby"> module String</code>
3027
3049
  </li>
3028
3050
 
3029
- <li class="covered" data-hits="1" data-linenumber="5">
3051
+ <li class="covered" data-hits="1" data-linenumber="6">
3030
3052
  <span class="hits">1</span>
3031
3053
 
3032
3054
  <code class="ruby"> class &lt;&lt; self</code>
3033
3055
  </li>
3034
3056
 
3035
- <li class="never" data-hits="" data-linenumber="6">
3057
+ <li class="never" data-hits="" data-linenumber="7">
3036
3058
 
3037
3059
 
3038
3060
  <code class="ruby"> # Strip ANSI escape sequences from String.</code>
3039
3061
  </li>
3040
3062
 
3041
- <li class="never" data-hits="" data-linenumber="7">
3063
+ <li class="never" data-hits="" data-linenumber="8">
3042
3064
 
3043
3065
 
3044
3066
  <code class="ruby"> #</code>
3045
3067
  </li>
3046
3068
 
3047
- <li class="never" data-hits="" data-linenumber="8">
3069
+ <li class="never" data-hits="" data-linenumber="9">
3048
3070
 
3049
3071
 
3050
3072
  <code class="ruby"> # @param [String] text Input string (dirty)</code>
3051
3073
  </li>
3052
3074
 
3053
- <li class="never" data-hits="" data-linenumber="9">
3075
+ <li class="never" data-hits="" data-linenumber="10">
3054
3076
 
3055
3077
 
3056
3078
  <code class="ruby"> # @return [String] Output string (cleaned)</code>
3057
3079
  </li>
3058
3080
 
3059
- <li class="covered" data-hits="1" data-linenumber="10">
3081
+ <li class="covered" data-hits="1" data-linenumber="11">
3060
3082
  <span class="hits">1</span>
3061
3083
 
3062
3084
  <code class="ruby"> def strip_ansi(text)</code>
3063
3085
  </li>
3064
3086
 
3065
- <li class="never" data-hits="" data-linenumber="11">
3087
+ <li class="never" data-hits="" data-linenumber="12">
3066
3088
 
3067
3089
 
3068
3090
  <code class="ruby"> text.gsub(/\x1b(\[|\(|\))[;?0-9]*[0-9A-Za-z]/, &#39;&#39;)</code>
3069
3091
  </li>
3070
3092
 
3071
- <li class="never" data-hits="" data-linenumber="12">
3093
+ <li class="never" data-hits="" data-linenumber="13">
3072
3094
 
3073
3095
 
3074
3096
  <code class="ruby"> .gsub(/\x1b(\[|\(|\))[;?0-9]*[0-9A-Za-z]/, &#39;&#39;)</code>
3075
3097
  </li>
3076
3098
 
3077
- <li class="covered" data-hits="1" data-linenumber="13">
3099
+ <li class="covered" data-hits="1" data-linenumber="14">
3078
3100
  <span class="hits">1</span>
3079
3101
 
3080
3102
  <code class="ruby"> .gsub(/(\x03|\x1a)/, &#39;&#39;)</code>
3081
3103
  </li>
3082
3104
 
3083
- <li class="never" data-hits="" data-linenumber="14">
3105
+ <li class="never" data-hits="" data-linenumber="15">
3084
3106
 
3085
3107
 
3086
3108
  <code class="ruby"> end</code>
3087
3109
  </li>
3088
3110
 
3089
- <li class="never" data-hits="" data-linenumber="15">
3111
+ <li class="never" data-hits="" data-linenumber="16">
3090
3112
 
3091
3113
 
3092
3114
  <code class="ruby"> end</code>
3093
3115
  </li>
3094
3116
 
3095
- <li class="never" data-hits="" data-linenumber="16">
3117
+ <li class="never" data-hits="" data-linenumber="17">
3096
3118
 
3097
3119
 
3098
3120
  <code class="ruby"> end</code>
3099
3121
  </li>
3100
3122
 
3101
- <li class="never" data-hits="" data-linenumber="17">
3123
+ <li class="never" data-hits="" data-linenumber="18">
3102
3124
 
3103
3125
 
3104
3126
  <code class="ruby">end</code>
@@ -3107,14 +3129,15 @@
3107
3129
  </ol>
3108
3130
  </pre>
3109
3131
  </div>
3132
+
3110
3133
 
3111
3134
  <div class="source_table" id="ef107940f0bb318164d36d5de1cd48192edb65f2">
3112
3135
  <div class="header">
3113
3136
  <h3>lib/blackbox/unix.rb</h3>
3114
- <h4><span class="red">45.83 %</span> covered</h4>
3137
+ <h4><span class="red">45.07 %</span> covered</h4>
3115
3138
  <div>
3116
- <b>72</b> relevant lines.
3117
- <span class="green"><b>33</b> lines covered</span> and
3139
+ <b>71</b> relevant lines.
3140
+ <span class="green"><b>32</b> lines covered</span> and
3118
3141
  <span class="red"><b>39</b> lines missed.</span>
3119
3142
  </div>
3120
3143
  </div>
@@ -3128,16 +3151,16 @@
3128
3151
  <code class="ruby"># frozen_string_literal: true</code>
3129
3152
  </li>
3130
3153
 
3131
- <li class="covered" data-hits="1" data-linenumber="2">
3132
- <span class="hits">1</span>
3154
+ <li class="never" data-hits="" data-linenumber="2">
3133
3155
 
3134
- <code class="ruby">require &#39;lolcat/lol&#39;</code>
3156
+
3157
+ <code class="ruby"></code>
3135
3158
  </li>
3136
3159
 
3137
3160
  <li class="covered" data-hits="1" data-linenumber="3">
3138
3161
  <span class="hits">1</span>
3139
3162
 
3140
- <code class="ruby">require &#39;thread&#39;</code>
3163
+ <code class="ruby">require &#39;lolcat/lol&#39;</code>
3141
3164
  </li>
3142
3165
 
3143
3166
  <li class="covered" data-hits="1" data-linenumber="4">
@@ -3398,7 +3421,7 @@
3398
3421
  <code class="ruby"> @minispin_last_char_at = Time.now</code>
3399
3422
  </li>
3400
3423
 
3401
- <li class="never" data-hits="" data-linenumber="47">
3424
+ <li class="missed" data-hits="0" data-linenumber="47">
3402
3425
 
3403
3426
 
3404
3427
  <code class="ruby"> @tspin ||= Thread.new do</code>
@@ -3425,7 +3448,7 @@
3425
3448
  <li class="missed" data-hits="0" data-linenumber="51">
3426
3449
 
3427
3450
 
3428
- <code class="ruby"> if 0.23 &gt; Time.now - @minispin_last_char_at || @minispin_disable</code>
3451
+ <code class="ruby"> if Time.now - @minispin_last_char_at &lt; 0.23 || @minispin_disable</code>
3429
3452
  </li>
3430
3453
 
3431
3454
  <li class="missed" data-hits="0" data-linenumber="52">
@@ -3518,7 +3541,7 @@
3518
3541
  <code class="ruby"> end</code>
3519
3542
  </li>
3520
3543
 
3521
- <li class="missed" data-hits="0" data-linenumber="67">
3544
+ <li class="never" data-hits="" data-linenumber="67">
3522
3545
 
3523
3546
 
3524
3547
  <code class="ruby"> end</code>
@@ -3683,7 +3706,7 @@
3683
3706
  <li class="covered" data-hits="4" data-linenumber="94">
3684
3707
  <span class="hits">4</span>
3685
3708
 
3686
- <code class="ruby"> opts[:spinner].call(true) if opts[:spinner]</code>
3709
+ <code class="ruby"> opts[:spinner]&amp;.call(true)</code>
3687
3710
  </li>
3688
3711
 
3689
3712
  <li class="covered" data-hits="4" data-linenumber="95">
@@ -3695,13 +3718,13 @@
3695
3718
  <li class="covered" data-hits="4" data-linenumber="96">
3696
3719
  <span class="hits">4</span>
3697
3720
 
3698
- <code class="ruby"> opts[:spinner].call(false) if opts[:spinner]</code>
3721
+ <code class="ruby"> opts[:spinner]&amp;.call(false)</code>
3699
3722
  </li>
3700
3723
 
3701
3724
  <li class="covered" data-hits="4" data-linenumber="97">
3702
3725
  <span class="hits">4</span>
3703
3726
 
3704
- <code class="ruby"> color = (status.exitstatus == 0) ? :green : :red</code>
3727
+ <code class="ruby"> color = status.exitstatus == 0 ? :green : :red</code>
3705
3728
  </li>
3706
3729
 
3707
3730
  <li class="covered" data-hits="4" data-linenumber="98">
@@ -3803,6 +3826,7 @@
3803
3826
  </ol>
3804
3827
  </pre>
3805
3828
  </div>
3829
+
3806
3830
 
3807
3831
  </div>
3808
3832
  </div>