blackbox 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/doc/BB.html CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  <dt class="r1 last">Defined in:</dt>
82
82
  <dd class="r1 last">lib/blackbox/hash.rb<span class="defines">,<br />
83
- lib/blackbox/string.rb,<br /> lib/blackbox/crypto.rb,<br /> lib/blackbox/version.rb</span>
83
+ lib/blackbox/string.rb,<br /> lib/blackbox/number.rb,<br /> lib/blackbox/crypto.rb,<br /> lib/blackbox/version.rb</span>
84
84
  </dd>
85
85
 
86
86
  </dl>
@@ -90,7 +90,7 @@
90
90
  <p class="children">
91
91
 
92
92
 
93
- <strong class="modules">Modules:</strong> <span class='object_link'><a href="BB/Crypto.html" title="BB::Crypto (module)">Crypto</a></span>, <span class='object_link'><a href="BB/Hash.html" title="BB::Hash (module)">Hash</a></span>, <span class='object_link'><a href="BB/String.html" title="BB::String (module)">String</a></span>
93
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="BB/Crypto.html" title="BB::Crypto (module)">Crypto</a></span>, <span class='object_link'><a href="BB/Hash.html" title="BB::Hash (module)">Hash</a></span>, <span class='object_link'><a href="BB/Number.html" title="BB::Number (module)">Number</a></span>, <span class='object_link'><a href="BB/String.html" title="BB::String (module)">String</a></span>
94
94
 
95
95
 
96
96
 
@@ -104,7 +104,7 @@
104
104
  <dt id="VERSION-constant" class="">VERSION =
105
105
 
106
106
  </dt>
107
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>1.0.0</span><span class='tstring_end'>&quot;</span></span></pre></dd>
107
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>1.1.0</span><span class='tstring_end'>&quot;</span></span></pre></dd>
108
108
 
109
109
  </dl>
110
110
 
@@ -120,9 +120,9 @@
120
120
  </div>
121
121
 
122
122
  <div id="footer">
123
- Generated on Sat Mar 30 02:17:55 2013 by
123
+ Generated on Sun Nov 22 18:25:23 2015 by
124
124
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
125
- 0.8.5.2 (ruby-2.0.0).
125
+ 0.8.5.2 (ruby-2.2.2).
126
126
  </div>
127
127
 
128
128
  </body>
data/doc/BB/Crypto.html CHANGED
@@ -397,19 +397,19 @@
397
397
  <td>
398
398
  <pre class="code"><span class="info file"># File 'lib/blackbox/crypto.rb', line 36</span>
399
399
 
400
- <span class='kw'>def</span> <span class='id identifier rubyid_decrypt'>decrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
401
- <span class='id identifier rubyid_aes'>aes</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='rparen'>)</span>
402
- <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_decrypt'>decrypt</span>
403
- <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
400
+ <span class='kw'>def</span> <span class='id identifier rubyid_decrypt'>decrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
401
+ <span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='rparen'>)</span>
402
+ <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_decrypt'>decrypt</span>
403
+ <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
404
404
  <span class='kw'>if</span> <span class='id identifier rubyid_iv'>iv</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
