blackbox 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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>
|