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