405
405
  <span class='id identifier rubyid_iv_len'>iv_len</span> <span class='op'>=</span> <span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='period'>.</span><span class='id identifier rubyid_slice!'>slice!</span><span class='lparen'>(</span><span class='int'>0</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_unpack'>unpack</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>C</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
406
406
  <span class='kw'>unless</span> <span class='int'>0</span> <span class='op'>==</span> <span class='id identifier rubyid_iv_len'>iv_len</span>
407
- <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='period'>.</span><span class='id identifier rubyid_slice!'>slice!</span><span class='lparen'>(</span><span class='int'>0</span><span class='op'>..</span><span class='id identifier rubyid_iv_len'>iv_len</span><span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span>
407
+ <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='period'>.</span><span class='id identifier rubyid_slice!'>slice!</span><span class='lparen'>(</span><span class='int'>0</span><span class='op'>..</span><span class='id identifier rubyid_iv_len'>iv_len</span><span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span>
408
408
  <span class='kw'>end</span>
409
409
  <span class='kw'>else</span>
410
- <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='id identifier rubyid_iv'>iv</span>
410
+ <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='id identifier rubyid_iv'>iv</span>
411
411
  <span class='kw'>end</span>
412
- <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_final'>final</span>
412
+ <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_final'>final</span>
413
413
  <span class='kw'>end</span></pre>
414
414
  </td>
415
415
  </tr>
@@ -539,7 +539,7 @@
539
539
  <td>
540
540
  <pre class="code"><span class="info file"># File 'lib/blackbox/crypto.rb', line 70</span>
541
541
 
542
- <span class='kw'>def</span> <span class='id identifier rubyid_decrypt_base64'>decrypt_base64</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
542
+ <span class='kw'>def</span> <span class='id identifier rubyid_decrypt_base64'>decrypt_base64</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
543
543
  <span class='id identifier rubyid_decrypt'>decrypt</span><span class='lparen'>(</span><span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_decode64'>decode64</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='rparen'>)</span>
544
544
  <span class='kw'>end</span></pre>
545
545
  </td>
@@ -670,7 +670,7 @@
670
670
  <td>
671
671
  <pre class="code"><span class="info file"># File 'lib/blackbox/crypto.rb', line 93</span>
672
672
 
673
- <span class='kw'>def</span> <span class='id identifier rubyid_decrypt_urlsafe_base64'>decrypt_urlsafe_base64</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
673
+ <span class='kw'>def</span> <span class='id identifier rubyid_decrypt_urlsafe_base64'>decrypt_urlsafe_base64</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
674
674
  <span class='id identifier rubyid_decrypt'>decrypt</span><span class='lparen'>(</span><span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_urlsafe_decode64'>urlsafe_decode64</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='rparen'>)</span>
675
675
  <span class='kw'>end</span></pre>
676
676
  </td>
@@ -824,16 +824,16 @@
824
824
  <td>
825
825
  <pre class="code"><span class="info file"># File 'lib/blackbox/crypto.rb', line 16</span>
826
826
 
827
- <span class='kw'>def</span> <span class='id identifier rubyid_encrypt'>encrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
828
- <span class='id identifier rubyid_aes'>aes</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='rparen'>)</span>
829
- <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_encrypt'>encrypt</span>
830
- <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
827
+ <span class='kw'>def</span> <span class='id identifier rubyid_encrypt'>encrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
828
+ <span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='rparen'>)</span>
829
+ <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_encrypt'>encrypt</span>
830
+ <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
831
831
  <span class='kw'>if</span> <span class='id identifier rubyid_iv'>iv</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
832
- <span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_random_iv'>random_iv</span>
833
- <span class='lbracket'>[</span><span class='id identifier rubyid_iv'>iv</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_pack'>pack</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>C</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_iv'>iv</span> <span class='op'>+</span> <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_final'>final</span>
832
+ <span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_random_iv'>random_iv</span>
833
+ <span class='lbracket'>[</span><span class='id identifier rubyid_iv'>iv</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_pack'>pack</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>C</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_iv'>iv</span> <span class='op'>+</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_final'>final</span>
834
834
  <span class='kw'>else</span>
835
- <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='id identifier rubyid_iv'>iv</span>
836
- <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_aes'>aes</span><span class='period'>.</span><span class='id identifier rubyid_final'>final</span>
835
+ <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='id identifier rubyid_iv'>iv</span>
836
+ <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_final'>final</span>
837
837
  <span class='kw'>end</span>
838
838
  <span class='kw'>end</span></pre>
839
839
  </td>
@@ -978,7 +978,7 @@
978
978
  <td>
979
979
  <pre class="code"><span class="info file"># File 'lib/blackbox/crypto.rb', line 59</span>
980
980
 
981
- <span class='kw'>def</span> <span class='id identifier rubyid_encrypt_base64'>encrypt_base64</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
981
+ <span class='kw'>def</span> <span class='id identifier rubyid_encrypt_base64'>encrypt_base64</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
982
982
  <span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_strict_encode64'>strict_encode64</span><span class='lparen'>(</span><span class='id identifier rubyid_encrypt'>encrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='rparen'>)</span><span class='rparen'>)</span>
983
983
  <span class='kw'>end</span></pre>
984
984
  </td>
@@ -1123,7 +1123,7 @@
1123
1123
  <td>
1124
1124
  <pre class="code"><span class="info file"># File 'lib/blackbox/crypto.rb', line 82</span>
1125
1125
 
1126
- <span class='kw'>def</span> <span class='id identifier rubyid_encrypt_urlsafe_base64'>encrypt_urlsafe_base64</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
1126
+ <span class='kw'>def</span> <span class='id identifier rubyid_encrypt_urlsafe_base64'>encrypt_urlsafe_base64</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
1127
1127
  <span class='const'>Base64</span><span class='period'>.</span><span class='id identifier rubyid_urlsafe_encode64'>urlsafe_encode64</span><span class='lparen'>(</span><span class='id identifier rubyid_encrypt'>encrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span><span class='rparen'>)</span><span class='rparen'>)</span>
1128
1128
  <span class='kw'>end</span></pre>
1129
1129
  </td>
@@ -1136,9 +1136,9 @@
1136
1136
  </div>
1137
1137
 
1138
1138
  <div id="footer">
1139
- Generated on Sat Mar 30 02:17:56 2013 by
1139
+ Generated on Sun Nov 22 18:25:23 2015 by
1140
1140
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1141
- 0.8.5.2 (ruby-2.0.0).
1141
+ 0.8.5.2 (ruby-2.2.2).
1142
1142
  </div>
1143
1143
 
1144
1144
  </body>
data/doc/BB/Hash.html CHANGED
@@ -331,10 +331,10 @@ BB::Hash.flatten_prop_style(input)
331
331
 
332
332
  <span class='kw'>def</span> <span class='id identifier rubyid_flatten_prop_style'>flatten_prop_style</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_output'>output</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
333
333
  <span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
334
- <span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:prefix</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:prefix</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:delimiter</span><span class='rbracket'>]</span><span class='op'>||</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
334
+ <span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:prefix</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:prefix</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:delimiter</span><span class='rbracket'>]</span><span class='op'>||</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span><span class='embexpr_end'>}</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
335
335
  <span class='kw'>case</span> <span class='id identifier rubyid_value'>value</span>
336
336
  <span class='kw'>when</span> <span class='op'>::</span><span class='const'>Hash</span>
337
- <span class='id identifier rubyid_flatten_prop_style'>flatten_prop_style</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='symbol'>:prefix</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='symbol'>:delimiter</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_output'>output</span><span class='rparen'>)</span>
337
+ <span class='id identifier rubyid_flatten_prop_style'>flatten_prop_style</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='symbol'>:prefix</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_key'>key</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_output'>output</span><span class='rparen'>)</span>
338
338
  <span class='kw'>when</span> <span class='const'>Array</span>
