blackbox 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/blackbox.gemspec +4 -3
- data/coverage/.last_run.json +1 -1
- data/coverage/.resultset.json +62 -19
- data/coverage/index.html +538 -280
- data/doc/BB.html +2 -2
- data/doc/BB/Crypto.html +30 -20
- data/doc/BB/Crypto/ControlToken.html +529 -0
- data/doc/BB/Gem.html +1 -1
- data/doc/BB/Hash.html +1 -1
- data/doc/BB/Number.html +9 -11
- data/doc/BB/String.html +1 -1
- data/doc/BB/Unix.html +1 -1
- data/doc/_index.html +8 -1
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +1 -1
- data/doc/index.html +1 -1
- data/doc/method_list.html +18 -6
- data/doc/top-level-namespace.html +1 -1
- data/lib/blackbox/crypto.rb +45 -1
- data/lib/blackbox/number.rb +1 -2
- data/lib/blackbox/version.rb +1 -1
- data/spec/crypto_spec.rb +49 -9
- metadata +29 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd439770497c284d17c5af5d41c66cb0cda688fc
|
4
|
+
data.tar.gz: 5a3324a00ff18c50f0fddbb8257cd9b5a476e8f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dcfb05a55de1517900443519733259021b5cfc557e566606a7558ebc63cd92abfdb13b1ef8c792db6cb64c3756693da1c3261e15bdabcd779e79e5f2f521d8e
|
7
|
+
data.tar.gz: 8c4effdcc89b47fec5d38f22a155ed84777cfee55d827501b61cbdfcb1635df5a76e08193115087452b6a28645fb9a98fcc2898c5a3b3fb43db3bb84aa3be9d6
|
data/.rubocop.yml
CHANGED
data/blackbox.gemspec
CHANGED
@@ -32,7 +32,8 @@ Gem::Specification.new do |gem|
|
|
32
32
|
gem.add_development_dependency 'timecop'
|
33
33
|
gem.add_development_dependency 'rubocop'
|
34
34
|
|
35
|
-
gem.add_dependency 'gem_update_checker'
|
36
|
-
gem.add_dependency 'lolcat'
|
37
|
-
gem.add_dependency 'rainbow'
|
35
|
+
gem.add_dependency 'gem_update_checker', '~> 0.2.0'
|
36
|
+
gem.add_dependency 'lolcat', '~> 42.1.43'
|
37
|
+
gem.add_dependency 'rainbow', '~> 2.1.0'
|
38
|
+
gem.add_dependency 'chronic_duration', '~> 0.10.6'
|
38
39
|
end
|
data/coverage/.last_run.json
CHANGED
data/coverage/.resultset.json
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
null,
|
6
6
|
1,
|
7
7
|
1,
|
8
|
+
1,
|
8
9
|
null,
|
9
10
|
1,
|
10
11
|
null,
|
@@ -19,12 +20,12 @@
|
|
19
20
|
null,
|
20
21
|
null,
|
21
22
|
1,
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
702,
|
24
|
+
702,
|
25
|
+
702,
|
26
|
+
700,
|
27
|
+
331,
|
28
|
+
331,
|
28
29
|
null,
|
29
30
|
369,
|
30
31
|
369,
|
@@ -39,16 +40,16 @@
|
|
39
40
|
null,
|
40
41
|
null,
|
41
42
|
1,
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
43
|
+
372,
|
44
|
+
372,
|
45
|
+
372,
|
46
|
+
372,
|
47
|
+
249,
|
48
|
+
249,
|
48
49
|
null,
|
49
50
|
123,
|
50
51
|
null,
|
51
|
-
|
52
|
+
372,
|
52
53
|
null,
|
53
54
|
null,
|
54
55
|
null,
|
@@ -83,7 +84,7 @@
|
|
83
84
|
null,
|
84
85
|
null,
|
85
86
|
1,
|
86
|
-
|
87
|
+
251,
|
87
88
|
null,
|
88
89
|
null,
|
89
90
|
null,
|
@@ -94,7 +95,50 @@
|
|
94
95
|
null,
|
95
96
|
null,
|
96
97
|
1,
|
97
|
-
|
98
|
+
126,
|
99
|
+
null,
|
100
|
+
null,
|
101
|
+
null,
|
102
|
+
null,
|
103
|
+
1,
|
104
|
+
1,
|
105
|
+
null,
|
106
|
+
null,
|
107
|
+
null,
|
108
|
+
null,
|
109
|
+
null,
|
110
|
+
null,
|
111
|
+
null,
|
112
|
+
null,
|
113
|
+
1,
|
114
|
+
6,
|
115
|
+
null,
|
116
|
+
5,
|
117
|
+
5,
|
118
|
+
5,
|
119
|
+
null,
|
120
|
+
null,
|
121
|
+
null,
|
122
|
+
null,
|
123
|
+
null,
|
124
|
+
null,
|
125
|
+
null,
|
126
|
+
null,
|
127
|
+
null,
|
128
|
+
1,
|
129
|
+
3,
|
130
|
+
3,
|
131
|
+
3,
|
132
|
+
3,
|
133
|
+
3,
|
134
|
+
3,
|
135
|
+
1,
|
136
|
+
null,
|
137
|
+
null,
|
138
|
+
null,
|
139
|
+
null,
|
140
|
+
2,
|
141
|
+
null,
|
98
142
|
null,
|
99
143
|
null,
|
100
144
|
null,
|
@@ -134,7 +178,7 @@
|
|
134
178
|
null,
|
135
179
|
8,
|
136
180
|
8,
|
137
|
-
|
181
|
+
80,
|
138
182
|
null,
|
139
183
|
null,
|
140
184
|
8,
|
@@ -162,7 +206,7 @@
|
|
162
206
|
7,
|
163
207
|
7,
|
164
208
|
null,
|
165
|
-
|
209
|
+
0,
|
166
210
|
null,
|
167
211
|
null,
|
168
212
|
7,
|
@@ -324,7 +368,6 @@
|
|
324
368
|
null,
|
325
369
|
null,
|
326
370
|
null,
|
327
|
-
null,
|
328
371
|
10,
|
329
372
|
null,
|
330
373
|
null,
|
@@ -565,6 +608,6 @@
|
|
565
608
|
null
|
566
609
|
]
|
567
610
|
},
|
568
|
-
"timestamp":
|
611
|
+
"timestamp": 1469891309
|
569
612
|
}
|
570
613
|
}
|
data/coverage/index.html
CHANGED
@@ -14,27 +14,27 @@
|
|
14
14
|
<img src="./assets/0.10.0/loading.gif" alt="loading"/>
|
15
15
|
</div>
|
16
16
|
<div id="wrapper" style="display:none;">
|
17
|
-
<div class="timestamp">Generated <abbr class="timeago" title="2016-
|
17
|
+
<div class="timestamp">Generated <abbr class="timeago" title="2016-07-30T17:08:29+02:00">2016-07-30T17:08:29+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">
|
24
|
+
(<span class="covered_percent"><span class="yellow">82.06%</span></span>
|
25
25
|
covered at
|
26
26
|
<span class="covered_strength">
|
27
27
|
<span class="green">
|
28
|
-
|
28
|
+
38.36
|
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>
|
36
|
-
<span class="green"><b>
|
37
|
-
<span class="red"><b>
|
35
|
+
<b>223</b> relevant lines.
|
36
|
+
<span class="green"><b>183</b> lines covered</span> and
|
37
|
+
<span class="red"><b>40</b> lines missed </span>
|
38
38
|
</div>
|
39
39
|
<table class="file_list">
|
40
40
|
<thead>
|
@@ -53,21 +53,21 @@
|
|
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>
|
57
|
-
<td>
|
58
|
-
<td>
|
56
|
+
<td>141</td>
|
57
|
+
<td>48</td>
|
58
|
+
<td>48</td>
|
59
59
|
<td>0</td>
|
60
|
-
<td>
|
60
|
+
<td>156.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">
|
65
|
+
<td class="green strong">96.97 %</td>
|
66
66
|
<td>93</td>
|
67
67
|
<td>33</td>
|
68
|
-
<td>
|
69
|
-
<td>
|
70
|
-
<td>7.
|
68
|
+
<td>32</td>
|
69
|
+
<td>1</td>
|
70
|
+
<td>7.8</td>
|
71
71
|
</tr>
|
72
72
|
|
73
73
|
<tr>
|
@@ -83,7 +83,7 @@
|
|
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>
|
86
|
+
<td>181</td>
|
87
87
|
<td>52</td>
|
88
88
|
<td>52</td>
|
89
89
|
<td>0</td>
|
@@ -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>
|
135
|
-
<span class="green"><b>
|
134
|
+
<b>48</b> relevant lines.
|
135
|
+
<span class="green"><b>48</b> lines covered</span> and
|
136
136
|
<span class="red"><b>0</b> lines missed.</span>
|
137
137
|
</div>
|
138
138
|
</div>
|
@@ -158,565 +158,829 @@
|
|
158
158
|
<code class="ruby">require 'base64'</code>
|
159
159
|
</li>
|
160
160
|
|
161
|
-
<li class="
|
161
|
+
<li class="covered" data-hits="1" data-linenumber="4">
|
162
|
+
<span class="hits">1</span>
|
163
|
+
|
164
|
+
<code class="ruby">require 'chronic_duration'</code>
|
165
|
+
</li>
|
166
|
+
|
167
|
+
<li class="never" data-hits="" data-linenumber="5">
|
162
168
|
|
163
169
|
|
164
170
|
<code class="ruby"></code>
|
165
171
|
</li>
|
166
172
|
|
167
|
-
<li class="covered" data-hits="1" data-linenumber="
|
173
|
+
<li class="covered" data-hits="1" data-linenumber="6">
|
168
174
|
<span class="hits">1</span>
|
169
175
|
|
170
176
|
<code class="ruby">module BB</code>
|
171
177
|
</li>
|
172
178
|
|
173
|
-
<li class="never" data-hits="" data-linenumber="
|
179
|
+
<li class="never" data-hits="" data-linenumber="7">
|
174
180
|
|
175
181
|
|
176
182
|
<code class="ruby"> # Crypto utilities.</code>
|
177
183
|
</li>
|
178
184
|
|
179
|
-
<li class="covered" data-hits="1" data-linenumber="
|
185
|
+
<li class="covered" data-hits="1" data-linenumber="8">
|
180
186
|
<span class="hits">1</span>
|
181
187
|
|
182
188
|
<code class="ruby"> module Crypto</code>
|
183
189
|
</li>
|
184
190
|
|
185
|
-
<li class="covered" data-hits="1" data-linenumber="
|
191
|
+
<li class="covered" data-hits="1" data-linenumber="9">
|
186
192
|
<span class="hits">1</span>
|
187
193
|
|
188
194
|
<code class="ruby"> class << self</code>
|
189
195
|
</li>
|
190
196
|
|
191
|
-
<li class="never" data-hits="" data-linenumber="
|
197
|
+
<li class="never" data-hits="" data-linenumber="10">
|
192
198
|
|
193
199
|
|
194
200
|
<code class="ruby"> # Encrypt a String.</code>
|
195
201
|
</li>
|
196
202
|
|
197
|
-
<li class="never" data-hits="" data-linenumber="
|
203
|
+
<li class="never" data-hits="" data-linenumber="11">
|
198
204
|
|
199
205
|
|
200
206
|
<code class="ruby"> #</code>
|
201
207
|
</li>
|
202
208
|
|
203
|
-
<li class="never" data-hits="" data-linenumber="
|
209
|
+
<li class="never" data-hits="" data-linenumber="12">
|
204
210
|
|
205
211
|
|
206
212
|
<code class="ruby"> # @param [String] plaintext Input String (plaintext)</code>
|
207
213
|
</li>
|
208
214
|
|
209
|
-
<li class="never" data-hits="" data-linenumber="
|
215
|
+
<li class="never" data-hits="" data-linenumber="13">
|
210
216
|
|
211
217
|
|
212
218
|
<code class="ruby"> # @param [String] key Encryption key</code>
|
213
219
|
</li>
|
214
220
|
|
215
|
-
<li class="never" data-hits="" data-linenumber="
|
221
|
+
<li class="never" data-hits="" data-linenumber="14">
|
216
222
|
|
217
223
|
|
218
224
|
<code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
|
219
225
|
</li>
|
220
226
|
|
221
|
-
<li class="never" data-hits="" data-linenumber="
|
227
|
+
<li class="never" data-hits="" data-linenumber="15">
|
222
228
|
|
223
229
|
|
224
230
|
<code class="ruby"> # @param [String] iv Initialization vector</code>
|
225
231
|
</li>
|
226
232
|
|
227
|
-
<li class="never" data-hits="" data-linenumber="
|
233
|
+
<li class="never" data-hits="" data-linenumber="16">
|
228
234
|
|
229
235
|
|
230
236
|
<code class="ruby"> # @return [String] When iv == nil: iv_length+iv+ciphertext</code>
|
231
237
|
</li>
|
232
238
|
|
233
|
-
<li class="never" data-hits="" data-linenumber="
|
239
|
+
<li class="never" data-hits="" data-linenumber="17">
|
234
240
|
|
235
241
|
|
236
242
|
<code class="ruby"> # @return [String] When iv != nil: ciphertext</code>
|
237
243
|
</li>
|
238
244
|
|
239
|
-
<li class="covered" data-hits="1" data-linenumber="
|
245
|
+
<li class="covered" data-hits="1" data-linenumber="18">
|
240
246
|
<span class="hits">1</span>
|
241
247
|
|
242
248
|
<code class="ruby"> def encrypt(plaintext, key, cipher_type = 'aes-256-cbc', iv = nil)</code>
|
243
249
|
</li>
|
244
250
|
|
245
|
-
<li class="covered" data-hits="
|
246
|
-
<span class="hits">
|
251
|
+
<li class="covered" data-hits="702" data-linenumber="19">
|
252
|
+
<span class="hits">702</span>
|
247
253
|
|
248
254
|
<code class="ruby"> cipher = OpenSSL::Cipher::Cipher.new(cipher_type)</code>
|
249
255
|
</li>
|
250
256
|
|
251
|
-
<li class="covered" data-hits="
|
252
|
-
<span class="hits">
|
257
|
+
<li class="covered" data-hits="702" data-linenumber="20">
|
258
|
+
<span class="hits">702</span>
|
253
259
|
|
254
260
|
<code class="ruby"> cipher.encrypt</code>
|
255
261
|
</li>
|
256
262
|
|
257
|
-
<li class="covered" data-hits="
|
258
|
-
<span class="hits">
|
263
|
+
<li class="covered" data-hits="702" data-linenumber="21">
|
264
|
+
<span class="hits">702</span>
|
259
265
|
|
260
266
|
<code class="ruby"> cipher.key = key</code>
|
261
267
|
</li>
|
262
268
|
|
263
|
-
<li class="covered" data-hits="
|
264
|
-
<span class="hits">
|
269
|
+
<li class="covered" data-hits="700" data-linenumber="22">
|
270
|
+
<span class="hits">700</span>
|
265
271
|
|
266
272
|
<code class="ruby"> if iv.nil?</code>
|
267
273
|
</li>
|
268
274
|
|
269
|
-
<li class="covered" data-hits="
|
270
|
-
<span class="hits">
|
275
|
+
<li class="covered" data-hits="331" data-linenumber="23">
|
276
|
+
<span class="hits">331</span>
|
271
277
|
|
272
278
|
<code class="ruby"> iv = cipher.random_iv</code>
|
273
279
|
</li>
|
274
280
|
|
275
|
-
<li class="covered" data-hits="
|
276
|
-
<span class="hits">
|
281
|
+
<li class="covered" data-hits="331" data-linenumber="24">
|
282
|
+
<span class="hits">331</span>
|
277
283
|
|
278
284
|
<code class="ruby"> [iv.length].pack('C') + iv + cipher.update(plaintext) + cipher.final</code>
|
279
285
|
</li>
|
280
286
|
|
281
|
-
<li class="never" data-hits="" data-linenumber="
|
287
|
+
<li class="never" data-hits="" data-linenumber="25">
|
282
288
|
|
283
289
|
|
284
290
|
<code class="ruby"> else</code>
|
285
291
|
</li>
|
286
292
|
|
287
|
-
<li class="covered" data-hits="369" data-linenumber="
|
293
|
+
<li class="covered" data-hits="369" data-linenumber="26">
|
288
294
|
<span class="hits">369</span>
|
289
295
|
|
290
296
|
<code class="ruby"> cipher.iv = iv</code>
|
291
297
|
</li>
|
292
298
|
|
293
|
-
<li class="covered" data-hits="369" data-linenumber="
|
299
|
+
<li class="covered" data-hits="369" data-linenumber="27">
|
294
300
|
<span class="hits">369</span>
|
295
301
|
|
296
302
|
<code class="ruby"> cipher.update(plaintext) + cipher.final</code>
|
297
303
|
</li>
|
298
304
|
|
299
|
-
<li class="never" data-hits="" data-linenumber="
|
305
|
+
<li class="never" data-hits="" data-linenumber="28">
|
300
306
|
|
301
307
|
|
302
308
|
<code class="ruby"> end</code>
|
303
309
|
</li>
|
304
310
|
|
305
|
-
<li class="never" data-hits="" data-linenumber="
|
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="
|
317
|
+
<li class="never" data-hits="" data-linenumber="30">
|
312
318
|
|
313
319
|
|
314
320
|
<code class="ruby"></code>
|
315
321
|
</li>
|
316
322
|
|
317
|
-
<li class="never" data-hits="" data-linenumber="
|
323
|
+
<li class="never" data-hits="" data-linenumber="31">
|
318
324
|
|
319
325
|
|
320
326
|
<code class="ruby"> # Decrypt a String.</code>
|
321
327
|
</li>
|
322
328
|
|
323
|
-
<li class="never" data-hits="" data-linenumber="
|
329
|
+
<li class="never" data-hits="" data-linenumber="32">
|
324
330
|
|
325
331
|
|
326
332
|
<code class="ruby"> #</code>
|
327
333
|
</li>
|
328
334
|
|
329
|
-
<li class="never" data-hits="" data-linenumber="
|
335
|
+
<li class="never" data-hits="" data-linenumber="33">
|
330
336
|
|
331
337
|
|
332
338
|
<code class="ruby"> # @param [String] ciphertext Input String (ciphertext)</code>
|
333
339
|
</li>
|
334
340
|
|
335
|
-
<li class="never" data-hits="" data-linenumber="
|
341
|
+
<li class="never" data-hits="" data-linenumber="34">
|
336
342
|
|
337
343
|
|
338
344
|
<code class="ruby"> # @param [String] key Encryption key</code>
|
339
345
|
</li>
|
340
346
|
|
341
|
-
<li class="never" data-hits="" data-linenumber="
|
347
|
+
<li class="never" data-hits="" data-linenumber="35">
|
342
348
|
|
343
349
|
|
344
350
|
<code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
|
345
351
|
</li>
|
346
352
|
|
347
|
-
<li class="never" data-hits="" data-linenumber="
|
353
|
+
<li class="never" data-hits="" data-linenumber="36">
|
348
354
|
|
349
355
|
|
350
356
|
<code class="ruby"> # @param [String] iv Initialization vector</code>
|
351
357
|
</li>
|
352
358
|
|
353
|
-
<li class="never" data-hits="" data-linenumber="
|
359
|
+
<li class="never" data-hits="" data-linenumber="37">
|
354
360
|
|
355
361
|
|
356
362
|
<code class="ruby"> # @return [String] Plaintext</code>
|
357
363
|
</li>
|
358
364
|
|
359
|
-
<li class="covered" data-hits="1" data-linenumber="
|
365
|
+
<li class="covered" data-hits="1" data-linenumber="38">
|
360
366
|
<span class="hits">1</span>
|
361
367
|
|
362
368
|
<code class="ruby"> def decrypt(ciphertext, key, cipher_type = 'aes-256-cbc', iv = nil)</code>
|
363
369
|
</li>
|
364
370
|
|
365
|
-
<li class="covered" data-hits="
|
366
|
-
<span class="hits">
|
371
|
+
<li class="covered" data-hits="372" data-linenumber="39">
|
372
|
+
<span class="hits">372</span>
|
367
373
|
|
368
374
|
<code class="ruby"> cipher = OpenSSL::Cipher::Cipher.new(cipher_type)</code>
|
369
375
|
</li>
|
370
376
|
|
371
|
-
<li class="covered" data-hits="
|
372
|
-
<span class="hits">
|
377
|
+
<li class="covered" data-hits="372" data-linenumber="40">
|
378
|
+
<span class="hits">372</span>
|
373
379
|
|
374
380
|
<code class="ruby"> cipher.decrypt</code>
|
375
381
|
</li>
|
376
382
|
|
377
|
-
<li class="covered" data-hits="
|
378
|
-
<span class="hits">
|
383
|
+
<li class="covered" data-hits="372" data-linenumber="41">
|
384
|
+
<span class="hits">372</span>
|
379
385
|
|
380
386
|
<code class="ruby"> cipher.key = key</code>
|
381
387
|
</li>
|
382
388
|
|
383
|
-
<li class="covered" data-hits="
|
384
|
-
<span class="hits">
|
389
|
+
<li class="covered" data-hits="372" data-linenumber="42">
|
390
|
+
<span class="hits">372</span>
|
385
391
|
|
386
392
|
<code class="ruby"> if iv.nil?</code>
|
387
393
|
</li>
|
388
394
|
|
389
|
-
<li class="covered" data-hits="
|
390
|
-
<span class="hits">
|
395
|
+
<li class="covered" data-hits="249" data-linenumber="43">
|
396
|
+
<span class="hits">249</span>
|
391
397
|
|
392
398
|
<code class="ruby"> iv_len = ciphertext.slice!(0).unpack('C')[0]</code>
|
393
399
|
</li>
|
394
400
|
|
395
|
-
<li class="covered" data-hits="
|
396
|
-
<span class="hits">
|
401
|
+
<li class="covered" data-hits="249" data-linenumber="44">
|
402
|
+
<span class="hits">249</span>
|
397
403
|
|
398
404
|
<code class="ruby"> cipher.iv = ciphertext.slice!(0..iv_len - 1) unless 0 == iv_len</code>
|
399
405
|
</li>
|
400
406
|
|
401
|
-
<li class="never" data-hits="" data-linenumber="
|
407
|
+
<li class="never" data-hits="" data-linenumber="45">
|
402
408
|
|
403
409
|
|
404
410
|
<code class="ruby"> else</code>
|
405
411
|
</li>
|
406
412
|
|
407
|
-
<li class="covered" data-hits="123" data-linenumber="
|
413
|
+
<li class="covered" data-hits="123" data-linenumber="46">
|
408
414
|
<span class="hits">123</span>
|
409
415
|
|
410
416
|
<code class="ruby"> cipher.iv = iv</code>
|
411
417
|
</li>
|
412
418
|
|
413
|
-
<li class="never" data-hits="" data-linenumber="
|
419
|
+
<li class="never" data-hits="" data-linenumber="47">
|
414
420
|
|
415
421
|
|
416
422
|
<code class="ruby"> end</code>
|
417
423
|
</li>
|
418
424
|
|
419
|
-
<li class="covered" data-hits="
|
420
|
-
<span class="hits">
|
425
|
+
<li class="covered" data-hits="372" data-linenumber="48">
|
426
|
+
<span class="hits">372</span>
|
421
427
|
|
422
428
|
<code class="ruby"> cipher.update(ciphertext) + cipher.final</code>
|
423
429
|
</li>
|
424
430
|
|
425
|
-
<li class="never" data-hits="" data-linenumber="
|
431
|
+
<li class="never" data-hits="" data-linenumber="49">
|
426
432
|
|
427
433
|
|
428
434
|
<code class="ruby"> end</code>
|
429
435
|
</li>
|
430
436
|
|
431
|
-
<li class="never" data-hits="" data-linenumber="
|
437
|
+
<li class="never" data-hits="" data-linenumber="50">
|
432
438
|
|
433
439
|
|
434
440
|
<code class="ruby"></code>
|
435
441
|
</li>
|
436
442
|
|
437
|
-
<li class="never" data-hits="" data-linenumber="
|
443
|
+
<li class="never" data-hits="" data-linenumber="51">
|
438
444
|
|
439
445
|
|
440
446
|
<code class="ruby"> # Encrypt a String and encode the resulting ciphertext to Base64.</code>
|
441
447
|
</li>
|
442
448
|
|
443
|
-
<li class="never" data-hits="" data-linenumber="
|
449
|
+
<li class="never" data-hits="" data-linenumber="52">
|
444
450
|
|
445
451
|
|
446
452
|
<code class="ruby"> #</code>
|
447
453
|
</li>
|
448
454
|
|
449
|
-
<li class="never" data-hits="" data-linenumber="
|
455
|
+
<li class="never" data-hits="" data-linenumber="53">
|
450
456
|
|
451
457
|
|
452
458
|
<code class="ruby"> # @param [String] plaintext Input String (plaintext)</code>
|
453
459
|
</li>
|
454
460
|
|
455
|
-
<li class="never" data-hits="" data-linenumber="
|
461
|
+
<li class="never" data-hits="" data-linenumber="54">
|
456
462
|
|
457
463
|
|
458
464
|
<code class="ruby"> # @param [String] key Encryption key</code>
|
459
465
|
</li>
|
460
466
|
|
461
|
-
<li class="never" data-hits="" data-linenumber="
|
467
|
+
<li class="never" data-hits="" data-linenumber="55">
|
462
468
|
|
463
469
|
|
464
470
|
<code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
|
465
471
|
</li>
|
466
472
|
|
467
|
-
<li class="never" data-hits="" data-linenumber="
|
473
|
+
<li class="never" data-hits="" data-linenumber="56">
|
468
474
|
|
469
475
|
|
470
476
|
<code class="ruby"> # @param [String] iv Initialization vector</code>
|
471
477
|
</li>
|
472
478
|
|
473
|
-
<li class="never" data-hits="" data-linenumber="
|
479
|
+
<li class="never" data-hits="" data-linenumber="57">
|
474
480
|
|
475
481
|
|
476
482
|
<code class="ruby"> # @return [String] When iv == nil: base64(iv_length+iv+ciphertext)</code>
|
477
483
|
</li>
|
478
484
|
|
479
|
-
<li class="never" data-hits="" data-linenumber="
|
485
|
+
<li class="never" data-hits="" data-linenumber="58">
|
480
486
|
|
481
487
|
|
482
488
|
<code class="ruby"> # @return [String] When iv != nil: base64(ciphertext)</code>
|
483
489
|
</li>
|
484
490
|
|
485
|
-
<li class="covered" data-hits="1" data-linenumber="
|
491
|
+
<li class="covered" data-hits="1" data-linenumber="59">
|
486
492
|
<span class="hits">1</span>
|
487
493
|
|
488
494
|
<code class="ruby"> def encrypt_base64(plaintext, key, cipher_type = 'aes-256-cbc', iv = nil)</code>
|
489
495
|
</li>
|
490
496
|
|
491
|
-
<li class="covered" data-hits="246" data-linenumber="
|
497
|
+
<li class="covered" data-hits="246" data-linenumber="60">
|
492
498
|
<span class="hits">246</span>
|
493
499
|
|
494
500
|
<code class="ruby"> Base64.strict_encode64(encrypt(plaintext, key, cipher_type, iv))</code>
|
495
501
|
</li>
|
496
502
|
|
497
|
-
<li class="never" data-hits="" data-linenumber="
|
503
|
+
<li class="never" data-hits="" data-linenumber="61">
|
498
504
|
|
499
505
|
|
500
506
|
<code class="ruby"> end</code>
|
501
507
|
</li>
|
502
508
|
|
503
|
-
<li class="never" data-hits="" data-linenumber="
|
509
|
+
<li class="never" data-hits="" data-linenumber="62">
|
504
510
|
|
505
511
|
|
506
512
|
<code class="ruby"></code>
|
507
513
|
</li>
|
508
514
|
|
509
|
-
<li class="never" data-hits="" data-linenumber="
|
515
|
+
<li class="never" data-hits="" data-linenumber="63">
|
510
516
|
|
511
517
|
|
512
518
|
<code class="ruby"> # Decode and Decrypt a Base64-String.</code>
|
513
519
|
</li>
|
514
520
|
|
515
|
-
<li class="never" data-hits="" data-linenumber="
|
521
|
+
<li class="never" data-hits="" data-linenumber="64">
|
516
522
|
|
517
523
|
|
518
524
|
<code class="ruby"> #</code>
|
519
525
|
</li>
|
520
526
|
|
521
|
-
<li class="never" data-hits="" data-linenumber="
|
527
|
+
<li class="never" data-hits="" data-linenumber="65">
|
522
528
|
|
523
529
|
|
524
530
|
<code class="ruby"> # @param [String] ciphertext Input String (base64(ciphertext))</code>
|
525
531
|
</li>
|
526
532
|
|
527
|
-
<li class="never" data-hits="" data-linenumber="
|
533
|
+
<li class="never" data-hits="" data-linenumber="66">
|
528
534
|
|
529
535
|
|
530
536
|
<code class="ruby"> # @param [String] key Encryption key</code>
|
531
537
|
</li>
|
532
538
|
|
533
|
-
<li class="never" data-hits="" data-linenumber="
|
539
|
+
<li class="never" data-hits="" data-linenumber="67">
|
534
540
|
|
535
541
|
|
536
542
|
<code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
|
537
543
|
</li>
|
538
544
|
|
539
|
-
<li class="never" data-hits="" data-linenumber="
|
545
|
+
<li class="never" data-hits="" data-linenumber="68">
|
540
546
|
|
541
547
|
|
542
548
|
<code class="ruby"> # @param [String] iv Initialization vector</code>
|
543
549
|
</li>
|
544
550
|
|
545
|
-
<li class="never" data-hits="" data-linenumber="
|
551
|
+
<li class="never" data-hits="" data-linenumber="69">
|
552
|
+
|
553
|
+
|
554
|
+
<code class="ruby"> # @return [String] Plaintext</code>
|
555
|
+
</li>
|
556
|
+
|
557
|
+
<li class="covered" data-hits="1" data-linenumber="70">
|
558
|
+
<span class="hits">1</span>
|
559
|
+
|
560
|
+
<code class="ruby"> def decrypt_base64(ciphertext, key, cipher_type = 'aes-256-cbc', iv = nil)</code>
|
561
|
+
</li>
|
562
|
+
|
563
|
+
<li class="covered" data-hits="123" data-linenumber="71">
|
564
|
+
<span class="hits">123</span>
|
565
|
+
|
566
|
+
<code class="ruby"> decrypt(Base64.decode64(ciphertext), key, cipher_type, iv)</code>
|
567
|
+
</li>
|
568
|
+
|
569
|
+
<li class="never" data-hits="" data-linenumber="72">
|
570
|
+
|
571
|
+
|
572
|
+
<code class="ruby"> end</code>
|
573
|
+
</li>
|
574
|
+
|
575
|
+
<li class="never" data-hits="" data-linenumber="73">
|
576
|
+
|
577
|
+
|
578
|
+
<code class="ruby"></code>
|
579
|
+
</li>
|
580
|
+
|
581
|
+
<li class="never" data-hits="" data-linenumber="74">
|
582
|
+
|
583
|
+
|
584
|
+
<code class="ruby"> # Encrypt a String and encode the resulting ciphertext to urlsafe Base64.</code>
|
585
|
+
</li>
|
586
|
+
|
587
|
+
<li class="never" data-hits="" data-linenumber="75">
|
588
|
+
|
589
|
+
|
590
|
+
<code class="ruby"> #</code>
|
591
|
+
</li>
|
592
|
+
|
593
|
+
<li class="never" data-hits="" data-linenumber="76">
|
594
|
+
|
595
|
+
|
596
|
+
<code class="ruby"> # @param [String] plaintext Input String (plaintext)</code>
|
597
|
+
</li>
|
598
|
+
|
599
|
+
<li class="never" data-hits="" data-linenumber="77">
|
600
|
+
|
601
|
+
|
602
|
+
<code class="ruby"> # @param [String] key Encryption key</code>
|
603
|
+
</li>
|
604
|
+
|
605
|
+
<li class="never" data-hits="" data-linenumber="78">
|
606
|
+
|
607
|
+
|
608
|
+
<code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
|
609
|
+
</li>
|
610
|
+
|
611
|
+
<li class="never" data-hits="" data-linenumber="79">
|
612
|
+
|
613
|
+
|
614
|
+
<code class="ruby"> # @param [String] iv Initialization vector</code>
|
615
|
+
</li>
|
616
|
+
|
617
|
+
<li class="never" data-hits="" data-linenumber="80">
|
618
|
+
|
619
|
+
|
620
|
+
<code class="ruby"> # @return [String] When iv == nil: urlsafe_base64(iv_length+iv+ciphertext)</code>
|
621
|
+
</li>
|
622
|
+
|
623
|
+
<li class="never" data-hits="" data-linenumber="81">
|
624
|
+
|
625
|
+
|
626
|
+
<code class="ruby"> # @return [String] When iv != nil: urlsafe_base64(ciphertext)</code>
|
627
|
+
</li>
|
628
|
+
|
629
|
+
<li class="covered" data-hits="1" data-linenumber="82">
|
630
|
+
<span class="hits">1</span>
|
631
|
+
|
632
|
+
<code class="ruby"> def encrypt_urlsafe_base64(plaintext, key, cipher_type = 'aes-256-cbc', iv = nil)</code>
|
633
|
+
</li>
|
634
|
+
|
635
|
+
<li class="covered" data-hits="251" data-linenumber="83">
|
636
|
+
<span class="hits">251</span>
|
637
|
+
|
638
|
+
<code class="ruby"> Base64.urlsafe_encode64(encrypt(plaintext, key, cipher_type, iv))</code>
|
639
|
+
</li>
|
640
|
+
|
641
|
+
<li class="never" data-hits="" data-linenumber="84">
|
642
|
+
|
643
|
+
|
644
|
+
<code class="ruby"> end</code>
|
645
|
+
</li>
|
646
|
+
|
647
|
+
<li class="never" data-hits="" data-linenumber="85">
|
648
|
+
|
649
|
+
|
650
|
+
<code class="ruby"></code>
|
651
|
+
</li>
|
652
|
+
|
653
|
+
<li class="never" data-hits="" data-linenumber="86">
|
654
|
+
|
655
|
+
|
656
|
+
<code class="ruby"> # Decode and Decrypt an urlsafe Base64-String.</code>
|
657
|
+
</li>
|
658
|
+
|
659
|
+
<li class="never" data-hits="" data-linenumber="87">
|
660
|
+
|
661
|
+
|
662
|
+
<code class="ruby"> #</code>
|
663
|
+
</li>
|
664
|
+
|
665
|
+
<li class="never" data-hits="" data-linenumber="88">
|
666
|
+
|
667
|
+
|
668
|
+
<code class="ruby"> # @param [String] ciphertext Input String (urlsafe_base64(ciphertext))</code>
|
669
|
+
</li>
|
670
|
+
|
671
|
+
<li class="never" data-hits="" data-linenumber="89">
|
672
|
+
|
673
|
+
|
674
|
+
<code class="ruby"> # @param [String] key Encryption key</code>
|
675
|
+
</li>
|
676
|
+
|
677
|
+
<li class="never" data-hits="" data-linenumber="90">
|
678
|
+
|
679
|
+
|
680
|
+
<code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
|
681
|
+
</li>
|
682
|
+
|
683
|
+
<li class="never" data-hits="" data-linenumber="91">
|
684
|
+
|
685
|
+
|
686
|
+
<code class="ruby"> # @param [String] iv Initialization vector</code>
|
687
|
+
</li>
|
688
|
+
|
689
|
+
<li class="never" data-hits="" data-linenumber="92">
|
690
|
+
|
691
|
+
|
692
|
+
<code class="ruby"> # @return [String] Plaintext</code>
|
693
|
+
</li>
|
694
|
+
|
695
|
+
<li class="covered" data-hits="1" data-linenumber="93">
|
696
|
+
<span class="hits">1</span>
|
697
|
+
|
698
|
+
<code class="ruby"> def decrypt_urlsafe_base64(ciphertext, key, cipher_type = 'aes-256-cbc', iv = nil)</code>
|
699
|
+
</li>
|
700
|
+
|
701
|
+
<li class="covered" data-hits="126" data-linenumber="94">
|
702
|
+
<span class="hits">126</span>
|
703
|
+
|
704
|
+
<code class="ruby"> decrypt(Base64.urlsafe_decode64(ciphertext), key, cipher_type, iv)</code>
|
705
|
+
</li>
|
706
|
+
|
707
|
+
<li class="never" data-hits="" data-linenumber="95">
|
708
|
+
|
709
|
+
|
710
|
+
<code class="ruby"> end</code>
|
711
|
+
</li>
|
712
|
+
|
713
|
+
<li class="never" data-hits="" data-linenumber="96">
|
714
|
+
|
715
|
+
|
716
|
+
<code class="ruby"> end</code>
|
717
|
+
</li>
|
718
|
+
|
719
|
+
<li class="never" data-hits="" data-linenumber="97">
|
720
|
+
|
721
|
+
|
722
|
+
<code class="ruby"></code>
|
723
|
+
</li>
|
724
|
+
|
725
|
+
<li class="never" data-hits="" data-linenumber="98">
|
726
|
+
|
727
|
+
|
728
|
+
<code class="ruby"> # Secure Control Token.</code>
|
729
|
+
</li>
|
730
|
+
|
731
|
+
<li class="covered" data-hits="1" data-linenumber="99">
|
732
|
+
<span class="hits">1</span>
|
733
|
+
|
734
|
+
<code class="ruby"> class ControlToken</code>
|
735
|
+
</li>
|
736
|
+
|
737
|
+
<li class="covered" data-hits="1" data-linenumber="100">
|
738
|
+
<span class="hits">1</span>
|
739
|
+
|
740
|
+
<code class="ruby"> class << self</code>
|
741
|
+
</li>
|
742
|
+
|
743
|
+
<li class="never" data-hits="" data-linenumber="101">
|
744
|
+
|
745
|
+
|
746
|
+
<code class="ruby"> # Encode and encrypt an urlsafe ControlToken.</code>
|
747
|
+
</li>
|
748
|
+
|
749
|
+
<li class="never" data-hits="" data-linenumber="102">
|
750
|
+
|
751
|
+
|
752
|
+
<code class="ruby"> #</code>
|
753
|
+
</li>
|
754
|
+
|
755
|
+
<li class="never" data-hits="" data-linenumber="103">
|
756
|
+
|
757
|
+
|
758
|
+
<code class="ruby"> # @param [String] op Operation id</code>
|
759
|
+
</li>
|
760
|
+
|
761
|
+
<li class="never" data-hits="" data-linenumber="104">
|
762
|
+
|
763
|
+
|
764
|
+
<code class="ruby"> # @param [Array] args Arguments (Strings)</code>
|
765
|
+
</li>
|
766
|
+
|
767
|
+
<li class="never" data-hits="" data-linenumber="105">
|
768
|
+
|
769
|
+
|
770
|
+
<code class="ruby"> # @param [Fixnum] expire_in</code>
|
771
|
+
</li>
|
772
|
+
|
773
|
+
<li class="never" data-hits="" data-linenumber="106">
|
774
|
+
|
775
|
+
|
776
|
+
<code class="ruby"> # @param [String] key Encryption key</code>
|
777
|
+
</li>
|
778
|
+
|
779
|
+
<li class="never" data-hits="" data-linenumber="107">
|
780
|
+
|
781
|
+
|
782
|
+
<code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
|
783
|
+
</li>
|
784
|
+
|
785
|
+
<li class="never" data-hits="" data-linenumber="108">
|
786
|
+
|
787
|
+
|
788
|
+
<code class="ruby"> # @return [String] ControlToken (urlsafe base64)</code>
|
789
|
+
</li>
|
790
|
+
|
791
|
+
<li class="covered" data-hits="1" data-linenumber="109">
|
792
|
+
<span class="hits">1</span>
|
793
|
+
|
794
|
+
<code class="ruby"> def create(op, args, expire_in = 900, key = ENV['CONTROLTOKEN_SECRET'], cipher_type = 'aes-256-cbc')</code>
|
795
|
+
</li>
|
796
|
+
|
797
|
+
<li class="covered" data-hits="6" data-linenumber="110">
|
798
|
+
<span class="hits">6</span>
|
799
|
+
|
800
|
+
<code class="ruby"> raise ArgumentError, 'key can not be blank' if key.nil? || key.empty?</code>
|
801
|
+
</li>
|
802
|
+
|
803
|
+
<li class="never" data-hits="" data-linenumber="111">
|
546
804
|
|
547
805
|
|
548
|
-
<code class="ruby">
|
806
|
+
<code class="ruby"> # If you're reading this in the year 2038: Hi there! :-)</code>
|
549
807
|
</li>
|
550
808
|
|
551
|
-
<li class="covered" data-hits="
|
552
|
-
<span class="hits">
|
809
|
+
<li class="covered" data-hits="5" data-linenumber="112">
|
810
|
+
<span class="hits">5</span>
|
553
811
|
|
554
|
-
<code class="ruby">
|
812
|
+
<code class="ruby"> [Time.now.to_i + expire_in].pack('l<')</code>
|
555
813
|
</li>
|
556
814
|
|
557
|
-
<li class="covered" data-hits="
|
558
|
-
<span class="hits">
|
815
|
+
<li class="covered" data-hits="5" data-linenumber="113">
|
816
|
+
<span class="hits">5</span>
|
559
817
|
|
560
|
-
<code class="ruby">
|
818
|
+
<code class="ruby"> body = ([[Time.now.to_i + expire_in].pack('l<'), op] + args).join("\x00")</code>
|
561
819
|
</li>
|
562
820
|
|
563
|
-
<li class="
|
564
|
-
|
821
|
+
<li class="covered" data-hits="5" data-linenumber="114">
|
822
|
+
<span class="hits">5</span>
|
565
823
|
|
566
|
-
<code class="ruby">
|
824
|
+
<code class="ruby"> BB::Crypto.encrypt_urlsafe_base64(body, key, cipher_type)</code>
|
567
825
|
</li>
|
568
826
|
|
569
|
-
<li class="never" data-hits="" data-linenumber="
|
827
|
+
<li class="never" data-hits="" data-linenumber="115">
|
570
828
|
|
571
829
|
|
572
|
-
<code class="ruby"
|
830
|
+
<code class="ruby"> end</code>
|
573
831
|
</li>
|
574
832
|
|
575
|
-
<li class="never" data-hits="" data-linenumber="
|
833
|
+
<li class="never" data-hits="" data-linenumber="116">
|
576
834
|
|
577
835
|
|
578
|
-
<code class="ruby"
|
836
|
+
<code class="ruby"></code>
|
579
837
|
</li>
|
580
838
|
|
581
|
-
<li class="never" data-hits="" data-linenumber="
|
839
|
+
<li class="never" data-hits="" data-linenumber="117">
|
582
840
|
|
583
841
|
|
584
|
-
<code class="ruby">
|
842
|
+
<code class="ruby"> # Decrypt and parse an urlsafe ControlToken.</code>
|
585
843
|
</li>
|
586
844
|
|
587
|
-
<li class="never" data-hits="" data-linenumber="
|
845
|
+
<li class="never" data-hits="" data-linenumber="118">
|
588
846
|
|
589
847
|
|
590
|
-
<code class="ruby">
|
848
|
+
<code class="ruby"> #</code>
|
591
849
|
</li>
|
592
850
|
|
593
|
-
<li class="never" data-hits="" data-linenumber="
|
851
|
+
<li class="never" data-hits="" data-linenumber="119">
|
594
852
|
|
595
853
|
|
596
|
-
<code class="ruby">
|
854
|
+
<code class="ruby"> # @param [String] token Input String (urlsafe base64)</code>
|
597
855
|
</li>
|
598
856
|
|
599
|
-
<li class="never" data-hits="" data-linenumber="
|
857
|
+
<li class="never" data-hits="" data-linenumber="120">
|
600
858
|
|
601
859
|
|
602
|
-
<code class="ruby">
|
860
|
+
<code class="ruby"> # @param [String] key Encryption key</code>
|
603
861
|
</li>
|
604
862
|
|
605
|
-
<li class="never" data-hits="" data-linenumber="
|
863
|
+
<li class="never" data-hits="" data-linenumber="121">
|
606
864
|
|
607
865
|
|
608
|
-
<code class="ruby">
|
866
|
+
<code class="ruby"> # @param [Boolean] force Decode expired token (suppress ArgumentError)</code>
|
609
867
|
</li>
|
610
868
|
|
611
|
-
<li class="never" data-hits="" data-linenumber="
|
869
|
+
<li class="never" data-hits="" data-linenumber="122">
|
612
870
|
|
613
871
|
|
614
|
-
<code class="ruby">
|
872
|
+
<code class="ruby"> # @param [String] cipher_type OpenSSL cipher</code>
|
615
873
|
</li>
|
616
874
|
|
617
|
-
<li class="never" data-hits="" data-linenumber="
|
875
|
+
<li class="never" data-hits="" data-linenumber="123">
|
618
876
|
|
619
877
|
|
620
|
-
<code class="ruby">
|
878
|
+
<code class="ruby"> # @return [Hash] Token payload</code>
|
621
879
|
</li>
|
622
880
|
|
623
|
-
<li class="covered" data-hits="1" data-linenumber="
|
881
|
+
<li class="covered" data-hits="1" data-linenumber="124">
|
624
882
|
<span class="hits">1</span>
|
625
883
|
|
626
|
-
<code class="ruby">
|
884
|
+
<code class="ruby"> def parse(token, key = ENV['CONTROLTOKEN_SECRET'], force = false, cipher_type = 'aes-256-cbc')</code>
|
627
885
|
</li>
|
628
886
|
|
629
|
-
<li class="covered" data-hits="
|
630
|
-
<span class="hits">
|
887
|
+
<li class="covered" data-hits="3" data-linenumber="125">
|
888
|
+
<span class="hits">3</span>
|
631
889
|
|
632
|
-
<code class="ruby">
|
890
|
+
<code class="ruby"> raise ArgumentError, 'key can not be blank' if key.nil? || key.empty?</code>
|
633
891
|
</li>
|
634
892
|
|
635
|
-
<li class="
|
636
|
-
|
893
|
+
<li class="covered" data-hits="3" data-linenumber="126">
|
894
|
+
<span class="hits">3</span>
|
637
895
|
|
638
|
-
<code class="ruby">
|
896
|
+
<code class="ruby"> body = BB::Crypto.decrypt_urlsafe_base64(token, key, cipher_type)</code>
|
639
897
|
</li>
|
640
898
|
|
641
|
-
<li class="
|
642
|
-
|
899
|
+
<li class="covered" data-hits="3" data-linenumber="127">
|
900
|
+
<span class="hits">3</span>
|
643
901
|
|
644
|
-
<code class="ruby"
|
902
|
+
<code class="ruby"> valid_until, op, *args = body.split("\x00")</code>
|
645
903
|
</li>
|
646
904
|
|
647
|
-
<li class="
|
648
|
-
|
905
|
+
<li class="covered" data-hits="3" data-linenumber="128">
|
906
|
+
<span class="hits">3</span>
|
649
907
|
|
650
|
-
<code class="ruby">
|
908
|
+
<code class="ruby"> valid_until = valid_until.unpack('l<')[0]</code>
|
651
909
|
</li>
|
652
910
|
|
653
|
-
<li class="
|
654
|
-
|
911
|
+
<li class="covered" data-hits="3" data-linenumber="129">
|
912
|
+
<span class="hits">3</span>
|
655
913
|
|
656
|
-
<code class="ruby">
|
914
|
+
<code class="ruby"> expired = Time.now.to_i > valid_until</code>
|
657
915
|
</li>
|
658
916
|
|
659
|
-
<li class="
|
917
|
+
<li class="covered" data-hits="3" data-linenumber="130">
|
918
|
+
<span class="hits">3</span>
|
660
919
|
|
920
|
+
<code class="ruby"> if expired && !force</code>
|
921
|
+
</li>
|
922
|
+
|
923
|
+
<li class="covered" data-hits="1" data-linenumber="131">
|
924
|
+
<span class="hits">1</span>
|
661
925
|
|
662
|
-
<code class="ruby">
|
926
|
+
<code class="ruby"> raise ArgumentError, "Token expired at #{Time.at(valid_until)} (#{ChronicDuration.output(Time.now.to_i - valid_until)} ago)"</code>
|
663
927
|
</li>
|
664
928
|
|
665
|
-
<li class="never" data-hits="" data-linenumber="
|
929
|
+
<li class="never" data-hits="" data-linenumber="132">
|
666
930
|
|
667
931
|
|
668
|
-
<code class="ruby">
|
932
|
+
<code class="ruby"> end</code>
|
669
933
|
</li>
|
670
934
|
|
671
|
-
<li class="never" data-hits="" data-linenumber="
|
935
|
+
<li class="never" data-hits="" data-linenumber="133">
|
672
936
|
|
673
937
|
|
674
|
-
<code class="ruby">
|
938
|
+
<code class="ruby"> { valid_until: valid_until,</code>
|
675
939
|
</li>
|
676
940
|
|
677
|
-
<li class="never" data-hits="" data-linenumber="
|
941
|
+
<li class="never" data-hits="" data-linenumber="134">
|
678
942
|
|
679
943
|
|
680
|
-
<code class="ruby">
|
944
|
+
<code class="ruby"> op: op,</code>
|
681
945
|
</li>
|
682
946
|
|
683
|
-
<li class="never" data-hits="" data-linenumber="
|
947
|
+
<li class="never" data-hits="" data-linenumber="135">
|
684
948
|
|
685
949
|
|
686
|
-
<code class="ruby">
|
950
|
+
<code class="ruby"> args: args,</code>
|
687
951
|
</li>
|
688
952
|
|
689
|
-
<li class="covered" data-hits="
|
690
|
-
<span class="hits">
|
953
|
+
<li class="covered" data-hits="2" data-linenumber="136">
|
954
|
+
<span class="hits">2</span>
|
691
955
|
|
692
|
-
<code class="ruby">
|
956
|
+
<code class="ruby"> expired: expired }</code>
|
693
957
|
</li>
|
694
958
|
|
695
|
-
<li class="
|
696
|
-
<span class="hits">123</span>
|
959
|
+
<li class="never" data-hits="" data-linenumber="137">
|
697
960
|
|
698
|
-
|
961
|
+
|
962
|
+
<code class="ruby"> end</code>
|
699
963
|
</li>
|
700
964
|
|
701
|
-
<li class="never" data-hits="" data-linenumber="
|
965
|
+
<li class="never" data-hits="" data-linenumber="138">
|
702
966
|
|
703
967
|
|
704
968
|
<code class="ruby"> end</code>
|
705
969
|
</li>
|
706
970
|
|
707
|
-
<li class="never" data-hits="" data-linenumber="
|
971
|
+
<li class="never" data-hits="" data-linenumber="139">
|
708
972
|
|
709
973
|
|
710
|
-
<code class="ruby"> end</code>
|
974
|
+
<code class="ruby"> end # /BB::Crypto::Token</code>
|
711
975
|
</li>
|
712
976
|
|
713
|
-
<li class="never" data-hits="" data-linenumber="
|
977
|
+
<li class="never" data-hits="" data-linenumber="140">
|
714
978
|
|
715
979
|
|
716
|
-
<code class="ruby"> end</code>
|
980
|
+
<code class="ruby"> end # /BB::Crypto</code>
|
717
981
|
</li>
|
718
982
|
|
719
|
-
<li class="never" data-hits="" data-linenumber="
|
983
|
+
<li class="never" data-hits="" data-linenumber="141">
|
720
984
|
|
721
985
|
|
722
986
|
<code class="ruby">end</code>
|
@@ -729,11 +993,11 @@
|
|
729
993
|
<div class="source_table" id="192e300fd7769b750c82567439ee016f85516f3d">
|
730
994
|
<div class="header">
|
731
995
|
<h3>lib/blackbox/gem.rb</h3>
|
732
|
-
<h4><span class="green">
|
996
|
+
<h4><span class="green">96.97 %</span> covered</h4>
|
733
997
|
<div>
|
734
998
|
<b>33</b> relevant lines.
|
735
|
-
<span class="green"><b>
|
736
|
-
<span class="red"><b>
|
999
|
+
<span class="green"><b>32</b> lines covered</span> and
|
1000
|
+
<span class="red"><b>1</b> lines missed.</span>
|
737
1001
|
</div>
|
738
1002
|
</div>
|
739
1003
|
|
@@ -938,8 +1202,8 @@
|
|
938
1202
|
<code class="ruby"> spec = ::Gem::Specification.find do |s|</code>
|
939
1203
|
</li>
|
940
1204
|
|
941
|
-
<li class="covered" data-hits="
|
942
|
-
<span class="hits">
|
1205
|
+
<li class="covered" data-hits="80" data-linenumber="34">
|
1206
|
+
<span class="hits">80</span>
|
943
1207
|
|
944
1208
|
<code class="ruby"> File.fnmatch(File.join(s.full_gem_path, '*'), calling_file)</code>
|
945
1209
|
</li>
|
@@ -1106,8 +1370,8 @@
|
|
1106
1370
|
<code class="ruby"> rescue</code>
|
1107
1371
|
</li>
|
1108
1372
|
|
1109
|
-
<li class="
|
1110
|
-
|
1373
|
+
<li class="missed" data-hits="0" data-linenumber="62">
|
1374
|
+
|
1111
1375
|
|
1112
1376
|
<code class="ruby"> last_check_at = Time.at(0)</code>
|
1113
1377
|
</li>
|
@@ -2087,634 +2351,628 @@
|
|
2087
2351
|
<li class="never" data-hits="" data-linenumber="77">
|
2088
2352
|
|
2089
2353
|
|
2090
|
-
<code class="ruby"> delimiter: delimiter</code>
|
2354
|
+
<code class="ruby"> delimiter: delimiter).sub(/(#{escaped_separator})(\d*[1-9])?0+\z/, '\1\2').sub(/#{escaped_separator}\z/, '')</code>
|
2091
2355
|
</li>
|
2092
2356
|
|
2093
|
-
<li class="
|
2094
|
-
|
2095
|
-
|
2096
|
-
<code class="ruby"> ).sub(/(#{escaped_separator})(\d*[1-9])?0+\z/, '\1\2').sub(/#{escaped_separator}\z/, '')</code>
|
2097
|
-
</li>
|
2098
|
-
|
2099
|
-
<li class="covered" data-hits="10" data-linenumber="79">
|
2357
|
+
<li class="covered" data-hits="10" data-linenumber="78">
|
2100
2358
|
<span class="hits">10</span>
|
2101
2359
|
|
2102
2360
|
<code class="ruby"> storage_units_format.gsub(/%n/, formatted_number).gsub(/%u/, unit)</code>
|
2103
2361
|
</li>
|
2104
2362
|
|
2105
|
-
<li class="never" data-hits="" data-linenumber="
|
2363
|
+
<li class="never" data-hits="" data-linenumber="79">
|
2106
2364
|
|
2107
2365
|
|
2108
2366
|
<code class="ruby"> end</code>
|
2109
2367
|
</li>
|
2110
2368
|
|
2111
|
-
<li class="never" data-hits="" data-linenumber="
|
2369
|
+
<li class="never" data-hits="" data-linenumber="80">
|
2112
2370
|
|
2113
2371
|
|
2114
2372
|
<code class="ruby"> rescue</code>
|
2115
2373
|
</li>
|
2116
2374
|
|
2117
|
-
<li class="covered" data-hits="1" data-linenumber="
|
2375
|
+
<li class="covered" data-hits="1" data-linenumber="81">
|
2118
2376
|
<span class="hits">1</span>
|
2119
2377
|
|
2120
2378
|
<code class="ruby"> number</code>
|
2121
2379
|
</li>
|
2122
2380
|
|
2123
|
-
<li class="never" data-hits="" data-linenumber="
|
2381
|
+
<li class="never" data-hits="" data-linenumber="82">
|
2124
2382
|
|
2125
2383
|
|
2126
2384
|
<code class="ruby"> end</code>
|
2127
2385
|
</li>
|
2128
2386
|
|
2129
|
-
<li class="never" data-hits="" data-linenumber="
|
2387
|
+
<li class="never" data-hits="" data-linenumber="83">
|
2130
2388
|
|
2131
2389
|
|
2132
2390
|
<code class="ruby"> end</code>
|
2133
2391
|
</li>
|
2134
2392
|
|
2135
|
-
<li class="never" data-hits="" data-linenumber="
|
2393
|
+
<li class="never" data-hits="" data-linenumber="84">
|
2136
2394
|
|
2137
2395
|
|
2138
2396
|
<code class="ruby"></code>
|
2139
2397
|
</li>
|
2140
2398
|
|
2141
|
-
<li class="never" data-hits="" data-linenumber="
|
2399
|
+
<li class="never" data-hits="" data-linenumber="85">
|
2142
2400
|
|
2143
2401
|
|
2144
2402
|
<code class="ruby"> ##</code>
|
2145
2403
|
</li>
|
2146
2404
|
|
2147
|
-
<li class="never" data-hits="" data-linenumber="
|
2405
|
+
<li class="never" data-hits="" data-linenumber="86">
|
2148
2406
|
|
2149
2407
|
|
2150
2408
|
<code class="ruby"> # Formats a +number+ with the specified level of <tt>:precision</tt> (e.g., 112.32 has a precision of 2).</code>
|
2151
2409
|
</li>
|
2152
2410
|
|
2153
|
-
<li class="never" data-hits="" data-linenumber="
|
2411
|
+
<li class="never" data-hits="" data-linenumber="87">
|
2154
2412
|
|
2155
2413
|
|
2156
2414
|
<code class="ruby"> # This method returns nil if +number+ cannot be converted into a number.</code>
|
2157
2415
|
</li>
|
2158
2416
|
|
2159
|
-
<li class="never" data-hits="" data-linenumber="
|
2417
|
+
<li class="never" data-hits="" data-linenumber="88">
|
2160
2418
|
|
2161
2419
|
|
2162
2420
|
<code class="ruby"> # You can customize the format in the +options+ hash.</code>
|
2163
2421
|
</li>
|
2164
2422
|
|
2165
|
-
<li class="never" data-hits="" data-linenumber="
|
2423
|
+
<li class="never" data-hits="" data-linenumber="89">
|
2166
2424
|
|
2167
2425
|
|
2168
2426
|
<code class="ruby"> #</code>
|
2169
2427
|
</li>
|
2170
2428
|
|
2171
|
-
<li class="never" data-hits="" data-linenumber="
|
2429
|
+
<li class="never" data-hits="" data-linenumber="90">
|
2172
2430
|
|
2173
2431
|
|
2174
2432
|
<code class="ruby"> # @overload with_precision(number, options={})</code>
|
2175
2433
|
</li>
|
2176
2434
|
|
2177
|
-
<li class="never" data-hits="" data-linenumber="
|
2435
|
+
<li class="never" data-hits="" data-linenumber="91">
|
2178
2436
|
|
2179
2437
|
|
2180
2438
|
<code class="ruby"> # @param [Fixnum, Float] number</code>
|
2181
2439
|
</li>
|
2182
2440
|
|
2183
|
-
<li class="never" data-hits="" data-linenumber="
|
2441
|
+
<li class="never" data-hits="" data-linenumber="92">
|
2184
2442
|
|
2185
2443
|
|
2186
2444
|
<code class="ruby"> # Number value to format.</code>
|
2187
2445
|
</li>
|
2188
2446
|
|
2189
|
-
<li class="never" data-hits="" data-linenumber="
|
2447
|
+
<li class="never" data-hits="" data-linenumber="93">
|
2190
2448
|
|
2191
2449
|
|
2192
2450
|
<code class="ruby"> # @param [Hash] options</code>
|
2193
2451
|
</li>
|
2194
2452
|
|
2195
|
-
<li class="never" data-hits="" data-linenumber="
|
2453
|
+
<li class="never" data-hits="" data-linenumber="94">
|
2196
2454
|
|
2197
2455
|
|
2198
2456
|
<code class="ruby"> # Options for formatter.</code>
|
2199
2457
|
</li>
|
2200
2458
|
|
2201
|
-
<li class="never" data-hits="" data-linenumber="
|
2459
|
+
<li class="never" data-hits="" data-linenumber="95">
|
2202
2460
|
|
2203
2461
|
|
2204
2462
|
<code class="ruby"> # @option options [Fixnum] :precision (3)</code>
|
2205
2463
|
</li>
|
2206
2464
|
|
2207
|
-
<li class="never" data-hits="" data-linenumber="
|
2465
|
+
<li class="never" data-hits="" data-linenumber="96">
|
2208
2466
|
|
2209
2467
|
|
2210
2468
|
<code class="ruby"> # Sets the level of precision.</code>
|
2211
2469
|
</li>
|
2212
2470
|
|
2213
|
-
<li class="never" data-hits="" data-linenumber="
|
2471
|
+
<li class="never" data-hits="" data-linenumber="97">
|
2214
2472
|
|
2215
2473
|
|
2216
2474
|
<code class="ruby"> # @option options [String] :separator (".")</code>
|
2217
2475
|
</li>
|
2218
2476
|
|
2219
|
-
<li class="never" data-hits="" data-linenumber="
|
2477
|
+
<li class="never" data-hits="" data-linenumber="98">
|
2220
2478
|
|
2221
2479
|
|
2222
2480
|
<code class="ruby"> # Sets the separator between the units.</code>
|
2223
2481
|
</li>
|
2224
2482
|
|
2225
|
-
<li class="never" data-hits="" data-linenumber="
|
2483
|
+
<li class="never" data-hits="" data-linenumber="99">
|
2226
2484
|
|
2227
2485
|
|
2228
2486
|
<code class="ruby"> # @option options [String] :delimiter ("")</code>
|
2229
2487
|
</li>
|
2230
2488
|
|
2231
|
-
<li class="never" data-hits="" data-linenumber="
|
2489
|
+
<li class="never" data-hits="" data-linenumber="100">
|
2232
2490
|
|
2233
2491
|
|
2234
2492
|
<code class="ruby"> # Sets the thousands delimiter.</code>
|
2235
2493
|
</li>
|
2236
2494
|
|
2237
|
-
<li class="never" data-hits="" data-linenumber="
|
2495
|
+
<li class="never" data-hits="" data-linenumber="101">
|
2238
2496
|
|
2239
2497
|
|
2240
2498
|
<code class="ruby"> #</code>
|
2241
2499
|
</li>
|
2242
2500
|
|
2243
|
-
<li class="never" data-hits="" data-linenumber="
|
2501
|
+
<li class="never" data-hits="" data-linenumber="102">
|
2244
2502
|
|
2245
2503
|
|
2246
2504
|
<code class="ruby"> # @return [String] The formatted representation of the number.</code>
|
2247
2505
|
</li>
|
2248
2506
|
|
2249
|
-
<li class="never" data-hits="" data-linenumber="
|
2507
|
+
<li class="never" data-hits="" data-linenumber="103">
|
2250
2508
|
|
2251
2509
|
|
2252
2510
|
<code class="ruby"> #</code>
|
2253
2511
|
</li>
|
2254
2512
|
|
2255
|
-
<li class="never" data-hits="" data-linenumber="
|
2513
|
+
<li class="never" data-hits="" data-linenumber="104">
|
2256
2514
|
|
2257
2515
|
|
2258
2516
|
<code class="ruby"> # @example</code>
|
2259
2517
|
</li>
|
2260
2518
|
|
2261
|
-
<li class="never" data-hits="" data-linenumber="
|
2519
|
+
<li class="never" data-hits="" data-linenumber="105">
|
2262
2520
|
|
2263
2521
|
|
2264
2522
|
<code class="ruby"> # with_precision(111.2345) # => 111.235</code>
|
2265
2523
|
</li>
|
2266
2524
|
|
2267
|
-
<li class="never" data-hits="" data-linenumber="
|
2525
|
+
<li class="never" data-hits="" data-linenumber="106">
|
2268
2526
|
|
2269
2527
|
|
2270
2528
|
<code class="ruby"> # with_precision(111.2345, :precision => 2) # => 111.23</code>
|
2271
2529
|
</li>
|
2272
2530
|
|
2273
|
-
<li class="never" data-hits="" data-linenumber="
|
2531
|
+
<li class="never" data-hits="" data-linenumber="107">
|
2274
2532
|
|
2275
2533
|
|
2276
2534
|
<code class="ruby"> # with_precision(13, :precision => 5) # => 13.00000</code>
|
2277
2535
|
</li>
|
2278
2536
|
|
2279
|
-
<li class="never" data-hits="" data-linenumber="
|
2537
|
+
<li class="never" data-hits="" data-linenumber="108">
|
2280
2538
|
|
2281
2539
|
|
2282
2540
|
<code class="ruby"> # with_precision(389.32314, :precision => 0) # => 389</code>
|
2283
2541
|
</li>
|
2284
2542
|
|
2285
|
-
<li class="never" data-hits="" data-linenumber="
|
2543
|
+
<li class="never" data-hits="" data-linenumber="109">
|
2286
2544
|
|
2287
2545
|
|
2288
2546
|
<code class="ruby"> # with_precision(1111.2345, :precision => 2, :separator => ',', :delimiter => '.')</code>
|
2289
2547
|
</li>
|
2290
2548
|
|
2291
|
-
<li class="never" data-hits="" data-linenumber="
|
2549
|
+
<li class="never" data-hits="" data-linenumber="110">
|
2292
2550
|
|
2293
2551
|
|
2294
2552
|
<code class="ruby"> # # => 1.111,23</code>
|
2295
2553
|
</li>
|
2296
2554
|
|
2297
|
-
<li class="never" data-hits="" data-linenumber="
|
2555
|
+
<li class="never" data-hits="" data-linenumber="111">
|
2298
2556
|
|
2299
2557
|
|
2300
2558
|
<code class="ruby"> #</code>
|
2301
2559
|
</li>
|
2302
2560
|
|
2303
|
-
<li class="covered" data-hits="1" data-linenumber="
|
2561
|
+
<li class="covered" data-hits="1" data-linenumber="112">
|
2304
2562
|
<span class="hits">1</span>
|
2305
2563
|
|
2306
2564
|
<code class="ruby"> def with_precision(number, args)</code>
|
2307
2565
|
</li>
|
2308
2566
|
|
2309
|
-
<li class="covered" data-hits="14" data-linenumber="
|
2567
|
+
<li class="covered" data-hits="14" data-linenumber="113">
|
2310
2568
|
<span class="hits">14</span>
|
2311
2569
|
|
2312
2570
|
<code class="ruby"> begin</code>
|
2313
2571
|
</li>
|
2314
2572
|
|
2315
|
-
<li class="covered" data-hits="14" data-linenumber="
|
2573
|
+
<li class="covered" data-hits="14" data-linenumber="114">
|
2316
2574
|
<span class="hits">14</span>
|
2317
2575
|
|
2318
2576
|
<code class="ruby"> Float(number)</code>
|
2319
2577
|
</li>
|
2320
2578
|
|
2321
|
-
<li class="never" data-hits="" data-linenumber="
|
2579
|
+
<li class="never" data-hits="" data-linenumber="115">
|
2322
2580
|
|
2323
2581
|
|
2324
2582
|
<code class="ruby"> rescue</code>
|
2325
2583
|
</li>
|
2326
2584
|
|
2327
|
-
<li class="covered" data-hits="1" data-linenumber="
|
2585
|
+
<li class="covered" data-hits="1" data-linenumber="116">
|
2328
2586
|
<span class="hits">1</span>
|
2329
2587
|
|
2330
2588
|
<code class="ruby"> return nil</code>
|
2331
2589
|
</li>
|
2332
2590
|
|
2333
|
-
<li class="never" data-hits="" data-linenumber="
|
2591
|
+
<li class="never" data-hits="" data-linenumber="117">
|
2334
2592
|
|
2335
2593
|
|
2336
2594
|
<code class="ruby"> end</code>
|
2337
2595
|
</li>
|
2338
2596
|
|
2339
|
-
<li class="never" data-hits="" data-linenumber="
|
2597
|
+
<li class="never" data-hits="" data-linenumber="118">
|
2340
2598
|
|
2341
2599
|
|
2342
2600
|
<code class="ruby"></code>
|
2343
2601
|
</li>
|
2344
2602
|
|
2345
|
-
<li class="covered" data-hits="13" data-linenumber="
|
2603
|
+
<li class="covered" data-hits="13" data-linenumber="119">
|
2346
2604
|
<span class="hits">13</span>
|
2347
2605
|
|
2348
2606
|
<code class="ruby"> options = BB::Hash.symbolize_keys(args)</code>
|
2349
2607
|
</li>
|
2350
2608
|
|
2351
|
-
<li class="never" data-hits="" data-linenumber="
|
2609
|
+
<li class="never" data-hits="" data-linenumber="120">
|
2352
2610
|
|
2353
2611
|
|
2354
2612
|
<code class="ruby"></code>
|
2355
2613
|
</li>
|
2356
2614
|
|
2357
|
-
<li class="covered" data-hits="13" data-linenumber="
|
2615
|
+
<li class="covered" data-hits="13" data-linenumber="121">
|
2358
2616
|
<span class="hits">13</span>
|
2359
2617
|
|
2360
2618
|
<code class="ruby"> precision ||= (options[:precision] || 3)</code>
|
2361
2619
|
</li>
|
2362
2620
|
|
2363
|
-
<li class="covered" data-hits="13" data-linenumber="
|
2621
|
+
<li class="covered" data-hits="13" data-linenumber="122">
|
2364
2622
|
<span class="hits">13</span>
|
2365
2623
|
|
2366
2624
|
<code class="ruby"> separator ||= (options[:separator] || '.')</code>
|
2367
2625
|
</li>
|
2368
2626
|
|
2369
|
-
<li class="covered" data-hits="13" data-linenumber="
|
2627
|
+
<li class="covered" data-hits="13" data-linenumber="123">
|
2370
2628
|
<span class="hits">13</span>
|
2371
2629
|
|
2372
2630
|
<code class="ruby"> delimiter ||= (options[:delimiter] || '')</code>
|
2373
2631
|
</li>
|
2374
2632
|
|
2375
|
-
<li class="never" data-hits="" data-linenumber="
|
2633
|
+
<li class="never" data-hits="" data-linenumber="124">
|
2376
2634
|
|
2377
2635
|
|
2378
2636
|
<code class="ruby"></code>
|
2379
2637
|
</li>
|
2380
2638
|
|
2381
|
-
<li class="covered" data-hits="13" data-linenumber="
|
2639
|
+
<li class="covered" data-hits="13" data-linenumber="125">
|
2382
2640
|
<span class="hits">13</span>
|
2383
2641
|
|
2384
2642
|
<code class="ruby"> begin</code>
|
2385
2643
|
</li>
|
2386
2644
|
|
2387
|
-
<li class="covered" data-hits="13" data-linenumber="
|
2645
|
+
<li class="covered" data-hits="13" data-linenumber="126">
|
2388
2646
|
<span class="hits">13</span>
|
2389
2647
|
|
2390
2648
|
<code class="ruby"> rounded_number = (Float(number) * (10**precision)).round.to_f / 10**precision</code>
|
2391
2649
|
</li>
|
2392
2650
|
|
2393
|
-
<li class="covered" data-hits="12" data-linenumber="
|
2651
|
+
<li class="covered" data-hits="12" data-linenumber="127">
|
2394
2652
|
<span class="hits">12</span>
|
2395
2653
|
|
2396
2654
|
<code class="ruby"> with_delimiter("%01.#{precision}f" % rounded_number,</code>
|
2397
2655
|
</li>
|
2398
2656
|
|
2399
|
-
<li class="never" data-hits="" data-linenumber="
|
2657
|
+
<li class="never" data-hits="" data-linenumber="128">
|
2400
2658
|
|
2401
2659
|
|
2402
2660
|
<code class="ruby"> separator: separator,</code>
|
2403
2661
|
</li>
|
2404
2662
|
|
2405
|
-
<li class="never" data-hits="" data-linenumber="
|
2663
|
+
<li class="never" data-hits="" data-linenumber="129">
|
2406
2664
|
|
2407
2665
|
|
2408
2666
|
<code class="ruby"> delimiter: delimiter)</code>
|
2409
2667
|
</li>
|
2410
2668
|
|
2411
|
-
<li class="never" data-hits="" data-linenumber="
|
2669
|
+
<li class="never" data-hits="" data-linenumber="130">
|
2412
2670
|
|
2413
2671
|
|
2414
2672
|
<code class="ruby"> rescue</code>
|
2415
2673
|
</li>
|
2416
2674
|
|
2417
|
-
<li class="covered" data-hits="1" data-linenumber="
|
2675
|
+
<li class="covered" data-hits="1" data-linenumber="131">
|
2418
2676
|
<span class="hits">1</span>
|
2419
2677
|
|
2420
2678
|
<code class="ruby"> number</code>
|
2421
2679
|
</li>
|
2422
2680
|
|
2423
|
-
<li class="never" data-hits="" data-linenumber="
|
2681
|
+
<li class="never" data-hits="" data-linenumber="132">
|
2424
2682
|
|
2425
2683
|
|
2426
2684
|
<code class="ruby"> end</code>
|
2427
2685
|
</li>
|
2428
2686
|
|
2429
|
-
<li class="never" data-hits="" data-linenumber="
|
2687
|
+
<li class="never" data-hits="" data-linenumber="133">
|
2430
2688
|
|
2431
2689
|
|
2432
2690
|
<code class="ruby"> end</code>
|
2433
2691
|
</li>
|
2434
2692
|
|
2435
|
-
<li class="never" data-hits="" data-linenumber="
|
2693
|
+
<li class="never" data-hits="" data-linenumber="134">
|
2436
2694
|
|
2437
2695
|
|
2438
2696
|
<code class="ruby"></code>
|
2439
2697
|
</li>
|
2440
2698
|
|
2441
|
-
<li class="never" data-hits="" data-linenumber="
|
2699
|
+
<li class="never" data-hits="" data-linenumber="135">
|
2442
2700
|
|
2443
2701
|
|
2444
2702
|
<code class="ruby"> ##</code>
|
2445
2703
|
</li>
|
2446
2704
|
|
2447
|
-
<li class="never" data-hits="" data-linenumber="
|
2705
|
+
<li class="never" data-hits="" data-linenumber="136">
|
2448
2706
|
|
2449
2707
|
|
2450
2708
|
<code class="ruby"> # Formats a +number+ with grouped thousands using +delimiter+ (e.g., 12,324).</code>
|
2451
2709
|
</li>
|
2452
2710
|
|
2453
|
-
<li class="never" data-hits="" data-linenumber="
|
2711
|
+
<li class="never" data-hits="" data-linenumber="137">
|
2454
2712
|
|
2455
2713
|
|
2456
2714
|
<code class="ruby"> # This method returns nil if +number+ cannot be converted into a number.</code>
|
2457
2715
|
</li>
|
2458
2716
|
|
2459
|
-
<li class="never" data-hits="" data-linenumber="
|
2717
|
+
<li class="never" data-hits="" data-linenumber="138">
|
2460
2718
|
|
2461
2719
|
|
2462
2720
|
<code class="ruby"> # You can customize the format in the +options+ hash.</code>
|
2463
2721
|
</li>
|
2464
2722
|
|
2465
|
-
<li class="never" data-hits="" data-linenumber="
|
2723
|
+
<li class="never" data-hits="" data-linenumber="139">
|
2466
2724
|
|
2467
2725
|
|
2468
2726
|
<code class="ruby"> #</code>
|
2469
2727
|
</li>
|
2470
2728
|
|
2471
|
-
<li class="never" data-hits="" data-linenumber="
|
2729
|
+
<li class="never" data-hits="" data-linenumber="140">
|
2472
2730
|
|
2473
2731
|
|
2474
2732
|
<code class="ruby"> # @overload with_delimiter(number, options={})</code>
|
2475
2733
|
</li>
|
2476
2734
|
|
2477
|
-
<li class="never" data-hits="" data-linenumber="
|
2735
|
+
<li class="never" data-hits="" data-linenumber="141">
|
2478
2736
|
|
2479
2737
|
|
2480
2738
|
<code class="ruby"> # @param [Fixnum, Float] number</code>
|
2481
2739
|
</li>
|
2482
2740
|
|
2483
|
-
<li class="never" data-hits="" data-linenumber="
|
2741
|
+
<li class="never" data-hits="" data-linenumber="142">
|
2484
2742
|
|
2485
2743
|
|
2486
2744
|
<code class="ruby"> # Number value to format.</code>
|
2487
2745
|
</li>
|
2488
2746
|
|
2489
|
-
<li class="never" data-hits="" data-linenumber="
|
2747
|
+
<li class="never" data-hits="" data-linenumber="143">
|
2490
2748
|
|
2491
2749
|
|
2492
2750
|
<code class="ruby"> # @param [Hash] options</code>
|
2493
2751
|
</li>
|
2494
2752
|
|
2495
|
-
<li class="never" data-hits="" data-linenumber="
|
2753
|
+
<li class="never" data-hits="" data-linenumber="144">
|
2496
2754
|
|
2497
2755
|
|
2498
2756
|
<code class="ruby"> # Options for formatter.</code>
|
2499
2757
|
</li>
|
2500
2758
|
|
2501
|
-
<li class="never" data-hits="" data-linenumber="
|
2759
|
+
<li class="never" data-hits="" data-linenumber="145">
|
2502
2760
|
|
2503
2761
|
|
2504
2762
|
<code class="ruby"> # @option options [String] :delimiter (", ")</code>
|
2505
2763
|
</li>
|
2506
2764
|
|
2507
|
-
<li class="never" data-hits="" data-linenumber="
|
2765
|
+
<li class="never" data-hits="" data-linenumber="146">
|
2508
2766
|
|
2509
2767
|
|
2510
2768
|
<code class="ruby"> # Sets the thousands delimiter.</code>
|
2511
2769
|
</li>
|
2512
2770
|
|
2513
|
-
<li class="never" data-hits="" data-linenumber="
|
2771
|
+
<li class="never" data-hits="" data-linenumber="147">
|
2514
2772
|
|
2515
2773
|
|
2516
2774
|
<code class="ruby"> # @option options [String] :separator (".")</code>
|
2517
2775
|
</li>
|
2518
2776
|
|
2519
|
-
<li class="never" data-hits="" data-linenumber="
|
2777
|
+
<li class="never" data-hits="" data-linenumber="148">
|
2520
2778
|
|
2521
2779
|
|
2522
2780
|
<code class="ruby"> # Sets the separator between the units.</code>
|
2523
2781
|
</li>
|
2524
2782
|
|
2525
|
-
<li class="never" data-hits="" data-linenumber="
|
2783
|
+
<li class="never" data-hits="" data-linenumber="149">
|
2526
2784
|
|
2527
2785
|
|
2528
2786
|
<code class="ruby"> #</code>
|
2529
2787
|
</li>
|
2530
2788
|
|
2531
|
-
<li class="never" data-hits="" data-linenumber="
|
2789
|
+
<li class="never" data-hits="" data-linenumber="150">
|
2532
2790
|
|
2533
2791
|
|
2534
2792
|
<code class="ruby"> # @return [String] The formatted representation of the number.</code>
|
2535
2793
|
</li>
|
2536
2794
|
|
2537
|
-
<li class="never" data-hits="" data-linenumber="
|
2795
|
+
<li class="never" data-hits="" data-linenumber="151">
|
2538
2796
|
|
2539
2797
|
|
2540
2798
|
<code class="ruby"> #</code>
|
2541
2799
|
</li>
|
2542
2800
|
|
2543
|
-
<li class="never" data-hits="" data-linenumber="
|
2801
|
+
<li class="never" data-hits="" data-linenumber="152">
|
2544
2802
|
|
2545
2803
|
|
2546
2804
|
<code class="ruby"> # @example</code>
|
2547
2805
|
</li>
|
2548
2806
|
|
2549
|
-
<li class="never" data-hits="" data-linenumber="
|
2807
|
+
<li class="never" data-hits="" data-linenumber="153">
|
2550
2808
|
|
2551
2809
|
|
2552
2810
|
<code class="ruby"> # with_delimiter(12345678) # => 12,345,678</code>
|
2553
2811
|
</li>
|
2554
2812
|
|
2555
|
-
<li class="never" data-hits="" data-linenumber="
|
2813
|
+
<li class="never" data-hits="" data-linenumber="154">
|
2556
2814
|
|
2557
2815
|
|
2558
2816
|
<code class="ruby"> # with_delimiter(12345678.05) # => 12,345,678.05</code>
|
2559
2817
|
</li>
|
2560
2818
|
|
2561
|
-
<li class="never" data-hits="" data-linenumber="
|
2819
|
+
<li class="never" data-hits="" data-linenumber="155">
|
2562
2820
|
|
2563
2821
|
|
2564
2822
|
<code class="ruby"> # with_delimiter(12345678, :delimiter => ".") # => 12.345.678</code>
|
2565
2823
|
</li>
|
2566
2824
|
|
2567
|
-
<li class="never" data-hits="" data-linenumber="
|
2825
|
+
<li class="never" data-hits="" data-linenumber="156">
|
2568
2826
|
|
2569
2827
|
|
2570
2828
|
<code class="ruby"> # with_delimiter(12345678, :separator => ",") # => 12,345,678</code>
|
2571
2829
|
</li>
|
2572
2830
|
|
2573
|
-
<li class="never" data-hits="" data-linenumber="
|
2831
|
+
<li class="never" data-hits="" data-linenumber="157">
|
2574
2832
|
|
2575
2833
|
|
2576
2834
|
<code class="ruby"> # with_delimiter(98765432.98, :delimiter => " ", :separator => ",")</code>
|
2577
2835
|
</li>
|
2578
2836
|
|
2579
|
-
<li class="never" data-hits="" data-linenumber="
|
2837
|
+
<li class="never" data-hits="" data-linenumber="158">
|
2580
2838
|
|
2581
2839
|
|
2582
2840
|
<code class="ruby"> # # => 98 765 432,98</code>
|
2583
2841
|
</li>
|
2584
2842
|
|
2585
|
-
<li class="never" data-hits="" data-linenumber="
|
2843
|
+
<li class="never" data-hits="" data-linenumber="159">
|
2586
2844
|
|
2587
2845
|
|
2588
2846
|
<code class="ruby"> #</code>
|
2589
2847
|
</li>
|
2590
2848
|
|
2591
|
-
<li class="covered" data-hits="1" data-linenumber="
|
2849
|
+
<li class="covered" data-hits="1" data-linenumber="160">
|
2592
2850
|
<span class="hits">1</span>
|
2593
2851
|
|
2594
2852
|
<code class="ruby"> def with_delimiter(number, args = {})</code>
|
2595
2853
|
</li>
|
2596
2854
|
|
2597
|
-
<li class="covered" data-hits="17" data-linenumber="
|
2855
|
+
<li class="covered" data-hits="17" data-linenumber="161">
|
2598
2856
|
<span class="hits">17</span>
|
2599
2857
|
|
2600
2858
|
<code class="ruby"> begin</code>
|
2601
2859
|
</li>
|
2602
2860
|
|
2603
|
-
<li class="covered" data-hits="17" data-linenumber="
|
2861
|
+
<li class="covered" data-hits="17" data-linenumber="162">
|
2604
2862
|
<span class="hits">17</span>
|
2605
2863
|
|
2606
2864
|
<code class="ruby"> Float(number)</code>
|
2607
2865
|
</li>
|
2608
2866
|
|
2609
|
-
<li class="never" data-hits="" data-linenumber="
|
2867
|
+
<li class="never" data-hits="" data-linenumber="163">
|
2610
2868
|
|
2611
2869
|
|
2612
2870
|
<code class="ruby"> rescue</code>
|
2613
2871
|
</li>
|
2614
2872
|
|
2615
|
-
<li class="covered" data-hits="1" data-linenumber="
|
2873
|
+
<li class="covered" data-hits="1" data-linenumber="164">
|
2616
2874
|
<span class="hits">1</span>
|
2617
2875
|
|
2618
2876
|
<code class="ruby"> return nil</code>
|
2619
2877
|
</li>
|
2620
2878
|
|
2621
|
-
<li class="never" data-hits="" data-linenumber="
|
2879
|
+
<li class="never" data-hits="" data-linenumber="165">
|
2622
2880
|
|
2623
2881
|
|
2624
2882
|
<code class="ruby"> end</code>
|
2625
2883
|
</li>
|
2626
2884
|
|
2627
|
-
<li class="covered" data-hits="16" data-linenumber="
|
2885
|
+
<li class="covered" data-hits="16" data-linenumber="166">
|
2628
2886
|
<span class="hits">16</span>
|
2629
2887
|
|
2630
2888
|
<code class="ruby"> options = BB::Hash.symbolize_keys(args)</code>
|
2631
2889
|
</li>
|
2632
2890
|
|
2633
|
-
<li class="never" data-hits="" data-linenumber="
|
2891
|
+
<li class="never" data-hits="" data-linenumber="167">
|
2634
2892
|
|
2635
2893
|
|
2636
2894
|
<code class="ruby"></code>
|
2637
2895
|
</li>
|
2638
2896
|
|
2639
|
-
<li class="covered" data-hits="16" data-linenumber="
|
2897
|
+
<li class="covered" data-hits="16" data-linenumber="168">
|
2640
2898
|
<span class="hits">16</span>
|
2641
2899
|
|
2642
2900
|
<code class="ruby"> delimiter ||= (options[:delimiter] || ',')</code>
|
2643
2901
|
</li>
|
2644
2902
|
|
2645
|
-
<li class="covered" data-hits="16" data-linenumber="
|
2903
|
+
<li class="covered" data-hits="16" data-linenumber="169">
|
2646
2904
|
<span class="hits">16</span>
|
2647
2905
|
|
2648
2906
|
<code class="ruby"> separator ||= (options[:separator] || '.')</code>
|
2649
2907
|
</li>
|
2650
2908
|
|
2651
|
-
<li class="never" data-hits="" data-linenumber="
|
2909
|
+
<li class="never" data-hits="" data-linenumber="170">
|
2652
2910
|
|
2653
2911
|
|
2654
2912
|
<code class="ruby"></code>
|
2655
2913
|
</li>
|
2656
2914
|
|
2657
|
-
<li class="covered" data-hits="16" data-linenumber="
|
2915
|
+
<li class="covered" data-hits="16" data-linenumber="171">
|
2658
2916
|
<span class="hits">16</span>
|
2659
2917
|
|
2660
2918
|
<code class="ruby"> begin</code>
|
2661
2919
|
</li>
|
2662
2920
|
|
2663
|
-
<li class="covered" data-hits="16" data-linenumber="
|
2921
|
+
<li class="covered" data-hits="16" data-linenumber="172">
|
2664
2922
|
<span class="hits">16</span>
|
2665
2923
|
|
2666
2924
|
<code class="ruby"> parts = number.to_s.split('.')</code>
|
2667
2925
|
</li>
|
2668
2926
|
|
2669
|
-
<li class="covered" data-hits="16" data-linenumber="
|
2927
|
+
<li class="covered" data-hits="16" data-linenumber="173">
|
2670
2928
|
<span class="hits">16</span>
|
2671
2929
|
|
2672
2930
|
<code class="ruby"> parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")</code>
|
2673
2931
|
</li>
|
2674
2932
|
|
2675
|
-
<li class="covered" data-hits="16" data-linenumber="
|
2933
|
+
<li class="covered" data-hits="16" data-linenumber="174">
|
2676
2934
|
<span class="hits">16</span>
|
2677
2935
|
|
2678
2936
|
<code class="ruby"> parts.join(separator)</code>
|
2679
2937
|
</li>
|
2680
2938
|
|
2681
|
-
<li class="never" data-hits="" data-linenumber="
|
2939
|
+
<li class="never" data-hits="" data-linenumber="175">
|
2682
2940
|
|
2683
2941
|
|
2684
2942
|
<code class="ruby"> rescue</code>
|
2685
2943
|
</li>
|
2686
2944
|
|
2687
|
-
<li class="covered" data-hits="1" data-linenumber="
|
2945
|
+
<li class="covered" data-hits="1" data-linenumber="176">
|
2688
2946
|
<span class="hits">1</span>
|
2689
2947
|
|
2690
2948
|
<code class="ruby"> number</code>
|
2691
2949
|
</li>
|
2692
2950
|
|
2693
|
-
<li class="never" data-hits="" data-linenumber="
|
2951
|
+
<li class="never" data-hits="" data-linenumber="177">
|
2694
2952
|
|
2695
2953
|
|
2696
2954
|
<code class="ruby"> end</code>
|
2697
2955
|
</li>
|
2698
2956
|
|
2699
|
-
<li class="never" data-hits="" data-linenumber="
|
2957
|
+
<li class="never" data-hits="" data-linenumber="178">
|
2700
2958
|
|
2701
2959
|
|
2702
2960
|
<code class="ruby"> end</code>
|
2703
2961
|
</li>
|
2704
2962
|
|
2705
|
-
<li class="never" data-hits="" data-linenumber="
|
2963
|
+
<li class="never" data-hits="" data-linenumber="179">
|
2706
2964
|
|
2707
2965
|
|
2708
2966
|
<code class="ruby"> end</code>
|
2709
2967
|
</li>
|
2710
2968
|
|
2711
|
-
<li class="never" data-hits="" data-linenumber="
|
2969
|
+
<li class="never" data-hits="" data-linenumber="180">
|
2712
2970
|
|
2713
2971
|
|
2714
2972
|
<code class="ruby"> end</code>
|
2715
2973
|
</li>
|
2716
2974
|
|
2717
|
-
<li class="never" data-hits="" data-linenumber="
|
2975
|
+
<li class="never" data-hits="" data-linenumber="181">
|
2718
2976
|
|
2719
2977
|
|
2720
2978
|
<code class="ruby">end</code>
|