minting 1.9.6 → 2.0.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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +244 -121
  3. data/Rakefile +17 -26
  4. data/bin/bench_check +2 -2
  5. data/doc/agents/api_review-2026-06-15.md +1 -1
  6. data/doc/agents/copilot-instructions.md +5 -5
  7. data/doc/agents/expired/copilot-instructions.md +2 -2
  8. data/doc/agents/expired/gemini_gem_evaluation.md +2 -2
  9. data/lib/minting/aliases.rb +22 -0
  10. data/lib/minting/currency/currency.rb +87 -12
  11. data/lib/minting/data/crypto-currencies.yaml +126 -0
  12. data/lib/minting/data/world-currencies.yaml +75 -23
  13. data/lib/minting/mint/i18n.rb +79 -29
  14. data/lib/minting/mint/mint.rb +1 -26
  15. data/lib/minting/mint/registry/crypto.rb +59 -0
  16. data/lib/minting/mint/registry/registration.rb +1 -2
  17. data/lib/minting/mint/registry/symbols.rb +37 -30
  18. data/lib/minting/mint/rounding.rb +10 -7
  19. data/lib/minting/mint.rb +1 -2
  20. data/lib/minting/money/allocation/allocation.rb +2 -2
  21. data/lib/minting/money/allocation/split.rb +1 -1
  22. data/lib/minting/money/arithmetics/operators.rb +10 -13
  23. data/lib/minting/money/clamp.rb +6 -6
  24. data/lib/minting/money/coercion.rb +1 -1
  25. data/lib/minting/money/comparable.rb +3 -3
  26. data/lib/minting/money/constructors.rb +3 -42
  27. data/lib/minting/money/conversion.rb +23 -18
  28. data/lib/minting/money/format/format.rb +100 -0
  29. data/lib/minting/money/format/formatter.rb +102 -0
  30. data/lib/minting/money/format/to_s.rb +34 -99
  31. data/lib/minting/money/format/validator.rb +34 -0
  32. data/lib/minting/money/money.rb +25 -13
  33. data/lib/minting/money/parse.rb +127 -0
  34. data/lib/minting/money/rounding.rb +27 -0
  35. data/lib/minting/version.rb +1 -1
  36. data/lib/minting.rb +17 -8
  37. metadata +9 -28
  38. data/doc/Mint/Currency.html +0 -1943
  39. data/doc/Mint/CurrencyRegistry.html +0 -511
  40. data/doc/Mint/Money.html +0 -4607
  41. data/doc/Mint/RangeStepPatch.html +0 -277
  42. data/doc/Mint/Registry.html +0 -863
  43. data/doc/Mint/Rounding.html +0 -506
  44. data/doc/Mint/UnknownCurrency.html +0 -136
  45. data/doc/Mint.html +0 -1004
  46. data/doc/Minting.html +0 -142
  47. data/doc/_index.html +0 -180
  48. data/doc/class_list.html +0 -54
  49. data/doc/css/common.css +0 -1
  50. data/doc/css/full_list.css +0 -206
  51. data/doc/css/style.css +0 -1089
  52. data/doc/file.README.html +0 -277
  53. data/doc/file_list.html +0 -59
  54. data/doc/frames.html +0 -22
  55. data/doc/index.html +0 -277
  56. data/doc/js/app.js +0 -801
  57. data/doc/js/full_list.js +0 -334
  58. data/doc/js/jquery.js +0 -4
  59. data/doc/method_list.html +0 -686
  60. data/doc/top-level-namespace.html +0 -151
  61. data/lib/minting/mint/aliases.rb +0 -16
  62. data/lib/minting/mint/parser/parser.rb +0 -97
  63. data/lib/minting/mint/parser/separators.rb +0 -41
  64. data/lib/minting/money/format/formatting.rb +0 -97