339
339
  <span class='id identifier rubyid_output'>output</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>,</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
340
340
  <span class='kw'>else</span>
@@ -432,9 +432,9 @@ BB::Hash.flatten_prop_style(input)
432
432
  </div>
433
433
 
434
434
  <div id="footer">
435
- Generated on Sat Mar 30 02:17:56 2013 by
435
+ Generated on Sun Nov 22 18:25:23 2015 by
436
436
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
437
- 0.8.5.2 (ruby-2.0.0).
437
+ 0.8.5.2 (ruby-2.2.2).
438
438
  </div>
439
439
 
440
440
  </body>
data/doc/BB/String.html CHANGED
@@ -231,9 +231,9 @@
231
231
  </div>
232
232
 
233
233
  <div id="footer">
234
- Generated on Sat Mar 30 02:17:56 2013 by
234
+ Generated on Sun Nov 22 18:25:23 2015 by
235
235
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
236
- 0.8.5.2 (ruby-2.0.0).
236
+ 0.8.5.2 (ruby-2.2.2).
237
237
  </div>
238
238
 
239
239
  </body>
data/doc/_index.html CHANGED
@@ -123,6 +123,21 @@
123
123
  </ul>
124
124
 
125
125
 
126
+ <ul id="alpha_N" class="alpha">
127
+ <li class="letter">N</li>
128
+ <ul>
129
+
130
+ <li>
131
+ <span class='object_link'><a href="BB/Number.html" title="BB::Number (module)">Number</a></span>
132
+
133
+ <small>(BB)</small>
134
+
135
+ </li>
136
+
137
+ </ul>
138
+ </ul>
139
+
140
+
126
141
  <ul id="alpha_S" class="alpha">
127
142
  <li class="letter">S</li>
128
143
  <ul>
@@ -146,9 +161,9 @@
146
161
  </div>
