minting 1.6.3 → 1.7.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.
@@ -0,0 +1,3856 @@
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/money/money.rb<span class="defines">,<br>
105
+ lib/minting/money/coercion.rb,<br> lib/minting/money/allocation.rb,<br> lib/minting/money/comparable.rb,<br> lib/minting/money/conversion.rb,<br> lib/minting/money/formatting.rb,<br> lib/minting/money/arithmetics.rb,<br> lib/minting/money/constructors.rb</span>
106
+
107
+ </dd>
108
+ </dl>
109
+
110
+ </div>
111
+
112
+ <h2>Overview</h2><div class="docstring">
113
+ <div class="discussion">
114
+ <p>Money constructors</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>Creates a new Money immutable object with the specified amount and currency.</p></div></span>
239
+
240
+ </li>
241
+
242
+
243
+ <li class="public ">
244
+ <span class="summary_signature">
245
+
246
+ <a href="#from_fractional-class_method" title="from_fractional (class method)">.<strong>from_fractional</strong>(fractional, 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>Builds a Money from a fractional (smallest-unit) Integer amount.</p></div></span>
261
+
262
+ </li>
263
+
264
+
265
+ </ul>
266
+
267
+
268
+ <h2>
269
+ Instance Method Summary
270
+ <small><a href="#" class="summary_toggle">collapse</a></small>
271
+ </h2>
272
+
273
+ <ul class="summary">
274
+
275
+ <li class="public ">
276
+ <span class="summary_signature">
277
+
278
+ <a href="#*-instance_method" title="#* (instance method)">#<strong>*</strong>(multiplicand) &#x21d2; Money </a>
279
+
280
+
281
+
282
+ </span>
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+ <span class="summary_desc"><div class='inline'><p>Performs multiplication of the monetary value by a standard scalar Numeric.</p></div></span>
293
+
294
+ </li>
295
+
296
+
297
+ <li class="public ">
298
+ <span class="summary_signature">
299
+
300
+ <a href="#**-instance_method" title="#** (instance method)">#<strong>**</strong>(exponent) &#x21d2; Money </a>
301
+
302
+
303
+
304
+ </span>
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+ <span class="summary_desc"><div class='inline'><p>Performs exponentiation of the monetary value by a standard scalar Numeric.</p></div></span>
315
+
316
+ </li>
317
+
318
+
319
+ <li class="public ">
320
+ <span class="summary_signature">
321
+
322
+ <a href="#%2B-instance_method" title="#+ (instance method)">#<strong>+</strong>(addend) &#x21d2; Money </a>
323
+
324
+
325
+
326
+ </span>
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+ <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>
337
+
338
+ </li>
339
+
340
+
341
+ <li class="public ">
342
+ <span class="summary_signature">
343
+
344
+ <a href="#--instance_method" title="#- (instance method)">#<strong>-</strong>(subtrahend) &#x21d2; Money </a>
345
+
346
+
347
+
348
+ </span>
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+ <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>
359
+
360
+ </li>
361
+
362
+
363
+ <li class="public ">
364
+ <span class="summary_signature">
365
+
366
+ <a href="#-@-instance_method" title="#-@ (instance method)">#<strong>-@</strong> &#x21d2; Money </a>
367
+
368
+
369
+
370
+ </span>
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+ <span class="summary_desc"><div class='inline'><p>Unary negation operator.</p></div></span>
381
+
382
+ </li>
383
+
384
+
385
+ <li class="public ">
386
+ <span class="summary_signature">
387
+
388
+ <a href="#%2F-instance_method" title="#/ (instance method)">#<strong>/</strong>(divisor) &#x21d2; Money, Numeric </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 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>
403
+
404
+ </li>
405
+
406
+
407
+ <li class="public ">
408
+ <span class="summary_signature">
409
+
410
+ <a href="#<=>-instance_method" title="#&lt;=&gt; (instance method)">#<strong>&lt;=&gt;</strong>(other) &#x21d2; Object </a>
411
+
412
+
413
+
414
+ </span>
415
+
416
+
417
+
418
+
419
+
420
+
421
+
422
+
423
+
424
+ <span class="summary_desc"><div class='inline'></div></span>
425
+
426
+ </li>
427
+
428
+
429
+ <li class="public ">
430
+ <span class="summary_signature">
431
+
432
+ <a href="#==-instance_method" title="#== (instance method)">#<strong>==</strong>(other) &#x21d2; Object </a>
433
+
434
+
435
+
436
+ </span>
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+ <span class="summary_desc"><div class='inline'><p>True if both are zero, or both have same amount and same currency.</p></div></span>
447
+
448
+ </li>
449
+
450
+
451
+ <li class="public ">
452
+ <span class="summary_signature">
453
+
454
+ <a href="#abs-instance_method" title="#abs (instance method)">#<strong>abs</strong> &#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>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>
469
+
470
+ </li>
471
+
472
+
473
+ <li class="public ">
474
+ <span class="summary_signature">
475
+
476
+ <a href="#allocate-instance_method" title="#allocate (instance method)">#<strong>allocate</strong>(proportions) &#x21d2; Array&lt;Money&gt; </a>
477
+
478
+
479
+
480
+ </span>
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+ <span class="summary_desc"><div class='inline'><p>Proportionally allocates the monetary amount among a list of ratios.</p></div></span>
491
+
492
+ </li>
493
+
494
+
495
+ <li class="public ">
496
+ <span class="summary_signature">
497
+
498
+ <a href="#clamp-instance_method" title="#clamp (instance method)">#<strong>clamp</strong>(min_or_range, max = nil) &#x21d2; Money </a>
499
+
500
+
501
+
502
+ </span>
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+ <span class="summary_desc"><div class='inline'><p>Constrains <code>self</code> to the inclusive range [+min+, +max+].</p></div></span>
513
+
514
+ </li>
515
+
516
+
517
+ <li class="public ">
518
+ <span class="summary_signature">
519
+
520
+ <a href="#coerce-instance_method" title="#coerce (instance method)">#<strong>coerce</strong>(other) &#x21d2; Array(CoercedNumber, Money) </a>
521
+
522
+
523
+
524
+ </span>
525
+
526
+
527
+
528
+
529
+
530
+
531
+
532
+
533
+
534
+ <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>
535
+
536
+ </li>
537
+
538
+
539
+ <li class="public ">
540
+ <span class="summary_signature">
541
+
542
+ <a href="#currency_code-instance_method" title="#currency_code (instance method)">#<strong>currency_code</strong> &#x21d2; String </a>
543
+
544
+
545
+
546
+ </span>
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+ <span class="summary_desc"><div class='inline'><p>Returns the ISO 3-letter currency code string.</p></div></span>
557
+
558
+ </li>
559
+
560
+
561
+ <li class="public ">
562
+ <span class="summary_signature">
563
+
564
+ <a href="#eql%3F-instance_method" title="#eql? (instance method)">#<strong>eql?</strong>(other) &#x21d2; Boolean </a>
565
+
566
+
567
+
568
+ </span>
569
+
570
+
571
+
572
+
573
+
574
+
575
+
576
+
577
+
578
+ <span class="summary_desc"><div class='inline'></div></span>
579
+
580
+ </li>
581
+
582
+
583
+ <li class="public ">
584
+ <span class="summary_signature">
585
+
586
+ <a href="#fractional-instance_method" title="#fractional (instance method)">#<strong>fractional</strong> &#x21d2; Integer </a>
587
+
588
+
589
+
590
+ </span>
591
+
592
+
593
+
594
+
595
+
596
+
597
+
598
+
599
+
600
+ <span class="summary_desc"><div class='inline'><p>Returns the monetary amount expressed in the currency's smallest unit (fractional units).</p></div></span>
601
+
602
+ </li>
603
+
604
+
605
+ <li class="public ">
606
+ <span class="summary_signature">
607
+
608
+ <a href="#hash-instance_method" title="#hash (instance method)">#<strong>hash</strong> &#x21d2; Integer </a>
609
+
610
+
611
+
612
+ </span>
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+
622
+ <span class="summary_desc"><div class='inline'><p>Generates a stable hash key for Money instances.</p></div></span>
623
+
624
+ </li>
625
+
626
+
627
+ <li class="public ">
628
+ <span class="summary_signature">
629
+
630
+ <a href="#inspect-instance_method" title="#inspect (instance method)">#<strong>inspect</strong> &#x21d2; String </a>
631
+
632
+
633
+
634
+ </span>
635
+
636
+
637
+
638
+
639
+
640
+
641
+
642
+
643
+
644
+ <span class="summary_desc"><div class='inline'><p>Returns a standard developer-oriented string inspection of the Money object.</p></div></span>
645
+
646
+ </li>
647
+
648
+
649
+ <li class="public ">
650
+ <span class="summary_signature">
651
+
652
+ <a href="#mint-instance_method" title="#mint (instance method)">#<strong>mint</strong>(new_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="#negative%3F-instance_method" title="#negative? (instance method)">#<strong>negative?</strong> &#x21d2; Boolean </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 true if the monetary amount is less than zero.</p></div></span>
689
+
690
+ </li>
691
+
692
+
693
+ <li class="public ">
694
+ <span class="summary_signature">
695
+
696
+ <a href="#nonzero%3F-instance_method" title="#nonzero? (instance method)">#<strong>nonzero?</strong> &#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'></div></span>
711
+
712
+ </li>
713
+
714
+
715
+ <li class="public ">
716
+ <span class="summary_signature">
717
+
718
+ <a href="#positive%3F-instance_method" title="#positive? (instance method)">#<strong>positive?</strong> &#x21d2; Boolean </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 true if the monetary amount is greater than zero.</p></div></span>
733
+
734
+ </li>
735
+
736
+
737
+ <li class="public ">
738
+ <span class="summary_signature">
739
+
740
+ <a href="#same_currency%3F-instance_method" title="#same_currency? (instance method)">#<strong>same_currency?</strong>(other) &#x21d2; Boolean </a>
741
+
742
+
743
+
744
+ </span>
745
+
746
+
747
+
748
+
749
+
750
+
751
+
752
+
753
+
754
+ <span class="summary_desc"><div class='inline'><p>Helper method to verify if another object has the identical currency.</p></div></span>
755
+
756
+ </li>
757
+
758
+
759
+ <li class="public ">
760
+ <span class="summary_signature">
761
+
762
+ <a href="#split-instance_method" title="#split (instance method)">#<strong>split</strong>(quantity) &#x21d2; Array&lt;Money&gt; </a>
763
+
764
+
765
+
766
+ </span>
767
+
768
+
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+ <span class="summary_desc"><div class='inline'><p>Splits the monetary amount into a given quantity of equal parts.</p></div></span>
777
+
778
+ </li>
779
+
780
+
781
+ <li class="public ">
782
+ <span class="summary_signature">
783
+
784
+ <a href="#succ-instance_method" title="#succ (instance method)">#<strong>succ</strong> &#x21d2; Money </a>
785
+
786
+
787
+
788
+ </span>
789
+
790
+
791
+
792
+
793
+
794
+
795
+
796
+
797
+
798
+ <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>
799
+
800
+ </li>
801
+
802
+
803
+ <li class="public ">
804
+ <span class="summary_signature">
805
+
806
+ <a href="#to_d-instance_method" title="#to_d (instance method)">#<strong>to_d</strong> &#x21d2; BigDecimal </a>
807
+
808
+
809
+
810
+ </span>
811
+
812
+
813
+
814
+
815
+
816
+
817
+
818
+
819
+
820
+ <span class="summary_desc"><div class='inline'><p>Converts the monetary amount to a BigDecimal object.</p></div></span>
821
+
822
+ </li>
823
+
824
+
825
+ <li class="public ">
826
+ <span class="summary_signature">
827
+
828
+ <a href="#to_f-instance_method" title="#to_f (instance method)">#<strong>to_f</strong> &#x21d2; Float </a>
829
+
830
+
831
+
832
+ </span>
833
+
834
+
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+ <span class="summary_desc"><div class='inline'><p>Converts the monetary amount to a standard float.</p></div></span>
843
+
844
+ </li>
845
+
846
+
847
+ <li class="public ">
848
+ <span class="summary_signature">
849
+
850
+ <a href="#to_hash-instance_method" title="#to_hash (instance method)">#<strong>to_hash</strong> &#x21d2; Hash </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 a Hash representation of the money instance.</p></div></span>
865
+
866
+ </li>
867
+
868
+
869
+ <li class="public ">
870
+ <span class="summary_signature">
871
+
872
+ <a href="#to_html-instance_method" title="#to_html (instance method)">#<strong>to_html</strong>(format = DEFAULT_FORMAT) &#x21d2; String </a>
873
+
874
+
875
+
876
+ </span>
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+
885
+
886
+ <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>
887
+
888
+ </li>
889
+
890
+
891
+ <li class="public ">
892
+ <span class="summary_signature">
893
+
894
+ <a href="#to_i-instance_method" title="#to_i (instance method)">#<strong>to_i</strong> &#x21d2; Integer </a>
895
+
896
+
897
+
898
+ </span>
899
+
900
+
901
+
902
+
903
+
904
+
905
+
906
+
907
+
908
+ <span class="summary_desc"><div class='inline'><p>Truncates and converts the monetary amount to an Integer.</p></div></span>
909
+
910
+ </li>
911
+
912
+
913
+ <li class="public ">
914
+ <span class="summary_signature">
915
+
916
+ <a href="#to_json-instance_method" title="#to_json (instance method)">#<strong>to_json</strong>(*_args) &#x21d2; String </a>
917
+
918
+
919
+
920
+ </span>
921
+
922
+
923
+
924
+
925
+
926
+
927
+
928
+
929
+
930
+ <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>
931
+
932
+ </li>
933
+
934
+
935
+ <li class="public ">
936
+ <span class="summary_signature">
937
+
938
+ <a href="#to_r-instance_method" title="#to_r (instance method)">#<strong>to_r</strong> &#x21d2; Rational </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 exact internal Rational representation of the monetary amount.</p></div></span>
953
+
954
+ </li>
955
+
956
+
957
+ <li class="public ">
958
+ <span class="summary_signature">
959
+
960
+ <a href="#to_s-instance_method" title="#to_s (instance method)">#<strong>to_s</strong>(format: &#39;%&lt;symbol&gt;s%&lt;amount&gt;f&#39;, decimal: &#39;.&#39;, thousand: &#39;,&#39;, width: nil) &#x21d2; String </a>
961
+
962
+
963
+
964
+ </span>
965
+
966
+
967
+
968
+
969
+
970
+
971
+
972
+
973
+
974
+ <span class="summary_desc"><div class='inline'><p>Formats money as a string with customizable format, thousand delimiter, and decimal.</p></div></span>
975
+
976
+ </li>
977
+
978
+
979
+ <li class="public ">
980
+ <span class="summary_signature">
981
+
982
+ <a href="#zero%3F-instance_method" title="#zero? (instance method)">#<strong>zero?</strong> &#x21d2; Boolean </a>
983
+
984
+
985
+
986
+ </span>
987
+
988
+
989
+
990
+
991
+
992
+
993
+
994
+
995
+
996
+ <span class="summary_desc"><div class='inline'></div></span>
997
+
998
+ </li>
999
+
1000
+
1001
+ </ul>
1002
+
1003
+
1004
+
1005
+
1006
+
1007
+ <div id="instance_attr_details" class="attr_details">
1008
+ <h2>Instance Attribute Details</h2>
1009
+
1010
+
1011
+ <span id=""></span>
1012
+ <div class="method_details first">
1013
+ <h3 class="signature first" id="amount-instance_method">
1014
+
1015
+ #<strong>amount</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+ </h3><div class="docstring">
1022
+ <div class="discussion">
1023
+ <p>Returns the value of attribute amount.</p>
1024
+
1025
+ </div>
1026
+ </div>
1027
+ <div class="tags">
1028
+
1029
+
1030
+ </div><table class="source_code">
1031
+ <tr>
1032
+ <td>
1033
+ <pre class="lines">
1034
+
1035
+
1036
+ 10
1037
+ 11
1038
+ 12</pre>
1039
+ </td>
1040
+ <td>
1041
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 10</span>
1042
+
1043
+ <span class='kw'>def</span> <span class='id identifier rubyid_amount'>amount</span>
1044
+ <span class='ivar'>@amount</span>
1045
+ <span class='kw'>end</span></pre>
1046
+ </td>
1047
+ </tr>
1048
+ </table>
1049
+ </div>
1050
+
1051
+
1052
+ <span id=""></span>
1053
+ <div class="method_details ">
1054
+ <h3 class="signature " id="currency-instance_method">
1055
+
1056
+ #<strong>currency</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
1057
+
1058
+
1059
+
1060
+
1061
+
1062
+ </h3><div class="docstring">
1063
+ <div class="discussion">
1064
+ <p>Returns the value of attribute currency.</p>
1065
+
1066
+ </div>
1067
+ </div>
1068
+ <div class="tags">
1069
+
1070
+
1071
+ </div><table class="source_code">
1072
+ <tr>
1073
+ <td>
1074
+ <pre class="lines">
1075
+
1076
+
1077
+ 10
1078
+ 11
1079
+ 12</pre>
1080
+ </td>
1081
+ <td>
1082
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 10</span>
1083
+
1084
+ <span class='kw'>def</span> <span class='id identifier rubyid_currency'>currency</span>
1085
+ <span class='ivar'>@currency</span>
1086
+ <span class='kw'>end</span></pre>
1087
+ </td>
1088
+ </tr>
1089
+ </table>
1090
+ </div>
1091
+
1092
+ </div>
1093
+
1094
+
1095
+ <div id="class_method_details" class="method_details_list">
1096
+ <h2>Class Method Details</h2>
1097
+
1098
+
1099
+ <div class="method_details first">
1100
+ <h3 class="signature first" id="create-class_method">
1101
+
1102
+ .<strong>create</strong>(amount, currency) &#x21d2; <tt>Object</tt>
1103
+
1104
+
1105
+
1106
+
1107
+
1108
+ </h3><div class="docstring">
1109
+ <div class="discussion">
1110
+ <p>Creates a new Money immutable object with the specified amount and currency</p>
1111
+
1112
+ </div>
1113
+ </div>
1114
+ <div class="tags">
1115
+ <p class="tag_title">Parameters:</p>
1116
+ <ul class="param">
1117
+
1118
+ <li>
1119
+
1120
+ <span class='name'>amount</span>
1121
+
1122
+
1123
+ <span class='type'>(<tt>Numeric</tt>)</span>
1124
+
1125
+
1126
+
1127
+ &mdash;
1128
+ <div class='inline'><p>The monetary amount</p></div>
1129
+
1130
+ </li>
1131
+
1132
+ <li>
1133
+
1134
+ <span class='name'>currency</span>
1135
+
1136
+
1137
+ <span class='type'>(<tt><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></tt>, <tt>String</tt>)</span>
1138
+
1139
+
1140
+
1141
+ &mdash;
1142
+ <div class='inline'><p>The currency code or currency object</p></div>
1143
+
1144
+ </li>
1145
+
1146
+ </ul>
1147
+
1148
+ <p class="tag_title">Raises:</p>
1149
+ <ul class="raise">
1150
+
1151
+ <li>
1152
+
1153
+
1154
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
1155
+
1156
+
1157
+
1158
+ &mdash;
1159
+ <div class='inline'><p>If amount is not numeric or currency is invalid</p></div>
1160
+
1161
+ </li>
1162
+
1163
+ </ul>
1164
+
1165
+ </div><table class="source_code">
1166
+ <tr>
1167
+ <td>
1168
+ <pre class="lines">
1169
+
1170
+
1171
+ 10
1172
+ 11
1173
+ 12
1174
+ 13
1175
+ 14
1176
+ 15
1177
+ 16
1178
+ 17</pre>
1179
+ </td>
1180
+ <td>
1181
+ <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 10</span>
1182
+
1183
+ <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>
1184
+ <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>
1185
+
1186
+ <span class='id identifier rubyid_checked_currency'>checked_currency</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_currency'><span class='object_link'><a href="../Mint.html#currency-class_method" title="Mint.currency (method)">currency</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1187
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Currency not found (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currency'>currency</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_checked_currency'>checked_currency</span>
1188
+
1189
+ <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_checked_currency'>checked_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><span class='comma'>,</span> <span class='id identifier rubyid_checked_currency'>checked_currency</span><span class='rparen'>)</span>
1190
+ <span class='kw'>end</span></pre>
1191
+ </td>
1192
+ </tr>
1193
+ </table>
1194
+ </div>
1195
+
1196
+ <div class="method_details ">
1197
+ <h3 class="signature " id="from_fractional-class_method">
1198
+
1199
+ .<strong>from_fractional</strong>(fractional, currency) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+ </h3><div class="docstring">
1206
+ <div class="discussion">
1207
+ <p>Builds a Money from a fractional (smallest-unit) Integer amount.
1208
+ This is the inverse of <span class='object_link'><a href="#fractional-instance_method" title="Mint::Money#fractional (method)">#fractional</a></span>: for USD, the fractional unit is
1209
+ 1 cent; for JPY it is 1 yen; for IQD it is 1 dinar (subunit 3).</p>
1210
+
1211
+ </div>
1212
+ </div>
1213
+ <div class="tags">
1214
+
1215
+ <div class="examples">
1216
+ <h4 class="tag_title">Examples:</h4>
1217
+
1218
+
1219
+ <h5 class="example_title"><div class='inline'><p>USD cents</p></div></h5>
1220
+
1221
+ <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_fractional'>from_fractional</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>
1222
+
1223
+
1224
+ <h5 class="example_title"><div class='inline'><p>JPY (subunit 0)</p></div></h5>
1225
+
1226
+ <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_fractional'>from_fractional</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>
1227
+
1228
+
1229
+ <h5 class="example_title"><div class='inline'><p>Round trip</p></div></h5>
1230
+
1231
+ <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>
1232
+ <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_fractional'>from_fractional</span><span class='lparen'>(</span><span class='id identifier rubyid_m'>m</span><span class='period'>.</span><span class='id identifier rubyid_fractional'>fractional</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>
1233
+
1234
+ </div>
1235
+ <p class="tag_title">Parameters:</p>
1236
+ <ul class="param">
1237
+
1238
+ <li>
1239
+
1240
+ <span class='name'>fractional</span>
1241
+
1242
+
1243
+ <span class='type'>(<tt>Integer</tt>)</span>
1244
+
1245
+
1246
+
1247
+ &mdash;
1248
+ <div class='inline'><p>the amount expressed in the currency's
1249
+ smallest unit (e.g. cents). Must be an Integer to preserve exactness.</p></div>
1250
+
1251
+ </li>
1252
+
1253
+ <li>
1254
+
1255
+ <span class='name'>currency</span>
1256
+
1257
+
1258
+ <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>
1259
+
1260
+
1261
+
1262
+ &mdash;
1263
+ <div class='inline'><p>the currency identifier</p></div>
1264
+
1265
+ </li>
1266
+
1267
+ </ul>
1268
+
1269
+ <p class="tag_title">Returns:</p>
1270
+ <ul class="return">
1271
+
1272
+ <li>
1273
+
1274
+
1275
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1276
+
1277
+
1278
+
1279
+ &mdash;
1280
+ <div class='inline'><p>the resulting Money instance</p></div>
1281
+
1282
+ </li>
1283
+
1284
+ </ul>
1285
+ <p class="tag_title">Raises:</p>
1286
+ <ul class="raise">
1287
+
1288
+ <li>
1289
+
1290
+
1291
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
1292
+
1293
+
1294
+
1295
+ &mdash;
1296
+ <div class='inline'><p>if <code>fractional</code> is not an Integer or <code>currency</code>
1297
+ is not registered</p></div>
1298
+
1299
+ </li>
1300
+
1301
+ </ul>
1302
+
1303
+ </div><table class="source_code">
1304
+ <tr>
1305
+ <td>
1306
+ <pre class="lines">
1307
+
1308
+
1309
+ 37
1310
+ 38
1311
+ 39
1312
+ 40
1313
+ 41
1314
+ 42
1315
+ 43
1316
+ 44
1317
+ 45</pre>
1318
+ </td>
1319
+ <td>
1320
+ <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 37</span>
1321
+
1322
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_from_fractional'>from_fractional</span><span class='lparen'>(</span><span class='id identifier rubyid_fractional'>fractional</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1323
+ <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'>fractional must be an Integer</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_fractional'>fractional</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>
1324
+
1325
+ <span class='id identifier rubyid_checked_currency'>checked_currency</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_currency'><span class='object_link'><a href="../Mint.html#currency-class_method" title="Mint.currency (method)">currency</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1326
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Currency not found (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currency'>currency</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_checked_currency'>checked_currency</span>
1327
+
1328
+ <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_fractional'>fractional</span><span class='comma'>,</span> <span class='id identifier rubyid_checked_currency'>checked_currency</span><span class='period'>.</span><span class='id identifier rubyid_fractional_multiplier'>fractional_multiplier</span><span class='rparen'>)</span>
1329
+ <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_checked_currency'>checked_currency</span><span class='rparen'>)</span>
1330
+ <span class='kw'>end</span></pre>
1331
+ </td>
1332
+ </tr>
1333
+ </table>
1334
+ </div>
1335
+
1336
+ </div>
1337
+
1338
+ <div id="instance_method_details" class="method_details_list">
1339
+ <h2>Instance Method Details</h2>
1340
+
1341
+
1342
+ <div class="method_details first">
1343
+ <h3 class="signature first" id="*-instance_method">
1344
+
1345
+ #<strong>*</strong>(multiplicand) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1346
+
1347
+
1348
+
1349
+
1350
+
1351
+ </h3><div class="docstring">
1352
+ <div class="discussion">
1353
+ <p>Performs multiplication of the monetary value by a standard scalar Numeric.</p>
1354
+
1355
+ </div>
1356
+ </div>
1357
+ <div class="tags">
1358
+ <p class="tag_title">Parameters:</p>
1359
+ <ul class="param">
1360
+
1361
+ <li>
1362
+
1363
+ <span class='name'>multiplicand</span>
1364
+
1365
+
1366
+ <span class='type'>(<tt>Numeric</tt>)</span>
1367
+
1368
+
1369
+
1370
+ &mdash;
1371
+ <div class='inline'><p>the scalar multiplier</p></div>
1372
+
1373
+ </li>
1374
+
1375
+ </ul>
1376
+
1377
+ <p class="tag_title">Returns:</p>
1378
+ <ul class="return">
1379
+
1380
+ <li>
1381
+
1382
+
1383
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1384
+
1385
+
1386
+
1387
+ &mdash;
1388
+ <div class='inline'><p>the multiplied Money instance</p></div>
1389
+
1390
+ </li>
1391
+
1392
+ </ul>
1393
+ <p class="tag_title">Raises:</p>
1394
+ <ul class="raise">
1395
+
1396
+ <li>
1397
+
1398
+
1399
+ <span class='type'>(<tt>TypeError</tt>)</span>
1400
+
1401
+
1402
+
1403
+ &mdash;
1404
+ <div class='inline'><p>if multiplier is not Numeric or is a Money object</p></div>
1405
+
1406
+ </li>
1407
+
1408
+ </ul>
1409
+
1410
+ </div><table class="source_code">
1411
+ <tr>
1412
+ <td>
1413
+ <pre class="lines">
1414
+
1415
+
1416
+ 63
1417
+ 64
1418
+ 65
1419
+ 66
1420
+ 67</pre>
1421
+ </td>
1422
+ <td>
1423
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 63</span>
1424
+
1425
+ <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>
1426
+ <span class='kw'>return</span> <span class='id identifier rubyid_mint'>mint</span><span class='lparen'>(</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> <span class='kw'>if</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>
1427
+
1428
+ <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>
1429
+ <span class='kw'>end</span></pre>
1430
+ </td>
1431
+ </tr>
1432
+ </table>
1433
+ </div>
1434
+
1435
+ <div class="method_details ">
1436
+ <h3 class="signature " id="**-instance_method">
1437
+
1438
+ #<strong>**</strong>(exponent) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1439
+
1440
+
1441
+
1442
+
1443
+
1444
+ </h3><div class="docstring">
1445
+ <div class="discussion">
1446
+ <p>Performs exponentiation of the monetary value by a standard scalar Numeric.</p>
1447
+
1448
+ </div>
1449
+ </div>
1450
+ <div class="tags">
1451
+ <p class="tag_title">Parameters:</p>
1452
+ <ul class="param">
1453
+
1454
+ <li>
1455
+
1456
+ <span class='name'>exponent</span>
1457
+
1458
+
1459
+ <span class='type'>(<tt>Numeric</tt>)</span>
1460
+
1461
+
1462
+
1463
+ </li>
1464
+
1465
+ </ul>
1466
+
1467
+ <p class="tag_title">Returns:</p>
1468
+ <ul class="return">
1469
+
1470
+ <li>
1471
+
1472
+
1473
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1474
+
1475
+
1476
+
1477
+ &mdash;
1478
+ <div class='inline'><p>reult of amount ** exponent</p></div>
1479
+
1480
+ </li>
1481
+
1482
+ </ul>
1483
+ <p class="tag_title">Raises:</p>
1484
+ <ul class="raise">
1485
+
1486
+ <li>
1487
+
1488
+
1489
+ <span class='type'>(<tt>TypeError</tt>)</span>
1490
+
1491
+
1492
+
1493
+ &mdash;
1494
+ <div class='inline'><p>if exponent is not Numeric</p></div>
1495
+
1496
+ </li>
1497
+
1498
+ </ul>
1499
+
1500
+ </div><table class="source_code">
1501
+ <tr>
1502
+ <td>
1503
+ <pre class="lines">
1504
+
1505
+
1506
+ 88
1507
+ 89
1508
+ 90
1509
+ 91
1510
+ 92</pre>
1511
+ </td>
1512
+ <td>
1513
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 88</span>
1514
+
1515
+ <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>
1516
+ <span class='kw'>return</span> <span class='id identifier rubyid_mint'>mint</span><span class='lparen'>(</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>
1517
+
1518
+ <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>
1519
+ <span class='kw'>end</span></pre>
1520
+ </td>
1521
+ </tr>
1522
+ </table>
1523
+ </div>
1524
+
1525
+ <div class="method_details ">
1526
+ <h3 class="signature " id="+-instance_method">
1527
+
1528
+ #<strong>+</strong>(addend) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1529
+
1530
+
1531
+
1532
+
1533
+
1534
+ </h3><div class="docstring">
1535
+ <div class="discussion">
1536
+ <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>
1537
+
1538
+ </div>
1539
+ </div>
1540
+ <div class="tags">
1541
+ <p class="tag_title">Parameters:</p>
1542
+ <ul class="param">
1543
+
1544
+ <li>
1545
+
1546
+ <span class='name'>addend</span>
1547
+
1548
+
1549
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>)</span>
1550
+
1551
+
1552
+
1553
+ &mdash;
1554
+ <div class='inline'><p>the value to add</p></div>
1555
+
1556
+ </li>
1557
+
1558
+ </ul>
1559
+
1560
+ <p class="tag_title">Returns:</p>
1561
+ <ul class="return">
1562
+
1563
+ <li>
1564
+
1565
+
1566
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1567
+
1568
+
1569
+
1570
+ &mdash;
1571
+ <div class='inline'><p>the sum of the addition</p></div>
1572
+
1573
+ </li>
1574
+
1575
+ </ul>
1576
+ <p class="tag_title">Raises:</p>
1577
+ <ul class="raise">
1578
+
1579
+ <li>
1580
+
1581
+
1582
+ <span class='type'>(<tt>TypeError</tt>)</span>
1583
+
1584
+
1585
+
1586
+ &mdash;
1587
+ <div class='inline'><p>if addition involves a different currency or incompatible types</p></div>
1588
+
1589
+ </li>
1590
+
1591
+ </ul>
1592
+
1593
+ </div><table class="source_code">
1594
+ <tr>
1595
+ <td>
1596
+ <pre class="lines">
1597
+
1598
+
1599
+ 32
1600
+ 33
1601
+ 34
1602
+ 35
1603
+ 36
1604
+ 37
1605
+ 38</pre>
1606
+ </td>
1607
+ <td>
1608
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 32</span>
1609
+
1610
+ <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>
1611
+ <span class='kw'>case</span> <span class='id identifier rubyid_addend'>addend</span>
1612
+ <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>
1613
+ <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_mint'>mint</span><span class='lparen'>(</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> <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>
1614
+ <span class='kw'>end</span>
1615
+ <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>
1616
+ <span class='kw'>end</span></pre>
1617
+ </td>
1618
+ </tr>
1619
+ </table>
1620
+ </div>
1621
+
1622
+ <div class="method_details ">
1623
+ <h3 class="signature " id="--instance_method">
1624
+
1625
+ #<strong>-</strong>(subtrahend) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+ </h3><div class="docstring">
1632
+ <div class="discussion">
1633
+ <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>
1634
+
1635
+ </div>
1636
+ </div>
1637
+ <div class="tags">
1638
+ <p class="tag_title">Parameters:</p>
1639
+ <ul class="param">
1640
+
1641
+ <li>
1642
+
1643
+ <span class='name'>subtrahend</span>
1644
+
1645
+
1646
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>)</span>
1647
+
1648
+
1649
+
1650
+ &mdash;
1651
+ <div class='inline'><p>the value to subtract</p></div>
1652
+
1653
+ </li>
1654
+
1655
+ </ul>
1656
+
1657
+ <p class="tag_title">Returns:</p>
1658
+ <ul class="return">
1659
+
1660
+ <li>
1661
+
1662
+
1663
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1664
+
1665
+
1666
+
1667
+ &mdash;
1668
+ <div class='inline'><p>the difference of the subtraction</p></div>
1669
+
1670
+ </li>
1671
+
1672
+ </ul>
1673
+ <p class="tag_title">Raises:</p>
1674
+ <ul class="raise">
1675
+
1676
+ <li>
1677
+
1678
+
1679
+ <span class='type'>(<tt>TypeError</tt>)</span>
1680
+
1681
+
1682
+
1683
+ &mdash;
1684
+ <div class='inline'><p>if subtraction involves a different currency or incompatible types</p></div>
1685
+
1686
+ </li>
1687
+
1688
+ </ul>
1689
+
1690
+ </div><table class="source_code">
1691
+ <tr>
1692
+ <td>
1693
+ <pre class="lines">
1694
+
1695
+
1696
+ 45
1697
+ 46
1698
+ 47
1699
+ 48
1700
+ 49
1701
+ 50
1702
+ 51</pre>
1703
+ </td>
1704
+ <td>
1705
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 45</span>
1706
+
1707
+ <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>
1708
+ <span class='kw'>case</span> <span class='id identifier rubyid_subtrahend'>subtrahend</span>
1709
+ <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>
1710
+ <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_mint'>mint</span><span class='lparen'>(</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>
1711
+ <span class='kw'>end</span>
1712
+ <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>
1713
+ <span class='kw'>end</span></pre>
1714
+ </td>
1715
+ </tr>
1716
+ </table>
1717
+ </div>
1718
+
1719
+ <div class="method_details ">
1720
+ <h3 class="signature " id="-@-instance_method">
1721
+
1722
+ #<strong>-@</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1723
+
1724
+
1725
+
1726
+
1727
+
1728
+ </h3><div class="docstring">
1729
+ <div class="discussion">
1730
+ <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>
1731
+
1732
+ </div>
1733
+ </div>
1734
+ <div class="tags">
1735
+
1736
+ <p class="tag_title">Returns:</p>
1737
+ <ul class="return">
1738
+
1739
+ <li>
1740
+
1741
+
1742
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1743
+
1744
+
1745
+
1746
+ &mdash;
1747
+ <div class='inline'><p>negated Money instance</p></div>
1748
+
1749
+ </li>
1750
+
1751
+ </ul>
1752
+
1753
+ </div><table class="source_code">
1754
+ <tr>
1755
+ <td>
1756
+ <pre class="lines">
1757
+
1758
+
1759
+ 56</pre>
1760
+ </td>
1761
+ <td>
1762
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 56</span>
1763
+
1764
+ <span class='kw'>def</span> <span class='op'>-@</span> <span class='op'>=</span> <span class='id identifier rubyid_mint'>mint</span><span class='lparen'>(</span><span class='op'>-</span><span class='id identifier rubyid_amount'>amount</span><span class='rparen'>)</span></pre>
1765
+ </td>
1766
+ </tr>
1767
+ </table>
1768
+ </div>
1769
+
1770
+ <div class="method_details ">
1771
+ <h3 class="signature " id="/-instance_method">
1772
+
1773
+ #<strong>/</strong>(divisor) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>
1774
+
1775
+
1776
+
1777
+
1778
+
1779
+ </h3><div class="docstring">
1780
+ <div class="discussion">
1781
+ <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>
1782
+
1783
+ </div>
1784
+ </div>
1785
+ <div class="tags">
1786
+ <p class="tag_title">Parameters:</p>
1787
+ <ul class="param">
1788
+
1789
+ <li>
1790
+
1791
+ <span class='name'>divisor</span>
1792
+
1793
+
1794
+ <span class='type'>(<tt>Numeric</tt>, <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1795
+
1796
+
1797
+
1798
+ &mdash;
1799
+ <div class='inline'><p>the divisor</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>, <tt>Numeric</tt>)</span>
1812
+
1813
+
1814
+
1815
+ &mdash;
1816
+ <div class='inline'><p>a new Money (scalar division) or a numeric ratio (Money division)</p></div>
1817
+
1818
+ </li>
1819
+
1820
+ </ul>
1821
+ <p class="tag_title">Raises:</p>
1822
+ <ul class="raise">
1823
+
1824
+ <li>
1825
+
1826
+
1827
+ <span class='type'>(<tt>TypeError</tt>)</span>
1828
+
1829
+
1830
+
1831
+ &mdash;
1832
+ <div class='inline'><p>if divisor is of incompatible type or different currency</p></div>
1833
+
1834
+ </li>
1835
+
1836
+ <li>
1837
+
1838
+
1839
+ <span class='type'>(<tt>ZeroDivisionError</tt>)</span>
1840
+
1841
+
1842
+
1843
+ &mdash;
1844
+ <div class='inline'><p>if division by zero is attempted</p></div>
1845
+
1846
+ </li>
1847
+
1848
+ </ul>
1849
+
1850
+ </div><table class="source_code">
1851
+ <tr>
1852
+ <td>
1853
+ <pre class="lines">
1854
+
1855
+
1856
+ 75
1857
+ 76
1858
+ 77
1859
+ 78
1860
+ 79
1861
+ 80
1862
+ 81</pre>
1863
+ </td>
1864
+ <td>
1865
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 75</span>
1866
+
1867
+ <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>
1868
+ <span class='kw'>case</span> <span class='id identifier rubyid_divisor'>divisor</span>
1869
+ <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_mint'>mint</span><span class='lparen'>(</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>
1870
+ <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>
1871
+ <span class='kw'>end</span>
1872
+ <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>
1873
+ <span class='kw'>end</span></pre>
1874
+ </td>
1875
+ </tr>
1876
+ </table>
1877
+ </div>
1878
+
1879
+ <div class="method_details ">
1880
+ <h3 class="signature " id="<=>-instance_method">
1881
+
1882
+ #<strong>&lt;=&gt;</strong>(other) &#x21d2; <tt>Object</tt>
1883
+
1884
+
1885
+
1886
+
1887
+
1888
+ </h3><div class="docstring">
1889
+ <div class="discussion">
1890
+
1891
+
1892
+ </div>
1893
+ </div>
1894
+ <div class="tags">
1895
+
1896
+ <div class="examples">
1897
+ <h4 class="tag_title">Examples:</h4>
1898
+
1899
+
1900
+ <pre class="example code"><code>two_usd == Mint.money(2r, &#39;USD&#39;) #=&gt; [$ 2.00]
1901
+ two_usd &gt; 0 #=&gt; true
1902
+ two_usd &gt; Mint.money(2, &#39;USD&#39;) #=&gt; false
1903
+ two_usd &gt; 1
1904
+ =&gt; TypeError: [$ 2.00] can&#39;t be compared to 1
1905
+ two_usd &gt; Mint.money(2, &#39;BRL&#39;)
1906
+ =&gt; TypeError: [$ 2.00] can&#39;t be compared to [R$ 2.00]</code></pre>
1907
+
1908
+ </div>
1909
+
1910
+
1911
+ </div><table class="source_code">
1912
+ <tr>
1913
+ <td>
1914
+ <pre class="lines">
1915
+
1916
+
1917
+ 32
1918
+ 33
1919
+ 34
1920
+ 35
1921
+ 36
1922
+ 37
1923
+ 38</pre>
1924
+ </td>
1925
+ <td>
1926
+ <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 32</span>
1927
+
1928
+ <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>
1929
+ <span class='kw'>case</span> <span class='id identifier rubyid_other'>other</span>
1930
+ <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>
1931
+ <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>
1932
+ <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>
1933
+ <span class='kw'>end</span>
1934
+ <span class='kw'>end</span></pre>
1935
+ </td>
1936
+ </tr>
1937
+ </table>
1938
+ </div>
1939
+
1940
+ <div class="method_details ">
1941
+ <h3 class="signature " id="==-instance_method">
1942
+
1943
+ #<strong>==</strong>(other) &#x21d2; <tt>Object</tt>
1944
+
1945
+
1946
+
1947
+
1948
+
1949
+ </h3><div class="docstring">
1950
+ <div class="discussion">
1951
+ <p>Returns true if both are zero, or both have same amount and same currency.</p>
1952
+
1953
+ </div>
1954
+ </div>
1955
+ <div class="tags">
1956
+
1957
+ <p class="tag_title">Returns:</p>
1958
+ <ul class="return">
1959
+
1960
+ <li>
1961
+
1962
+
1963
+ <span class='type'></span>
1964
+
1965
+
1966
+
1967
+
1968
+ <div class='inline'><p>true if both are zero, or both have same amount and same currency</p></div>
1969
+
1970
+ </li>
1971
+
1972
+ </ul>
1973
+
1974
+ </div><table class="source_code">
1975
+ <tr>
1976
+ <td>
1977
+ <pre class="lines">
1978
+
1979
+
1980
+ 9
1981
+ 10
1982
+ 11
1983
+ 12
1984
+ 13
1985
+ 14
1986
+ 15</pre>
1987
+ </td>
1988
+ <td>
1989
+ <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 9</span>
1990
+
1991
+ <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>
1992
+ <span class='kw'>case</span> <span class='id identifier rubyid_other'>other</span>
1993
+ <span class='kw'>when</span> <span class='int'>0</span> <span class='kw'>then</span> <span class='id identifier rubyid_zero?'>zero?</span>
1994
+ <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>
1995
+ <span class='kw'>else</span> <span class='kw'>false</span>
1996
+ <span class='kw'>end</span>
1997
+ <span class='kw'>end</span></pre>
1998
+ </td>
1999
+ </tr>
2000
+ </table>
2001
+ </div>
2002
+
2003
+ <div class="method_details ">
2004
+ <h3 class="signature " id="abs-instance_method">
2005
+
2006
+ #<strong>abs</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2007
+
2008
+
2009
+
2010
+
2011
+
2012
+ </h3><div class="docstring">
2013
+ <div class="discussion">
2014
+ <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>
2015
+
2016
+ </div>
2017
+ </div>
2018
+ <div class="tags">
2019
+
2020
+ <p class="tag_title">Returns:</p>
2021
+ <ul class="return">
2022
+
2023
+ <li>
2024
+
2025
+
2026
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2027
+
2028
+
2029
+
2030
+ &mdash;
2031
+ <div class='inline'><p>the absolute value</p></div>
2032
+
2033
+ </li>
2034
+
2035
+ </ul>
2036
+
2037
+ </div><table class="source_code">
2038
+ <tr>
2039
+ <td>
2040
+ <pre class="lines">
2041
+
2042
+
2043
+ 9</pre>
2044
+ </td>
2045
+ <td>
2046
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 9</span>
2047
+
2048
+ <span class='kw'>def</span> <span class='id identifier rubyid_abs'>abs</span> <span class='op'>=</span> <span class='id identifier rubyid_mint'>mint</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='rparen'>)</span></pre>
2049
+ </td>
2050
+ </tr>
2051
+ </table>
2052
+ </div>
2053
+
2054
+ <div class="method_details ">
2055
+ <h3 class="signature " id="allocate-instance_method">
2056
+
2057
+ #<strong>allocate</strong>(proportions) &#x21d2; <tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>
2058
+
2059
+
2060
+
2061
+
2062
+
2063
+ </h3><div class="docstring">
2064
+ <div class="discussion">
2065
+ <p>Proportionally allocates the monetary amount among a list of ratios.
2066
+ Disperses any subunit rounding amounts across the initial slots</p>
2067
+
2068
+ </div>
2069
+ </div>
2070
+ <div class="tags">
2071
+
2072
+ <div class="examples">
2073
+ <h4 class="tag_title">Examples:</h4>
2074
+
2075
+
2076
+ <h5 class="example_title"><div class='inline'><p>Proportional allocation</p></div></h5>
2077
+
2078
+ <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>
2079
+ <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>
2080
+
2081
+ </div>
2082
+ <p class="tag_title">Parameters:</p>
2083
+ <ul class="param">
2084
+
2085
+ <li>
2086
+
2087
+ <span class='name'>proportions</span>
2088
+
2089
+
2090
+ <span class='type'>(<tt>Array&lt;Numeric&gt;</tt>)</span>
2091
+
2092
+
2093
+
2094
+ &mdash;
2095
+ <div class='inline'><p>a list of numeric proportions/ratios to allocate by</p></div>
2096
+
2097
+ </li>
2098
+
2099
+ </ul>
2100
+
2101
+ <p class="tag_title">Returns:</p>
2102
+ <ul class="return">
2103
+
2104
+ <li>
2105
+
2106
+
2107
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>)</span>
2108
+
2109
+
2110
+
2111
+ &mdash;
2112
+ <div class='inline'><p>the list of newly allocated Money objects</p></div>
2113
+
2114
+ </li>
2115
+
2116
+ </ul>
2117
+ <p class="tag_title">Raises:</p>
2118
+ <ul class="raise">
2119
+
2120
+ <li>
2121
+
2122
+
2123
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
2124
+
2125
+
2126
+
2127
+ &mdash;
2128
+ <div class='inline'><p>if the proportions list is empty or sums to zero</p></div>
2129
+
2130
+ </li>
2131
+
2132
+ </ul>
2133
+
2134
+ </div><table class="source_code">
2135
+ <tr>
2136
+ <td>
2137
+ <pre class="lines">
2138
+
2139
+
2140
+ 15
2141
+ 16
2142
+ 17
2143
+ 18
2144
+ 19
2145
+ 20
2146
+ 21
2147
+ 22
2148
+ 23</pre>
2149
+ </td>
2150
+ <td>
2151
+ <pre class="code"><span class="info file"># File 'lib/minting/money/allocation.rb', line 15</span>
2152
+
2153
+ <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>
2154
+ <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>
2155
+ <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>
2156
+ <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>
2157
+
2158
+ <span class='id identifier rubyid_subunit'>subunit</span> <span class='op'>=</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_subunit'>subunit</span>
2159
+ <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='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='period'>.</span><span class='id identifier rubyid_round'>round</span><span class='lparen'>(</span><span class='id identifier rubyid_subunit'>subunit</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
2160
+ <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>
2161
+ <span class='kw'>end</span></pre>
2162
+ </td>
2163
+ </tr>
2164
+ </table>
2165
+ </div>
2166
+
2167
+ <div class="method_details ">
2168
+ <h3 class="signature " id="clamp-instance_method">
2169
+
2170
+ #<strong>clamp</strong>(min_or_range, max = nil) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2171
+
2172
+
2173
+
2174
+
2175
+
2176
+ </h3><div class="docstring">
2177
+ <div class="discussion">
2178
+ <p>Constrains <code>self</code> to the inclusive range [+min+, +max+].</p>
2179
+ <p>Bounds may be:</p>
2180
+ <ul>
2181
+ <li>nil meaning no boundary</li>
2182
+ <li>same-currency <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> or Range</li>
2183
+ <li>Numeric amount, or Range</li>
2184
+ </ul>
2185
+ <p>Numeric is interpreted as an amount in +self+'s currency, so the common
2186
+ pricing idiom <code>price.clamp(0, 100)</code> reads as &quot;0 to 100 in the same
2187
+ currency as +price+&quot;.</p>
2188
+ <p>When <code>self</code> is already in range the receiver is returned (no new object
2189
+ allocated). When out of range, the nearest bound is returned as a new
2190
+ frozen <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> in +self+'s currency.</p>
2191
+
2192
+ </div>
2193
+ </div>
2194
+ <div class="tags">
2195
+
2196
+ <div class="examples">
2197
+ <h4 class="tag_title">Examples:</h4>
2198
+
2199
+
2200
+ <h5 class="example_title"><div class='inline'><p>In range</p></div></h5>
2201
+
2202
+ <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>
2203
+
2204
+
2205
+ <h5 class="example_title"><div class='inline'><p>Out of range, with Numeric bounds</p></div></h5>
2206
+
2207
+ <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>
2208
+
2209
+
2210
+ <h5 class="example_title"><div class='inline'><p>Out of range, with Money bounds</p></div></h5>
2211
+
2212
+ <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>
2213
+ <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>
2214
+ <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>
2215
+ <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>
2216
+
2217
+
2218
+ <h5 class="example_title"><div class='inline'><p>Subunit-0 currency (JPY)</p></div></h5>
2219
+
2220
+ <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>
2221
+
2222
+ </div>
2223
+ <p class="tag_title">Parameters:</p>
2224
+ <ul class="param">
2225
+
2226
+ <li>
2227
+
2228
+ <span class='name'>min_or_range</span>
2229
+
2230
+
2231
+ <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>
2232
+
2233
+
2234
+
2235
+ &mdash;
2236
+ <div class='inline'><p>lower bound (inclusive), or range</p></div>
2237
+
2238
+ </li>
2239
+
2240
+ <li>
2241
+
2242
+ <span class='name'>max</span>
2243
+
2244
+
2245
+ <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>
2246
+
2247
+
2248
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
2249
+
2250
+
2251
+ &mdash;
2252
+ <div class='inline'><p>upper bound (inclusive)</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><code>self</code> if in range, otherwise the nearer bound</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>ArgumentError</tt>)</span>
2281
+
2282
+
2283
+
2284
+ &mdash;
2285
+ <div class='inline'><p>if <code>min</code> or <code>max</code> is not a Money, Numeric or nil; if
2286
+ a Money operand has a different currency; if <code>min</code> &gt; <code>max</code>;
2287
+ if min is a Range, and max is not nil</p></div>
2288
+
2289
+ </li>
2290
+
2291
+ </ul>
2292
+
2293
+ </div><table class="source_code">
2294
+ <tr>
2295
+ <td>
2296
+ <pre class="lines">
2297
+
2298
+
2299
+ 83
2300
+ 84
2301
+ 85
2302
+ 86
2303
+ 87
2304
+ 88
2305
+ 89
2306
+ 90
2307
+ 91
2308
+ 92</pre>
2309
+ </td>
2310
+ <td>
2311
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 83</span>
2312
+
2313
+ <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>
2314
+ <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>
2315
+ <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>
2316
+
2317
+ <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>
2318
+ <span class='kw'>else</span>
2319
+ <span class='id identifier rubyid_min'>min</span> <span class='op'>=</span> <span class='id identifier rubyid_min_or_range'>min_or_range</span>
2320
+ <span class='kw'>end</span>
2321
+ <span class='id identifier rubyid_mint'>mint</span><span class='lparen'>(</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>
2322
+ <span class='kw'>end</span></pre>
2323
+ </td>
2324
+ </tr>
2325
+ </table>
2326
+ </div>
2327
+
2328
+ <div class="method_details ">
2329
+ <h3 class="signature " id="coerce-instance_method">
2330
+
2331
+ #<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>
2332
+
2333
+
2334
+
2335
+
2336
+
2337
+ </h3><div class="docstring">
2338
+ <div class="discussion">
2339
+ <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.
2340
+ This enables expressions like <code>5 + money</code> where <code>5</code> is a Numeric and <code>money</code> is a Money object.</p>
2341
+
2342
+ </div>
2343
+ </div>
2344
+ <div class="tags">
2345
+
2346
+ <div class="examples">
2347
+ <h4 class="tag_title">Examples:</h4>
2348
+
2349
+
2350
+ <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>
2351
+ <span class='int'>5</span> <span class='op'>+</span> <span class='id identifier rubyid_price'>price</span> <span class='comment'>#=&gt; [USD 15.00] (via coercion)</span></code></pre>
2352
+
2353
+ </div>
2354
+ <p class="tag_title">Parameters:</p>
2355
+ <ul class="param">
2356
+
2357
+ <li>
2358
+
2359
+ <span class='name'>other</span>
2360
+
2361
+
2362
+ <span class='type'>(<tt>Numeric</tt>)</span>
2363
+
2364
+
2365
+
2366
+ &mdash;
2367
+ <div class='inline'><p>the left-hand operand to coerce</p></div>
2368
+
2369
+ </li>
2370
+
2371
+ </ul>
2372
+
2373
+ <p class="tag_title">Returns:</p>
2374
+ <ul class="return">
2375
+
2376
+ <li>
2377
+
2378
+
2379
+ <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>
2380
+
2381
+
2382
+
2383
+ &mdash;
2384
+ <div class='inline'><p>coerced operand array</p></div>
2385
+
2386
+ </li>
2387
+
2388
+ </ul>
2389
+
2390
+ </div><table class="source_code">
2391
+ <tr>
2392
+ <td>
2393
+ <pre class="lines">
2394
+
2395
+
2396
+ 14
2397
+ 15
2398
+ 16</pre>
2399
+ </td>
2400
+ <td>
2401
+ <pre class="code"><span class="info file"># File 'lib/minting/money/coercion.rb', line 14</span>
2402
+
2403
+ <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>
2404
+ <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>
2405
+ <span class='kw'>end</span></pre>
2406
+ </td>
2407
+ </tr>
2408
+ </table>
2409
+ </div>
2410
+
2411
+ <div class="method_details ">
2412
+ <h3 class="signature " id="currency_code-instance_method">
2413
+
2414
+ #<strong>currency_code</strong> &#x21d2; <tt>String</tt>
2415
+
2416
+
2417
+
2418
+
2419
+
2420
+ </h3><div class="docstring">
2421
+ <div class="discussion">
2422
+ <p>Returns the ISO 3-letter currency code string.</p>
2423
+
2424
+ </div>
2425
+ </div>
2426
+ <div class="tags">
2427
+
2428
+ <div class="examples">
2429
+ <h4 class="tag_title">Examples:</h4>
2430
+
2431
+
2432
+ <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>
2433
+
2434
+ </div>
2435
+
2436
+ <p class="tag_title">Returns:</p>
2437
+ <ul class="return">
2438
+
2439
+ <li>
2440
+
2441
+
2442
+ <span class='type'>(<tt>String</tt>)</span>
2443
+
2444
+
2445
+
2446
+ &mdash;
2447
+ <div class='inline'><p>the ISO currency code (e.g., &quot;USD&quot;, &quot;EUR&quot;, &quot;BRL&quot;)</p></div>
2448
+
2449
+ </li>
2450
+
2451
+ </ul>
2452
+
2453
+ </div><table class="source_code">
2454
+ <tr>
2455
+ <td>
2456
+ <pre class="lines">
2457
+
2458
+
2459
+ 17</pre>
2460
+ </td>
2461
+ <td>
2462
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 17</span>
2463
+
2464
+ <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>
2465
+ </td>
2466
+ </tr>
2467
+ </table>
2468
+ </div>
2469
+
2470
+ <div class="method_details ">
2471
+ <h3 class="signature " id="eql?-instance_method">
2472
+
2473
+ #<strong>eql?</strong>(other) &#x21d2; <tt>Boolean</tt>
2474
+
2475
+
2476
+
2477
+
2478
+
2479
+ </h3><div class="docstring">
2480
+ <div class="discussion">
2481
+
2482
+
2483
+ </div>
2484
+ </div>
2485
+ <div class="tags">
2486
+
2487
+ <p class="tag_title">Returns:</p>
2488
+ <ul class="return">
2489
+
2490
+ <li>
2491
+
2492
+
2493
+ <span class='type'>(<tt>Boolean</tt>)</span>
2494
+
2495
+
2496
+
2497
+ </li>
2498
+
2499
+ </ul>
2500
+
2501
+ </div><table class="source_code">
2502
+ <tr>
2503
+ <td>
2504
+ <pre class="lines">
2505
+
2506
+
2507
+ 17
2508
+ 18
2509
+ 19
2510
+ 20
2511
+ 21</pre>
2512
+ </td>
2513
+ <td>
2514
+ <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 17</span>
2515
+
2516
+ <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>
2517
+ <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>
2518
+ <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>
2519
+ <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>
2520
+ <span class='kw'>end</span></pre>
2521
+ </td>
2522
+ </tr>
2523
+ </table>
2524
+ </div>
2525
+
2526
+ <div class="method_details ">
2527
+ <h3 class="signature " id="fractional-instance_method">
2528
+
2529
+ #<strong>fractional</strong> &#x21d2; <tt>Integer</tt>
2530
+
2531
+
2532
+
2533
+
2534
+
2535
+ </h3><div class="docstring">
2536
+ <div class="discussion">
2537
+ <p>Returns the monetary amount expressed in the currency's smallest unit (fractional units).
2538
+ For example, cents for USD (subunit 2), yen for JPY (subunit 0), fils for IQD (subunit 3).</p>
2539
+
2540
+ </div>
2541
+ </div>
2542
+ <div class="tags">
2543
+
2544
+ <div class="examples">
2545
+ <h4 class="tag_title">Examples:</h4>
2546
+
2547
+
2548
+ <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; 123456
2549
+ </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; 1000
2550
+ </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; 123456</span></code></pre>
2551
+
2552
+ </div>
2553
+
2554
+ <p class="tag_title">Returns:</p>
2555
+ <ul class="return">
2556
+
2557
+ <li>
2558
+
2559
+
2560
+ <span class='type'>(<tt>Integer</tt>)</span>
2561
+
2562
+
2563
+
2564
+ &mdash;
2565
+ <div class='inline'><p>the amount in fractional units</p></div>
2566
+
2567
+ </li>
2568
+
2569
+ </ul>
2570
+
2571
+ </div><table class="source_code">
2572
+ <tr>
2573
+ <td>
2574
+ <pre class="lines">
2575
+
2576
+
2577
+ 27</pre>
2578
+ </td>
2579
+ <td>
2580
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 27</span>
2581
+
2582
+ <span class='kw'>def</span> <span class='id identifier rubyid_fractional'>fractional</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>
2583
+ </td>
2584
+ </tr>
2585
+ </table>
2586
+ </div>
2587
+
2588
+ <div class="method_details ">
2589
+ <h3 class="signature " id="hash-instance_method">
2590
+
2591
+ #<strong>hash</strong> &#x21d2; <tt>Integer</tt>
2592
+
2593
+
2594
+
2595
+
2596
+
2597
+ </h3><div class="docstring">
2598
+ <div class="discussion">
2599
+ <p>Generates a stable hash key for Money instances.</p>
2600
+
2601
+ </div>
2602
+ </div>
2603
+ <div class="tags">
2604
+
2605
+ <p class="tag_title">Returns:</p>
2606
+ <ul class="return">
2607
+
2608
+ <li>
2609
+
2610
+
2611
+ <span class='type'>(<tt>Integer</tt>)</span>
2612
+
2613
+
2614
+
2615
+ &mdash;
2616
+ <div class='inline'><p>the calculated hash value</p></div>
2617
+
2618
+ </li>
2619
+
2620
+ </ul>
2621
+
2622
+ </div><table class="source_code">
2623
+ <tr>
2624
+ <td>
2625
+ <pre class="lines">
2626
+
2627
+
2628
+ 32</pre>
2629
+ </td>
2630
+ <td>
2631
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 32</span>
2632
+
2633
+ <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>
2634
+ </td>
2635
+ </tr>
2636
+ </table>
2637
+ </div>
2638
+
2639
+ <div class="method_details ">
2640
+ <h3 class="signature " id="inspect-instance_method">
2641
+
2642
+ #<strong>inspect</strong> &#x21d2; <tt>String</tt>
2643
+
2644
+
2645
+
2646
+
2647
+
2648
+ </h3><div class="docstring">
2649
+ <div class="discussion">
2650
+ <p>Returns a standard developer-oriented string inspection of the Money object.</p>
2651
+
2652
+ </div>
2653
+ </div>
2654
+ <div class="tags">
2655
+
2656
+ <p class="tag_title">Returns:</p>
2657
+ <ul class="return">
2658
+
2659
+ <li>
2660
+
2661
+
2662
+ <span class='type'>(<tt>String</tt>)</span>
2663
+
2664
+
2665
+
2666
+ &mdash;
2667
+ <div class='inline'><p>the formatted inspect representation</p></div>
2668
+
2669
+ </li>
2670
+
2671
+ </ul>
2672
+
2673
+ </div><table class="source_code">
2674
+ <tr>
2675
+ <td>
2676
+ <pre class="lines">
2677
+
2678
+
2679
+ 37
2680
+ 38
2681
+ 39</pre>
2682
+ </td>
2683
+ <td>
2684
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 37</span>
2685
+
2686
+ <span class='kw'>def</span> <span class='id identifier rubyid_inspect'>inspect</span>
2687
+ <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>
2688
+ <span class='kw'>end</span></pre>
2689
+ </td>
2690
+ </tr>
2691
+ </table>
2692
+ </div>
2693
+
2694
+ <div class="method_details ">
2695
+ <h3 class="signature " id="mint-instance_method">
2696
+
2697
+ #<strong>mint</strong>(new_amount) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2698
+
2699
+
2700
+
2701
+
2702
+
2703
+ </h3><div class="docstring">
2704
+ <div class="discussion">
2705
+ <p>Returns a new Money object with the specified amount, or self if unchanged.
2706
+ This is the primary method for creating a modified copy of a Money instance
2707
+ while preserving immutability.</p>
2708
+
2709
+ </div>
2710
+ </div>
2711
+ <div class="tags">
2712
+
2713
+ <div class="examples">
2714
+ <h4 class="tag_title">Examples:</h4>
2715
+
2716
+
2717
+ <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>
2718
+ <span class='id identifier rubyid_price'>price</span><span class='period'>.</span><span class='id identifier rubyid_mint'>mint</span><span class='lparen'>(</span><span class='float'>15.00</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 15.00]
2719
+ </span><span class='id identifier rubyid_price'>price</span><span class='period'>.</span><span class='id identifier rubyid_mint'>mint</span><span class='lparen'>(</span><span class='float'>10.00</span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 10.00] (returns self)</span></code></pre>
2720
+
2721
+ </div>
2722
+ <p class="tag_title">Parameters:</p>
2723
+ <ul class="param">
2724
+
2725
+ <li>
2726
+
2727
+ <span class='name'>new_amount</span>
2728
+
2729
+
2730
+ <span class='type'>(<tt>Numeric</tt>)</span>
2731
+
2732
+
2733
+
2734
+ &mdash;
2735
+ <div class='inline'><p>The new monetary amount</p></div>
2736
+
2737
+ </li>
2738
+
2739
+ </ul>
2740
+
2741
+ <p class="tag_title">Returns:</p>
2742
+ <ul class="return">
2743
+
2744
+ <li>
2745
+
2746
+
2747
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2748
+
2749
+
2750
+
2751
+ &mdash;
2752
+ <div class='inline'><p>A new Money object with the new amount, or self if the amount is unchanged</p></div>
2753
+
2754
+ </li>
2755
+
2756
+ </ul>
2757
+
2758
+ </div><table class="source_code">
2759
+ <tr>
2760
+ <td>
2761
+ <pre class="lines">
2762
+
2763
+
2764
+ 57
2765
+ 58
2766
+ 59
2767
+ 60</pre>
2768
+ </td>
2769
+ <td>
2770
+ <pre class="code"><span class="info file"># File 'lib/minting/money/constructors.rb', line 57</span>
2771
+
2772
+ <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>
2773
+ <span class='id identifier rubyid_new_amount'>new_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_new_amount'>new_amount</span><span class='rparen'>)</span>
2774
+ <span class='id identifier rubyid_new_amount'>new_amount</span> <span class='op'>==</span> <span class='id identifier rubyid_amount'>amount</span> <span class='op'>?</span> <span class='kw'>self</span> <span class='op'>:</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_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_new_amount'>new_amount</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
2775
+ <span class='kw'>end</span></pre>
2776
+ </td>
2777
+ </tr>
2778
+ </table>
2779
+ </div>
2780
+
2781
+ <div class="method_details ">
2782
+ <h3 class="signature " id="negative?-instance_method">
2783
+
2784
+ #<strong>negative?</strong> &#x21d2; <tt>Boolean</tt>
2785
+
2786
+
2787
+
2788
+
2789
+
2790
+ </h3><div class="docstring">
2791
+ <div class="discussion">
2792
+ <p>Returns true if the monetary amount is less than zero.</p>
2793
+
2794
+ </div>
2795
+ </div>
2796
+ <div class="tags">
2797
+
2798
+ <p class="tag_title">Returns:</p>
2799
+ <ul class="return">
2800
+
2801
+ <li>
2802
+
2803
+
2804
+ <span class='type'>(<tt>Boolean</tt>)</span>
2805
+
2806
+
2807
+
2808
+ &mdash;
2809
+ <div class='inline'><p>true if negative, false otherwise</p></div>
2810
+
2811
+ </li>
2812
+
2813
+ </ul>
2814
+
2815
+ </div><table class="source_code">
2816
+ <tr>
2817
+ <td>
2818
+ <pre class="lines">
2819
+
2820
+
2821
+ 14</pre>
2822
+ </td>
2823
+ <td>
2824
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 14</span>
2825
+
2826
+ <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>
2827
+ </td>
2828
+ </tr>
2829
+ </table>
2830
+ </div>
2831
+
2832
+ <div class="method_details ">
2833
+ <h3 class="signature " id="nonzero?-instance_method">
2834
+
2835
+ #<strong>nonzero?</strong> &#x21d2; <tt>Boolean</tt>
2836
+
2837
+
2838
+
2839
+
2840
+
2841
+ </h3><div class="docstring">
2842
+ <div class="discussion">
2843
+
2844
+
2845
+ </div>
2846
+ </div>
2847
+ <div class="tags">
2848
+
2849
+ <p class="tag_title">Returns:</p>
2850
+ <ul class="return">
2851
+
2852
+ <li>
2853
+
2854
+
2855
+ <span class='type'>(<tt>Boolean</tt>)</span>
2856
+
2857
+
2858
+
2859
+ </li>
2860
+
2861
+ </ul>
2862
+
2863
+ </div><table class="source_code">
2864
+ <tr>
2865
+ <td>
2866
+ <pre class="lines">
2867
+
2868
+
2869
+ 40</pre>
2870
+ </td>
2871
+ <td>
2872
+ <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 40</span>
2873
+
2874
+ <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>
2875
+ </td>
2876
+ </tr>
2877
+ </table>
2878
+ </div>
2879
+
2880
+ <div class="method_details ">
2881
+ <h3 class="signature " id="positive?-instance_method">
2882
+
2883
+ #<strong>positive?</strong> &#x21d2; <tt>Boolean</tt>
2884
+
2885
+
2886
+
2887
+
2888
+
2889
+ </h3><div class="docstring">
2890
+ <div class="discussion">
2891
+ <p>Returns true if the monetary amount is greater than zero.</p>
2892
+
2893
+ </div>
2894
+ </div>
2895
+ <div class="tags">
2896
+
2897
+ <p class="tag_title">Returns:</p>
2898
+ <ul class="return">
2899
+
2900
+ <li>
2901
+
2902
+
2903
+ <span class='type'>(<tt>Boolean</tt>)</span>
2904
+
2905
+
2906
+
2907
+ &mdash;
2908
+ <div class='inline'><p>true if positive, false otherwise</p></div>
2909
+
2910
+ </li>
2911
+
2912
+ </ul>
2913
+
2914
+ </div><table class="source_code">
2915
+ <tr>
2916
+ <td>
2917
+ <pre class="lines">
2918
+
2919
+
2920
+ 19</pre>
2921
+ </td>
2922
+ <td>
2923
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 19</span>
2924
+
2925
+ <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>
2926
+ </td>
2927
+ </tr>
2928
+ </table>
2929
+ </div>
2930
+
2931
+ <div class="method_details ">
2932
+ <h3 class="signature " id="same_currency?-instance_method">
2933
+
2934
+ #<strong>same_currency?</strong>(other) &#x21d2; <tt>Boolean</tt>
2935
+
2936
+
2937
+
2938
+
2939
+
2940
+ </h3><div class="docstring">
2941
+ <div class="discussion">
2942
+ <p>Helper method to verify if another object has the identical currency.</p>
2943
+
2944
+ </div>
2945
+ </div>
2946
+ <div class="tags">
2947
+ <p class="tag_title">Parameters:</p>
2948
+ <ul class="param">
2949
+
2950
+ <li>
2951
+
2952
+ <span class='name'>other</span>
2953
+
2954
+
2955
+ <span class='type'>(<tt><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></tt>)</span>
2956
+
2957
+
2958
+
2959
+ &mdash;
2960
+ <div class='inline'><p>the target currency to compare</p></div>
2961
+
2962
+ </li>
2963
+
2964
+ </ul>
2965
+
2966
+ <p class="tag_title">Returns:</p>
2967
+ <ul class="return">
2968
+
2969
+ <li>
2970
+
2971
+
2972
+ <span class='type'>(<tt>Boolean</tt>)</span>
2973
+
2974
+
2975
+
2976
+ &mdash;
2977
+ <div class='inline'><p>true if currencies match, false otherwise</p></div>
2978
+
2979
+ </li>
2980
+
2981
+ </ul>
2982
+
2983
+ </div><table class="source_code">
2984
+ <tr>
2985
+ <td>
2986
+ <pre class="lines">
2987
+
2988
+
2989
+ 45</pre>
2990
+ </td>
2991
+ <td>
2992
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 45</span>
2993
+
2994
+ <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>
2995
+ </td>
2996
+ </tr>
2997
+ </table>
2998
+ </div>
2999
+
3000
+ <div class="method_details ">
3001
+ <h3 class="signature " id="split-instance_method">
3002
+
3003
+ #<strong>split</strong>(quantity) &#x21d2; <tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>
3004
+
3005
+
3006
+
3007
+
3008
+
3009
+ </h3><div class="docstring">
3010
+ <div class="discussion">
3011
+ <p>Splits the monetary amount into a given quantity of equal parts.
3012
+ Disperses any fractional subunit rounding differences across the initial slots
3013
+ so that the sum is preserved.</p>
3014
+
3015
+ </div>
3016
+ </div>
3017
+ <div class="tags">
3018
+
3019
+ <div class="examples">
3020
+ <h4 class="tag_title">Examples:</h4>
3021
+
3022
+
3023
+ <h5 class="example_title"><div class='inline'><p>Even split</p></div></h5>
3024
+
3025
+ <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>
3026
+ <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>
3027
+
3028
+ </div>
3029
+ <p class="tag_title">Parameters:</p>
3030
+ <ul class="param">
3031
+
3032
+ <li>
3033
+
3034
+ <span class='name'>quantity</span>
3035
+
3036
+
3037
+ <span class='type'>(<tt>Integer</tt>)</span>
3038
+
3039
+
3040
+
3041
+ &mdash;
3042
+ <div class='inline'><p>the number of equal parts to divide the money into (must be &gt; 0)</p></div>
3043
+
3044
+ </li>
3045
+
3046
+ </ul>
3047
+
3048
+ <p class="tag_title">Returns:</p>
3049
+ <ul class="return">
3050
+
3051
+ <li>
3052
+
3053
+
3054
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>)</span>
3055
+
3056
+
3057
+
3058
+ &mdash;
3059
+ <div class='inline'><p>the list of newly split Money objects</p></div>
3060
+
3061
+ </li>
3062
+
3063
+ </ul>
3064
+ <p class="tag_title">Raises:</p>
3065
+ <ul class="raise">
3066
+
3067
+ <li>
3068
+
3069
+
3070
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
3071
+
3072
+
3073
+
3074
+ &mdash;
3075
+ <div class='inline'><p>if quantity is not a positive integer</p></div>
3076
+
3077
+ </li>
3078
+
3079
+ </ul>
3080
+
3081
+ </div><table class="source_code">
3082
+ <tr>
3083
+ <td>
3084
+ <pre class="lines">
3085
+
3086
+
3087
+ 36
3088
+ 37
3089
+ 38
3090
+ 39
3091
+ 40
3092
+ 41
3093
+ 42
3094
+ 43
3095
+ 44
3096
+ 45</pre>
3097
+ </td>
3098
+ <td>
3099
+ <pre class="code"><span class="info file"># File 'lib/minting/money/allocation.rb', line 36</span>
3100
+
3101
+ <span class='kw'>def</span> <span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='id identifier rubyid_quantity'>quantity</span><span class='rparen'>)</span>
3102
+ <span class='kw'>unless</span> <span class='id identifier rubyid_quantity'>quantity</span><span class='period'>.</span><span class='id identifier rubyid_positive?'>positive?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_quantity'>quantity</span><span class='period'>.</span><span class='id identifier rubyid_integer?'>integer?</span>
3103
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span>
3104
+ <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>quantity must be an integer &gt; 0</span><span class='tstring_end'>&#39;</span></span>
3105
+ <span class='kw'>end</span>
3106
+
3107
+ <span class='id identifier rubyid_fraction'>fraction</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_quantity'>quantity</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_round'>round</span><span class='lparen'>(</span><span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_subunit'>subunit</span><span class='rparen'>)</span>
3108
+ <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_quantity'>quantity</span><span class='comma'>,</span> <span class='id identifier rubyid_fraction'>fraction</span><span class='rparen'>)</span><span class='comma'>,</span>
3109
+ <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_quantity'>quantity</span><span class='rparen'>)</span><span class='rparen'>)</span>
3110
+ <span class='kw'>end</span></pre>
3111
+ </td>
3112
+ </tr>
3113
+ </table>
3114
+ </div>
3115
+
3116
+ <div class="method_details ">
3117
+ <h3 class="signature " id="succ-instance_method">
3118
+
3119
+ #<strong>succ</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
3120
+
3121
+
3122
+
3123
+
3124
+
3125
+ </h3><div class="docstring">
3126
+ <div class="discussion">
3127
+ <p>Returns the successor of the Money instance by adding the minimum possible subunit amount.
3128
+ Enables standard ranges and stepping (e.g. <code>1.dollar..10.dollars</code>).</p>
3129
+
3130
+ </div>
3131
+ </div>
3132
+ <div class="tags">
3133
+
3134
+ <p class="tag_title">Returns:</p>
3135
+ <ul class="return">
3136
+
3137
+ <li>
3138
+
3139
+
3140
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
3141
+
3142
+
3143
+
3144
+ &mdash;
3145
+ <div class='inline'><p>successor Money instance</p></div>
3146
+
3147
+ </li>
3148
+
3149
+ </ul>
3150
+
3151
+ </div><table class="source_code">
3152
+ <tr>
3153
+ <td>
3154
+ <pre class="lines">
3155
+
3156
+
3157
+ 25</pre>
3158
+ </td>
3159
+ <td>
3160
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 25</span>
3161
+
3162
+ <span class='kw'>def</span> <span class='id identifier rubyid_succ'>succ</span> <span class='op'>=</span> <span class='id identifier rubyid_mint'>mint</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_minimum_amount'>minimum_amount</span><span class='rparen'>)</span></pre>
3163
+ </td>
3164
+ </tr>
3165
+ </table>
3166
+ </div>
3167
+
3168
+ <div class="method_details ">
3169
+ <h3 class="signature " id="to_d-instance_method">
3170
+
3171
+ #<strong>to_d</strong> &#x21d2; <tt>BigDecimal</tt>
3172
+
3173
+
3174
+
3175
+
3176
+
3177
+ </h3><div class="docstring">
3178
+ <div class="discussion">
3179
+ <p>Converts the monetary amount to a BigDecimal object.</p>
3180
+
3181
+ </div>
3182
+ </div>
3183
+ <div class="tags">
3184
+
3185
+ <div class="examples">
3186
+ <h4 class="tag_title">Examples:</h4>
3187
+
3188
+
3189
+ <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>
3190
+
3191
+ </div>
3192
+
3193
+ <p class="tag_title">Returns:</p>
3194
+ <ul class="return">
3195
+
3196
+ <li>
3197
+
3198
+
3199
+ <span class='type'>(<tt>BigDecimal</tt>)</span>
3200
+
3201
+
3202
+
3203
+ &mdash;
3204
+ <div class='inline'><p>the decimal representation of the money amount</p></div>
3205
+
3206
+ </li>
3207
+
3208
+ </ul>
3209
+
3210
+ </div><table class="source_code">
3211
+ <tr>
3212
+ <td>
3213
+ <pre class="lines">
3214
+
3215
+
3216
+ 14</pre>
3217
+ </td>
3218
+ <td>
3219
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 14</span>
3220
+
3221
+ <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>
3222
+ </td>
3223
+ </tr>
3224
+ </table>
3225
+ </div>
3226
+
3227
+ <div class="method_details ">
3228
+ <h3 class="signature " id="to_f-instance_method">
3229
+
3230
+ #<strong>to_f</strong> &#x21d2; <tt>Float</tt>
3231
+
3232
+
3233
+
3234
+
3235
+
3236
+ </h3><div class="docstring">
3237
+ <div class="discussion">
3238
+ <p>Converts the monetary amount to a standard float.
3239
+ Note: Using float conversion loses precision guarantees.</p>
3240
+
3241
+ </div>
3242
+ </div>
3243
+ <div class="tags">
3244
+
3245
+ <p class="tag_title">Returns:</p>
3246
+ <ul class="return">
3247
+
3248
+ <li>
3249
+
3250
+
3251
+ <span class='type'>(<tt>Float</tt>)</span>
3252
+
3253
+
3254
+
3255
+ &mdash;
3256
+ <div class='inline'><p>the floating-point representation of the money amount</p></div>
3257
+
3258
+ </li>
3259
+
3260
+ </ul>
3261
+
3262
+ </div><table class="source_code">
3263
+ <tr>
3264
+ <td>
3265
+ <pre class="lines">
3266
+
3267
+
3268
+ 20</pre>
3269
+ </td>
3270
+ <td>
3271
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 20</span>
3272
+
3273
+ <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>
3274
+ </td>
3275
+ </tr>
3276
+ </table>
3277
+ </div>
3278
+
3279
+ <div class="method_details ">
3280
+ <h3 class="signature " id="to_hash-instance_method">
3281
+
3282
+ #<strong>to_hash</strong> &#x21d2; <tt>Hash</tt>
3283
+
3284
+
3285
+
3286
+
3287
+
3288
+ </h3><div class="docstring">
3289
+ <div class="discussion">
3290
+ <p>Returns a Hash representation of the money instance.</p>
3291
+
3292
+ </div>
3293
+ </div>
3294
+ <div class="tags">
3295
+
3296
+ <div class="examples">
3297
+ <h4 class="tag_title">Examples:</h4>
3298
+
3299
+
3300
+ <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>
3301
+ <span class='comment'>#=&gt; { currency: &quot;BRL&quot;, amount: &quot;134120.00&quot; }</span></code></pre>
3302
+
3303
+ </div>
3304
+
3305
+ <p class="tag_title">Returns:</p>
3306
+ <ul class="return">
3307
+
3308
+ <li>
3309
+
3310
+
3311
+ <span class='type'>(<tt>Hash</tt>)</span>
3312
+
3313
+
3314
+
3315
+ &mdash;
3316
+ <div class='inline'><p>hash with :currency (String) and :amount (String) keys</p></div>
3317
+
3318
+ </li>
3319
+
3320
+ </ul>
3321
+
3322
+ </div><table class="source_code">
3323
+ <tr>
3324
+ <td>
3325
+ <pre class="lines">
3326
+
3327
+
3328
+ 47
3329
+ 48
3330
+ 49</pre>
3331
+ </td>
3332
+ <td>
3333
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 47</span>
3334
+
3335
+ <span class='kw'>def</span> <span class='id identifier rubyid_to_hash'>to_hash</span>
3336
+ <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>
3337
+ <span class='kw'>end</span></pre>
3338
+ </td>
3339
+ </tr>
3340
+ </table>
3341
+ </div>
3342
+
3343
+ <div class="method_details ">
3344
+ <h3 class="signature " id="to_html-instance_method">
3345
+
3346
+ #<strong>to_html</strong>(format = DEFAULT_FORMAT) &#x21d2; <tt>String</tt>
3347
+
3348
+
3349
+
3350
+
3351
+
3352
+ </h3><div class="docstring">
3353
+ <div class="discussion">
3354
+ <p>Renders a safe HTML5 <code>&lt;data&gt;</code> element containing the formatted currency.
3355
+ Embeds the ISO currency description and raw value as the metadata <code>title</code> attribute.</p>
3356
+
3357
+ </div>
3358
+ </div>
3359
+ <div class="tags">
3360
+ <p class="tag_title">Parameters:</p>
3361
+ <ul class="param">
3362
+
3363
+ <li>
3364
+
3365
+ <span class='name'>format</span>
3366
+
3367
+
3368
+ <span class='type'>(<tt>String</tt>)</span>
3369
+
3370
+
3371
+ <em class="default">(defaults to: <tt>DEFAULT_FORMAT</tt>)</em>
3372
+
3373
+
3374
+ &mdash;
3375
+ <div class='inline'><p>the display format to apply to the visible HTML text</p></div>
3376
+
3377
+ </li>
3378
+
3379
+ </ul>
3380
+
3381
+ <p class="tag_title">Returns:</p>
3382
+ <ul class="return">
3383
+
3384
+ <li>
3385
+
3386
+
3387
+ <span class='type'>(<tt>String</tt>)</span>
3388
+
3389
+
3390
+
3391
+ &mdash;
3392
+ <div class='inline'><p>HTML5 <code>&lt;data&gt;</code> representation</p></div>
3393
+
3394
+ </li>
3395
+
3396
+ </ul>
3397
+
3398
+ </div><table class="source_code">
3399
+ <tr>
3400
+ <td>
3401
+ <pre class="lines">
3402
+
3403
+
3404
+ 27
3405
+ 28
3406
+ 29
3407
+ 30
3408
+ 31</pre>
3409
+ </td>
3410
+ <td>
3411
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 27</span>
3412
+
3413
+ <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>
3414
+ <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>
3415
+ <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>
3416
+ <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>
3417
+ <span class='kw'>end</span></pre>
3418
+ </td>
3419
+ </tr>
3420
+ </table>
3421
+ </div>
3422
+
3423
+ <div class="method_details ">
3424
+ <h3 class="signature " id="to_i-instance_method">
3425
+
3426
+ #<strong>to_i</strong> &#x21d2; <tt>Integer</tt>
3427
+
3428
+
3429
+
3430
+
3431
+
3432
+ </h3><div class="docstring">
3433
+ <div class="discussion">
3434
+ <p>Truncates and converts the monetary amount to an Integer.</p>
3435
+
3436
+ </div>
3437
+ </div>
3438
+ <div class="tags">
3439
+
3440
+ <div class="examples">
3441
+ <h4 class="tag_title">Examples:</h4>
3442
+
3443
+
3444
+ <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
3445
+ </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>
3446
+
3447
+ </div>
3448
+
3449
+ <p class="tag_title">Returns:</p>
3450
+ <ul class="return">
3451
+
3452
+ <li>
3453
+
3454
+
3455
+ <span class='type'>(<tt>Integer</tt>)</span>
3456
+
3457
+
3458
+
3459
+ &mdash;
3460
+ <div class='inline'><p>the integer representation of the money amount</p></div>
3461
+
3462
+ </li>
3463
+
3464
+ </ul>
3465
+
3466
+ </div><table class="source_code">
3467
+ <tr>
3468
+ <td>
3469
+ <pre class="lines">
3470
+
3471
+
3472
+ 39</pre>
3473
+ </td>
3474
+ <td>
3475
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 39</span>
3476
+
3477
+ <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>
3478
+ </td>
3479
+ </tr>
3480
+ </table>
3481
+ </div>
3482
+
3483
+ <div class="method_details ">
3484
+ <h3 class="signature " id="to_json-instance_method">
3485
+
3486
+ #<strong>to_json</strong>(*_args) &#x21d2; <tt>String</tt>
3487
+
3488
+
3489
+
3490
+
3491
+
3492
+ </h3><div class="docstring">
3493
+ <div class="discussion">
3494
+ <p>Serializes the money instance to a standard JSON object containing the amount and currency.
3495
+ Highly optimized to run without external dependencies.</p>
3496
+
3497
+ </div>
3498
+ </div>
3499
+ <div class="tags">
3500
+
3501
+ <p class="tag_title">Returns:</p>
3502
+ <ul class="return">
3503
+
3504
+ <li>
3505
+
3506
+
3507
+ <span class='type'>(<tt>String</tt>)</span>
3508
+
3509
+
3510
+
3511
+ &mdash;
3512
+ <div class='inline'><p>the JSON serialized string representation</p></div>
3513
+
3514
+ </li>
3515
+
3516
+ </ul>
3517
+
3518
+ </div><table class="source_code">
3519
+ <tr>
3520
+ <td>
3521
+ <pre class="lines">
3522
+
3523
+
3524
+ 55
3525
+ 56
3526
+ 57
3527
+ 58
3528
+ 59</pre>
3529
+ </td>
3530
+ <td>
3531
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 55</span>
3532
+
3533
+ <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>
3534
+ <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span><span class='lparen'>(</span>
3535
+ <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>
3536
+ <span class='rparen'>)</span>
3537
+ <span class='kw'>end</span></pre>
3538
+ </td>
3539
+ </tr>
3540
+ </table>
3541
+ </div>
3542
+
3543
+ <div class="method_details ">
3544
+ <h3 class="signature " id="to_r-instance_method">
3545
+
3546
+ #<strong>to_r</strong> &#x21d2; <tt>Rational</tt>
3547
+
3548
+
3549
+
3550
+
3551
+
3552
+ </h3><div class="docstring">
3553
+ <div class="discussion">
3554
+ <p>Returns the exact internal Rational representation of the monetary amount.</p>
3555
+
3556
+ </div>
3557
+ </div>
3558
+ <div class="tags">
3559
+
3560
+ <p class="tag_title">Returns:</p>
3561
+ <ul class="return">
3562
+
3563
+ <li>
3564
+
3565
+
3566
+ <span class='type'>(<tt>Rational</tt>)</span>
3567
+
3568
+
3569
+
3570
+ &mdash;
3571
+ <div class='inline'><p>the rational representation of the money amount</p></div>
3572
+
3573
+ </li>
3574
+
3575
+ </ul>
3576
+
3577
+ </div><table class="source_code">
3578
+ <tr>
3579
+ <td>
3580
+ <pre class="lines">
3581
+
3582
+
3583
+ 64</pre>
3584
+ </td>
3585
+ <td>
3586
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 64</span>
3587
+
3588
+ <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>
3589
+ </td>
3590
+ </tr>
3591
+ </table>
3592
+ </div>
3593
+
3594
+ <div class="method_details ">
3595
+ <h3 class="signature " id="to_s-instance_method">
3596
+
3597
+ #<strong>to_s</strong>(format: &#39;%&lt;symbol&gt;s%&lt;amount&gt;f&#39;, decimal: &#39;.&#39;, thousand: &#39;,&#39;, width: nil) &#x21d2; <tt>String</tt>
3598
+
3599
+
3600
+
3601
+
3602
+
3603
+ </h3><div class="docstring">
3604
+ <div class="discussion">
3605
+ <p>Formats money as a string with customizable format, thousand delimiter, and decimal</p>
3606
+
3607
+ </div>
3608
+ </div>
3609
+ <div class="tags">
3610
+
3611
+ <div class="examples">
3612
+ <h4 class="tag_title">Examples:</h4>
3613
+
3614
+
3615
+ <h5 class="example_title"><div class='inline'><p>Basic formatting</p></div></h5>
3616
+
3617
+ <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>
3618
+ <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;
3619
+ </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;
3620
+ </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>
3621
+
3622
+
3623
+ <h5 class="example_title"><div class='inline'><p>Custom formats</p></div></h5>
3624
+
3625
+ <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;
3626
+ </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;
3627
+ </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;
3628
+ </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>
3629
+
3630
+
3631
+ <h5 class="example_title"><div class='inline'><p>Per-sign Hash format (accounting parentheses)</p></div></h5>
3632
+
3633
+ <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>
3634
+ <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;
3635
+ </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>
3636
+
3637
+
3638
+ <h5 class="example_title"><div class='inline'><p>Padding and alignment</p></div></h5>
3639
+
3640
+ <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;
3641
+ </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>
3642
+
3643
+ </div>
3644
+ <p class="tag_title">Parameters:</p>
3645
+ <ul class="param">
3646
+
3647
+ <li>
3648
+
3649
+ <span class='name'>format</span>
3650
+
3651
+
3652
+ <span class='type'>(<tt>String</tt>, <tt>Hash</tt>)</span>
3653
+
3654
+
3655
+ <em class="default">(defaults to: <tt>&#39;%&lt;symbol&gt;s%&lt;amount&gt;f&#39;</tt>)</em>
3656
+
3657
+
3658
+ &mdash;
3659
+ <div class='inline'><p>Either a Format string with placeholders
3660
+ (%<symbol>s, %<amount>f, %<currency>s), or a Hash with per-sign keys
3661
+ (:positive, :negative, :zero) each holding a format string. A Hash
3662
+ is convenient for sign-aware formats such as accounting parentheses:</p>
3663
+ <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>
3664
+ </code></pre>
3665
+ <p>Missing keys fall back to the module default, so a Hash with only
3666
+ :negative will still format positives sensibly. The valid keys are
3667
+ :positive, :negative, :zero; anything else raises ArgumentError.</p></div>
3668
+
3669
+ </li>
3670
+
3671
+ <li>
3672
+
3673
+ <span class='name'>thousand</span>
3674
+
3675
+
3676
+ <span class='type'>(<tt>String</tt>, <tt>false</tt>)</span>
3677
+
3678
+
3679
+ <em class="default">(defaults to: <tt>&#39;,&#39;</tt>)</em>
3680
+
3681
+
3682
+ &mdash;
3683
+ <div class='inline'><p>Thousands delimiter (e.g., ',' for 1,000)</p></div>
3684
+
3685
+ </li>
3686
+
3687
+ <li>
3688
+
3689
+ <span class='name'>decimal</span>
3690
+
3691
+
3692
+ <span class='type'>(<tt>String</tt>)</span>
3693
+
3694
+
3695
+ <em class="default">(defaults to: <tt>&#39;.&#39;</tt>)</em>
3696
+
3697
+
3698
+ &mdash;
3699
+ <div class='inline'><p>Decimal separator (e.g., '.' or ',')</p></div>
3700
+
3701
+ </li>
3702
+
3703
+ </ul>
3704
+
3705
+ <p class="tag_title">Returns:</p>
3706
+ <ul class="return">
3707
+
3708
+ <li>
3709
+
3710
+
3711
+ <span class='type'>(<tt>String</tt>)</span>
3712
+
3713
+
3714
+
3715
+ &mdash;
3716
+ <div class='inline'><p>Formatted money string</p></div>
3717
+
3718
+ </li>
3719
+
3720
+ </ul>
3721
+ <p class="tag_title">Raises:</p>
3722
+ <ul class="raise">
3723
+
3724
+ <li>
3725
+
3726
+
3727
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
3728
+
3729
+
3730
+
3731
+ &mdash;
3732
+ <div class='inline'><p>if <code>format</code> is not a String or Hash, the Hash
3733
+ is empty, or the Hash contains an unrecognised key.</p></div>
3734
+
3735
+ </li>
3736
+
3737
+ </ul>
3738
+
3739
+ </div><table class="source_code">
3740
+ <tr>
3741
+ <td>
3742
+ <pre class="lines">
3743
+
3744
+
3745
+ 46
3746
+ 47
3747
+ 48
3748
+ 49
3749
+ 50
3750
+ 51
3751
+ 52
3752
+ 53
3753
+ 54
3754
+ 55
3755
+ 56
3756
+ 57
3757
+ 58
3758
+ 59
3759
+ 60
3760
+ 61
3761
+ 62
3762
+ 63
3763
+ 64
3764
+ 65
3765
+ 66</pre>
3766
+ </td>
3767
+ <td>
3768
+ <pre class="code"><span class="info file"># File 'lib/minting/money/formatting.rb', line 46</span>
3769
+
3770
+ <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='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='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='comma'>,</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'>width:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
3771
+ <span class='kw'>case</span> <span class='id identifier rubyid_format'>format</span>
3772
+ <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='comma'>,</span> <span class='kw'>nil</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 or null</span><span class='tstring_end'>&#39;</span></span>
3773
+ <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>
3774
+ <span class='kw'>when</span> <span class='const'>String</span> <span class='comment'># noop
3775
+ </span> <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</span><span class='tstring_end'>&#39;</span></span>
3776
+ <span class='kw'>end</span>
3777
+
3778
+ <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='rparen'>)</span>
3779
+
3780
+ <span class='id identifier rubyid_formatted'>formatted</span><span class='period'>.</span><span class='id identifier rubyid_tr!'>tr!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_decimal'>decimal</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_decimal'>decimal</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span>
3781
+
3782
+ <span class='kw'>unless</span> <span class='id identifier rubyid_thousand'>thousand</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
3783
+ <span class='comment'># Regular expression courtesy of Money gem
3784
+ </span> <span class='comment'># Matches digits followed by groups of 3 digits until non-digit or end
3785
+ </span> <span class='id identifier rubyid_formatted'>formatted</span><span class='period'>.</span><span class='id identifier rubyid_gsub!'>gsub!</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(\d)(?=(?:\d{3})+(?:[^\d]{1}|$))</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\1</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_thousand'>thousand</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
3786
+ <span class='kw'>end</span>
3787
+
3788
+ <span class='id identifier rubyid_formatted'>formatted</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='kw'>if</span> <span class='id identifier rubyid_width'>width</span>
3789
+ <span class='id identifier rubyid_formatted'>formatted</span>
3790
+ <span class='kw'>end</span></pre>
3791
+ </td>
3792
+ </tr>
3793
+ </table>
3794
+ </div>
3795
+
3796
+ <div class="method_details ">
3797
+ <h3 class="signature " id="zero?-instance_method">
3798
+
3799
+ #<strong>zero?</strong> &#x21d2; <tt>Boolean</tt>
3800
+
3801
+
3802
+
3803
+
3804
+
3805
+ </h3><div class="docstring">
3806
+ <div class="discussion">
3807
+
3808
+
3809
+ </div>
3810
+ </div>
3811
+ <div class="tags">
3812
+
3813
+ <p class="tag_title">Returns:</p>
3814
+ <ul class="return">
3815
+
3816
+ <li>
3817
+
3818
+
3819
+ <span class='type'>(<tt>Boolean</tt>)</span>
3820
+
3821
+
3822
+
3823
+ </li>
3824
+
3825
+ </ul>
3826
+
3827
+ </div><table class="source_code">
3828
+ <tr>
3829
+ <td>
3830
+ <pre class="lines">
3831
+
3832
+
3833
+ 42</pre>
3834
+ </td>
3835
+ <td>
3836
+ <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 42</span>
3837
+
3838
+ <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>
3839
+ </td>
3840
+ </tr>
3841
+ </table>
3842
+ </div>
3843
+
3844
+ </div>
3845
+
3846
+ </div>
3847
+
3848
+ <div id="footer">
3849
+ Generated on Wed Jun 10 01:35:30 2026 by
3850
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
3851
+ 0.9.44 (ruby-4.0.1).
3852
+ </div>
3853
+
3854
+ </div>
3855
+ </body>
3856
+ </html>