data/doc/Mint/Money.html DELETED
@@ -1,4607 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>
7
- Class: Mint::Money
8
-
9
- &mdash; Documentation by YARD 0.9.44
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="../css/style.css" type="text/css">
14
-
15
- <link rel="stylesheet" href="../css/common.css" type="text/css">
16
-
17
- <script type="text/javascript">
18
- pathId = "Mint::Money";
19
- relpath = '../';
20
- </script>
21
-
22
-
23
- <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
-
25
- <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
-
27
-
28
- </head>
29
- <body>
30
- <div id="main_progress" aria-hidden="true"></div>
31
-
32
- <div class="nav_wrap">
33
- <iframe id="nav" src="../class_list.html?1"></iframe>
34
- <div id="resizer"></div>
35
- </div>
36
-
37
- <div id="main" tabindex="-1">
38
- <div id="header">
39
- <div id="menu">
40
-
41
- <a href="../_index.html">Index (M)</a> &raquo;
42
- <span class='title'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span>
43
- &raquo;
44
- <span class="title">Money</span>
45
-
46
- </div>
47
-
48
- <div id="search">
49
-
50
- <a class="full_list_link" id="class_list_link"
51
- href="../class_list.html">
52
-
53
- <svg width="24" height="24">
54
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
55
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
56
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
57
- </svg>
58
- </a>
59
-
60
- </div>
61
- <div class="clear"></div>
62
- </div>
63
-
64
- <div id="content"><h1>Class: Mint::Money
65
-
66
-
67
-
68
- </h1>
69
- <div class="box_info">
70
-
71
- <dl>
72
- <dt>Inherits:</dt>
73
- <dd>
74
- <span class="inheritName">Object</span>
75
-
76
- <ul class="fullTree">
77
- <li>Object</li>
78
-
79
- <li class="next">Mint::Money</li>
80
-
81
- </ul>
82
- <a href="#" class="inheritanceTree">show all</a>
83
-
84
- </dd>
85
- </dl>
86
-
87
-
88
-
89
-
90
-
91
-
92
- <dl>
93
- <dt>Includes:</dt>
94
- <dd>Comparable</dd>
95
- </dl>
96
-
97
-
98
-
99
-
100
-
101
-
102
- <dl>
103
- <dt>Defined in:</dt>
104
- <dd>lib/minting/mint/i18n.rb<span class="defines">,<br>
105
- lib/minting/money/clamp.rb,<br> lib/minting/money/money.rb,<br> lib/minting/money/coercion.rb,<br> lib/minting/money/comparable.rb,<br> lib/minting/money/conversion.rb,<br> lib/minting/money/format/to_s.rb,<br> lib/minting/money/constructors.rb,<br> lib/minting/money/allocation/split.rb,<br> lib/minting/money/format/formatting.rb,<br> lib/minting/money/arithmetics/methods.rb,<br> lib/minting/money/allocation/allocation.rb,<br> lib/minting/money/arithmetics/operators.rb</span>
106
-
107
- </dd>
108
- </dl>
109
-
110
- </div>
111
-
112
- <h2>Overview</h2><div class="docstring">
113
- <div class="discussion">
114
- <p>:nodoc:</p>
115
-
116
- </div>
117
- </div>
118
- <div class="tags">
119
-
120
-
121
- </div>
122
-
123
- <h2>
124
- Constant Summary
125
- <small><a href="#" class="constants_summary_toggle">collapse</a></small>
126
- </h2>
127
-
128
- <dl class="constants">
129
-
130
- <dt id="DEFAULT_FORMAT-constant" class="">DEFAULT_FORMAT =
131
- <div class="docstring">
132
- <div class="discussion">
133
- <p>The default display format pattern for formatting monetary values.
134
- Uses <code>%&lt;symbol&gt;s</code> for the currency symbol and <code>%&lt;amount&gt;f</code> for the rounded amount.</p>
135
-
136
- </div>
137
- </div>
138
- <div class="tags">
139
-
140
-
141
- </div>
142
- </dt>
143
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>%&lt;symbol&gt;s%&lt;amount&gt;f</span><span class='tstring_end'>&#39;</span></span></pre></dd>
144
-
145
- </dl>
146
-
147
-
148
-
149
-
150
-
151
- <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
152
- <ul class="summary">
153
-
154
- <li class="public ">
155
- <span class="summary_signature">
156
-
157
- <a href="#amount-instance_method" title="#amount (instance method)">#<strong>amount</strong> &#x21d2; Object </a>
158
-
159
-
160
-
161
- </span>
162
-
163
-
164
-
165
-
166
- <span class="note title readonly">readonly</span>
167
-
168
-
169
-
170
-
171
-
172
-
173
-
174
-
175
-
176
- <span class="summary_desc"><div class='inline'><p>Returns the value of attribute amount.</p></div></span>
177
-
178
- </li>
179
-
180
-
181
- <li class="public ">
182
- <span class="summary_signature">
183
-
184
- <a href="#currency-instance_method" title="#currency (instance method)">#<strong>currency</strong> &#x21d2; Object </a>
185
-
186
-
187
-
188
- </span>
189
-
190
-
191
-
192
-
193
- <span class="note title readonly">readonly</span>
194
-
195
-
196
-
197
-
198
-
199
-
200
-
201
-
202
-
203
- <span class="summary_desc"><div class='inline'><p>Returns the value of attribute currency.</p></div></span>
204
-
205
- </li>
206
-
207
-
208
- </ul>
209
-
210
-
211
-
212
-
213
-
214
- <h2>
215
- Class Method Summary
216
- <small><a href="#" class="summary_toggle">collapse</a></small>
217
- </h2>
218
-
219
- <ul class="summary">
220
-
221
- <li class="public ">
222
- <span class="summary_signature">
223
-
224
- <a href="#create-class_method" title="create (class method)">.<strong>create</strong>(amount, currency) &#x21d2; Object </a>
225
-
226
-
227
-
228
- </span>
229
-
230
-
231
-
232
-
233
-
234
-
235
-
236
-
237
-
238
- <span class="summary_desc"><div class='inline'><p>Backwards-compatible alias for previous API TODO: deprecate in a future major release.</p></div></span>
239
-
240
- </li>
241
-
242
-
243
- <li class="public ">
244
- <span class="summary_signature">
245
-
246
- <a href="#from-class_method" title="from (class method)">.<strong>from</strong>(amount, currency) &#x21d2; Money </a>
247
-
248
-
249
-
250
- </span>
251
-
252
-
253
-
254
-
255
-
256
-
257
-
258
-
259
-
260
- <span class="summary_desc"><div class='inline'><p>Creates a new Money immutable object with the specified amount and currency.</p></div></span>
261
-
262
- </li>
263
-
264
-
265
- <li class="public ">
266
- <span class="summary_signature">
267
-
268
- <a href="#from_subunits-class_method" title="from_subunits (class method)">.<strong>from_subunits</strong>(subunits, currency) &#x21d2; Money </a>
269
-
270
-
271
-
272
- </span>
273
-
274
-
275
-
276
-
277
-
278
-
279
-
280
-
281
-
282
- <span class="summary_desc"><div class='inline'><p>Builds a Money from a subunit (smallest-unit) Integer amount.</p></div></span>
283
-
284
- </li>
285
-
286
-
287
- <li class="public ">
288
- <span class="summary_signature">
289
-
290
- <a href="#no_currency-class_method" title="no_currency (class method)">.<strong>no_currency</strong>(amount) &#x21d2; Money </a>
291
-
292
-
293
-
294
- </span>
295
-
296
-
297
-
298
-
299
-
300
-
301
-
302
-
303
-
304
- <span class="summary_desc"><div class='inline'><p>Creates a new Money without a currency (ISO 4217 XXX — &quot;No Currency&quot;).</p></div></span>
305
-
306
- </li>
307
-
308
-
309
- <li class="public ">
310
- <span class="summary_signature">
311
-
312
- <a href="#parse-class_method" title="parse (class method)">.<strong>parse</strong>(input, currency = nil) &#x21d2; Money<sup>?</sup> </a>
313
-
314
-
315
-
316
- </span>
317
-
318
-
319
-
320
-
321
-
322
-
323
-
324
-
325
-
326
- <span class="summary_desc"><div class='inline'><p>Parses a human-readable money string into a <span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span> object.</p></div></span>
327
-
328
- </li>
329
-
330
-
331
- <li class="public ">
332
- <span class="summary_signature">
333
-
334
- <a href="#parse!-class_method" title="parse! (class method)">.<strong>parse!</strong>(input, currency = nil) &#x21d2; Money </a>
335
-
336
-
337
-
338
- </span>
339
-
340
-
341
-
342
-
343
-
344
-
345
-
346
-
347
-
348
- <span class="summary_desc"><div class='inline'><p>Like <span class='object_link'><a href="#parse-class_method" title="Mint::Money.parse (method)">Money.parse</a></span> but raises on failure.</p></div></span>
349
-
350
- </li>
351
-
352
-
353
- <li class="public ">
354
- <span class="summary_signature">
355
-
356
- <a href="#zero-class_method" title="zero (class method)">.<strong>zero</strong>(currency) &#x21d2; Money </a>
357
-
358
-
359
-
360
- </span>
361
-
362
-
363
-
364
-
365
-
366
-
367
-
368
-
369
-
370
- <span class="summary_desc"><div class='inline'><p>Returns a frozen zero Money in the given currency.</p></div></span>
371
-
372
- </li>
373
-
374
-
375
- </ul>
376
-
377
-
378
- <h2>
379
- Instance Method Summary
380
- <small><a href="#" class="summary_toggle">collapse</a></small>
381
- </h2>
382
-
383
- <ul class="summary">
384
-
385
- <li class="public ">
386
- <span class="summary_signature">
387
-
388
- <a href="#*-instance_method" title="#* (instance method)">#<strong>*</strong>(multiplicand) &#x21d2; Money </a>
389
-
390
-
391
-
392
- </span>
393
-
394
-
395
-
396
-
397
-
398
-
399
-
400
-
401
-
402
- <span class="summary_desc"><div class='inline'><p>Performs multiplication of the monetary value by a standard scalar Numeric.</p></div></span>
403
-
404
- </li>
405
-
406
-
407
- <li class="public ">
408
- <span class="summary_signature">
409
-
410
- <a href="#**-instance_method" title="#** (instance method)">#<strong>**</strong>(exponent) &#x21d2; Money </a>
411
-
412
-
413
-
414
- </span>
415
-
416
-
417
-
418
-
419
-
420
-
421
-
422
-
423
-
424
- <span class="summary_desc"><div class='inline'><p>Performs exponentiation of the monetary value by a standard scalar Numeric.</p></div></span>
425
-
426
- </li>
427
-
428
-
429
- <li class="public ">
430
- <span class="summary_signature">
431
-
432
- <a href="#%2B-instance_method" title="#+ (instance method)">#<strong>+</strong>(addend) &#x21d2; Money </a>
433
-
434
-
435
-
436
- </span>
437
-
438
-
439
-
440
-
441
-
442
-
443
-
444
-
445
-
446
- <span class="summary_desc"><div class='inline'><p>Performs addition with another <span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span> instance or standard zero Numeric.</p></div></span>
447
-
448
- </li>
449
-
450
-
451
- <li class="public ">
452
- <span class="summary_signature">
453
-
454
- <a href="#--instance_method" title="#- (instance method)">#<strong>-</strong>(subtrahend) &#x21d2; Money </a>
455
-
456
-
457
-
458
- </span>
459
-
460
-
461
-
462
-
463
-
464
-
465
-
466
-
467
-
468
- <span class="summary_desc"><div class='inline'><p>Performs subtraction with another <span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span> instance or standard zero Numeric.</p></div></span>
469
-
470
- </li>
471
-
472
-
473
- <li class="public ">
474
- <span class="summary_signature">
475
-
476
- <a href="#-@-instance_method" title="#-@ (instance method)">#<strong>-@</strong> &#x21d2; Money </a>
477
-
478
-
479
-
480
- </span>
481
-
482
-
483
-
484
-
485
-
486
-
487
-
488
-
489
-
490
- <span class="summary_desc"><div class='inline'><p>Unary negation operator.</p></div></span>
491
-
492
- </li>
493
-
494
-
495
- <li class="public ">
496
- <span class="summary_signature">
497
-
498
- <a href="#%2F-instance_method" title="#/ (instance method)">#<strong>/</strong>(divisor) &#x21d2; Money, Numeric </a>
499
-
500
-
501
-
502
- </span>
503
-
504
-
505
-
506
-
507
-
508
-
509
-
510
-
511
-
512
- <span class="summary_desc"><div class='inline'><p>Performs division of the monetary value by a scalar Numeric or identical currency <span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>.</p></div></span>
513
-
514
- </li>
515
-
516
-
517
- <li class="public ">
518
- <span class="summary_signature">
519
-
520
- <a href="#<=>-instance_method" title="#&lt;=&gt; (instance method)">#<strong>&lt;=&gt;</strong>(other) &#x21d2; Object </a>
521
-
522
-
523
-
524
- </span>
525
-
526
-
527
-
528
-
529
-
530
-
531
-
532
-
533
-
534
- <span class="summary_desc"><div class='inline'></div></span>
535
-
536
- </li>
537
-
538
-
539
- <li class="public ">
540
- <span class="summary_signature">
541
-
542
- <a href="#==-instance_method" title="#== (instance method)">#<strong>==</strong>(other) &#x21d2; Object </a>
543
-
544
-
545
-
546
- </span>
547
-
548
-
549
-
550
-
551
-
552
-
553
-
554
-
555
-
556
- <span class="summary_desc"><div class='inline'><p>True if both are zero, or both have same amount and same currency.</p></div></span>
557
-
558
- </li>
559
-
560
-
561
- <li class="public ">
562
- <span class="summary_signature">
563
-
564
- <a href="#abs-instance_method" title="#abs (instance method)">#<strong>abs</strong> &#x21d2; Money </a>
565
-
566
-
567
-
568
- </span>
569
-
570
-
571
-
572
-
573
-
574
-
575
-
576
-
577
-
578
- <span class="summary_desc"><div class='inline'><p>Returns the absolute value of the monetary amount as a new <span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span> instance.</p></div></span>
579
-
580
- </li>
581
-
582
-
583
- <li class="public ">
584
- <span class="summary_signature">
585
-
586
- <a href="#allocate-instance_method" title="#allocate (instance method)">#<strong>allocate</strong>(proportions) &#x21d2; Array&lt;Money&gt; </a>
587
-
588
-
589
-
590
- </span>
591
-
592
-
593
-
594
-
595
-
596
-
597
-
598
-
599
-
600
- <span class="summary_desc"><div class='inline'><p>Proportionally allocates the monetary amount among a list of ratios.</p></div></span>
601
-
602
- </li>
603
-
604
-
605
- <li class="public ">
606
- <span class="summary_signature">
607
-
608
- <a href="#clamp-instance_method" title="#clamp (instance method)">#<strong>clamp</strong>(min_or_range, max = nil) &#x21d2; Money </a>
609
-
610
-
611
-
612
- </span>
613
-
614
-
615
-
616
-
617
-
618
-
619
-
620
-
621
-
622
- <span class="summary_desc"><div class='inline'><p>Constrains <code>self</code> to the inclusive range [+min+, +max+].</p></div></span>
623
-
624
- </li>
625
-
626
-
627
- <li class="public ">
628
- <span class="summary_signature">
629
-
630
- <a href="#coerce-instance_method" title="#coerce (instance method)">#<strong>coerce</strong>(other) &#x21d2; Array(CoercedNumber, Money) </a>
631
-
632
-
633
-
634
- </span>
635
-
636
-
637
-
638
-
639
-
640
-
641
- <span class="private note title">private</span>
642
-
643
-
644
- <span class="summary_desc"><div class='inline'><p>Allows <span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span> to interact seamlessly as the right-hand operand in Numeric arithmetic.</p></div></span>
645
-
646
- </li>
647
-
648
-
649
- <li class="public ">
650
- <span class="summary_signature">
651
-
652
- <a href="#copy_with-instance_method" title="#copy_with (instance method)">#<strong>copy_with</strong>(amount:) &#x21d2; Money </a>
653
-
654
-
655
-
656
- </span>
657
-
658
-
659
-
660
-
661
-
662
-
663
-
664
-
665
-
666
- <span class="summary_desc"><div class='inline'><p>Returns a new Money object with the specified amount, or self if unchanged.</p></div></span>
667
-
668
- </li>
669
-
670
-
671
- <li class="public ">
672
- <span class="summary_signature">
673
-
674
- <a href="#currency_code-instance_method" title="#currency_code (instance method)">#<strong>currency_code</strong> &#x21d2; String </a>
675
-
676
-
677
-
678
- </span>
679
-
680
-
681
-
682
-
683
-
684
-
685
-
686
-
687
-
688
- <span class="summary_desc"><div class='inline'><p>Returns the ISO 3-letter currency code string.</p></div></span>
689
-
690
- </li>
691
-
692
-
693
- <li class="public ">
694
- <span class="summary_signature">
695
-
696
- <a href="#eql%3F-instance_method" title="#eql? (instance method)">#<strong>eql?</strong>(other) &#x21d2; Boolean </a>
697
-
698
-
699
-
700
- </span>
701
-
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
- <span class="summary_desc"><div class='inline'><p>Strict equality — both amount and currency must match exactly.</p></div></span>
711
-
712
- </li>
713
-
714
-
715
- <li class="public ">
716
- <span class="summary_signature">
717
-
718
- <a href="#fractional-instance_method" title="#fractional (instance method)">#<strong>fractional</strong> &#x21d2; Object </a>
719
-
720
-
721
-
722
- </span>
723
-
724
-
725
-
726
-
727
-
728
-
729
-
730
-
731
-
732
- <span class="summary_desc"><div class='inline'><p>Returns the fractional part of the amount.</p></div></span>
733
-
734
- </li>
735
-
736
-
737
- <li class="public ">
738
- <span class="summary_signature">
739
-
740
- <a href="#hash-instance_method" title="#hash (instance method)">#<strong>hash</strong> &#x21d2; Integer </a>
741
-
742
-
743
-
744
- </span>
745
-
746
-
747
-
748
-
749
-
750
-
751
-
752
-
753
-
754
- <span class="summary_desc"><div class='inline'><p>Generates a stable hash key for Money instances.</p></div></span>
755
-
756
- </li>
757
-
758
-
759
- <li class="public ">
760
- <span class="summary_signature">
761
-
762
- <a href="#inspect-instance_method" title="#inspect (instance method)">#<strong>inspect</strong> &#x21d2; String </a>
763
-
764
-
765
-
766
- </span>
767
-
768
-
769
-
770
-
771
-
772
-
773
-
774
-
775
-
776
- <span class="summary_desc"><div class='inline'><p>Returns a standard developer-oriented string inspection of the Money object.</p></div></span>
777
-
778
- </li>
779
-
780
-
781
- <li class="public deprecated">
782
- <span class="summary_signature">
783
-
784
- <a href="#mint-instance_method" title="#mint (instance method)">#<strong>mint</strong>(new_amount) &#x21d2; Money </a>
785
-
786
-
787
-
788
- </span>
789
-
790
-
791
-
792
-
793
-
794
- <span class="deprecated note title">deprecated</span>
795
-
796
-
797
-
798
- <span class="summary_desc"><strong>Deprecated.</strong> <div class='inline'><p>Use <span class='object_link'><a href="#copy_with-instance_method" title="Mint::Money#copy_with (method)">#copy_with</a></span> instead. Will be removed in v2.</p></div></span>
799
-
800
- </li>
801
-
802
-
803
- <li class="public ">
804
- <span class="summary_signature">
805
-
806
- <a href="#negative%3F-instance_method" title="#negative? (instance method)">#<strong>negative?</strong> &#x21d2; Boolean </a>
807
-
808
-
809
-
810
- </span>
811
-
812
-
813
-
814
-
815
-
816
-
817
-
818
-
819
-
820
- <span class="summary_desc"><div class='inline'><p>Returns true if the monetary amount is less than zero.</p></div></span>
821
-
822
- </li>
823
-
824
-
825
- <li class="public ">
826
- <span class="summary_signature">
827
-
828
- <a href="#nonzero%3F-instance_method" title="#nonzero? (instance method)">#<strong>nonzero?</strong> &#x21d2; self<sup>?</sup> </a>
829
-
830
-
831
-
832
- </span>
833
-
834
-
835
-
836
-
837
-
838
-
839
-
840
-
841
-
842
- <span class="summary_desc"><div class='inline'><p>Self if amount is non-zero, nil otherwise.</p></div></span>
843
-
844
- </li>
845
-
846
-
847
- <li class="public ">
848
- <span class="summary_signature">
849
-
850
- <a href="#positive%3F-instance_method" title="#positive? (instance method)">#<strong>positive?</strong> &#x21d2; Boolean </a>
851
-
852
-
853
-
854
- </span>
855
-
856
-
857
-
858
-
859
-
860
-
861
-
862
-
863
-
864
- <span class="summary_desc"><div class='inline'><p>Returns true if the monetary amount is greater than zero.</p></div></span>
865
-
866
- </li>
867
-
868
-
869
- <li class="public ">
870
- <span class="summary_signature">
871
-
872
- <a href="#same_currency%3F-instance_method" title="#same_currency? (instance method)">#<strong>same_currency?</strong>(other) &#x21d2; Boolean </a>
873
-
874
-
875
-
876
- </span>
877
-
878
-
879
-
880
-
881
-
882
-
883
-
884
-
885
-
886
- <span class="summary_desc"><div class='inline'><p>Helper method to verify if another Money has the identical currency.</p></div></span>
887
-
888
- </li>
889
-
890
-
891
- <li class="public ">
892
- <span class="summary_signature">
893
-
894
- <a href="#split-instance_method" title="#split (instance method)">#<strong>split</strong>(slices) &#x21d2; Array&lt;Money&gt; </a>
895
-
896
-
897
-
898
- </span>
899
-
900
-
901
-
902
-
903
-
904
-
905
-
906
-
907
-
908
- <span class="summary_desc"><div class='inline'><p>Splits the monetary amount into a given quantity of equal parts.</p></div></span>
909
-
910
- </li>
911
-
912
-
913
- <li class="public ">
914
- <span class="summary_signature">
915
-
916
- <a href="#subunits-instance_method" title="#subunits (instance method)">#<strong>subunits</strong> &#x21d2; Integer </a>
917
-
918
-
919
-
920
- </span>
921
-
922
-
923
-
924
-
925
-
926
-
927
-
928
-
929
-
930
- <span class="summary_desc"><div class='inline'><p>Returns the monetary amount expressed in the currency's smallest unit (fractional units).</p></div></span>
931
-
932
- </li>
933
-
934
-
935
- <li class="public ">
936
- <span class="summary_signature">
937
-
938
- <a href="#succ-instance_method" title="#succ (instance method)">#<strong>succ</strong> &#x21d2; Money </a>
939
-
940
-
941
-
942
- </span>
943
-
944
-
945
-
946
-
947
-
948
-
949
-
950
-
951
-
952
- <span class="summary_desc"><div class='inline'><p>Returns the successor of the Money instance by adding the minimum possible subunit amount.</p></div></span>
953
-
954
- </li>
955
-
956
-
957
- <li class="public ">
958
- <span class="summary_signature">
959
-
960
- <a href="#to_d-instance_method" title="#to_d (instance method)">#<strong>to_d</strong> &#x21d2; BigDecimal </a>
961
-
962
-
963
-
964
- </span>
965
-
966
-
967
-
968
-
969
-
970
-
971
-
972
-
973
-
974
- <span class="summary_desc"><div class='inline'><p>Converts the monetary amount to a BigDecimal object.</p></div></span>
975
-
976
- </li>
977
-
978
-
979
- <li class="public ">
980
- <span class="summary_signature">
981
-
982
- <a href="#to_f-instance_method" title="#to_f (instance method)">#<strong>to_f</strong> &#x21d2; Float </a>
983
-
984
-
985
-
986
- </span>
987
-
988
-
989
-
990
-
991
-
992
-
993
-
994
-
995
-
996
- <span class="summary_desc"><div class='inline'><p>Converts the monetary amount to a standard float.</p></div></span>
997
-
998
- </li>
999
-
1000
-
1001
- <li class="public ">
1002
- <span class="summary_signature">
1003
-
1004
- <a href="#to_hash-instance_method" title="#to_hash (instance method)">#<strong>to_hash</strong> &#x21d2; Hash </a>
1005
-
1006
-
1007
-
1008
- </span>
1009
-
1010
-
1011
-
1012
-
1013
-
1014
-
1015
-
1016
-
1017
-
1018
- <span class="summary_desc"><div class='inline'><p>Returns a Hash representation of the money instance.</p></div></span>
1019
-
1020
- </li>
1021
-
1022
-
1023
- <li class="public ">
1024
- <span class="summary_signature">
1025
-
1026
- <a href="#to_html-instance_method" title="#to_html (instance method)">#<strong>to_html</strong>(format = DEFAULT_FORMAT) &#x21d2; String </a>
1027
-
1028
-
1029
-
1030
- </span>
1031
-
1032
-
1033
-
1034
-
1035
-
1036
-
1037
-
1038
-
1039
-
1040
- <span class="summary_desc"><div class='inline'><p>Renders a safe HTML5 <code>&lt;data&gt;</code> element containing the formatted currency.</p></div></span>
1041
-
1042
- </li>
1043
-
1044
-
1045
- <li class="public ">
1046
- <span class="summary_signature">
1047
-
1048
- <a href="#to_i-instance_method" title="#to_i (instance method)">#<strong>to_i</strong> &#x21d2; Integer </a>
1049
-
1050
-
1051
-
1052
- </span>
1053
-
1054
-
1055
-
1056
-
1057
-
1058
-
1059
-
1060
-
1061
-
1062
- <span class="summary_desc"><div class='inline'><p>Truncates and converts the monetary amount to an Integer.</p></div></span>
1063
-
1064
- </li>
1065
-
1066
-
1067
- <li class="public ">
1068
- <span class="summary_signature">
1069
-
1070
- <a href="#to_json-instance_method" title="#to_json (instance method)">#<strong>to_json</strong>(*_args) &#x21d2; String </a>
1071
-
1072
-
1073
-
1074
- </span>
1075
-
1076
-
1077
-
1078
-
1079
-
1080
-
1081
-
1082
-
1083
-
1084
- <span class="summary_desc"><div class='inline'><p>Serializes the money instance to a standard JSON object containing the amount and currency.</p></div></span>
1085
-
1086
- </li>
1087
-
1088
-
1089
- <li class="public ">
1090
- <span class="summary_signature">
1091
-
1092
- <a href="#to_r-instance_method" title="#to_r (instance method)">#<strong>to_r</strong> &#x21d2; Rational </a>
1093
-
1094
-
1095
-
1096
- </span>
1097
-
1098
-
1099
-
1100
-
1101
-
1102
-
1103
-
1104
-
1105
-
1106
- <span class="summary_desc"><div class='inline'><p>Returns the exact internal Rational representation of the monetary amount.</p></div></span>
1107
-
1108
- </li>
1109
-
1110
-
1111
- <li class="public ">
1112
- <span class="summary_signature">
1113
-
1114
- <a href="#to_s-instance_method" title="#to_s (instance method)">#<strong>to_s</strong>(format: nil, decimal: nil, thousand: nil, width: nil) &#x21d2; String </a>
1115
-
1116
-
1117
-
1118
- </span>
1119
-
1120
-
1121
-
1122
-
1123
-
1124
-
1125
-
1126
-
1127
-
1128
- <span class="summary_desc"><div class='inline'><p>Formats money as a string with customizable format, thousand delimiter, and decimal.</p></div></span>
1129
-
1130
- </li>
1131
-
1132
-
1133
- <li class="public ">
1134
- <span class="summary_signature">
1135
-
1136
- <a href="#zero%3F-instance_method" title="#zero? (instance method)">#<strong>zero?</strong> &#x21d2; Boolean </a>
1137
-
1138
-
1139
-
1140
- </span>
1141
-
1142
-
1143
-
1144
-
1145
-
1146
-
1147
-
1148
-
1149
-
1150
- <span class="summary_desc"><div class='inline'><p>True if amount is zero.</p></div></span>
1151
-
1152
- </li>
1153
-
1154
-
1155
- </ul>
1156
-
1157
-
1158
-
1159
-
1160
-
1161
- <div id="instance_attr_details" class="attr_details">
1162
- <h2>Instance Attribute Details</h2>
1163
-
1164
-
1165
- <span id=""></span>
1166
- <div class="method_details first">
1167
- <h3 class="signature first" id="amount-instance_method">
1168
-
1169
- #<strong>amount</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
1170
-
1171
-
1172
-
1173
-
1174
-
1175
- </h3><div class="docstring">
1176
- <div class="discussion">
1177
- <p>Returns the value of attribute amount.</p>
1178
-
1179
- </div>
1180
- </div>
1181
- <div class="tags">
1182
-
1183
-
1184
- </div><table class="source_code">
1185
- <tr>
1186
- <td>
1187
- <pre class="lines">
1188
-
1189
-
1190
- 24
1191
- 25
1192
- 26</pre>
1193
- </td>
1194
- <td>
1195
- <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 24</span>
1196
-
1197
- <span class='kw'>def</span> <span class='id identifier rubyid_amount'>amount</span>
1198
- <span class='ivar'>@amount</span>
1199
- <span class='kw'>end</span></pre>
1200
- </td>
1201
- </tr>
1202
- </table>
1203
- </div>
1204
-
1205
-
1206
- <span id=""></span>
1207
- <div class="method_details ">
1208
- <h3 class="signature " id="currency-instance_method">
1209
-
1210
- #<strong>currency</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
1211
-
1212
-
1213
-
1214
-
1215
-
1216
- </h3><div class="docstring">
1217
- <div class="discussion">
1218
- <p>Returns the value of attribute currency.</p>
1219
-
1220
- </div>
1221
- </div>
1222
- <div class="tags">
1223
-
1224
-
1225
- </div><table class="source_code">
1226
- <tr>
1227
- <td>
1228
- <pre class="lines">
1229
-
1230
-
1231
- 24
1232
- 25
1233
- 26</pre>
1234
- </td>
1235
- <td>
1236
- <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 24</span>
1237
-
1238
- <span class='kw'>def</span> <span class='id identifier rubyid_currency'>currency</span>
1239
- <span class='ivar'>@currency</span>
1240
- <span class='kw'>end</span></pre>
1241
- </td>
1242
- </tr>
1243
- </table>
1244
- </div>
1245
-
1246
- </div>
1247
-
1248
-
1249
- <div id="class_method_details" class="method_details_list">
1250
- <h2>Class Method Details</h2>
1251
-
1252
-
1253
- <div class="method_details first">
1254
- <h3 class="signature first" id="create-class_method">
1255
-
1256
- .<strong>create</strong>(amount, currency) &#x21d2; <tt>Object</tt>
1257
-
1258
-
1259
-
1260
-
1261
-
1262
- </h3><div class="docstring">
1263
- <div class="discussion">
1264
- <p>Backwards-compatible alias for previous API
1265
- TODO: deprecate in a future major release</p>
1266
-
1267
- </div>
1268
- </div>
1269
- <div class="tags">
1270
-
1271
-
1272
- </div><table class="source_code">
1273
- <tr>
1274
- <td>
1275
- <pre class="lines">
1276
-
1277
-
1278
- 69
1279
- 70
1280
- 71
1281
- 72</pre>
1282
- </td>
1283
- <td>
1284
- <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 69</span>
1285
-
1286
- <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1287
- <span class='id identifier rubyid_warn'>warn</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Money.create is now deprecated. Use Money.from</span><span class='tstring_end'>&#39;</span></span>
1288
- <span class='id identifier rubyid_from'>from</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1289
- <span class='kw'>end</span></pre>
1290
- </td>
1291
- </tr>
1292
- </table>
1293
- </div>
1294
-
1295
- <div class="method_details ">
1296
- <h3 class="signature " id="from-class_method">
1297
-
1298
- .<strong>from</strong>(amount, currency) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1299
-
1300
-
1301
-
1302
-
1303
-
1304
- </h3><div class="docstring">
1305
- <div class="discussion">
1306
- <p>Creates a new Money immutable object with the specified amount and currency</p>
1307
-
1308
- </div>
1309
- </div>
1310
- <div class="tags">
1311
-
1312
- <div class="examples">
1313
- <h4 class="tag_title">Examples:</h4>
1314
-
1315
-
1316
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_from'>from</span><span class='lparen'>(</span><span class='int'>10</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 10.00]</span></code></pre>
1317
-
1318
- </div>
1319
- <p class="tag_title">Parameters:</p>
1320
- <ul class="param">
1321
-
1322
- <li>
1323
-
1324
- <span class='name'>amount</span>
1325
-
1326
-
1327
- <span class='type'>(<tt>Numeric</tt>)</span>
1328
-
1329
-
1330
-
1331
- &mdash;
1332
- <div class='inline'><p>The monetary amount</p></div>
1333
-
1334
- </li>
1335
-
1336
- <li>
1337
-
1338
- <span class='name'>currency</span>
1339
-
1340
-
1341
- <span class='type'>(<tt><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></tt>, <tt>String</tt>)</span>
1342
-
1343
-
1344
-
1345
- &mdash;
1346
- <div class='inline'><p>The currency code or currency object</p></div>
1347
-
1348
- </li>
1349
-
1350
- </ul>
1351
-
1352
- <p class="tag_title">Returns:</p>
1353
- <ul class="return">
1354
-
1355
- <li>
1356
-
1357
-
1358
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1359
-
1360
-
1361
-
1362
- &mdash;
1363
- <div class='inline'><p>the new Money instance</p></div>
1364
-
1365
- </li>
1366
-
1367
- </ul>
1368
- <p class="tag_title">Raises:</p>
1369
- <ul class="raise">
1370
-
1371
- <li>
1372
-
1373
-
1374
- <span class='type'>(<tt>ArgumentError</tt>)</span>
1375
-
1376
-
1377
-
1378
- &mdash;
1379
- <div class='inline'><p>If amount is not numeric or currency is invalid</p></div>
1380
-
1381
- </li>
1382
-
1383
- </ul>
1384
-
1385
- </div><table class="source_code">
1386
- <tr>
1387
- <td>
1388
- <pre class="lines">
1389
-
1390
-
1391
- 13
1392
- 14
1393
- 15
1394
- 16
1395
- 17
1396
- 18
1397
- 19
1398
- 20</pre>
1399
- </td>
1400
- <td>
1401
- <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 13</span>
1402
-
1403
- <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_from'>from</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1404
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>amount must be Numeric</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Numeric</span><span class='rparen'>)</span>
1405
-
1406
- <span class='id identifier rubyid_currency'>currency</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_resolve!'><span class='object_link'><a href="Currency.html#resolve!-class_method" title="Mint::Currency.resolve! (method)">resolve!</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1407
- <span class='id identifier rubyid_amount'>amount</span> <span class='op'>=</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_normalize_amount'>normalize_amount</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='rparen'>)</span>
1408
-
1409
- <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span> <span class='op'>?</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_zero'>zero</span> <span class='op'>:</span> <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1410
- <span class='kw'>end</span></pre>
1411
- </td>
1412
- </tr>
1413
- </table>
1414
- </div>
1415
-
1416
- <div class="method_details ">
1417
- <h3 class="signature " id="from_subunits-class_method">
1418
-
1419
- .<strong>from_subunits</strong>(subunits, currency) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1420
-
1421
-
1422
-
1423
-
1424
-
1425
- </h3><div class="docstring">
1426
- <div class="discussion">
1427
- <p>Builds a Money from a subunit (smallest-unit) Integer amount.
1428
- This is the inverse of <span class='object_link'><a href="#subunits-instance_method" title="Mint::Money#subunits (method)">#subunits</a></span>: for USD, the subunit is
1429
- 1 cent; for JPY it is 1 yen; for IQD it is 1 dinar (subunit 3).</p>
1430
-
1431
- </div>
1432
- </div>
1433
- <div class="tags">
1434
-
1435
- <div class="examples">
1436
- <h4 class="tag_title">Examples:</h4>
1437
-
1438
-
1439
- <h5 class="example_title"><div class='inline'><p>USD cents</p></div></h5>
1440
-
1441
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_from_subunits'>from_subunits</span><span class='lparen'>(</span><span class='int'>123_456</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 1234.56]</span></code></pre>
1442
-
1443
-
1444
- <h5 class="example_title"><div class='inline'><p>JPY (subunit 0)</p></div></h5>
1445
-
1446
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_from_subunits'>from_subunits</span><span class='lparen'>(</span><span class='int'>1234</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>JPY</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [JPY 1234]</span></code></pre>
1447
-
1448
-
1449
- <h5 class="example_title"><div class='inline'><p>Round trip</p></div></h5>
1450
-
1451
- <pre class="example code"><code><span class='id identifier rubyid_m'>m</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>9.99</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
1452
- <span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_from_subunits'>from_subunits</span><span class='lparen'>(</span><span class='id identifier rubyid_m'>m</span><span class='period'>.</span><span class='id identifier rubyid_subunits'>subunits</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='op'>==</span> <span class='id identifier rubyid_m'>m</span> <span class='comment'>#=&gt; true</span></code></pre>
1453
-
1454
- </div>
1455
- <p class="tag_title">Parameters:</p>
1456
- <ul class="param">
1457
-
1458
- <li>
1459
-
1460
- <span class='name'>subunits</span>
1461
-
1462
-
1463
- <span class='type'>(<tt>Integer</tt>)</span>
1464
-
1465
-
1466
-
1467
- &mdash;
1468
- <div class='inline'><p>the amount expressed in the currency's
1469
- smallest unit (e.g. cents). Must be an Integer to preserve exactness.</p></div>
1470
-
1471
- </li>
1472
-
1473
- <li>
1474
-
1475
- <span class='name'>currency</span>
1476
-
1477
-
1478
- <span class='type'>(<tt>String</tt>, <tt>Symbol</tt>, <tt><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></tt>)</span>
1479
-
1480
-
1481
-
1482
- &mdash;
1483
- <div class='inline'><p>the currency identifier</p></div>
1484
-
1485
- </li>
1486
-
1487
- </ul>
1488
-
1489
- <p class="tag_title">Returns:</p>
1490
- <ul class="return">
1491
-
1492
- <li>
1493
-
1494
-
1495
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1496
-
1497
-
1498
-
1499
- &mdash;
1500
- <div class='inline'><p>the resulting Money instance</p></div>
1501
-
1502
- </li>
1503
-
1504
- </ul>
1505
- <p class="tag_title">Raises:</p>
1506
- <ul class="raise">
1507
-
1508
- <li>
1509
-
1510
-
1511
- <span class='type'>(<tt>ArgumentError</tt>)</span>
1512
-
1513
-
1514
-
1515
- &mdash;
1516
- <div class='inline'><p>if <code>subunits</code> is not an Integer or <code>currency</code>
1517
- is not registered</p></div>
1518
-
1519
- </li>
1520
-
1521
- </ul>
1522
-
1523
- </div><table class="source_code">
1524
- <tr>
1525
- <td>
1526
- <pre class="lines">
1527
-
1528
-
1529
- 92
1530
- 93
1531
- 94
1532
- 95
1533
- 96
1534
- 97
1535
- 98</pre>
1536
- </td>
1537
- <td>
1538
- <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 92</span>
1539
-
1540
- <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_from_subunits'>from_subunits</span><span class='lparen'>(</span><span class='id identifier rubyid_subunits'>subunits</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1541
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>subunits must be an Integer</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_subunits'>subunits</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Integer</span><span class='rparen'>)</span>
1542
-
1543
- <span class='id identifier rubyid_currency'>currency</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_resolve!'><span class='object_link'><a href="Currency.html#resolve!-class_method" title="Mint::Currency.resolve! (method)">resolve!</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1544
- <span class='id identifier rubyid_amount'>amount</span> <span class='op'>=</span> <span class='const'>Rational</span><span class='lparen'>(</span><span class='id identifier rubyid_subunits'>subunits</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_fractional_multiplier'>fractional_multiplier</span><span class='rparen'>)</span>
1545
- <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span> <span class='op'>?</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_zero'>zero</span> <span class='op'>:</span> <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1546
- <span class='kw'>end</span></pre>
1547
- </td>
1548
- </tr>
1549
- </table>
1550
- </div>
1551
-
1552
- <div class="method_details ">
1553
- <h3 class="signature " id="no_currency-class_method">
1554
-
1555
- .<strong>no_currency</strong>(amount) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1556
-
1557
-
1558
-
1559
-
1560
-
1561
- </h3><div class="docstring">
1562
- <div class="discussion">
1563
- <p>Creates a new Money without a currency (ISO 4217 XXX — &quot;No Currency&quot;).</p>
1564
-
1565
- </div>
1566
- </div>
1567
- <div class="tags">
1568
-
1569
- <div class="examples">
1570
- <h4 class="tag_title">Examples:</h4>
1571
-
1572
-
1573
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_no_currency'>no_currency</span><span class='lparen'>(</span><span class='int'>100</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [XXX 100]</span></code></pre>
1574
-
1575
- </div>
1576
- <p class="tag_title">Parameters:</p>
1577
- <ul class="param">
1578
-
1579
- <li>
1580
-
1581
- <span class='name'>amount</span>
1582
-
1583
-
1584
- <span class='type'>(<tt>Numeric</tt>)</span>
1585
-
1586
-
1587
-
1588
- &mdash;
1589
- <div class='inline'><p>The monetary amount</p></div>
1590
-
1591
- </li>
1592
-
1593
- </ul>
1594
-
1595
- <p class="tag_title">Returns:</p>
1596
- <ul class="return">
1597
-
1598
- <li>
1599
-
1600
-
1601
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1602
-
1603
-
1604
-
1605
- &mdash;
1606
- <div class='inline'><p>a Money instance with the XXX currency</p></div>
1607
-
1608
- </li>
1609
-
1610
- </ul>
1611
- <p class="tag_title">Raises:</p>
1612
- <ul class="raise">
1613
-
1614
- <li>
1615
-
1616
-
1617
- <span class='type'>(<tt>ArgumentError</tt>)</span>
1618
-
1619
-
1620
-
1621
- &mdash;
1622
- <div class='inline'><p>If amount is not numeric</p></div>
1623
-
1624
- </li>
1625
-
1626
- </ul>
1627
-
1628
- </div><table class="source_code">
1629
- <tr>
1630
- <td>
1631
- <pre class="lines">
1632
-
1633
-
1634
- 29</pre>
1635
- </td>
1636
- <td>
1637
- <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 29</span>
1638
-
1639
- <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_no_currency'>no_currency</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='rparen'>)</span> <span class='op'>=</span> <span class='id identifier rubyid_from'>from</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>XXX</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span></pre>
1640
- </td>
1641
- </tr>
1642
- </table>
1643
- </div>
1644
-
1645
- <div class="method_details ">
1646
- <h3 class="signature " id="parse-class_method">
1647
-
1648
- .<strong>parse</strong>(input, currency = nil) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt><sup>?</sup>
1649
-
1650
-
1651
-
1652
-
1653
-
1654
- </h3><div class="docstring">
1655
- <div class="discussion">
1656
- <p>Parses a human-readable money string into a <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> object.</p>
1657
- <p>Returns <code>nil</code> when the input is invalid or currency cannot be determined.</p>
1658
-
1659
- </div>
1660
- </div>
1661
- <div class="tags">
1662
-
1663
- <div class="examples">
1664
- <h4 class="tag_title">Examples:</h4>
1665
-
1666
-
1667
- <h5 class="example_title"><div class='inline'><p>With explicit currency</p></div></h5>
1668
-
1669
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>19.99</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 19.99]
1670
- </span><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>garbage</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; nil</span></code></pre>
1671
-
1672
-
1673
- <h5 class="example_title"><div class='inline'><p>With symbol or code in the string</p></div></h5>
1674
-
1675
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>$19.99</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 19.99]
1676
- </span><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD 1,234.56</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 1234.56]</span></code></pre>
1677
-
1678
- </div>
1679
- <p class="tag_title">Parameters:</p>
1680
- <ul class="param">
1681
-
1682
- <li>
1683
-
1684
- <span class='name'>input</span>
1685
-
1686
-
1687
- <span class='type'>(<tt>String</tt>)</span>
1688
-
1689
-
1690
-
1691
- &mdash;
1692
- <div class='inline'><p>Amount input, optionally including a currency symbol or code</p></div>
1693
-
1694
- </li>
1695
-
1696
- <li>
1697
-
1698
- <span class='name'>currency</span>
1699
-
1700
-
1701
- <span class='type'>(<tt>String</tt>, <tt>Symbol</tt>, <tt><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></tt>, <tt>nil</tt>)</span>
1702
-
1703
-
1704
- <em class="default">(defaults to: <tt>nil</tt>)</em>
1705
-
1706
-
1707
- &mdash;
1708
- <div class='inline'><p>ISO code when not present in <code>input</code></p></div>
1709
-
1710
- </li>
1711
-
1712
- </ul>
1713
-
1714
- <p class="tag_title">Returns:</p>
1715
- <ul class="return">
1716
-
1717
- <li>
1718
-
1719
-
1720
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>nil</tt>)</span>
1721
-
1722
-
1723
-
1724
- </li>
1725
-
1726
- </ul>
1727
-
1728
- </div><table class="source_code">
1729
- <tr>
1730
- <td>
1731
- <pre class="lines">
1732
-
1733
-
1734
- 46</pre>
1735
- </td>
1736
- <td>
1737
- <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 46</span>
1738
-
1739
- <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'><span class='object_link'><a href="../Mint.html#parse-instance_method" title="Mint#parse (method)">parse</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span></pre>
1740
- </td>
1741
- </tr>
1742
- </table>
1743
- </div>
1744
-
1745
- <div class="method_details ">
1746
- <h3 class="signature " id="parse!-class_method">
1747
-
1748
- .<strong>parse!</strong>(input, currency = nil) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1749
-
1750
-
1751
-
1752
-
1753
-
1754
- </h3><div class="docstring">
1755
- <div class="discussion">
1756
- <p>Like <span class='object_link'><a href="#parse-class_method" title="Mint::Money.parse (method)">parse</a></span> but raises on failure.</p>
1757
-
1758
- </div>
1759
- </div>
1760
- <div class="tags">
1761
-
1762
- <div class="examples">
1763
- <h4 class="tag_title">Examples:</h4>
1764
-
1765
-
1766
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse!'>parse!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>19.99</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 19.99]
1767
- </span><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse!'>parse!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>garbage</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; ArgumentError</span></code></pre>
1768
-
1769
- </div>
1770
- <p class="tag_title">Parameters:</p>
1771
- <ul class="param">
1772
-
1773
- <li>
1774
-
1775
- <span class='name'>input</span>
1776
-
1777
-
1778
- <span class='type'>(<tt>String</tt>)</span>
1779
-
1780
-
1781
-
1782
- &mdash;
1783
- <div class='inline'><p>Amount input, optionally including a currency symbol or code</p></div>
1784
-
1785
- </li>
1786
-
1787
- <li>
1788
-
1789
- <span class='name'>currency</span>
1790
-
1791
-
1792
- <span class='type'>(<tt>String</tt>, <tt>Symbol</tt>, <tt><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></tt>, <tt>nil</tt>)</span>
1793
-
1794
-
1795
- <em class="default">(defaults to: <tt>nil</tt>)</em>
1796
-
1797
-
1798
- &mdash;
1799
- <div class='inline'><p>ISO code when not present in <code>input</code></p></div>
1800
-
1801
- </li>
1802
-
1803
- </ul>
1804
-
1805
- <p class="tag_title">Returns:</p>
1806
- <ul class="return">
1807
-
1808
- <li>
1809
-
1810
-
1811
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1812
-
1813
-
1814
-
1815
- </li>
1816
-
1817
- </ul>
1818
- <p class="tag_title">Raises:</p>
1819
- <ul class="raise">
1820
-
1821
- <li>
1822
-
1823
-
1824
- <span class='type'>(<tt>ArgumentError</tt>)</span>
1825
-
1826
-
1827
-
1828
- &mdash;
1829
- <div class='inline'><p>when <code>input</code> is invalid or currency cannot be determined</p></div>
1830
-
1831
- </li>
1832
-
1833
- </ul>
1834
-
1835
- </div><table class="source_code">
1836
- <tr>
1837
- <td>
1838
- <pre class="lines">
1839
-
1840
-
1841
- 58</pre>
1842
- </td>
1843
- <td>
1844
- <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 58</span>
1845
-
1846
- <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse!'>parse!</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse!'><span class='object_link'><a href="../Mint.html#parse!-instance_method" title="Mint#parse! (method)">parse!</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span></pre>
1847
- </td>
1848
- </tr>
1849
- </table>
1850
- </div>
1851
-
1852
- <div class="method_details ">
1853
- <h3 class="signature " id="zero-class_method">
1854
-
1855
- .<strong>zero</strong>(currency) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1856
-
1857
-
1858
-
1859
-
1860
-
1861
- </h3><div class="docstring">
1862
- <div class="discussion">
1863
- <p>Returns a frozen zero Money in the given currency.</p>
1864
-
1865
- </div>
1866
- </div>
1867
- <div class="tags">
1868
- <p class="tag_title">Parameters:</p>
1869
- <ul class="param">
1870
-
1871
- <li>
1872
-
1873
- <span class='name'>currency</span>
1874
-
1875
-
1876
- <span class='type'>(<tt>String</tt>, <tt><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></tt>)</span>
1877
-
1878
-
1879
-
1880
- &mdash;
1881
- <div class='inline'><p>a currency code or object</p></div>
1882
-
1883
- </li>
1884
-
1885
- </ul>
1886
-
1887
- <p class="tag_title">Returns:</p>
1888
- <ul class="return">
1889
-
1890
- <li>
1891
-
1892
-
1893
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1894
-
1895
-
1896
-
1897
- &mdash;
1898
- <div class='inline'><p>a frozen zero-Money</p></div>
1899
-
1900
- </li>
1901
-
1902
- </ul>
1903
- <p class="tag_title">Raises:</p>
1904
- <ul class="raise">
1905
-
1906
- <li>
1907
-
1908
-
1909
- <span class='type'>(<tt>ArgumentError</tt>)</span>
1910
-
1911
-
1912
-
1913
- &mdash;
1914
- <div class='inline'><p>if the currency can't be resolved</p></div>
1915
-
1916
- </li>
1917
-
1918
- </ul>
1919
-
1920
- </div><table class="source_code">
1921
- <tr>
1922
- <td>
1923
- <pre class="lines">
1924
-
1925
-
1926
- 65</pre>
1927
- </td>
1928
- <td>
1929
- <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 65</span>
1930
-
1931
- <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_zero'>zero</span><span class='lparen'>(</span><span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_resolve!'><span class='object_link'><a href="Currency.html#resolve!-class_method" title="Mint::Currency.resolve! (method)">resolve!</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_zero'><span class='object_link'><a href="Currency.html#zero-class_method" title="Mint::Currency.zero (method)">zero</a></span></span></pre>
1932
- </td>
1933
- </tr>
1934
- </table>
1935
- </div>
1936
-
1937
- </div>
1938
-
1939
- <div id="instance_method_details" class="method_details_list">
1940
- <h2>Instance Method Details</h2>
1941
-
1942
-
1943
- <div class="method_details first">
1944
- <h3 class="signature first" id="*-instance_method">
1945
-
1946
- #<strong>*</strong>(multiplicand) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1947
-
1948
-
1949
-
1950
-
1951
-
1952
- </h3><div class="docstring">
1953
- <div class="discussion">
1954
- <p>Performs multiplication of the monetary value by a standard scalar Numeric.</p>
1955
-
1956
- </div>
1957
- </div>
1958
- <div class="tags">
1959
- <p class="tag_title">Parameters:</p>
1960
- <ul class="param">
1961
-
1962
- <li>
1963
-
1964
- <span class='name'>multiplicand</span>
1965
-
1966
-
1967
- <span class='type'>(<tt>Numeric</tt>)</span>
1968
-
1969
-
1970
-
1971
- &mdash;
1972
- <div class='inline'><p>the scalar multiplier</p></div>
1973
-
1974
- </li>
1975
-
1976
- </ul>
1977
-
1978
- <p class="tag_title">Returns:</p>
1979
- <ul class="return">
1980
-
1981
- <li>
1982
-
1983
-
1984
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1985
-
1986
-
1987
-
1988
- &mdash;
1989
- <div class='inline'><p>the multiplied Money instance</p></div>
1990
-
1991
- </li>
1992
-
1993
- </ul>
1994
- <p class="tag_title">Raises:</p>
1995
- <ul class="raise">
1996
-
1997
- <li>
1998
-
1999
-
2000
- <span class='type'>(<tt>TypeError</tt>)</span>
2001
-
2002
-
2003
-
2004
- &mdash;
2005
- <div class='inline'><p>if multiplier is not Numeric or is a Money object</p></div>
2006
-
2007
- </li>
2008
-
2009
- </ul>
2010
-
2011
- </div><table class="source_code">
2012
- <tr>
2013
- <td>
2014
- <pre class="lines">
2015
-
2016
-
2017
- 42
2018
- 43
2019
- 44
2020
- 45
2021
- 46</pre>
2022
- </td>
2023
- <td>
2024
- <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics/operators.rb', line 42</span>
2025
-
2026
- <span class='kw'>def</span> <span class='op'>*</span><span class='lparen'>(</span><span class='id identifier rubyid_multiplicand'>multiplicand</span><span class='rparen'>)</span>
2027
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'> can&#39;t be multiplied by </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_multiplicand'>multiplicand</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_multiplicand'>multiplicand</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Numeric</span><span class='rparen'>)</span>
2028
-
2029
- <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>*</span> <span class='id identifier rubyid_multiplicand'>multiplicand</span><span class='rparen'>)</span>
2030
- <span class='kw'>end</span></pre>
2031
- </td>
2032
- </tr>
2033
- </table>
2034
- </div>
2035
-
2036
- <div class="method_details ">
2037
- <h3 class="signature " id="**-instance_method">
2038
-
2039
- #<strong>**</strong>(exponent) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2040
-
2041
-
2042
-
2043
-
2044
-
2045
- </h3><div class="docstring">
2046
- <div class="discussion">
2047
- <p>Performs exponentiation of the monetary value by a standard scalar Numeric.</p>
2048
-
2049
- </div>
2050
- </div>
2051
- <div class="tags">
2052
- <p class="tag_title">Parameters:</p>
2053
- <ul class="param">
2054
-
2055
- <li>
2056
-
2057
- <span class='name'>exponent</span>
2058
-
2059
-
2060
- <span class='type'>(<tt>Numeric</tt>)</span>
2061
-
2062
-
2063
-
2064
- </li>
2065
-
2066
- </ul>
2067
-
2068
- <p class="tag_title">Returns:</p>
2069
- <ul class="return">
2070
-
2071
- <li>
2072
-
2073
-
2074
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2075
-
2076
-
2077
-
2078
- &mdash;
2079
- <div class='inline'><p>reult of amount ** exponent</p></div>
2080
-
2081
- </li>
2082
-
2083
- </ul>
2084
- <p class="tag_title">Raises:</p>
2085
- <ul class="raise">
2086
-
2087
- <li>
2088
-
2089
-
2090
- <span class='type'>(<tt>TypeError</tt>)</span>
2091
-
2092
-
2093
-
2094
- &mdash;
2095
- <div class='inline'><p>if exponent is not Numeric</p></div>
2096
-
2097
- </li>
2098
-
2099
- </ul>
2100
-
2101
- </div><table class="source_code">
2102
- <tr>
2103
- <td>
2104
- <pre class="lines">
2105
-
2106
-
2107
- 67
2108
- 68
2109
- 69
2110
- 70
2111
- 71</pre>
2112
- </td>
2113
- <td>
2114
- <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics/operators.rb', line 67</span>
2115
-
2116
- <span class='kw'>def</span> <span class='op'>**</span><span class='lparen'>(</span><span class='id identifier rubyid_exponent'>exponent</span><span class='rparen'>)</span>
2117
- <span class='kw'>return</span> <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='id identifier rubyid_amount'>amount</span><span class='op'>**</span><span class='id identifier rubyid_exponent'>exponent</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_exponent'>exponent</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Numeric</span><span class='rparen'>)</span>
2118
-
2119
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'> can&#39;t be powered by </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_exponent'>exponent</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
2120
- <span class='kw'>end</span></pre>
2121
- </td>
2122
- </tr>
2123
- </table>
2124
- </div>
2125
-
2126
- <div class="method_details ">
2127
- <h3 class="signature " id="+-instance_method">
2128
-
2129
- #<strong>+</strong>(addend) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2130
-
2131
-
2132
-
2133
-
2134
-
2135
- </h3><div class="docstring">
2136
- <div class="discussion">
2137
- <p>Performs addition with another <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> instance or standard zero Numeric.</p>
2138
-
2139
- </div>
2140
- </div>
2141
- <div class="tags">
2142
- <p class="tag_title">Parameters:</p>
2143
- <ul class="param">
2144
-
2145
- <li>
2146
-
2147
- <span class='name'>addend</span>
2148
-
2149
-
2150
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>)</span>
2151
-
2152
-
2153
-
2154
- &mdash;
2155
- <div class='inline'><p>the value to add</p></div>
2156
-
2157
- </li>
2158
-
2159
- </ul>
2160
-
2161
- <p class="tag_title">Returns:</p>
2162
- <ul class="return">
2163
-
2164
- <li>
2165
-
2166
-
2167
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2168
-
2169
-
2170
-
2171
- &mdash;
2172
- <div class='inline'><p>the sum of the addition</p></div>
2173
-
2174
- </li>
2175
-
2176
- </ul>
2177
- <p class="tag_title">Raises:</p>
2178
- <ul class="raise">
2179
-
2180
- <li>
2181
-
2182
-
2183
- <span class='type'>(<tt>TypeError</tt>)</span>
2184
-
2185
-
2186
-
2187
- &mdash;
2188
- <div class='inline'><p>if addition involves a different currency or incompatible types</p></div>
2189
-
2190
- </li>
2191
-
2192
- </ul>
2193
-
2194
- </div><table class="source_code">
2195
- <tr>
2196
- <td>
2197
- <pre class="lines">
2198
-
2199
-
2200
- 11
2201
- 12
2202
- 13
2203
- 14
2204
- 15
2205
- 16
2206
- 17</pre>
2207
- </td>
2208
- <td>
2209
- <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics/operators.rb', line 11</span>
2210
-
2211
- <span class='kw'>def</span> <span class='op'>+</span><span class='lparen'>(</span><span class='id identifier rubyid_addend'>addend</span><span class='rparen'>)</span>
2212
- <span class='kw'>case</span> <span class='id identifier rubyid_addend'>addend</span>
2213
- <span class='kw'>in</span> <span class='int'>0</span> <span class='kw'>then</span> <span class='kw'>self</span>
2214
- <span class='kw'>in</span> <span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span> <span class='kw'>if</span> <span class='id identifier rubyid_same_currency?'>same_currency?</span><span class='lparen'>(</span><span class='id identifier rubyid_addend'>addend</span><span class='rparen'>)</span> <span class='kw'>then</span> <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>+</span> <span class='id identifier rubyid_addend'>addend</span><span class='period'>.</span><span class='id identifier rubyid_amount'>amount</span><span class='rparen'>)</span>
2215
- <span class='kw'>else</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_addend'>addend</span><span class='embexpr_end'>}</span><span class='tstring_content'> can&#39;t be added to </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
2216
- <span class='kw'>end</span>
2217
- <span class='kw'>end</span></pre>
2218
- </td>
2219
- </tr>
2220
- </table>
2221
- </div>
2222
-
2223
- <div class="method_details ">
2224
- <h3 class="signature " id="--instance_method">
2225
-
2226
- #<strong>-</strong>(subtrahend) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2227
-
2228
-
2229
-
2230
-
2231
-
2232
- </h3><div class="docstring">
2233
- <div class="discussion">
2234
- <p>Performs subtraction with another <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> instance or standard zero Numeric.</p>
2235
-
2236
- </div>
2237
- </div>
2238
- <div class="tags">
2239
- <p class="tag_title">Parameters:</p>
2240
- <ul class="param">
2241
-
2242
- <li>
2243
-
2244
- <span class='name'>subtrahend</span>
2245
-
2246
-
2247
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>)</span>
2248
-
2249
-
2250
-
2251
- &mdash;
2252
- <div class='inline'><p>the value to subtract</p></div>
2253
-
2254
- </li>
2255
-
2256
- </ul>
2257
-
2258
- <p class="tag_title">Returns:</p>
2259
- <ul class="return">
2260
-
2261
- <li>
2262
-
2263
-
2264
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2265
-
2266
-
2267
-
2268
- &mdash;
2269
- <div class='inline'><p>the difference of the subtraction</p></div>
2270
-
2271
- </li>
2272
-
2273
- </ul>
2274
- <p class="tag_title">Raises:</p>
2275
- <ul class="raise">
2276
-
2277
- <li>
2278
-
2279
-
2280
- <span class='type'>(<tt>TypeError</tt>)</span>
2281
-
2282
-
2283
-
2284
- &mdash;
2285
- <div class='inline'><p>if subtraction involves a different currency or incompatible types</p></div>
2286
-
2287
- </li>
2288
-
2289
- </ul>
2290
-
2291
- </div><table class="source_code">
2292
- <tr>
2293
- <td>
2294
- <pre class="lines">
2295
-
2296
-
2297
- 24
2298
- 25
2299
- 26
2300
- 27
2301
- 28
2302
- 29
2303
- 30</pre>
2304
- </td>
2305
- <td>
2306
- <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics/operators.rb', line 24</span>
2307
-
2308
- <span class='kw'>def</span> <span class='op'>-</span><span class='lparen'>(</span><span class='id identifier rubyid_subtrahend'>subtrahend</span><span class='rparen'>)</span>
2309
- <span class='kw'>case</span> <span class='id identifier rubyid_subtrahend'>subtrahend</span>
2310
- <span class='kw'>when</span> <span class='int'>0</span> <span class='kw'>then</span> <span class='kw'>return</span> <span class='kw'>self</span>
2311
- <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span> <span class='kw'>then</span> <span class='kw'>return</span> <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>-</span> <span class='id identifier rubyid_subtrahend'>subtrahend</span><span class='period'>.</span><span class='id identifier rubyid_amount'>amount</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_same_currency?'>same_currency?</span><span class='lparen'>(</span><span class='id identifier rubyid_subtrahend'>subtrahend</span><span class='rparen'>)</span>
2312
- <span class='kw'>end</span>
2313
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subtrahend'>subtrahend</span><span class='embexpr_end'>}</span><span class='tstring_content'> can&#39;t be subtracted from </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
2314
- <span class='kw'>end</span></pre>
2315
- </td>
2316
- </tr>
2317
- </table>
2318
- </div>
2319
-
2320
- <div class="method_details ">
2321
- <h3 class="signature " id="-@-instance_method">
2322
-
2323
- #<strong>-@</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2324
-
2325
-
2326
-
2327
-
2328
-
2329
- </h3><div class="docstring">
2330
- <div class="discussion">
2331
- <p>Unary negation operator. Returns a new <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> instance with the inverted sign.</p>
2332
-
2333
- </div>
2334
- </div>
2335
- <div class="tags">
2336
-
2337
- <p class="tag_title">Returns:</p>
2338
- <ul class="return">
2339
-
2340
- <li>
2341
-
2342
-
2343
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2344
-
2345
-
2346
-
2347
- &mdash;
2348
- <div class='inline'><p>negated Money instance</p></div>
2349
-
2350
- </li>
2351
-
2352
- </ul>
2353
-
2354
- </div><table class="source_code">
2355
- <tr>
2356
- <td>
2357
- <pre class="lines">
2358
-
2359
-
2360
- 35</pre>
2361
- </td>
2362
- <td>
2363
- <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics/operators.rb', line 35</span>
2364
-
2365
- <span class='kw'>def</span> <span class='op'>-@</span> <span class='op'>=</span> <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='op'>-</span><span class='id identifier rubyid_amount'>amount</span><span class='rparen'>)</span></pre>
2366
- </td>
2367
- </tr>
2368
- </table>
2369
- </div>
2370
-
2371
- <div class="method_details ">
2372
- <h3 class="signature " id="/-instance_method">
2373
-
2374
- #<strong>/</strong>(divisor) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>
2375
-
2376
-
2377
-
2378
-
2379
-
2380
- </h3><div class="docstring">
2381
- <div class="discussion">
2382
- <p>Performs division of the monetary value by a scalar Numeric or identical currency <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span>.</p>
2383
-
2384
- </div>
2385
- </div>
2386
- <div class="tags">
2387
- <p class="tag_title">Parameters:</p>
2388
- <ul class="param">
2389
-
2390
- <li>
2391
-
2392
- <span class='name'>divisor</span>
2393
-
2394
-
2395
- <span class='type'>(<tt>Numeric</tt>, <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2396
-
2397
-
2398
-
2399
- &mdash;
2400
- <div class='inline'><p>the divisor</p></div>
2401
-
2402
- </li>
2403
-
2404
- </ul>
2405
-
2406
- <p class="tag_title">Returns:</p>
2407
- <ul class="return">
2408
-
2409
- <li>
2410
-
2411
-
2412
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>)</span>
2413
-
2414
-
2415
-
2416
- &mdash;
2417
- <div class='inline'><p>a new Money (scalar division) or a numeric ratio (Money division)</p></div>
2418
-
2419
- </li>
2420
-
2421
- </ul>
2422
- <p class="tag_title">Raises:</p>
2423
- <ul class="raise">
2424
-
2425
- <li>
2426
-
2427
-
2428
- <span class='type'>(<tt>TypeError</tt>)</span>
2429
-
2430
-
2431
-
2432
- &mdash;
2433
- <div class='inline'><p>if divisor is of incompatible type or different currency</p></div>
2434
-
2435
- </li>
2436
-
2437
- <li>
2438
-
2439
-
2440
- <span class='type'>(<tt>ZeroDivisionError</tt>)</span>
2441
-
2442
-
2443
-
2444
- &mdash;
2445
- <div class='inline'><p>if division by zero is attempted</p></div>
2446
-
2447
- </li>
2448
-
2449
- </ul>
2450
-
2451
- </div><table class="source_code">
2452
- <tr>
2453
- <td>
2454
- <pre class="lines">
2455
-
2456
-
2457
- 54
2458
- 55
2459
- 56
2460
- 57
2461
- 58
2462
- 59
2463
- 60</pre>
2464
- </td>
2465
- <td>
2466
- <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics/operators.rb', line 54</span>
2467
-
2468
- <span class='kw'>def</span> <span class='op'>/</span><span class='lparen'>(</span><span class='id identifier rubyid_divisor'>divisor</span><span class='rparen'>)</span>
2469
- <span class='kw'>case</span> <span class='id identifier rubyid_divisor'>divisor</span>
2470
- <span class='kw'>when</span> <span class='const'>Numeric</span> <span class='kw'>then</span> <span class='kw'>return</span> <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>/</span> <span class='id identifier rubyid_divisor'>divisor</span><span class='rparen'>)</span>
2471
- <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span> <span class='kw'>then</span> <span class='kw'>return</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>/</span> <span class='id identifier rubyid_divisor'>divisor</span><span class='period'>.</span><span class='id identifier rubyid_amount'>amount</span> <span class='kw'>if</span> <span class='id identifier rubyid_same_currency?'>same_currency?</span> <span class='id identifier rubyid_divisor'>divisor</span>
2472
- <span class='kw'>end</span>
2473
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'> can&#39;t be divided by </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_divisor'>divisor</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
2474
- <span class='kw'>end</span></pre>
2475
- </td>
2476
- </tr>
2477
- </table>
2478
- </div>
2479
-
2480
- <div class="method_details ">
2481
- <h3 class="signature " id="<=>-instance_method">
2482
-
2483
- #<strong>&lt;=&gt;</strong>(other) &#x21d2; <tt>Object</tt>
2484
-
2485
-
2486
-
2487
-
2488
-
2489
- </h3><div class="docstring">
2490
- <div class="discussion">
2491
-
2492
-
2493
- </div>
2494
- </div>
2495
- <div class="tags">
2496
-
2497
- <div class="examples">
2498
- <h4 class="tag_title">Examples:</h4>
2499
-
2500
-
2501
- <pre class="example code"><code>two_usd == Mint.money(2r, &#39;USD&#39;) #=&gt; [$ 2.00]
2502
- two_usd &gt; 0 #=&gt; true
2503
- two_usd &gt; Mint.money(2, &#39;USD&#39;) #=&gt; false
2504
- two_usd &gt; 1
2505
- =&gt; TypeError: [$ 2.00] can&#39;t be compared to 1
2506
- two_usd &gt; Mint.money(2, &#39;BRL&#39;)
2507
- =&gt; TypeError: [$ 2.00] can&#39;t be compared to [R$ 2.00]</code></pre>
2508
-
2509
- </div>
2510
-
2511
-
2512
- </div><table class="source_code">
2513
- <tr>
2514
- <td>
2515
- <pre class="lines">
2516
-
2517
-
2518
- 36
2519
- 37
2520
- 38
2521
- 39
2522
- 40
2523
- 41
2524
- 42</pre>
2525
- </td>
2526
- <td>
2527
- <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 36</span>
2528
-
2529
- <span class='kw'>def</span> <span class='op'>&lt;=&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
2530
- <span class='kw'>case</span> <span class='id identifier rubyid_other'>other</span>
2531
- <span class='kw'>in</span> <span class='int'>0</span> <span class='kw'>then</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>&lt;=&gt;</span> <span class='id identifier rubyid_other'>other</span>
2532
- <span class='kw'>in</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span> <span class='kw'>if</span> <span class='id identifier rubyid_same_currency?'>same_currency?</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span> <span class='kw'>then</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>&lt;=&gt;</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_amount'>amount</span>
2533
- <span class='kw'>else</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> can&#39;t be compared to </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
2534
- <span class='kw'>end</span>
2535
- <span class='kw'>end</span></pre>
2536
- </td>
2537
- </tr>
2538
- </table>
2539
- </div>
2540
-
2541
- <div class="method_details ">
2542
- <h3 class="signature " id="==-instance_method">
2543
-
2544
- #<strong>==</strong>(other) &#x21d2; <tt>Object</tt>
2545
-
2546
-
2547
-
2548
-
2549
-
2550
- </h3><div class="docstring">
2551
- <div class="discussion">
2552
- <p>Returns true if both are zero, or both have same amount and same currency.</p>
2553
-
2554
- </div>
2555
- </div>
2556
- <div class="tags">
2557
-
2558
- <p class="tag_title">Returns:</p>
2559
- <ul class="return">
2560
-
2561
- <li>
2562
-
2563
-
2564
- <span class='type'></span>
2565
-
2566
-
2567
-
2568
-
2569
- <div class='inline'><p>true if both are zero, or both have same amount and same currency</p></div>
2570
-
2571
- </li>
2572
-
2573
- </ul>
2574
-
2575
- </div><table class="source_code">
2576
- <tr>
2577
- <td>
2578
- <pre class="lines">
2579
-
2580
-
2581
- 9
2582
- 10
2583
- 11
2584
- 12
2585
- 13
2586
- 14
2587
- 15</pre>
2588
- </td>
2589
- <td>
2590
- <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 9</span>
2591
-
2592
- <span class='kw'>def</span> <span class='op'>==</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
2593
- <span class='kw'>case</span> <span class='id identifier rubyid_other'>other</span>
2594
- <span class='kw'>when</span> <span class='int'>0</span> <span class='kw'>then</span> <span class='id identifier rubyid_zero?'>zero?</span>
2595
- <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span> <span class='kw'>then</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>==</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_amount'>amount</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_currency'>currency</span> <span class='op'>==</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_currency'>currency</span>
2596
- <span class='kw'>else</span> <span class='kw'>false</span>
2597
- <span class='kw'>end</span>
2598
- <span class='kw'>end</span></pre>
2599
- </td>
2600
- </tr>
2601
- </table>
2602
- </div>
2603
-
2604
- <div class="method_details ">
2605
- <h3 class="signature " id="abs-instance_method">
2606
-
2607
- #<strong>abs</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2608
-
2609
-
2610
-
2611
-
2612
-
2613
- </h3><div class="docstring">
2614
- <div class="discussion">
2615
- <p>Returns the absolute value of the monetary amount as a new <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> instance.</p>
2616
-
2617
- </div>
2618
- </div>
2619
- <div class="tags">
2620
-
2621
- <p class="tag_title">Returns:</p>
2622
- <ul class="return">
2623
-
2624
- <li>
2625
-
2626
-
2627
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2628
-
2629
-
2630
-
2631
- &mdash;
2632
- <div class='inline'><p>the absolute value</p></div>
2633
-
2634
- </li>
2635
-
2636
- </ul>
2637
-
2638
- </div><table class="source_code">
2639
- <tr>
2640
- <td>
2641
- <pre class="lines">
2642
-
2643
-
2644
- 9</pre>
2645
- </td>
2646
- <td>
2647
- <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics/methods.rb', line 9</span>
2648
-
2649
- <span class='kw'>def</span> <span class='id identifier rubyid_abs'>abs</span> <span class='op'>=</span> <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_abs'>abs</span><span class='rparen'>)</span></pre>
2650
- </td>
2651
- </tr>
2652
- </table>
2653
- </div>
2654
-
2655
- <div class="method_details ">
2656
- <h3 class="signature " id="allocate-instance_method">
2657
-
2658
- #<strong>allocate</strong>(proportions) &#x21d2; <tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>
2659
-
2660
-
2661
-
2662
-
2663
-
2664
- </h3><div class="docstring">
2665
- <div class="discussion">
2666
- <p>Proportionally allocates the monetary amount among a list of ratios.
2667
- Disperses any subunit rounding amounts across the initial slots</p>
2668
-
2669
- </div>
2670
- </div>
2671
- <div class="tags">
2672
-
2673
- <div class="examples">
2674
- <h4 class="tag_title">Examples:</h4>
2675
-
2676
-
2677
- <h5 class="example_title"><div class='inline'><p>Proportional allocation</p></div></h5>
2678
-
2679
- <pre class="example code"><code><span class='id identifier rubyid_money'>money</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>10.00</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
2680
- <span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_allocate'>allocate</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span> <span class='int'>2</span><span class='comma'>,</span> <span class='int'>3</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [[USD 1.67], [USD 3.33], [USD 5.00]]</span></code></pre>
2681
-
2682
- </div>
2683
- <p class="tag_title">Parameters:</p>
2684
- <ul class="param">
2685
-
2686
- <li>
2687
-
2688
- <span class='name'>proportions</span>
2689
-
2690
-
2691
- <span class='type'>(<tt>Array&lt;Numeric&gt;</tt>)</span>
2692
-
2693
-
2694
-
2695
- &mdash;
2696
- <div class='inline'><p>a list of numeric proportions/ratios to allocate by</p></div>
2697
-
2698
- </li>
2699
-
2700
- </ul>
2701
-
2702
- <p class="tag_title">Returns:</p>
2703
- <ul class="return">
2704
-
2705
- <li>
2706
-
2707
-
2708
- <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>)</span>
2709
-
2710
-
2711
-
2712
- &mdash;
2713
- <div class='inline'><p>the list of newly allocated Money objects</p></div>
2714
-
2715
- </li>
2716
-
2717
- </ul>
2718
- <p class="tag_title">Raises:</p>
2719
- <ul class="raise">
2720
-
2721
- <li>
2722
-
2723
-
2724
- <span class='type'>(<tt>ArgumentError</tt>)</span>
2725
-
2726
-
2727
-
2728
- &mdash;
2729
- <div class='inline'><p>if the proportions list is empty or sums to zero</p></div>
2730
-
2731
- </li>
2732
-
2733
- </ul>
2734
-
2735
- </div><table class="source_code">
2736
- <tr>
2737
- <td>
2738
- <pre class="lines">
2739
-
2740
-
2741
- 15
2742
- 16
2743
- 17
2744
- 18
2745
- 19
2746
- 20
2747
- 21
2748
- 22</pre>
2749
- </td>
2750
- <td>
2751
- <pre class="code"><span class="info file"># File 'lib/minting/money/allocation/allocation.rb', line 15</span>
2752
-
2753
- <span class='kw'>def</span> <span class='id identifier rubyid_allocate'>allocate</span><span class='lparen'>(</span><span class='id identifier rubyid_proportions'>proportions</span><span class='rparen'>)</span>
2754
- <span class='id identifier rubyid_whole'>whole</span> <span class='op'>=</span> <span class='id identifier rubyid_proportions'>proportions</span><span class='period'>.</span><span class='id identifier rubyid_sum'>sum</span><span class='period'>.</span><span class='id identifier rubyid_to_r'>to_r</span>
2755
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Need at least 1 proportion element</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_proportions'>proportions</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
2756
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Proportions total must not be zero</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_whole'>whole</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
2757
-
2758
- <span class='id identifier rubyid_amounts'>amounts</span> <span class='op'>=</span> <span class='id identifier rubyid_proportions'>proportions</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rate'>rate</span><span class='op'>|</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_normalize_amount'>normalize_amount</span><span class='lparen'>(</span><span class='const'>Rational</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span> <span class='op'>*</span> <span class='id identifier rubyid_rate'>rate</span><span class='comma'>,</span> <span class='id identifier rubyid_whole'>whole</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
2759
- <span class='id identifier rubyid_allocate_left_over'>allocate_left_over</span><span class='lparen'>(</span><span class='label'>amounts:</span> <span class='id identifier rubyid_amounts'>amounts</span><span class='comma'>,</span> <span class='label'>left_over:</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>-</span> <span class='id identifier rubyid_amounts'>amounts</span><span class='period'>.</span><span class='id identifier rubyid_sum'>sum</span><span class='rparen'>)</span>
2760
- <span class='kw'>end</span></pre>
2761
- </td>
2762
- </tr>
2763
- </table>
2764
- </div>
2765
-
2766
- <div class="method_details ">
2767
- <h3 class="signature " id="clamp-instance_method">
2768
-
2769
- #<strong>clamp</strong>(min_or_range, max = nil) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2770
-
2771
-
2772
-
2773
-
2774
-
2775
- </h3><div class="docstring">
2776
- <div class="discussion">
2777
- <p>Constrains <code>self</code> to the inclusive range [+min+, +max+].</p>
2778
- <p>Bounds may be:</p>
2779
- <ul>
2780
- <li>nil meaning no boundary</li>
2781
- <li>same-currency <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> or Range</li>
2782
- <li>Numeric amount, or Range</li>
2783
- </ul>
2784
- <p>Numeric is interpreted as an amount in +self+'s currency, so the common
2785
- pricing idiom <code>price.clamp(0, 100)</code> reads as &quot;0 to 100 in the same
2786
- currency as +price+&quot;.</p>
2787
- <p>When <code>self</code> is already in range the receiver is returned (no new object
2788
- allocated). When out of range, the nearest bound is returned as a new
2789
- frozen <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> in +self+'s currency.</p>
2790
-
2791
- </div>
2792
- </div>
2793
- <div class="tags">
2794
-
2795
- <div class="examples">
2796
- <h4 class="tag_title">Examples:</h4>
2797
-
2798
-
2799
- <h5 class="example_title"><div class='inline'><p>In range</p></div></h5>
2800
-
2801
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>5</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_clamp'>clamp</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='int'>10</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 5.00] (returns self)</span></code></pre>
2802
-
2803
-
2804
- <h5 class="example_title"><div class='inline'><p>Out of range, with Numeric bounds</p></div></h5>
2805
-
2806
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>50</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_clamp'>clamp</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='int'>10</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 10.00]</span></code></pre>
2807
-
2808
-
2809
- <h5 class="example_title"><div class='inline'><p>Out of range, with Money bounds</p></div></h5>
2810
-
2811
- <pre class="example code"><code><span class='id identifier rubyid_loss'>loss</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='op'>-</span><span class='int'>5</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
2812
- <span class='id identifier rubyid_floor'>floor</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
2813
- <span class='id identifier rubyid_ceil'>ceil</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>10</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
2814
- <span class='id identifier rubyid_loss'>loss</span><span class='period'>.</span><span class='id identifier rubyid_clamp'>clamp</span><span class='lparen'>(</span><span class='id identifier rubyid_floor'>floor</span><span class='comma'>,</span> <span class='id identifier rubyid_ceil'>ceil</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 0.00]</span></code></pre>
2815
-
2816
-
2817
- <h5 class="example_title"><div class='inline'><p>Subunit-0 currency (JPY)</p></div></h5>
2818
-
2819
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>500</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>JPY</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_clamp'>clamp</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='int'>100</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [JPY 100]</span></code></pre>
2820
-
2821
- </div>
2822
- <p class="tag_title">Parameters:</p>
2823
- <ul class="param">
2824
-
2825
- <li>
2826
-
2827
- <span class='name'>min_or_range</span>
2828
-
2829
-
2830
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>, <tt>Range</tt>, <tt>nil</tt>)</span>
2831
-
2832
-
2833
-
2834
- &mdash;
2835
- <div class='inline'><p>lower bound (inclusive), or range</p></div>
2836
-
2837
- </li>
2838
-
2839
- <li>
2840
-
2841
- <span class='name'>max</span>
2842
-
2843
-
2844
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>, <tt>nil</tt>)</span>
2845
-
2846
-
2847
- <em class="default">(defaults to: <tt>nil</tt>)</em>
2848
-
2849
-
2850
- &mdash;
2851
- <div class='inline'><p>upper bound (inclusive)</p></div>
2852
-
2853
- </li>
2854
-
2855
- </ul>
2856
-
2857
- <p class="tag_title">Returns:</p>
2858
- <ul class="return">
2859
-
2860
- <li>
2861
-
2862
-
2863
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2864
-
2865
-
2866
-
2867
- &mdash;
2868
- <div class='inline'><p><code>self</code> if in range, otherwise the nearer bound</p></div>
2869
-
2870
- </li>
2871
-
2872
- </ul>
2873
- <p class="tag_title">Raises:</p>
2874
- <ul class="raise">
2875
-
2876
- <li>
2877
-
2878
-
2879
- <span class='type'>(<tt>ArgumentError</tt>)</span>
2880
-
2881
-
2882
-
2883
- &mdash;
2884
- <div class='inline'><p>if <code>min</code> or <code>max</code> is not a Money, Numeric or nil; if
2885
- a Money operand has a different currency; if <code>min</code> &gt; <code>max</code>;
2886
- if min is a Range, and max is not nil</p></div>
2887
-
2888
- </li>
2889
-
2890
- </ul>
2891
-
2892
- </div><table class="source_code">
2893
- <tr>
2894
- <td>
2895
- <pre class="lines">
2896
-
2897
-
2898
- 42
2899
- 43
2900
- 44
2901
- 45
2902
- 46
2903
- 47
2904
- 48
2905
- 49
2906
- 50
2907
- 51</pre>
2908
- </td>
2909
- <td>
2910
- <pre class="code"><span class="info file"># File 'lib/minting/money/clamp.rb', line 42</span>
2911
-
2912
- <span class='kw'>def</span> <span class='id identifier rubyid_clamp'>clamp</span><span class='lparen'>(</span><span class='id identifier rubyid_min_or_range'>min_or_range</span><span class='comma'>,</span> <span class='id identifier rubyid_max'>max</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
2913
- <span class='kw'>if</span> <span class='id identifier rubyid_min_or_range'>min_or_range</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Range</span><span class='rparen'>)</span>
2914
- <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Either amount range alone or two amounts accepted: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_max'>max</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_max'>max</span>
2915
-
2916
- <span class='id identifier rubyid_min'>min</span><span class='comma'>,</span> <span class='id identifier rubyid_max'>max</span> <span class='op'>=</span> <span class='id identifier rubyid_min_or_range'>min_or_range</span><span class='period'>.</span><span class='id identifier rubyid_minmax'>minmax</span>
2917
- <span class='kw'>else</span>
2918
- <span class='id identifier rubyid_min'>min</span> <span class='op'>=</span> <span class='id identifier rubyid_min_or_range'>min_or_range</span>
2919
- <span class='kw'>end</span>
2920
- <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_clamp'>clamp</span><span class='lparen'>(</span><span class='id identifier rubyid_normalize_boundary'>normalize_boundary</span><span class='lparen'>(</span><span class='id identifier rubyid_min'>min</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_normalize_boundary'>normalize_boundary</span><span class='lparen'>(</span><span class='id identifier rubyid_max'>max</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
2921
- <span class='kw'>end</span></pre>
2922
- </td>
2923
- </tr>
2924
- </table>
2925
- </div>
2926
-
2927
- <div class="method_details ">
2928
- <h3 class="signature " id="coerce-instance_method">
2929
-
2930
- #<strong>coerce</strong>(other) &#x21d2; <tt>Array(<span class='object_link'>CoercedNumber</span>, <span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>)</tt>
2931
-
2932
-
2933
-
2934
-
2935
-
2936
- </h3><div class="docstring">
2937
- <div class="discussion">
2938
- <p class="note private">
2939
- <strong>This method is part of a private API.</strong>
2940
- You should avoid using this method if possible, as it may be removed or be changed in the future.
2941
- </p>
2942
- <p>Allows <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> to interact seamlessly as the right-hand operand in Numeric arithmetic.
2943
- This enables expressions like <code>5 * money</code> where <code>5</code> is a Numeric and <code>money</code> is a Money object.</p>
2944
-
2945
- </div>
2946
- </div>
2947
- <div class="tags">
2948
-
2949
- <div class="examples">
2950
- <h4 class="tag_title">Examples:</h4>
2951
-
2952
-
2953
- <pre class="example code"><code><span class='id identifier rubyid_price'>price</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>10</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
2954
- <span class='int'>5</span> <span class='op'>*</span> <span class='id identifier rubyid_price'>price</span> <span class='comment'>#=&gt; [USD 50.00] (via coercion)</span></code></pre>
2955
-
2956
- </div>
2957
- <p class="tag_title">Parameters:</p>
2958
- <ul class="param">
2959
-
2960
- <li>
2961
-
2962
- <span class='name'>other</span>
2963
-
2964
-
2965
- <span class='type'>(<tt>Numeric</tt>)</span>
2966
-
2967
-
2968
-
2969
- &mdash;
2970
- <div class='inline'><p>the left-hand operand to coerce</p></div>
2971
-
2972
- </li>
2973
-
2974
- </ul>
2975
-
2976
- <p class="tag_title">Returns:</p>
2977
- <ul class="return">
2978
-
2979
- <li>
2980
-
2981
-
2982
- <span class='type'>(<tt>Array(<span class='object_link'>CoercedNumber</span>, <span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>)</tt>)</span>
2983
-
2984
-
2985
-
2986
- &mdash;
2987
- <div class='inline'><p>coerced operand array</p></div>
2988
-
2989
- </li>
2990
-
2991
- </ul>
2992
-
2993
- </div><table class="source_code">
2994
- <tr>
2995
- <td>
2996
- <pre class="lines">
2997
-
2998
-
2999
- 14
3000
- 15
3001
- 16</pre>
3002
- </td>
3003
- <td>
3004
- <pre class="code"><span class="info file"># File 'lib/minting/money/coercion.rb', line 14</span>
3005
-
3006
- <span class='kw'>def</span> <span class='id identifier rubyid_coerce'>coerce</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
3007
- <span class='lbracket'>[</span><span class='const'>CoercedNumber</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rbracket'>]</span>
3008
- <span class='kw'>end</span></pre>
3009
- </td>
3010
- </tr>
3011
- </table>
3012
- </div>
3013
-
3014
- <div class="method_details ">
3015
- <h3 class="signature " id="copy_with-instance_method">
3016
-
3017
- #<strong>copy_with</strong>(amount:) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
3018
-
3019
-
3020
-
3021
-
3022
-
3023
- </h3><div class="docstring">
3024
- <div class="discussion">
3025
- <p>Returns a new Money object with the specified amount, or self if unchanged.
3026
- This is the primary method for creating a modified copy of a Money instance
3027
- while preserving immutability.</p>
3028
-
3029
- </div>
3030
- </div>
3031
- <div class="tags">
3032
-
3033
- <div class="examples">
3034
- <h4 class="tag_title">Examples:</h4>
3035
-
3036
-
3037
- <pre class="example code"><code><span class='id identifier rubyid_price'>price</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>10.00</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
3038
- <span class='id identifier rubyid_price'>price</span><span class='period'>.</span><span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='float'>15.00</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 15.00]
3039
- </span><span class='id identifier rubyid_price'>price</span><span class='period'>.</span><span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='float'>10.00</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 10.00] (returns self)</span></code></pre>
3040
-
3041
- </div>
3042
- <p class="tag_title">Parameters:</p>
3043
- <ul class="param">
3044
-
3045
- <li>
3046
-
3047
- <span class='name'>amount</span>
3048
-
3049
-
3050
- <span class='type'>(<tt>Numeric</tt>)</span>
3051
-
3052
-
3053
-
3054
- &mdash;
3055
- <div class='inline'><p>The new monetary amount</p></div>
3056
-
3057
- </li>
3058
-
3059
- </ul>
3060
-
3061
- <p class="tag_title">Returns:</p>
3062
- <ul class="return">
3063
-
3064
- <li>
3065
-
3066
-
3067
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
3068
-
3069
-
3070
-
3071
- &mdash;
3072
- <div class='inline'><p>A new Money object with the new amount, or self if the amount is unchanged</p></div>
3073
-
3074
- </li>
3075
-
3076
- </ul>
3077
-
3078
- </div><table class="source_code">
3079
- <tr>
3080
- <td>
3081
- <pre class="lines">
3082
-
3083
-
3084
- 110
3085
- 111
3086
- 112
3087
- 113
3088
- 114
3089
- 115
3090
- 116
3091
- 117
3092
- 118
3093
- 119
3094
- 120</pre>
3095
- </td>
3096
- <td>
3097
- <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 110</span>
3098
-
3099
- <span class='kw'>def</span> <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span><span class='rparen'>)</span>
3100
- <span class='id identifier rubyid_amount'>amount</span> <span class='op'>=</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_normalize_amount'>normalize_amount</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='rparen'>)</span>
3101
-
3102
- <span class='kw'>if</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>==</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_amount'>amount</span>
3103
- <span class='kw'>self</span>
3104
- <span class='kw'>elsif</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
3105
- <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_zero'>zero</span>
3106
- <span class='kw'>else</span>
3107
- <span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
3108
- <span class='kw'>end</span>
3109
- <span class='kw'>end</span></pre>
3110
- </td>
3111
- </tr>
3112
- </table>
3113
- </div>
3114
-
3115
- <div class="method_details ">
3116
- <h3 class="signature " id="currency_code-instance_method">
3117
-
3118
- #<strong>currency_code</strong> &#x21d2; <tt>String</tt>
3119
-
3120
-
3121
-
3122
-
3123
-
3124
- </h3><div class="docstring">
3125
- <div class="discussion">
3126
- <p>Returns the ISO 3-letter currency code string.</p>
3127
-
3128
- </div>
3129
- </div>
3130
- <div class="tags">
3131
-
3132
- <div class="examples">
3133
- <h4 class="tag_title">Examples:</h4>
3134
-
3135
-
3136
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>100</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_currency_code'>currency_code</span> <span class='comment'>#=&gt; &quot;USD&quot;</span></code></pre>
3137
-
3138
- </div>
3139
-
3140
- <p class="tag_title">Returns:</p>
3141
- <ul class="return">
3142
-
3143
- <li>
3144
-
3145
-
3146
- <span class='type'>(<tt>String</tt>)</span>
3147
-
3148
-
3149
-
3150
- &mdash;
3151
- <div class='inline'><p>the ISO currency code (e.g., &quot;USD&quot;, &quot;EUR&quot;, &quot;BRL&quot;)</p></div>
3152
-
3153
- </li>
3154
-
3155
- </ul>
3156
-
3157
- </div><table class="source_code">
3158
- <tr>
3159
- <td>
3160
- <pre class="lines">
3161
-
3162
-
3163
- 31</pre>
3164
- </td>
3165
- <td>
3166
- <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 31</span>
3167
-
3168
- <span class='kw'>def</span> <span class='id identifier rubyid_currency_code'>currency_code</span> <span class='op'>=</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_code'>code</span></pre>
3169
- </td>
3170
- </tr>
3171
- </table>
3172
- </div>
3173
-
3174
- <div class="method_details ">
3175
- <h3 class="signature " id="eql?-instance_method">
3176
-
3177
- #<strong>eql?</strong>(other) &#x21d2; <tt>Boolean</tt>
3178
-
3179
-
3180
-
3181
-
3182
-
3183
- </h3><div class="docstring">
3184
- <div class="discussion">
3185
- <p>Strict equality — both amount and currency must match exactly.
3186
- Unlike ==, does not treat zero as equivalent across currencies.</p>
3187
-
3188
- </div>
3189
- </div>
3190
- <div class="tags">
3191
-
3192
- <p class="tag_title">Returns:</p>
3193
- <ul class="return">
3194
-
3195
- <li>
3196
-
3197
-
3198
- <span class='type'>(<tt>Boolean</tt>)</span>
3199
-
3200
-
3201
-
3202
- </li>
3203
-
3204
- </ul>
3205
-
3206
- </div><table class="source_code">
3207
- <tr>
3208
- <td>
3209
- <pre class="lines">
3210
-
3211
-
3212
- 21
3213
- 22
3214
- 23
3215
- 24
3216
- 25</pre>
3217
- </td>
3218
- <td>
3219
- <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 21</span>
3220
-
3221
- <span class='kw'>def</span> <span class='id identifier rubyid_eql?'>eql?</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
3222
- <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span>
3223
- <span class='id identifier rubyid_amount'>amount</span> <span class='op'>==</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_amount'>amount</span> <span class='op'>&amp;&amp;</span>
3224
- <span class='id identifier rubyid_currency'>currency</span> <span class='op'>==</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_currency'>currency</span>
3225
- <span class='kw'>end</span></pre>
3226
- </td>
3227
- </tr>
3228
- </table>
3229
- </div>
3230
-
3231
- <div class="method_details ">
3232
- <h3 class="signature " id="fractional-instance_method">
3233
-
3234
- #<strong>fractional</strong> &#x21d2; <tt>Object</tt>
3235
-
3236
-
3237
-
3238
-
3239
-
3240
- </h3><div class="docstring">
3241
- <div class="discussion">
3242
- <p>Returns the fractional part of the amount.</p>
3243
-
3244
- </div>
3245
- </div>
3246
- <div class="tags">
3247
-
3248
- <div class="examples">
3249
- <h4 class="tag_title">Examples:</h4>
3250
-
3251
-
3252
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>1234.56</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fractional'>fractional</span> <span class='comment'>#=&gt; 56
3253
- </span><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>1000</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>JPY</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fractional'>fractional</span> <span class='comment'>#=&gt; 0
3254
- </span><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>123.456</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>IQD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fractional'>fractional</span> <span class='comment'>#=&gt; 456</span></code></pre>
3255
-
3256
- </div>
3257
-
3258
-
3259
- </div><table class="source_code">
3260
- <tr>
3261
- <td>
3262
- <pre class="lines">
3263
-
3264
-
3265
- 48</pre>
3266
- </td>
3267
- <td>
3268
- <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 48</span>
3269
-
3270
- <span class='kw'>def</span> <span class='id identifier rubyid_fractional'>fractional</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_abs'>abs</span> <span class='op'>%</span> <span class='int'>1</span><span class='rparen'>)</span> <span class='op'>*</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_fractional_multiplier'>fractional_multiplier</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span></pre>
3271
- </td>
3272
- </tr>
3273
- </table>
3274
- </div>
3275
-
3276
- <div class="method_details ">
3277
- <h3 class="signature " id="hash-instance_method">
3278
-
3279
- #<strong>hash</strong> &#x21d2; <tt>Integer</tt>
3280
-
3281
-
3282
-
3283
-
3284
-
3285
- </h3><div class="docstring">
3286
- <div class="discussion">
3287
- <p>Generates a stable hash key for Money instances.</p>
3288
-
3289
- </div>
3290
- </div>
3291
- <div class="tags">
3292
-
3293
- <p class="tag_title">Returns:</p>
3294
- <ul class="return">
3295
-
3296
- <li>
3297
-
3298
-
3299
- <span class='type'>(<tt>Integer</tt>)</span>
3300
-
3301
-
3302
-
3303
- &mdash;
3304
- <div class='inline'><p>the calculated hash value</p></div>
3305
-
3306
- </li>
3307
-
3308
- </ul>
3309
-
3310
- </div><table class="source_code">
3311
- <tr>
3312
- <td>
3313
- <pre class="lines">
3314
-
3315
-
3316
- 53</pre>
3317
- </td>
3318
- <td>
3319
- <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 53</span>
3320
-
3321
- <span class='kw'>def</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_amount'>amount</span><span class='comma'>,</span> <span class='id identifier rubyid_currency_code'>currency_code</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_hash'>hash</span></pre>
3322
- </td>
3323
- </tr>
3324
- </table>
3325
- </div>
3326
-
3327
- <div class="method_details ">
3328
- <h3 class="signature " id="inspect-instance_method">
3329
-
3330
- #<strong>inspect</strong> &#x21d2; <tt>String</tt>
3331
-
3332
-
3333
-
3334
-
3335
-
3336
- </h3><div class="docstring">
3337
- <div class="discussion">
3338
- <p>Returns a standard developer-oriented string inspection of the Money object.</p>
3339
-
3340
- </div>
3341
- </div>
3342
- <div class="tags">
3343
-
3344
- <p class="tag_title">Returns:</p>
3345
- <ul class="return">
3346
-
3347
- <li>
3348
-
3349
-
3350
- <span class='type'>(<tt>String</tt>)</span>
3351
-
3352
-
3353
-
3354
- &mdash;
3355
- <div class='inline'><p>the formatted inspect representation</p></div>
3356
-
3357
- </li>
3358
-
3359
- </ul>
3360
-
3361
- </div><table class="source_code">
3362
- <tr>
3363
- <td>
3364
- <pre class="lines">
3365
-
3366
-
3367
- 58
3368
- 59
3369
- 60</pre>
3370
- </td>
3371
- <td>
3372
- <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 58</span>
3373
-
3374
- <span class='kw'>def</span> <span class='id identifier rubyid_inspect'>inspect</span>
3375
- <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currency_code'>currency_code</span><span class='embexpr_end'>}</span><span class='tstring_content'> %0.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_subunit'>subunit</span><span class='embexpr_end'>}</span><span class='tstring_content'>f]</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_amount'>amount</span>
3376
- <span class='kw'>end</span></pre>
3377
- </td>
3378
- </tr>
3379
- </table>
3380
- </div>
3381
-
3382
- <div class="method_details ">
3383
- <h3 class="signature " id="mint-instance_method">
3384
-
3385
- #<strong>mint</strong>(new_amount) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
3386
-
3387
-
3388
-
3389
-
3390
-
3391
- </h3><div class="docstring">
3392
- <div class="discussion">
3393
- <div class="note deprecated"><strong>Deprecated.</strong> <div class='inline'><p>Use <span class='object_link'><a href="#copy_with-instance_method" title="Mint::Money#copy_with (method)">#copy_with</a></span> instead. Will be removed in v2.</p></div></div>
3394
- <p>Returns a new Money with the given amount in the same currency.</p>
3395
-
3396
- </div>
3397
- </div>
3398
- <div class="tags">
3399
-
3400
- <div class="examples">
3401
- <h4 class="tag_title">Examples:</h4>
3402
-
3403
-
3404
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>10</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_mint'>mint</span><span class='lparen'>(</span><span class='int'>15</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 15.00]</span></code></pre>
3405
-
3406
- </div>
3407
- <p class="tag_title">Parameters:</p>
3408
- <ul class="param">
3409
-
3410
- <li>
3411
-
3412
- <span class='name'>new_amount</span>
3413
-
3414
-
3415
- <span class='type'>(<tt>Numeric</tt>)</span>
3416
-
3417
-
3418
-
3419
- &mdash;
3420
- <div class='inline'><p>the new monetary amount</p></div>
3421
-
3422
- </li>
3423
-
3424
- </ul>
3425
-
3426
- <p class="tag_title">Returns:</p>
3427
- <ul class="return">
3428
-
3429
- <li>
3430
-
3431
-
3432
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
3433
-
3434
-
3435
-
3436
- &mdash;
3437
- <div class='inline'><p>a new Money instance, or self if unchanged</p></div>
3438
-
3439
- </li>
3440
-
3441
- </ul>
3442
-
3443
- </div><table class="source_code">
3444
- <tr>
3445
- <td>
3446
- <pre class="lines">
3447
-
3448
-
3449
- 129
3450
- 130
3451
- 131
3452
- 132</pre>
3453
- </td>
3454
- <td>
3455
- <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 129</span>
3456
-
3457
- <span class='kw'>def</span> <span class='id identifier rubyid_mint'>mint</span><span class='lparen'>(</span><span class='id identifier rubyid_new_amount'>new_amount</span><span class='rparen'>)</span>
3458
- <span class='id identifier rubyid_warn'>warn</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Money#mint is now deprecated and will be removed in v2</span><span class='tstring_end'>&#39;</span></span>
3459
- <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='id identifier rubyid_new_amount'>new_amount</span><span class='rparen'>)</span>
3460
- <span class='kw'>end</span></pre>
3461
- </td>
3462
- </tr>
3463
- </table>
3464
- </div>
3465
-
3466
- <div class="method_details ">
3467
- <h3 class="signature " id="negative?-instance_method">
3468
-
3469
- #<strong>negative?</strong> &#x21d2; <tt>Boolean</tt>
3470
-
3471
-
3472
-
3473
-
3474
-
3475
- </h3><div class="docstring">
3476
- <div class="discussion">
3477
- <p>Returns true if the monetary amount is less than zero.</p>
3478
-
3479
- </div>
3480
- </div>
3481
- <div class="tags">
3482
-
3483
- <p class="tag_title">Returns:</p>
3484
- <ul class="return">
3485
-
3486
- <li>
3487
-
3488
-
3489
- <span class='type'>(<tt>Boolean</tt>)</span>
3490
-
3491
-
3492
-
3493
- &mdash;
3494
- <div class='inline'><p>true if negative, false otherwise</p></div>
3495
-
3496
- </li>
3497
-
3498
- </ul>
3499
-
3500
- </div><table class="source_code">
3501
- <tr>
3502
- <td>
3503
- <pre class="lines">
3504
-
3505
-
3506
- 14</pre>
3507
- </td>
3508
- <td>
3509
- <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics/methods.rb', line 14</span>
3510
-
3511
- <span class='kw'>def</span> <span class='id identifier rubyid_negative?'>negative?</span> <span class='op'>=</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_negative?'>negative?</span></pre>
3512
- </td>
3513
- </tr>
3514
- </table>
3515
- </div>
3516
-
3517
- <div class="method_details ">
3518
- <h3 class="signature " id="nonzero?-instance_method">
3519
-
3520
- #<strong>nonzero?</strong> &#x21d2; <tt>self</tt><sup>?</sup>
3521
-
3522
-
3523
-
3524
-
3525
-
3526
- </h3><div class="docstring">
3527
- <div class="discussion">
3528
- <p>Returns self if amount is non-zero, nil otherwise.</p>
3529
-
3530
- </div>
3531
- </div>
3532
- <div class="tags">
3533
-
3534
- <p class="tag_title">Returns:</p>
3535
- <ul class="return">
3536
-
3537
- <li>
3538
-
3539
-
3540
- <span class='type'>(<tt>self</tt>, <tt>nil</tt>)</span>
3541
-
3542
-
3543
-
3544
- &mdash;
3545
- <div class='inline'><p>self if amount is non-zero, nil otherwise</p></div>
3546
-
3547
- </li>
3548
-
3549
- </ul>
3550
-
3551
- </div><table class="source_code">
3552
- <tr>
3553
- <td>
3554
- <pre class="lines">
3555
-
3556
-
3557
- 45</pre>
3558
- </td>
3559
- <td>
3560
- <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 45</span>
3561
-
3562
- <span class='kw'>def</span> <span class='id identifier rubyid_nonzero?'>nonzero?</span> <span class='op'>=</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_nonzero?'>nonzero?</span></pre>
3563
- </td>
3564
- </tr>
3565
- </table>
3566
- </div>
3567
-
3568
- <div class="method_details ">
3569
- <h3 class="signature " id="positive?-instance_method">
3570
-
3571
- #<strong>positive?</strong> &#x21d2; <tt>Boolean</tt>
3572
-
3573
-
3574
-
3575
-
3576
-
3577
- </h3><div class="docstring">
3578
- <div class="discussion">
3579
- <p>Returns true if the monetary amount is greater than zero.</p>
3580
-
3581
- </div>
3582
- </div>
3583
- <div class="tags">
3584
-
3585
- <p class="tag_title">Returns:</p>
3586
- <ul class="return">
3587
-
3588
- <li>
3589
-
3590
-
3591
- <span class='type'>(<tt>Boolean</tt>)</span>
3592
-
3593
-
3594
-
3595
- &mdash;
3596
- <div class='inline'><p>true if positive, false otherwise</p></div>
3597
-
3598
- </li>
3599
-
3600
- </ul>
3601
-
3602
- </div><table class="source_code">
3603
- <tr>
3604
- <td>
3605
- <pre class="lines">
3606
-
3607
-
3608
- 19</pre>
3609
- </td>
3610
- <td>
3611
- <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics/methods.rb', line 19</span>
3612
-
3613
- <span class='kw'>def</span> <span class='id identifier rubyid_positive?'>positive?</span> <span class='op'>=</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_positive?'>positive?</span></pre>
3614
- </td>
3615
- </tr>
3616
- </table>
3617
- </div>
3618
-
3619
- <div class="method_details ">
3620
- <h3 class="signature " id="same_currency?-instance_method">
3621
-
3622
- #<strong>same_currency?</strong>(other) &#x21d2; <tt>Boolean</tt>
3623
-
3624
-
3625
-
3626
-
3627
-
3628
- </h3><div class="docstring">
3629
- <div class="discussion">
3630
- <p>Helper method to verify if another Money has the identical currency.</p>
3631
-
3632
- </div>
3633
- </div>
3634
- <div class="tags">
3635
- <p class="tag_title">Parameters:</p>
3636
- <ul class="param">
3637
-
3638
- <li>
3639
-
3640
- <span class='name'>other</span>
3641
-
3642
-
3643
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
3644
-
3645
-
3646
-
3647
- &mdash;
3648
- <div class='inline'><p>the target currency to compare</p></div>
3649
-
3650
- </li>
3651
-
3652
- </ul>
3653
-
3654
- <p class="tag_title">Returns:</p>
3655
- <ul class="return">
3656
-
3657
- <li>
3658
-
3659
-
3660
- <span class='type'>(<tt>Boolean</tt>)</span>
3661
-
3662
-
3663
-
3664
- &mdash;
3665
- <div class='inline'><p>true if currencies match, false otherwise</p></div>
3666
-
3667
- </li>
3668
-
3669
- </ul>
3670
-
3671
- </div><table class="source_code">
3672
- <tr>
3673
- <td>
3674
- <pre class="lines">
3675
-
3676
-
3677
- 51</pre>
3678
- </td>
3679
- <td>
3680
- <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 51</span>
3681
-
3682
- <span class='kw'>def</span> <span class='id identifier rubyid_same_currency?'>same_currency?</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span> <span class='op'>=</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_currency'>currency</span> <span class='op'>==</span> <span class='id identifier rubyid_currency'>currency</span></pre>
3683
- </td>
3684
- </tr>
3685
- </table>
3686
- </div>
3687
-
3688
- <div class="method_details ">
3689
- <h3 class="signature " id="split-instance_method">
3690
-
3691
- #<strong>split</strong>(slices) &#x21d2; <tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>
3692
-
3693
-
3694
-
3695
-
3696
-
3697
- </h3><div class="docstring">
3698
- <div class="discussion">
3699
- <p>Splits the monetary amount into a given quantity of equal parts.
3700
- Disperses any fractional subunit rounding differences across the initial slots
3701
- so that the sum is preserved.</p>
3702
-
3703
- </div>
3704
- </div>
3705
- <div class="tags">
3706
-
3707
- <div class="examples">
3708
- <h4 class="tag_title">Examples:</h4>
3709
-
3710
-
3711
- <h5 class="example_title"><div class='inline'><p>Even split</p></div></h5>
3712
-
3713
- <pre class="example code"><code><span class='id identifier rubyid_money'>money</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>10.00</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
3714
- <span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='int'>3</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [[USD 3.34], [USD 3.33], [USD 3.33]]</span></code></pre>
3715
-
3716
- </div>
3717
- <p class="tag_title">Parameters:</p>
3718
- <ul class="param">
3719
-
3720
- <li>
3721
-
3722
- <span class='name'>slices</span>
3723
-
3724
-
3725
- <span class='type'>(<tt>Integer</tt>)</span>
3726
-
3727
-
3728
-
3729
- &mdash;
3730
- <div class='inline'><p>the number of equal parts to divide the money into (must be &gt; 0)</p></div>
3731
-
3732
- </li>
3733
-
3734
- </ul>
3735
-
3736
- <p class="tag_title">Returns:</p>
3737
- <ul class="return">
3738
-
3739
- <li>
3740
-
3741
-
3742
- <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>)</span>
3743
-
3744
-
3745
-
3746
- &mdash;
3747
- <div class='inline'><p>the list of newly split Money objects</p></div>
3748
-
3749
- </li>
3750
-
3751
- </ul>
3752
- <p class="tag_title">Raises:</p>
3753
- <ul class="raise">
3754
-
3755
- <li>
3756
-
3757
-
3758
- <span class='type'>(<tt>ArgumentError</tt>)</span>
3759
-
3760
-
3761
-
3762
- &mdash;
3763
- <div class='inline'><p>if quantity is not a positive integer</p></div>
3764
-
3765
- </li>
3766
-
3767
- </ul>
3768
-
3769
- </div><table class="source_code">
3770
- <tr>
3771
- <td>
3772
- <pre class="lines">
3773
-
3774
-
3775
- 17
3776
- 18
3777
- 19
3778
- 20
3779
- 21
3780
- 22
3781
- 23</pre>
3782
- </td>
3783
- <td>
3784
- <pre class="code"><span class="info file"># File 'lib/minting/money/allocation/split.rb', line 17</span>
3785
-
3786
- <span class='kw'>def</span> <span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='id identifier rubyid_slices'>slices</span><span class='rparen'>)</span>
3787
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Slices quantity must be an poitive integer</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_slices'>slices</span><span class='period'>.</span><span class='id identifier rubyid_positive?'>positive?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_slices'>slices</span><span class='period'>.</span><span class='id identifier rubyid_integer?'>integer?</span>
3788
-
3789
- <span class='id identifier rubyid_fraction'>fraction</span> <span class='op'>=</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_normalize_amount'>normalize_amount</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span> <span class='op'>/</span> <span class='id identifier rubyid_slices'>slices</span><span class='rparen'>)</span>
3790
- <span class='id identifier rubyid_allocate_left_over'>allocate_left_over</span><span class='lparen'>(</span><span class='label'>amounts:</span> <span class='const'>Array</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_slices'>slices</span><span class='comma'>,</span> <span class='id identifier rubyid_fraction'>fraction</span><span class='rparen'>)</span><span class='comma'>,</span>
3791
- <span class='label'>left_over:</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>-</span> <span class='lparen'>(</span><span class='id identifier rubyid_fraction'>fraction</span> <span class='op'>*</span> <span class='id identifier rubyid_slices'>slices</span><span class='rparen'>)</span><span class='rparen'>)</span>
3792
- <span class='kw'>end</span></pre>
3793
- </td>
3794
- </tr>
3795
- </table>
3796
- </div>
3797
-
3798
- <div class="method_details ">
3799
- <h3 class="signature " id="subunits-instance_method">
3800
-
3801
- #<strong>subunits</strong> &#x21d2; <tt>Integer</tt>
3802
-
3803
-
3804
-
3805
-
3806
-
3807
- </h3><div class="docstring">
3808
- <div class="discussion">
3809
- <p>Returns the monetary amount expressed in the currency's smallest unit (fractional units).
3810
- For example, cents for USD (subunit 2), yen for JPY (subunit 0), fils for IQD (subunit 3).</p>
3811
-
3812
- </div>
3813
- </div>
3814
- <div class="tags">
3815
-
3816
- <div class="examples">
3817
- <h4 class="tag_title">Examples:</h4>
3818
-
3819
-
3820
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>1234.56</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_subunits'>subunits</span> <span class='comment'>#=&gt; 123456
3821
- </span><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>1000</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>JPY</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_subunits'>subunits</span> <span class='comment'>#=&gt; 1000
3822
- </span><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>123.456</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>IQD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_subunits'>subunits</span> <span class='comment'>#=&gt; 123456</span></code></pre>
3823
-
3824
- </div>
3825
-
3826
- <p class="tag_title">Returns:</p>
3827
- <ul class="return">
3828
-
3829
- <li>
3830
-
3831
-
3832
- <span class='type'>(<tt>Integer</tt>)</span>
3833
-
3834
-
3835
-
3836
- &mdash;
3837
- <div class='inline'><p>the amount in fractional units</p></div>
3838
-
3839
- </li>
3840
-
3841
- </ul>
3842
-
3843
- </div><table class="source_code">
3844
- <tr>
3845
- <td>
3846
- <pre class="lines">
3847
-
3848
-
3849
- 41</pre>
3850
- </td>
3851
- <td>
3852
- <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 41</span>
3853
-
3854
- <span class='kw'>def</span> <span class='id identifier rubyid_subunits'>subunits</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span> <span class='op'>*</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_fractional_multiplier'>fractional_multiplier</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span></pre>
3855
- </td>
3856
- </tr>
3857
- </table>
3858
- </div>
3859
-
3860
- <div class="method_details ">
3861
- <h3 class="signature " id="succ-instance_method">
3862
-
3863
- #<strong>succ</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
3864
-
3865
-
3866
-
3867
-
3868
-
3869
- </h3><div class="docstring">
3870
- <div class="discussion">
3871
- <p>Returns the successor of the Money instance by adding the minimum possible subunit amount.
3872
- Enables standard ranges and stepping (e.g. <code>1.dollar..10.dollars</code>).</p>
3873
-
3874
- </div>
3875
- </div>
3876
- <div class="tags">
3877
-
3878
- <p class="tag_title">Returns:</p>
3879
- <ul class="return">
3880
-
3881
- <li>
3882
-
3883
-
3884
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
3885
-
3886
-
3887
-
3888
- &mdash;
3889
- <div class='inline'><p>successor Money instance</p></div>
3890
-
3891
- </li>
3892
-
3893
- </ul>
3894
-
3895
- </div><table class="source_code">
3896
- <tr>
3897
- <td>
3898
- <pre class="lines">
3899
-
3900
-
3901
- 25</pre>
3902
- </td>
3903
- <td>
3904
- <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics/methods.rb', line 25</span>
3905
-
3906
- <span class='kw'>def</span> <span class='id identifier rubyid_succ'>succ</span> <span class='op'>=</span> <span class='id identifier rubyid_copy_with'>copy_with</span><span class='lparen'>(</span><span class='label'>amount:</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>+</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_minimum_amount'>minimum_amount</span><span class='rparen'>)</span></pre>
3907
- </td>
3908
- </tr>
3909
- </table>
3910
- </div>
3911
-
3912
- <div class="method_details ">
3913
- <h3 class="signature " id="to_d-instance_method">
3914
-
3915
- #<strong>to_d</strong> &#x21d2; <tt>BigDecimal</tt>
3916
-
3917
-
3918
-
3919
-
3920
-
3921
- </h3><div class="docstring">
3922
- <div class="discussion">
3923
- <p>Converts the monetary amount to a BigDecimal object.</p>
3924
-
3925
- </div>
3926
- </div>
3927
- <div class="tags">
3928
-
3929
- <div class="examples">
3930
- <h4 class="tag_title">Examples:</h4>
3931
-
3932
-
3933
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>9.99</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_d'>to_d</span> <span class='comment'>#=&gt; 0.999e1</span></code></pre>
3934
-
3935
- </div>
3936
-
3937
- <p class="tag_title">Returns:</p>
3938
- <ul class="return">
3939
-
3940
- <li>
3941
-
3942
-
3943
- <span class='type'>(<tt>BigDecimal</tt>)</span>
3944
-
3945
-
3946
-
3947
- &mdash;
3948
- <div class='inline'><p>the decimal representation of the money amount</p></div>
3949
-
3950
- </li>
3951
-
3952
- </ul>
3953
-
3954
- </div><table class="source_code">
3955
- <tr>
3956
- <td>
3957
- <pre class="lines">
3958
-
3959
-
3960
- 14</pre>
3961
- </td>
3962
- <td>
3963
- <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 14</span>
3964
-
3965
- <span class='kw'>def</span> <span class='id identifier rubyid_to_d'>to_d</span> <span class='op'>=</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_to_d'>to_d</span> <span class='int'>0</span></pre>
3966
- </td>
3967
- </tr>
3968
- </table>
3969
- </div>
3970
-
3971
- <div class="method_details ">
3972
- <h3 class="signature " id="to_f-instance_method">
3973
-
3974
- #<strong>to_f</strong> &#x21d2; <tt>Float</tt>
3975
-
3976
-
3977
-
3978
-
3979
-
3980
- </h3><div class="docstring">
3981
- <div class="discussion">
3982
- <p>Converts the monetary amount to a standard float.
3983
- Note: Using float conversion loses precision guarantees.</p>
3984
-
3985
- </div>
3986
- </div>
3987
- <div class="tags">
3988
-
3989
- <p class="tag_title">Returns:</p>
3990
- <ul class="return">
3991
-
3992
- <li>
3993
-
3994
-
3995
- <span class='type'>(<tt>Float</tt>)</span>
3996
-
3997
-
3998
-
3999
- &mdash;
4000
- <div class='inline'><p>the floating-point representation of the money amount</p></div>
4001
-
4002
- </li>
4003
-
4004
- </ul>
4005
-
4006
- </div><table class="source_code">
4007
- <tr>
4008
- <td>
4009
- <pre class="lines">
4010
-
4011
-
4012
- 20</pre>
4013
- </td>
4014
- <td>
4015
- <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 20</span>
4016
-
4017
- <span class='kw'>def</span> <span class='id identifier rubyid_to_f'>to_f</span> <span class='op'>=</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span></pre>
4018
- </td>
4019
- </tr>
4020
- </table>
4021
- </div>
4022
-
4023
- <div class="method_details ">
4024
- <h3 class="signature " id="to_hash-instance_method">
4025
-
4026
- #<strong>to_hash</strong> &#x21d2; <tt>Hash</tt>
4027
-
4028
-
4029
-
4030
-
4031
-
4032
- </h3><div class="docstring">
4033
- <div class="discussion">
4034
- <p>Returns a Hash representation of the money instance.</p>
4035
-
4036
- </div>
4037
- </div>
4038
- <div class="tags">
4039
-
4040
- <div class="examples">
4041
- <h4 class="tag_title">Examples:</h4>
4042
-
4043
-
4044
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>134120</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>BRL</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_hash'>to_hash</span>
4045
- <span class='comment'>#=&gt; { currency: &quot;BRL&quot;, amount: &quot;134120.00&quot; }</span></code></pre>
4046
-
4047
- </div>
4048
-
4049
- <p class="tag_title">Returns:</p>
4050
- <ul class="return">
4051
-
4052
- <li>
4053
-
4054
-
4055
- <span class='type'>(<tt>Hash</tt>)</span>
4056
-
4057
-
4058
-
4059
- &mdash;
4060
- <div class='inline'><p>hash with :currency (String) and :amount (String) keys</p></div>
4061
-
4062
- </li>
4063
-
4064
- </ul>
4065
-
4066
- </div><table class="source_code">
4067
- <tr>
4068
- <td>
4069
- <pre class="lines">
4070
-
4071
-
4072
- 47
4073
- 48
4074
- 49</pre>
4075
- </td>
4076
- <td>
4077
- <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 47</span>
4078
-
4079
- <span class='kw'>def</span> <span class='id identifier rubyid_to_hash'>to_hash</span>
4080
- <span class='lbrace'>{</span> <span class='label'>currency:</span> <span class='id identifier rubyid_currency_code'>currency_code</span><span class='comma'>,</span> <span class='label'>amount:</span> <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%0.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_subunit'>subunit</span><span class='embexpr_end'>}</span><span class='tstring_content'>f</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_amount'>amount</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
4081
- <span class='kw'>end</span></pre>
4082
- </td>
4083
- </tr>
4084
- </table>
4085
- </div>
4086
-
4087
- <div class="method_details ">
4088
- <h3 class="signature " id="to_html-instance_method">
4089
-
4090
- #<strong>to_html</strong>(format = DEFAULT_FORMAT) &#x21d2; <tt>String</tt>
4091
-
4092
-
4093
-
4094
-
4095
-
4096
- </h3><div class="docstring">
4097
- <div class="discussion">
4098
- <p>Renders a safe HTML5 <code>&lt;data&gt;</code> element containing the formatted currency.
4099
- Embeds the ISO currency description and raw value as the metadata <code>title</code> attribute.</p>
4100
-
4101
- </div>
4102
- </div>
4103
- <div class="tags">
4104
- <p class="tag_title">Parameters:</p>
4105
- <ul class="param">
4106
-
4107
- <li>
4108
-
4109
- <span class='name'>format</span>
4110
-
4111
-
4112
- <span class='type'>(<tt>String</tt>)</span>
4113
-
4114
-
4115
- <em class="default">(defaults to: <tt>DEFAULT_FORMAT</tt>)</em>
4116
-
4117
-
4118
- &mdash;
4119
- <div class='inline'><p>the display format to apply to the visible HTML text</p></div>
4120
-
4121
- </li>
4122
-
4123
- </ul>
4124
-
4125
- <p class="tag_title">Returns:</p>
4126
- <ul class="return">
4127
-
4128
- <li>
4129
-
4130
-
4131
- <span class='type'>(<tt>String</tt>)</span>
4132
-
4133
-
4134
-
4135
- &mdash;
4136
- <div class='inline'><p>HTML5 <code>&lt;data&gt;</code> representation</p></div>
4137
-
4138
- </li>
4139
-
4140
- </ul>
4141
-
4142
- </div><table class="source_code">
4143
- <tr>
4144
- <td>
4145
- <pre class="lines">
4146
-
4147
-
4148
- 27
4149
- 28
4150
- 29
4151
- 30
4152
- 31</pre>
4153
- </td>
4154
- <td>
4155
- <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 27</span>
4156
-
4157
- <span class='kw'>def</span> <span class='id identifier rubyid_to_html'>to_html</span><span class='lparen'>(</span><span class='id identifier rubyid_format'>format</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="#DEFAULT_FORMAT-constant" title="Mint::Money::DEFAULT_FORMAT (constant)">DEFAULT_FORMAT</a></span></span><span class='rparen'>)</span>
4158
- <span class='id identifier rubyid_title'>title</span> <span class='op'>=</span> <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currency_code'>currency_code</span><span class='embexpr_end'>}</span><span class='tstring_content'> %0.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_subunit'>subunit</span><span class='embexpr_end'>}</span><span class='tstring_content'>f</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_amount'>amount</span><span class='rparen'>)</span>
4159
- <span class='id identifier rubyid_body'>body</span> <span class='op'>=</span> <span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='id identifier rubyid_format'>format</span><span class='rparen'>)</span>
4160
- <span class='tstring'><span class='tstring_beg'>%(</span><span class='tstring_content'>&lt;data class=&#39;money&#39; title=&#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_title'>title</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;&gt;</span><span class='embexpr_beg'>#{</span><span class='const'>ERB</span><span class='op'>::</span><span class='const'>Util</span><span class='period'>.</span><span class='id identifier rubyid_html_escape'>html_escape</span><span class='lparen'>(</span><span class='id identifier rubyid_body'>body</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>&lt;/data&gt;</span><span class='tstring_end'>)</span></span>
4161
- <span class='kw'>end</span></pre>
4162
- </td>
4163
- </tr>
4164
- </table>
4165
- </div>
4166
-
4167
- <div class="method_details ">
4168
- <h3 class="signature " id="to_i-instance_method">
4169
-
4170
- #<strong>to_i</strong> &#x21d2; <tt>Integer</tt>
4171
-
4172
-
4173
-
4174
-
4175
-
4176
- </h3><div class="docstring">
4177
- <div class="discussion">
4178
- <p>Truncates and converts the monetary amount to an Integer.</p>
4179
-
4180
- </div>
4181
- </div>
4182
- <div class="tags">
4183
-
4184
- <div class="examples">
4185
- <h4 class="tag_title">Examples:</h4>
4186
-
4187
-
4188
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>9.99</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='comment'>#=&gt; 9
4189
- </span><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='op'>-</span><span class='float'>9.99</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='comment'>#=&gt; -9</span></code></pre>
4190
-
4191
- </div>
4192
-
4193
- <p class="tag_title">Returns:</p>
4194
- <ul class="return">
4195
-
4196
- <li>
4197
-
4198
-
4199
- <span class='type'>(<tt>Integer</tt>)</span>
4200
-
4201
-
4202
-
4203
- &mdash;
4204
- <div class='inline'><p>the integer representation of the money amount</p></div>
4205
-
4206
- </li>
4207
-
4208
- </ul>
4209
-
4210
- </div><table class="source_code">
4211
- <tr>
4212
- <td>
4213
- <pre class="lines">
4214
-
4215
-
4216
- 39</pre>
4217
- </td>
4218
- <td>
4219
- <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 39</span>
4220
-
4221
- <span class='kw'>def</span> <span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>=</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span></pre>
4222
- </td>
4223
- </tr>
4224
- </table>
4225
- </div>
4226
-
4227
- <div class="method_details ">
4228
- <h3 class="signature " id="to_json-instance_method">
4229
-
4230
- #<strong>to_json</strong>(*_args) &#x21d2; <tt>String</tt>
4231
-
4232
-
4233
-
4234
-
4235
-
4236
- </h3><div class="docstring">
4237
- <div class="discussion">
4238
- <p>Serializes the money instance to a standard JSON object containing the amount and currency.
4239
- Highly optimized to run without external dependencies.</p>
4240
-
4241
- </div>
4242
- </div>
4243
- <div class="tags">
4244
-
4245
- <p class="tag_title">Returns:</p>
4246
- <ul class="return">
4247
-
4248
- <li>
4249
-
4250
-
4251
- <span class='type'>(<tt>String</tt>)</span>
4252
-
4253
-
4254
-
4255
- &mdash;
4256
- <div class='inline'><p>the JSON serialized string representation</p></div>
4257
-
4258
- </li>
4259
-
4260
- </ul>
4261
-
4262
- </div><table class="source_code">
4263
- <tr>
4264
- <td>
4265
- <pre class="lines">
4266
-
4267
-
4268
- 55
4269
- 56
4270
- 57
4271
- 58
4272
- 59</pre>
4273
- </td>
4274
- <td>
4275
- <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 55</span>
4276
-
4277
- <span class='kw'>def</span> <span class='id identifier rubyid_to_json'>to_json</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid__args'>_args</span><span class='rparen'>)</span>
4278
- <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span><span class='lparen'>(</span>
4279
- <span class='tstring'><span class='tstring_beg'>%(</span><span class='tstring_content'>{&quot;currency&quot;: &quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currency_code'>currency_code</span><span class='embexpr_end'>}</span><span class='tstring_content'>&quot;, &quot;amount&quot;: &quot;%0.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_subunit'>subunit</span><span class='embexpr_end'>}</span><span class='tstring_content'>f&quot;}</span><span class='tstring_end'>)</span></span><span class='comma'>,</span> <span class='id identifier rubyid_amount'>amount</span>
4280
- <span class='rparen'>)</span>
4281
- <span class='kw'>end</span></pre>
4282
- </td>
4283
- </tr>
4284
- </table>
4285
- </div>
4286
-
4287
- <div class="method_details ">
4288
- <h3 class="signature " id="to_r-instance_method">
4289
-
4290
- #<strong>to_r</strong> &#x21d2; <tt>Rational</tt>
4291
-
4292
-
4293
-
4294
-
4295
-
4296
- </h3><div class="docstring">
4297
- <div class="discussion">
4298
- <p>Returns the exact internal Rational representation of the monetary amount.</p>
4299
-
4300
- </div>
4301
- </div>
4302
- <div class="tags">
4303
-
4304
- <p class="tag_title">Returns:</p>
4305
- <ul class="return">
4306
-
4307
- <li>
4308
-
4309
-
4310
- <span class='type'>(<tt>Rational</tt>)</span>
4311
-
4312
-
4313
-
4314
- &mdash;
4315
- <div class='inline'><p>the rational representation of the money amount</p></div>
4316
-
4317
- </li>
4318
-
4319
- </ul>
4320
-
4321
- </div><table class="source_code">
4322
- <tr>
4323
- <td>
4324
- <pre class="lines">
4325
-
4326
-
4327
- 64</pre>
4328
- </td>
4329
- <td>
4330
- <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 64</span>
4331
-
4332
- <span class='kw'>def</span> <span class='id identifier rubyid_to_r'>to_r</span> <span class='op'>=</span> <span class='id identifier rubyid_amount'>amount</span></pre>
4333
- </td>
4334
- </tr>
4335
- </table>
4336
- </div>
4337
-
4338
- <div class="method_details ">
4339
- <h3 class="signature " id="to_s-instance_method">
4340
-
4341
- #<strong>to_s</strong>(format: nil, decimal: nil, thousand: nil, width: nil) &#x21d2; <tt>String</tt>
4342
-
4343
-
4344
-
4345
-
4346
-
4347
- </h3><div class="docstring">
4348
- <div class="discussion">
4349
- <p>Formats money as a string with customizable format, thousand delimiter, and decimal</p>
4350
-
4351
- </div>
4352
- </div>
4353
- <div class="tags">
4354
-
4355
- <div class="examples">
4356
- <h4 class="tag_title">Examples:</h4>
4357
-
4358
-
4359
- <h5 class="example_title"><div class='inline'><p>Basic formatting</p></div></h5>
4360
-
4361
- <pre class="example code"><code><span class='id identifier rubyid_money'>money</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>1234.56</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
4362
- <span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'>#=&gt; &quot;$1,234.56&quot;
4363
- </span><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>thousand:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>decimal:</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> <span class='comment'>#=&gt; &quot;$1.234,56&quot;
4364
- </span><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>decimal:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>,</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>thousand:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; &quot;$1234,56&quot;</span></code></pre>
4365
-
4366
-
4367
- <h5 class="example_title"><div class='inline'><p>Custom formats</p></div></h5>
4368
-
4369
- <pre class="example code"><code><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>%&lt;amount&gt;f</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; &quot;1234.56&quot;
4370
- </span><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>%&lt;currency&gt;s %&lt;amount&gt;f</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; &quot;USD 1234.56&quot;
4371
- </span><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>%&lt;amount&gt;f %&lt;symbol&gt;s</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; &quot;1234.56 $&quot;
4372
- </span><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>%&lt;symbol&gt;s%&lt;amount&gt;+f</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; &quot;$+1234.56&quot;</span></code></pre>
4373
-
4374
-
4375
- <h5 class="example_title"><div class='inline'><p>Integral &amp; fractional parts</p></div></h5>
4376
-
4377
- <pre class="example code"><code><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>%&lt;integral&gt;d.%&lt;fractional&gt;02d</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; &quot;1234.56&quot;
4378
- </span><span class='id identifier rubyid_price'>price</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='float'>0.99</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
4379
- <span class='id identifier rubyid_price'>price</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>%&lt;integral&gt;d dollars and %&lt;fractional&gt;02d cents</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
4380
- <span class='comment'>#=&gt; &quot;0 dollars and 99 cents&quot;</span></code></pre>
4381
-
4382
-
4383
- <h5 class="example_title"><div class='inline'><p>Per-sign Hash format (accounting parentheses)</p></div></h5>
4384
-
4385
- <pre class="example code"><code><span class='id identifier rubyid_loss'>loss</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='op'>-</span><span class='float'>1234.56</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
4386
- <span class='id identifier rubyid_loss'>loss</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='lbrace'>{</span> <span class='label'>negative:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>(%&lt;symbol&gt;s%&lt;amount&gt;f)</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span><span class='rparen'>)</span> <span class='comment'>#=&gt; &quot;($1,234.56)&quot;
4387
- </span><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='period'>.</span><span class='id identifier rubyid_money'><span class='object_link'><a href="../Mint.html#money-class_method" title="Mint.money (method)">money</a></span></span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>BRL</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='lbrace'>{</span> <span class='label'>zero:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>--</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span><span class='rparen'>)</span> <span class='comment'>#=&gt; &quot;--&quot;</span></code></pre>
4388
-
4389
-
4390
- <h5 class="example_title"><div class='inline'><p>Padding and alignment</p></div></h5>
4391
-
4392
- <pre class="example code"><code><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>%&lt;amount&gt;10.2f</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; &quot; 1234.56&quot;
4393
- </span><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>%&lt;symbol&gt;s%&lt;amount&gt;010.2f</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; &quot;$0001234.56&quot;</span></code></pre>
4394
-
4395
-
4396
- <h5 class="example_title"><div class='inline'><p>Locale-aware formatting (with Mint.locale_backend set)</p></div></h5>
4397
-
4398
- <pre class="example code"><code><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='comment'># decimal and thousand come from locale_backend</span></code></pre>
4399
-
4400
- </div>
4401
- <p class="tag_title">Parameters:</p>
4402
- <ul class="param">
4403
-
4404
- <li>
4405
-
4406
- <span class='name'>format</span>
4407
-
4408
-
4409
- <span class='type'>(<tt>String</tt>, <tt>Hash</tt>, <tt>nil</tt>)</span>
4410
-
4411
-
4412
- <em class="default">(defaults to: <tt>nil</tt>)</em>
4413
-
4414
-
4415
- &mdash;
4416
- <div class='inline'><p>Either a Format string with placeholders
4417
- (%<symbol>s, %<amount>f, %<currency>s, %<integral>d, %<fractional>d),
4418
- or a Hash with per-sign keys (:positive, :negative, :zero) each
4419
- holding a format string. A Hash is convenient for sign-aware formats
4420
- such as accounting parentheses:</p>
4421
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_money'>money</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='lbrace'>{</span> <span class='label'>negative:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>(%&lt;symbol&gt;s%&lt;amount&gt;f)</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span><span class='rparen'>)</span>
4422
- </code></pre>
4423
- <p>Missing keys fall back to the module default, so a Hash with only
4424
- :negative will still format positives sensibly. The valid keys are
4425
- :positive, :negative, :zero; anything else raises ArgumentError.
4426
- When <code>nil</code>, falls back to <code>Mint.locale_backend</code> if set, otherwise
4427
- <code>&quot;%&lt;symbol&gt;s%&lt;amount&gt;f&quot;</code>.</p></div>
4428
-
4429
- </li>
4430
-
4431
- <li>
4432
-
4433
- <span class='name'>thousand</span>
4434
-
4435
-
4436
- <span class='type'>(<tt>String</tt>, <tt>false</tt>, <tt>nil</tt>)</span>
4437
-
4438
-
4439
- <em class="default">(defaults to: <tt>nil</tt>)</em>
4440
-
4441
-
4442
- &mdash;
4443
- <div class='inline'><p>Thousands delimiter (e.g., ',' for 1,000).
4444
- When <code>nil</code>, falls back to <code>Mint.locale_backend</code> if set, otherwise <code>&quot;,&quot;</code>.</p></div>
4445
-
4446
- </li>
4447
-
4448
- <li>
4449
-
4450
- <span class='name'>decimal</span>
4451
-
4452
-
4453
- <span class='type'>(<tt>String</tt>, <tt>nil</tt>)</span>
4454
-
4455
-
4456
- <em class="default">(defaults to: <tt>nil</tt>)</em>
4457
-
4458
-
4459
- &mdash;
4460
- <div class='inline'><p>Decimal separator (e.g., '.' or ',').
4461
- When <code>nil</code>, falls back to <code>Mint.locale_backend</code> if set, otherwise <code>&quot;.&quot;</code>.</p></div>
4462
-
4463
- </li>
4464
-
4465
- </ul>
4466
-
4467
- <p class="tag_title">Returns:</p>
4468
- <ul class="return">
4469
-
4470
- <li>
4471
-
4472
-
4473
- <span class='type'>(<tt>String</tt>)</span>
4474
-
4475
-
4476
-
4477
- &mdash;
4478
- <div class='inline'><p>Formatted money string</p></div>
4479
-
4480
- </li>
4481
-
4482
- </ul>
4483
- <p class="tag_title">Raises:</p>
4484
- <ul class="raise">
4485
-
4486
- <li>
4487
-
4488
-
4489
- <span class='type'>(<tt>ArgumentError</tt>)</span>
4490
-
4491
-
4492
-
4493
- &mdash;
4494
- <div class='inline'><p>if <code>format</code> is not a String or Hash, the Hash
4495
- is empty, or the Hash contains an unrecognised key.</p></div>
4496
-
4497
- </li>
4498
-
4499
- </ul>
4500
-
4501
- </div><table class="source_code">
4502
- <tr>
4503
- <td>
4504
- <pre class="lines">
4505
-
4506
-
4507
- 60
4508
- 61
4509
- 62
4510
- 63
4511
- 64
4512
- 65
4513
- 66
4514
- 67
4515
- 68
4516
- 69
4517
- 70
4518
- 71
4519
- 72
4520
- 73</pre>
4521
- </td>
4522
- <td>
4523
- <pre class="code"><span class="info file"># File 'lib/minting/money/format/to_s.rb', line 60</span>
4524
-
4525
- <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='label'>format:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>decimal:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>thousand:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>width:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
4526
- <span class='id identifier rubyid_format'>format</span><span class='comma'>,</span> <span class='id identifier rubyid_decimal'>decimal</span><span class='comma'>,</span> <span class='id identifier rubyid_thousand'>thousand</span> <span class='op'>=</span> <span class='id identifier rubyid_resolve_locale_for'>resolve_locale_for</span><span class='lparen'>(</span><span class='id identifier rubyid_format'>format</span><span class='comma'>,</span> <span class='id identifier rubyid_decimal'>decimal</span><span class='comma'>,</span> <span class='id identifier rubyid_thousand'>thousand</span><span class='rparen'>)</span>
4527
-
4528
- <span class='kw'>case</span> <span class='id identifier rubyid_format'>format</span>
4529
- <span class='kw'>when</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>then</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>format must not be empty</span><span class='tstring_end'>&#39;</span></span>
4530
- <span class='kw'>when</span> <span class='const'>Hash</span> <span class='kw'>then</span> <span class='id identifier rubyid_validate_format_hash'>validate_format_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_format'>format</span><span class='rparen'>)</span>
4531
- <span class='kw'>when</span> <span class='const'>String</span> <span class='kw'>then</span> <span class='id identifier rubyid_format'>format</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='label'>positive:</span> <span class='id identifier rubyid_format'>format</span> <span class='rbrace'>}</span>
4532
- <span class='kw'>else</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Invalid format. Only String or Hash are accepted</span><span class='tstring_end'>&#39;</span></span>
4533
- <span class='kw'>end</span>
4534
-
4535
- <span class='id identifier rubyid_formatted'>formatted</span> <span class='op'>=</span> <span class='id identifier rubyid_format_amount'>format_amount</span><span class='lparen'>(</span><span class='id identifier rubyid_format'>format</span><span class='comma'>,</span> <span class='label'>decimal:</span> <span class='id identifier rubyid_decimal'>decimal</span><span class='comma'>,</span> <span class='label'>thousand:</span> <span class='id identifier rubyid_thousand'>thousand</span><span class='rparen'>)</span>
4536
-
4537
- <span class='id identifier rubyid_width'>width</span> <span class='op'>?</span> <span class='id identifier rubyid_formatted'>formatted</span><span class='period'>.</span><span class='id identifier rubyid_rjust'>rjust</span><span class='lparen'>(</span><span class='id identifier rubyid_width'>width</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_formatted'>formatted</span>
4538
- <span class='kw'>end</span></pre>
4539
- </td>
4540
- </tr>
4541
- </table>
4542
- </div>
4543
-
4544
- <div class="method_details ">
4545
- <h3 class="signature " id="zero?-instance_method">
4546
-
4547
- #<strong>zero?</strong> &#x21d2; <tt>Boolean</tt>
4548
-
4549
-
4550
-
4551
-
4552
-
4553
- </h3><div class="docstring">
4554
- <div class="discussion">
4555
- <p>Returns true if amount is zero.</p>
4556
-
4557
- </div>
4558
- </div>
4559
- <div class="tags">
4560
-
4561
- <p class="tag_title">Returns:</p>
4562
- <ul class="return">
4563
-
4564
- <li>
4565
-
4566
-
4567
- <span class='type'>(<tt>Boolean</tt>)</span>
4568
-
4569
-
4570
-
4571
- &mdash;
4572
- <div class='inline'><p>true if amount is zero</p></div>
4573
-
4574
- </li>
4575
-
4576
- </ul>
4577
-
4578
- </div><table class="source_code">
4579
- <tr>
4580
- <td>
4581
- <pre class="lines">
4582
-
4583
-
4584
- 54</pre>
4585
- </td>
4586
- <td>
4587
- <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 54</span>
4588
-
4589
- <span class='kw'>def</span> <span class='id identifier rubyid_zero?'>zero?</span> <span class='op'>=</span> <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span></pre>
4590
- </td>
4591
- </tr>
4592
- </table>
4593
- </div>
4594
-
4595
- </div>
4596
-
4597
- </div>
4598
-
4599
- <div id="footer">
4600
- Generated on Mon Jun 22 16:47:02 2026 by
4601
- <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
4602
- 0.9.44 (ruby-4.0.5).
4603
- </div>
4604
-
4605
- </div>
4606
- </body>
4607
- </html>