147
162
 
148
163
  <div id="footer">
149
- Generated on Sat Mar 30 02:17:55 2013 by
164
+ Generated on Sun Nov 22 18:25:23 2015 by
150
165
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
151
- 0.8.5.2 (ruby-2.0.0).
166
+ 0.8.5.2 (ruby-2.2.2).
152
167
  </div>
153
168
 
154
169
  </body>
data/doc/class_list.html CHANGED
@@ -45,7 +45,7 @@
45
45
 
46
46
  <ul id="full_list" class="class">
47
47
  <li><span class='object_link'><a href="top-level-namespace.html" title=" (root)">Top Level Namespace</a></span></li>
48
- <li><a class='toggle'></a> <span class='object_link'><a href="BB.html" title="BB (module)">BB</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><span class='object_link'><a href="BB/Crypto.html" title="BB::Crypto (module)">Crypto</a></span><small class='search_info'>BB</small></li><li><span class='object_link'><a href="BB/Hash.html" title="BB::Hash (module)">Hash</a></span><small class='search_info'>BB</small></li><li><span class='object_link'><a href="BB/String.html" title="BB::String (module)">String</a></span><small class='search_info'>BB</small></li></ul>
48
+ <li><a class='toggle'></a> <span class='object_link'><a href="BB.html" title="BB (module)">BB</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><span class='object_link'><a href="BB/Crypto.html" title="BB::Crypto (module)">Crypto</a></span><small class='search_info'>BB</small></li><li><span class='object_link'><a href="BB/Hash.html" title="BB::Hash (module)">Hash</a></span><small class='search_info'>BB</small></li><li><span class='object_link'><a href="BB/Number.html" title="BB::Number (module)">Number</a></span><small class='search_info'>BB</small></li><li><span class='object_link'><a href="BB/String.html" title="BB::String (module)">String</a></span><small class='search_info'>BB</small></li></ul>
49
49
 
50
50
  </ul>
51
51
  </div>
data/doc/file.README.html CHANGED
@@ -95,9 +95,9 @@ BB::String.strip_ansi( ... )
95
95
  </div></div>
96
96
 
97
97
  <div id="footer">
98
- Generated on Sat Mar 30 02:17:55 2013 by
98
+ Generated on Sun Nov 22 18:25:23 2015 by
99
99
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
100
- 0.8.5.2 (ruby-2.0.0).
100
+ 0.8.5.2 (ruby-2.2.2).
101
101
  </div>
102
102
 
103
103
  </body>
data/doc/index.html CHANGED
@@ -95,9 +95,9 @@ BB::String.strip_ansi( ... )
95
95
  </div></div>
96
96
 
97
97
  <div id="footer">
98
- Generated on Sat Mar 30 02:17:55 2013 by
98
+ Generated on Sun Nov 22 18:25:23 2015 by
99
99
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
100
- 0.8.5.2 (ruby-2.0.0).
100
+ 0.8.5.2 (ruby-2.2.2).
101
101
  </div>
102
102
 
103
103
  </body>
data/doc/method_list.html CHANGED
@@ -118,6 +118,30 @@
118
118
  </li>
119
119
 
120
120
 
121
+ <li class="r2 ">
122
+ <span class='object_link'><a href="BB/Number.html#to_human_size-class_method" title="BB::Number.to_human_size (method)">to_human_size</a></span>
123
+
124
+ <small>BB::Number</small>
125
+
126
+ </li>
127
+
128
+
129
+ <li class="r1 ">
130
+ <span class='object_link'><a href="BB/Number.html#with_delimiter-class_method" title="BB::Number.with_delimiter (method)">with_delimiter</a></span>
131
+
132
+ <small>BB::Number</small>
133
+
134
+ </li>
135
+
136
+
137
+ <li class="r2 ">
138
+ <span class='object_link'><a href="BB/Number.html#with_precision-class_method" title="BB::Number.with_precision (method)">with_precision</a></span>
139
+
140
+ <small>BB::Number</small>
141
+
142
+ </li>
143
+
144
+
121
145
  </ul>
122
146
  </div>
123
147
  </body>
@@ -103,9 +103,9 @@
103
103
  </div>
104
104
 
105
105
  <div id="footer">
106
- Generated on Sat Mar 30 02:17:55 2013 by
106
+ Generated on Sun Nov 22 18:25:23 2015 by
107
107
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
- 0.8.5.2 (ruby-2.0.0).
108
+ 0.8.5.2 (ruby-2.2.2).
109
109
  </div>
110
110
 
111
111
  </body>
@@ -4,7 +4,7 @@ require 'base64'
4
4
  module BB
5
5
  # Crypto utilities.
6
6
  module Crypto
7
- class << self
7
+ class << self
8
8
  # Encrypt a String.
9
9
  #
10
10
  # @param [String] plaintext Input String (plaintext)
@@ -13,18 +13,18 @@ module BB
13
13
  # @param [String] iv Initialization vector
14
14
  # @return [String] When iv == nil: iv_length+iv+ciphertext
15
15
  # @return [String] When iv != nil: ciphertext
16
- def encrypt(plaintext, key, cipher_type='aes-256-cbc', iv=nil)
17
- aes = OpenSSL::Cipher::Cipher.new(cipher_type)
18
- aes.encrypt
19
- aes.key = key
16
+ def encrypt(plaintext, key, cipher_type='aes-256-cbc', iv=nil)
17
+ cipher = OpenSSL::Cipher::Cipher.new(cipher_type)
18
+ cipher.encrypt
19
+ cipher.key = key
20
20
  if iv.nil?
21
- iv = aes.random_iv
22
- [iv.length].pack('C') + iv + aes.update(plaintext) + aes.final
21
+ iv = cipher.random_iv
22
+ [iv.length].pack('C') + iv + cipher.update(plaintext) + cipher.final
23
23
  else
24
- aes.iv = iv
25
- aes.update(plaintext) + aes.final
24
+ cipher.iv = iv
25
+ cipher.update(plaintext) + cipher.final
26
26
  end
27
- end
27
+ end
28
28
 
29
29
  # Decrypt a String.
30
30
  #
@@ -33,21 +33,21 @@ module BB
33
33
  # @param [String] cipher_type OpenSSL cipher
34
34
  # @param [String] iv Initialization vector
35
35
  # @return [String] Plaintext
36
- def decrypt(ciphertext, key, cipher_type='aes-256-cbc', iv=nil)
37
- aes = OpenSSL::Cipher::Cipher.new(cipher_type)
38
- aes.decrypt
39
- aes.key = key
36
+ def decrypt(ciphertext, key, cipher_type='aes-256-cbc', iv=nil)
37
+ cipher = OpenSSL::Cipher::Cipher.new(cipher_type)
38
+ cipher.decrypt
39
+ cipher.key = key
40
40
  if iv.nil?
41
41
  iv_len = ciphertext.slice!(0).unpack('C')[0]
42
42
  unless 0 == iv_len
43
- aes.iv = ciphertext.slice!(0..iv_len-1)
43
+ cipher.iv = ciphertext.slice!(0..iv_len-1)
44
44
  end
45
45
  else
46
- aes.iv = iv
46
+ cipher.iv = iv
47
47
  end
48
- aes.update(ciphertext) + aes.final
49
- end
50
-
48
+ cipher.update(ciphertext) + cipher.final
49
+ end
50
+
51
51
  # Encrypt a String and encode the resulting ciphertext to Base64.
52
52
  #
53
53
  # @param [String] plaintext Input String (plaintext)
@@ -56,7 +56,7 @@ module BB
56
56
  # @param [String] iv Initialization vector
57
57
  # @return [String] When iv == nil: base64(iv_length+iv+ciphertext)
58
58
  # @return [String] When iv != nil: base64(ciphertext)
59
- def encrypt_base64(plaintext, key, cipher_type='aes-256-cbc', iv=nil)
59
+ def encrypt_base64(plaintext, key, cipher_type='aes-256-cbc', iv=nil)
60
60
  Base64.strict_encode64(encrypt(plaintext, key, cipher_type, iv))
61
61
  end
62
62
 
@@ -67,7 +67,7 @@ module BB
67
67
  # @param [String] cipher_type OpenSSL cipher
68
68
  # @param [String] iv Initialization vector
69
69
  # @return [String] Plaintext
70
- def decrypt_base64(ciphertext, key, cipher_type='aes-256-cbc', iv=nil)
70
+ def decrypt_base64(ciphertext, key, cipher_type='aes-256-cbc', iv=nil)
71
71
  decrypt(Base64.decode64(ciphertext), key, cipher_type, iv)
72
72
  end
73
73
 
@@ -79,7 +79,7 @@ module BB
79
79
  # @param [String] iv Initialization vector
80
80
  # @return [String] When iv == nil: urlsafe_base64(iv_length+iv+ciphertext)
81
81
  # @return [String] When iv != nil: urlsafe_base64(ciphertext)
82
- def encrypt_urlsafe_base64(plaintext, key, cipher_type='aes-256-cbc', iv=nil)
82
+ def encrypt_urlsafe_base64(plaintext, key, cipher_type='aes-256-cbc', iv=nil)
83
83
  Base64.urlsafe_encode64(encrypt(plaintext, key, cipher_type, iv))
84
84
  end
85
85
 
@@ -90,10 +90,10 @@ module BB
90
90
  # @param [String] cipher_type OpenSSL cipher
91
91
  # @param [String] iv Initialization vector
92
92
  # @return [String] Plaintext
93
- def decrypt_urlsafe_base64(ciphertext, key, cipher_type='aes-256-cbc', iv=nil)
93
+ def decrypt_urlsafe_base64(ciphertext, key, cipher_type='aes-256-cbc', iv=nil)
94
94
  decrypt(Base64.urlsafe_decode64(ciphertext), key, cipher_type, iv)
95
95
  end
96
- end
96
+ end
97
97
  end
98
98
  end
99
99
 
@@ -0,0 +1,167 @@
1
+ require 'blackbox/hash'
2
+
3
+ module BB
4
+ # String utilities.
5
+ module Number
6
+ class << self
7
+ STORAGE_UNITS = ['byte', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'].freeze
8
+
9
+ ##
10
+ # Formats the bytes in +size+ into a more understandable representation
11
+ # (e.g., giving it 1500 yields 1.5 KB). This method is useful for
12
+ # reporting file sizes to users. This method returns nil if
13
+ # +size+ cannot be converted into a number. You can customize the
14
+ # format in the +options+ hash.
15
+ #
16
+ # @overload to_human_size(number, options={})
17
+ # @param [Fixnum] number
18
+ # Number value to format.
19
+ # @param [Hash] options
20
+ # Options for formatter.
21
+ # @option options [Fixnum] :precision (1)
22
+ # Sets the level of precision.
23
+ # @option options [String] :separator (".")
24
+ # Sets the separator between the units.
25
+ # @option options [String] :delimiter ("")
26
+ # Sets the thousands delimiter.
27
+ # @option options [String] :kilo (1024)
28
+ # Sets the number of bytes in a kilobyte.
29
+ # @option options [String] :format ("%n %u")
30
+ # Sets the display format.
31
+ #
32
+ # @return [String] The formatted representation of bytes
33
+ #
34
+ # @example
35
+ # to_human_size(123) # => 123 Bytes
36
+ # to_human_size(1234) # => 1.2 KB
37
+ # to_human_size(12345) # => 12.1 KB
38
+ # to_human_size(1234567) # => 1.2 MB
39
+ # to_human_size(1234567890) # => 1.1 GB
40
+ # to_human_size(1234567890123) # => 1.1 TB
41
+ # to_human_size(1234567, :precision => 2) # => 1.18 MB
42
+ # to_human_size(483989, :precision => 0) # => 473 KB
43
+ # to_human_size(1234567, :precision => 2, :separator => ',') # => 1,18 MB
44
+ #
45
+ def to_human_size(number, args={})
46
+ return nil if number.nil?
47
+
48
+ options = BB::Hash.symbolize_keys(args)
49
+
50
+ precision ||= (options[:precision] || 1)
51
+ separator ||= (options[:separator] || '.')
52
+ delimiter ||= (options[:delimiter] || '')
53
+ kilo ||= (options[:kilo] || 1024)
54
+ storage_units_format ||= (options[:format] || '%n%u')
55
+
56
+ if number.to_i < kilo
57
+ #unit = I18n.translate(:'number.human.storage_units.units.byte', :locale => options[:locale], :count => number.to_i, :raise => true)
58
+ storage_units_format.gsub(/%n/, number.to_i.to_s).gsub(/%u/, '')
59
+ else
60
+ max_exp = STORAGE_UNITS.size - 1
61
+ number = Float(number)
62
+ exponent = (Math.log(number) / Math.log(kilo)).to_i # Convert to base 1024
63
+ exponent = max_exp if exponent > max_exp # we need this to avoid overflow for the highest unit
64
+ number /= kilo ** exponent
65
+
66
+ unit = STORAGE_UNITS[exponent]
67
+
68
+ begin
69
+ escaped_separator = Regexp.escape(separator)
70
+ formatted_number = with_precision(number,
71
+ :precision => precision,
72
+ :separator => separator,
73
+ :delimiter => delimiter
74
+ ).sub(/(#{escaped_separator})(\d*[1-9])?0+\z/, '\1\2').sub(/#{escaped_separator}\z/, '')
75
+ storage_units_format.gsub(/%n/, formatted_number).gsub(/%u/, unit)
76
+ rescue => e
77
+ e
78
+ #number
79
+ end
80
+ end
81
+ end
82
+
83
+ ##
84
+ # Formats a +number+ with the specified level of <tt>:precision</tt> (e.g., 112.32 has a precision of 2).
85
+ # You can customize the format in the +options+ hash.
86
+ #
87
+ # @overload with_precision(number, options={})
88
+ # @param [Fixnum, Float] number
89
+ # Number value to format.
90
+ # @param [Hash] options
91
+ # Options for formatter.
92
+ # @option options [Fixnum] :precision (3)
93
+ # Sets the level of precision.
94
+ # @option options [String] :separator (".")
95
+ # Sets the separator between the units.
96
+ # @option options [String] :delimiter ("")
97
+ # Sets the thousands delimiter.
98
+ #
99
+ # @return [String] The formatted representation of the number.
100
+ #
101
+ # @example
102
+ # with_precision(111.2345) # => 111.235
103
+ # with_precision(111.2345, :precision => 2) # => 111.23
104
+ # with_precision(13, :precision => 5) # => 13.00000
105
+ # with_precision(389.32314, :precision => 0) # => 389
106
+ # with_precision(1111.2345, :precision => 2, :separator => ',', :delimiter => '.')
107
+ # # => 1.111,23
108
+ #
109
+ def with_precision(number, args)
110
+ options = BB::Hash.symbolize_keys(args)
111
+
112
+ precision ||= (options[:precision] || 3)
113
+ separator ||= (options[:separator] || '.')
114
+ delimiter ||= (options[:delimiter] || '')
115
+
116
+ begin
117
+ rounded_number = (Float(number) * (10 ** precision)).round.to_f / 10 ** precision
118
+ with_delimiter("%01.#{precision}f" % rounded_number,
119
+ :separator => separator,
120
+ :delimiter => delimiter)
121
+ rescue
122
+ number
123
+ end
124
+ end
125
+
126
+ ##
127
+ # Formats a +number+ with grouped thousands using +delimiter+ (e.g., 12,324). You can
128
+ # customize the format in the +options+ hash.
129
+ #
130
+ # @overload with_delimiter(number, options={})
131
+ # @param [Fixnum, Float] number
132
+ # Number value to format.
133
+ # @param [Hash] options
134
+ # Options for formatter.
135
+ # @option options [String] :delimiter (", ")
136
+ # Sets the thousands delimiter.
137
+ # @option options [String] :separator (".")
138
+ # Sets the separator between the units.
139
+ #
140
+ # @return [String] The formatted representation of the number.
141
+ #
142
+ # @example
143
+ # with_delimiter(12345678) # => 12,345,678
144
+ # with_delimiter(12345678.05) # => 12,345,678.05
145
+ # with_delimiter(12345678, :delimiter => ".") # => 12.345.678
146
+ # with_delimiter(12345678, :separator => ",") # => 12,345,678
147
+ # with_delimiter(98765432.98, :delimiter => " ", :separator => ",")
148
+ # # => 98 765 432,98
149
+ #
150
+ def with_delimiter(number, args)
151
+ options = BB::Hash.symbolize_keys(args)
152
+
153
+ delimiter ||= (options[:delimiter] || '.')
154
+ separator ||= (options[:separator] || ',')
155
+
156
+ begin
157
+ parts = number.to_s.split('.')
158
+ parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
159
+ parts.join(separator)
160
+ rescue
161
+ number
162
+ end
163
+ end
164
+ end
165
+ end
166
+ end
167
+