minting 1.3.0 → 1.4.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,3471 @@
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/parse.rb<span class="defines">,<br>
105
+ lib/minting/money/money.rb,<br> 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</span>
106
+
107
+ </dd>
108
+ </dl>
109
+
110
+ </div>
111
+
112
+ <h2>Overview</h2><div class="docstring">
113
+ <div class="discussion">
114
+ <p>Formatting functionality for Money objects</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><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</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="#parse-class_method" title="parse (class method)">.<strong>parse</strong>(input, currency = nil) &#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>Parses a human-readable money string into a <span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span> object.</p></div></span>
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="#%2B-instance_method" title="#+ (instance method)">#<strong>+</strong>(addend) &#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 addition with another <span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span> instance or standard zero Numeric.</p></div></span>
315
+
316
+ </li>
317
+
318
+
319
+ <li class="public ">
320
+ <span class="summary_signature">
321
+
322
+ <a href="#--instance_method" title="#- (instance method)">#<strong>-</strong>(subtrahend) &#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 subtraction 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> &#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>Unary negation operator.</p></div></span>
359
+
360
+ </li>
361
+
362
+
363
+ <li class="public ">
364
+ <span class="summary_signature">
365
+
366
+ <a href="#%2F-instance_method" title="#/ (instance method)">#<strong>/</strong>(divisor) &#x21d2; Money, Numeric </a>
367
+
368
+
369
+
370
+ </span>
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+ <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>
381
+
382
+ </li>
383
+
384
+
385
+ <li class="public ">
386
+ <span class="summary_signature">
387
+
388
+ <a href="#<=>-instance_method" title="#&lt;=&gt; (instance method)">#<strong>&lt;=&gt;</strong>(other) &#x21d2; Object </a>
389
+
390
+
391
+
392
+ </span>
393
+
394
+
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+ <span class="summary_desc"><div class='inline'></div></span>
403
+
404
+ </li>
405
+
406
+
407
+ <li class="public ">
408
+ <span class="summary_signature">
409
+
410
+ <a href="#==-instance_method" title="#== (instance method)">#<strong>==</strong>(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'><p>True if both are zero, or both have same amount and same currency.</p></div></span>
425
+
426
+ </li>
427
+
428
+
429
+ <li class="public ">
430
+ <span class="summary_signature">
431
+
432
+ <a href="#abs-instance_method" title="#abs (instance method)">#<strong>abs</strong> &#x21d2; Money </a>
433
+
434
+
435
+
436
+ </span>
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+ <span class="summary_desc"><div class='inline'><p>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>
447
+
448
+ </li>
449
+
450
+
451
+ <li class="public ">
452
+ <span class="summary_signature">
453
+
454
+ <a href="#allocate-instance_method" title="#allocate (instance method)">#<strong>allocate</strong>(proportions) &#x21d2; Array&lt;Money&gt; </a>
455
+
456
+
457
+
458
+ </span>
459
+
460
+
461
+
462
+
463
+
464
+
465
+
466
+
467
+
468
+ <span class="summary_desc"><div class='inline'><p>Proportionally allocates the monetary amount among a list of ratios.</p></div></span>
469
+
470
+ </li>
471
+
472
+
473
+ <li class="public ">
474
+ <span class="summary_signature">
475
+
476
+ <a href="#coerce-instance_method" title="#coerce (instance method)">#<strong>coerce</strong>(other) &#x21d2; Array(CoercedNumber, Money) </a>
477
+
478
+
479
+
480
+ </span>
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+ <span class="summary_desc"><div class='inline'><p>Implements the standard Ruby coercion protocol.</p></div></span>
491
+
492
+ </li>
493
+
494
+
495
+ <li class="public ">
496
+ <span class="summary_signature">
497
+
498
+ <a href="#currency_code-instance_method" title="#currency_code (instance method)">#<strong>currency_code</strong> &#x21d2; String </a>
499
+
500
+
501
+
502
+ </span>
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+ <span class="summary_desc"><div class='inline'><p>Returns the ISO 3-letter currency code string.</p></div></span>
513
+
514
+ </li>
515
+
516
+
517
+ <li class="public ">
518
+ <span class="summary_signature">
519
+
520
+ <a href="#eql%3F-instance_method" title="#eql? (instance method)">#<strong>eql?</strong>(other) &#x21d2; Boolean </a>
521
+
522
+
523
+
524
+ </span>
525
+
526
+
527
+
528
+
529
+
530
+
531
+
532
+
533
+
534
+ <span class="summary_desc"><div class='inline'></div></span>
535
+
536
+ </li>
537
+
538
+
539
+ <li class="public ">
540
+ <span class="summary_signature">
541
+
542
+ <a href="#fractional-instance_method" title="#fractional (instance method)">#<strong>fractional</strong> &#x21d2; Object </a>
543
+
544
+
545
+
546
+ </span>
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+ <span class="summary_desc"><div class='inline'></div></span>
557
+
558
+ </li>
559
+
560
+
561
+ <li class="public ">
562
+ <span class="summary_signature">
563
+
564
+ <a href="#hash-instance_method" title="#hash (instance method)">#<strong>hash</strong> &#x21d2; Integer </a>
565
+
566
+
567
+
568
+ </span>
569
+
570
+
571
+
572
+
573
+
574
+
575
+
576
+
577
+
578
+ <span class="summary_desc"><div class='inline'><p>Generates a stable hash key for Money instances.</p></div></span>
579
+
580
+ </li>
581
+
582
+
583
+ <li class="public ">
584
+ <span class="summary_signature">
585
+
586
+ <a href="#inspect-instance_method" title="#inspect (instance method)">#<strong>inspect</strong> &#x21d2; String </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 a standard developer-oriented string inspection of the Money object.</p></div></span>
601
+
602
+ </li>
603
+
604
+
605
+ <li class="public ">
606
+ <span class="summary_signature">
607
+
608
+ <a href="#mint-instance_method" title="#mint (instance method)">#<strong>mint</strong>(new_amount) &#x21d2; Money </a>
609
+
610
+
611
+
612
+ </span>
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+
622
+ <span class="summary_desc"><div class='inline'><p>Returns a new Money object with the specified amount, or self if unchanged.</p></div></span>
623
+
624
+ </li>
625
+
626
+
627
+ <li class="public ">
628
+ <span class="summary_signature">
629
+
630
+ <a href="#negative%3F-instance_method" title="#negative? (instance method)">#<strong>negative?</strong> &#x21d2; Boolean </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 true if the monetary amount is less than zero.</p></div></span>
645
+
646
+ </li>
647
+
648
+
649
+ <li class="public ">
650
+ <span class="summary_signature">
651
+
652
+ <a href="#nonzero%3F-instance_method" title="#nonzero? (instance method)">#<strong>nonzero?</strong> &#x21d2; Boolean </a>
653
+
654
+
655
+
656
+ </span>
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+
665
+
666
+ <span class="summary_desc"><div class='inline'></div></span>
667
+
668
+ </li>
669
+
670
+
671
+ <li class="public ">
672
+ <span class="summary_signature">
673
+
674
+ <a href="#positive%3F-instance_method" title="#positive? (instance method)">#<strong>positive?</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 greater than zero.</p></div></span>
689
+
690
+ </li>
691
+
692
+
693
+ <li class="public ">
694
+ <span class="summary_signature">
695
+
696
+ <a href="#same_currency%3F-instance_method" title="#same_currency? (instance method)">#<strong>same_currency?</strong>(other) &#x21d2; Boolean </a>
697
+
698
+
699
+
700
+ </span>
701
+
702
+
703
+
704
+
705
+
706
+
707
+
708
+
709
+
710
+ <span class="summary_desc"><div class='inline'><p>Helper method to verify if another object has the identical currency.</p></div></span>
711
+
712
+ </li>
713
+
714
+
715
+ <li class="public ">
716
+ <span class="summary_signature">
717
+
718
+ <a href="#split-instance_method" title="#split (instance method)">#<strong>split</strong>(quantity) &#x21d2; Array&lt;Money&gt; </a>
719
+
720
+
721
+
722
+ </span>
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+
732
+ <span class="summary_desc"><div class='inline'><p>Splits the monetary amount into a given quantity of equal parts.</p></div></span>
733
+
734
+ </li>
735
+
736
+
737
+ <li class="public ">
738
+ <span class="summary_signature">
739
+
740
+ <a href="#succ-instance_method" title="#succ (instance method)">#<strong>succ</strong> &#x21d2; Money </a>
741
+
742
+
743
+
744
+ </span>
745
+
746
+
747
+
748
+
749
+
750
+
751
+
752
+
753
+
754
+ <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>
755
+
756
+ </li>
757
+
758
+
759
+ <li class="public ">
760
+ <span class="summary_signature">
761
+
762
+ <a href="#to_d-instance_method" title="#to_d (instance method)">#<strong>to_d</strong> &#x21d2; BigDecimal </a>
763
+
764
+
765
+
766
+ </span>
767
+
768
+
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+ <span class="summary_desc"><div class='inline'><p>Converts the monetary amount to a BigDecimal object.</p></div></span>
777
+
778
+ </li>
779
+
780
+
781
+ <li class="public ">
782
+ <span class="summary_signature">
783
+
784
+ <a href="#to_f-instance_method" title="#to_f (instance method)">#<strong>to_f</strong> &#x21d2; Float </a>
785
+
786
+
787
+
788
+ </span>
789
+
790
+
791
+
792
+
793
+
794
+
795
+
796
+
797
+
798
+ <span class="summary_desc"><div class='inline'><p>Converts the monetary amount to a standard float.</p></div></span>
799
+
800
+ </li>
801
+
802
+
803
+ <li class="public ">
804
+ <span class="summary_signature">
805
+
806
+ <a href="#to_hash-instance_method" title="#to_hash (instance method)">#<strong>to_hash</strong> &#x21d2; Object </a>
807
+
808
+
809
+
810
+ </span>
811
+
812
+
813
+
814
+
815
+
816
+
817
+
818
+
819
+
820
+ <span class="summary_desc"><div class='inline'></div></span>
821
+
822
+ </li>
823
+
824
+
825
+ <li class="public ">
826
+ <span class="summary_signature">
827
+
828
+ <a href="#to_html-instance_method" title="#to_html (instance method)">#<strong>to_html</strong>(format = DEFAULT_FORMAT) &#x21d2; String </a>
829
+
830
+
831
+
832
+ </span>
833
+
834
+
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+ <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>
843
+
844
+ </li>
845
+
846
+
847
+ <li class="public ">
848
+ <span class="summary_signature">
849
+
850
+ <a href="#to_i-instance_method" title="#to_i (instance method)">#<strong>to_i</strong> &#x21d2; Integer </a>
851
+
852
+
853
+
854
+ </span>
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+ <span class="summary_desc"><div class='inline'><p>Truncates and converts the monetary amount to an Integer.</p></div></span>
865
+
866
+ </li>
867
+
868
+
869
+ <li class="public ">
870
+ <span class="summary_signature">
871
+
872
+ <a href="#to_json-instance_method" title="#to_json (instance method)">#<strong>to_json</strong>(*_args) &#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>Serializes the money instance to a standard JSON object containing the amount and currency.</p></div></span>
887
+
888
+ </li>
889
+
890
+
891
+ <li class="public ">
892
+ <span class="summary_signature">
893
+
894
+ <a href="#to_r-instance_method" title="#to_r (instance method)">#<strong>to_r</strong> &#x21d2; Rational </a>
895
+
896
+
897
+
898
+ </span>
899
+
900
+
901
+
902
+
903
+
904
+
905
+
906
+
907
+
908
+ <span class="summary_desc"><div class='inline'><p>Returns the exact internal Rational representation of the monetary amount.</p></div></span>
909
+
910
+ </li>
911
+
912
+
913
+ <li class="public ">
914
+ <span class="summary_signature">
915
+
916
+ <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>
917
+
918
+
919
+
920
+ </span>
921
+
922
+
923
+
924
+
925
+
926
+
927
+
928
+
929
+
930
+ <span class="summary_desc"><div class='inline'><p>Formats money as a string with customizable format, thousand delimiter, and decimal.</p></div></span>
931
+
932
+ </li>
933
+
934
+
935
+ <li class="public ">
936
+ <span class="summary_signature">
937
+
938
+ <a href="#zero%3F-instance_method" title="#zero? (instance method)">#<strong>zero?</strong> &#x21d2; Boolean </a>
939
+
940
+
941
+
942
+ </span>
943
+
944
+
945
+
946
+
947
+
948
+
949
+
950
+
951
+
952
+ <span class="summary_desc"><div class='inline'></div></span>
953
+
954
+ </li>
955
+
956
+
957
+ </ul>
958
+
959
+
960
+
961
+
962
+
963
+ <div id="instance_attr_details" class="attr_details">
964
+ <h2>Instance Attribute Details</h2>
965
+
966
+
967
+ <span id=""></span>
968
+ <div class="method_details first">
969
+ <h3 class="signature first" id="amount-instance_method">
970
+
971
+ #<strong>amount</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
972
+
973
+
974
+
975
+
976
+
977
+ </h3><div class="docstring">
978
+ <div class="discussion">
979
+ <p>Returns the value of attribute amount.</p>
980
+
981
+ </div>
982
+ </div>
983
+ <div class="tags">
984
+
985
+
986
+ </div><table class="source_code">
987
+ <tr>
988
+ <td>
989
+ <pre class="lines">
990
+
991
+
992
+ 7
993
+ 8
994
+ 9</pre>
995
+ </td>
996
+ <td>
997
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 7</span>
998
+
999
+ <span class='kw'>def</span> <span class='id identifier rubyid_amount'>amount</span>
1000
+ <span class='ivar'>@amount</span>
1001
+ <span class='kw'>end</span></pre>
1002
+ </td>
1003
+ </tr>
1004
+ </table>
1005
+ </div>
1006
+
1007
+
1008
+ <span id=""></span>
1009
+ <div class="method_details ">
1010
+ <h3 class="signature " id="currency-instance_method">
1011
+
1012
+ #<strong>currency</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+ </h3><div class="docstring">
1019
+ <div class="discussion">
1020
+ <p>Returns the value of attribute currency.</p>
1021
+
1022
+ </div>
1023
+ </div>
1024
+ <div class="tags">
1025
+
1026
+
1027
+ </div><table class="source_code">
1028
+ <tr>
1029
+ <td>
1030
+ <pre class="lines">
1031
+
1032
+
1033
+ 7
1034
+ 8
1035
+ 9</pre>
1036
+ </td>
1037
+ <td>
1038
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 7</span>
1039
+
1040
+ <span class='kw'>def</span> <span class='id identifier rubyid_currency'>currency</span>
1041
+ <span class='ivar'>@currency</span>
1042
+ <span class='kw'>end</span></pre>
1043
+ </td>
1044
+ </tr>
1045
+ </table>
1046
+ </div>
1047
+
1048
+ </div>
1049
+
1050
+
1051
+ <div id="class_method_details" class="method_details_list">
1052
+ <h2>Class Method Details</h2>
1053
+
1054
+
1055
+ <div class="method_details first">
1056
+ <h3 class="signature first" id="create-class_method">
1057
+
1058
+ .<strong>create</strong>(amount, currency) &#x21d2; <tt>Object</tt>
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+ </h3><div class="docstring">
1065
+ <div class="discussion">
1066
+ <p>Creates a new Money immutable object with the specified amount and currency</p>
1067
+
1068
+ </div>
1069
+ </div>
1070
+ <div class="tags">
1071
+ <p class="tag_title">Parameters:</p>
1072
+ <ul class="param">
1073
+
1074
+ <li>
1075
+
1076
+ <span class='name'>amount</span>
1077
+
1078
+
1079
+ <span class='type'>(<tt>Numeric</tt>)</span>
1080
+
1081
+
1082
+
1083
+ &mdash;
1084
+ <div class='inline'><p>The monetary amount</p></div>
1085
+
1086
+ </li>
1087
+
1088
+ <li>
1089
+
1090
+ <span class='name'>currency</span>
1091
+
1092
+
1093
+ <span class='type'>(<tt><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></tt>)</span>
1094
+
1095
+
1096
+
1097
+ &mdash;
1098
+ <div class='inline'><p>The currency object</p></div>
1099
+
1100
+ </li>
1101
+
1102
+ </ul>
1103
+
1104
+ <p class="tag_title">Raises:</p>
1105
+ <ul class="raise">
1106
+
1107
+ <li>
1108
+
1109
+
1110
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
1111
+
1112
+
1113
+
1114
+ &mdash;
1115
+ <div class='inline'><p>If amount is not numeric or currency is invalid</p></div>
1116
+
1117
+ </li>
1118
+
1119
+ </ul>
1120
+
1121
+ </div><table class="source_code">
1122
+ <tr>
1123
+ <td>
1124
+ <pre class="lines">
1125
+
1126
+
1127
+ 13
1128
+ 14
1129
+ 15
1130
+ 16
1131
+ 17
1132
+ 18
1133
+ 19
1134
+ 20
1135
+ 21
1136
+ 22
1137
+ 23</pre>
1138
+ </td>
1139
+ <td>
1140
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 13</span>
1141
+
1142
+ <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>
1143
+ <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>
1144
+
1145
+ <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>
1146
+ <span class='kw'>unless</span> <span class='id identifier rubyid_checked_currency'>checked_currency</span>
1147
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span>
1148
+ <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'>). Check Mint.currencies</span><span class='tstring_end'>&quot;</span></span>
1149
+ <span class='kw'>end</span>
1150
+
1151
+ <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>
1152
+ <span class='kw'>end</span></pre>
1153
+ </td>
1154
+ </tr>
1155
+ </table>
1156
+ </div>
1157
+
1158
+ <div class="method_details ">
1159
+ <h3 class="signature " id="parse-class_method">
1160
+
1161
+ .<strong>parse</strong>(input, currency = nil) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1162
+
1163
+
1164
+
1165
+
1166
+
1167
+ </h3><div class="docstring">
1168
+ <div class="discussion">
1169
+ <p>Parses a human-readable money string into a <span class='object_link'><a href="" title="Mint::Money (class)">Mint::Money</a></span> object.</p>
1170
+
1171
+ </div>
1172
+ </div>
1173
+ <div class="tags">
1174
+
1175
+ <div class="examples">
1176
+ <h4 class="tag_title">Examples:</h4>
1177
+
1178
+
1179
+ <h5 class="example_title"><div class='inline'><p>With explicit currency</p></div></h5>
1180
+
1181
+ <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>19.99</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 19.99]
1182
+ </span><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>1.234,56</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>EUR</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [EUR 1234.56]</span></code></pre>
1183
+
1184
+
1185
+ <h5 class="example_title"><div class='inline'><p>With symbol or code in the string</p></div></h5>
1186
+
1187
+ <pre class="example code"><code><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>$19.99</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 19.99]
1188
+ </span><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>19,99 €</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [EUR 19.99]
1189
+ </span><span class='const'><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD 1,234.56</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; [USD 1234.56]</span></code></pre>
1190
+
1191
+ </div>
1192
+ <p class="tag_title">Parameters:</p>
1193
+ <ul class="param">
1194
+
1195
+ <li>
1196
+
1197
+ <span class='name'>input</span>
1198
+
1199
+
1200
+ <span class='type'>(<tt>String</tt>)</span>
1201
+
1202
+
1203
+
1204
+ &mdash;
1205
+ <div class='inline'><p>Amount input, optionally including a currency symbol or code</p></div>
1206
+
1207
+ </li>
1208
+
1209
+ <li>
1210
+
1211
+ <span class='name'>currency</span>
1212
+
1213
+
1214
+ <span class='type'>(<tt>String</tt>, <tt>Symbol</tt>, <tt><span class='object_link'><a href="Currency.html" title="Mint::Currency (class)">Currency</a></span></tt>, <tt>nil</tt>)</span>
1215
+
1216
+
1217
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
1218
+
1219
+
1220
+ &mdash;
1221
+ <div class='inline'><p>ISO code when not present in <code>input</code></p></div>
1222
+
1223
+ </li>
1224
+
1225
+ </ul>
1226
+
1227
+ <p class="tag_title">Returns:</p>
1228
+ <ul class="return">
1229
+
1230
+ <li>
1231
+
1232
+
1233
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1234
+
1235
+
1236
+
1237
+ </li>
1238
+
1239
+ </ul>
1240
+ <p class="tag_title">Raises:</p>
1241
+ <ul class="raise">
1242
+
1243
+ <li>
1244
+
1245
+
1246
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
1247
+
1248
+
1249
+
1250
+ &mdash;
1251
+ <div class='inline'><p>when <code>input</code> is invalid or currency cannot be determined</p></div>
1252
+
1253
+ </li>
1254
+
1255
+ </ul>
1256
+
1257
+ </div><table class="source_code">
1258
+ <tr>
1259
+ <td>
1260
+ <pre class="lines">
1261
+
1262
+
1263
+ 19
1264
+ 20
1265
+ 21
1266
+ 22
1267
+ 23
1268
+ 24
1269
+ 25
1270
+ 26
1271
+ 27
1272
+ 28
1273
+ 29
1274
+ 30</pre>
1275
+ </td>
1276
+ <td>
1277
+ <pre class="code"><span class="info file"># File 'lib/minting/money/parse.rb', line 19</span>
1278
+
1279
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1280
+ <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'>input must be a String</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span>
1281
+
1282
+ <span class='id identifier rubyid_input'>input</span> <span class='op'>=</span> <span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
1283
+ <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'>input cannot be empty</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
1284
+
1285
+ <span class='id identifier rubyid_currency'>currency</span> <span class='op'>=</span> <span class='id identifier rubyid_currency'>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> <span class='op'>:</span> <span class='id identifier rubyid_parse_currency'>parse_currency</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='rparen'>)</span>
1286
+ <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 [</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currency'>currency</span><span class='embexpr_end'>}</span><span class='tstring_content'>] not registered</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_currency'>currency</span>
1287
+
1288
+ <span class='id identifier rubyid_amount'>amount</span> <span class='op'>=</span> <span class='id identifier rubyid_currency'>currency</span><span class='period'>.</span><span class='id identifier rubyid_normalize_amount'>normalize_amount</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_amount'>parse_amount</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='rparen'>)</span><span class='rparen'>)</span>
1289
+ <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span>
1290
+ <span class='kw'>end</span></pre>
1291
+ </td>
1292
+ </tr>
1293
+ </table>
1294
+ </div>
1295
+
1296
+ </div>
1297
+
1298
+ <div id="instance_method_details" class="method_details_list">
1299
+ <h2>Instance Method Details</h2>
1300
+
1301
+
1302
+ <div class="method_details first">
1303
+ <h3 class="signature first" id="*-instance_method">
1304
+
1305
+ #<strong>*</strong>(multiplicand) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1306
+
1307
+
1308
+
1309
+
1310
+
1311
+ </h3><div class="docstring">
1312
+ <div class="discussion">
1313
+ <p>Performs multiplication of the monetary value by a standard scalar Numeric.</p>
1314
+
1315
+ </div>
1316
+ </div>
1317
+ <div class="tags">
1318
+ <p class="tag_title">Parameters:</p>
1319
+ <ul class="param">
1320
+
1321
+ <li>
1322
+
1323
+ <span class='name'>multiplicand</span>
1324
+
1325
+
1326
+ <span class='type'>(<tt>Numeric</tt>)</span>
1327
+
1328
+
1329
+
1330
+ &mdash;
1331
+ <div class='inline'><p>the scalar multiplier</p></div>
1332
+
1333
+ </li>
1334
+
1335
+ </ul>
1336
+
1337
+ <p class="tag_title">Returns:</p>
1338
+ <ul class="return">
1339
+
1340
+ <li>
1341
+
1342
+
1343
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1344
+
1345
+
1346
+
1347
+ &mdash;
1348
+ <div class='inline'><p>the multiplied Money instance</p></div>
1349
+
1350
+ </li>
1351
+
1352
+ </ul>
1353
+ <p class="tag_title">Raises:</p>
1354
+ <ul class="raise">
1355
+
1356
+ <li>
1357
+
1358
+
1359
+ <span class='type'>(<tt>TypeError</tt>)</span>
1360
+
1361
+
1362
+
1363
+ &mdash;
1364
+ <div class='inline'><p>if multiplier is not Numeric or is a Money object</p></div>
1365
+
1366
+ </li>
1367
+
1368
+ </ul>
1369
+
1370
+ </div><table class="source_code">
1371
+ <tr>
1372
+ <td>
1373
+ <pre class="lines">
1374
+
1375
+
1376
+ 62
1377
+ 63
1378
+ 64
1379
+ 65
1380
+ 66</pre>
1381
+ </td>
1382
+ <td>
1383
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 62</span>
1384
+
1385
+ <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>
1386
+ <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>
1387
+
1388
+ <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>
1389
+ <span class='kw'>end</span></pre>
1390
+ </td>
1391
+ </tr>
1392
+ </table>
1393
+ </div>
1394
+
1395
+ <div class="method_details ">
1396
+ <h3 class="signature " id="+-instance_method">
1397
+
1398
+ #<strong>+</strong>(addend) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1399
+
1400
+
1401
+
1402
+
1403
+
1404
+ </h3><div class="docstring">
1405
+ <div class="discussion">
1406
+ <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>
1407
+
1408
+ </div>
1409
+ </div>
1410
+ <div class="tags">
1411
+ <p class="tag_title">Parameters:</p>
1412
+ <ul class="param">
1413
+
1414
+ <li>
1415
+
1416
+ <span class='name'>addend</span>
1417
+
1418
+
1419
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>)</span>
1420
+
1421
+
1422
+
1423
+ &mdash;
1424
+ <div class='inline'><p>the value to add</p></div>
1425
+
1426
+ </li>
1427
+
1428
+ </ul>
1429
+
1430
+ <p class="tag_title">Returns:</p>
1431
+ <ul class="return">
1432
+
1433
+ <li>
1434
+
1435
+
1436
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1437
+
1438
+
1439
+
1440
+ &mdash;
1441
+ <div class='inline'><p>the sum of the addition</p></div>
1442
+
1443
+ </li>
1444
+
1445
+ </ul>
1446
+ <p class="tag_title">Raises:</p>
1447
+ <ul class="raise">
1448
+
1449
+ <li>
1450
+
1451
+
1452
+ <span class='type'>(<tt>TypeError</tt>)</span>
1453
+
1454
+
1455
+
1456
+ &mdash;
1457
+ <div class='inline'><p>if addition involves a different currency or incompatible types</p></div>
1458
+
1459
+ </li>
1460
+
1461
+ </ul>
1462
+
1463
+ </div><table class="source_code">
1464
+ <tr>
1465
+ <td>
1466
+ <pre class="lines">
1467
+
1468
+
1469
+ 29
1470
+ 30
1471
+ 31
1472
+ 32
1473
+ 33
1474
+ 34</pre>
1475
+ </td>
1476
+ <td>
1477
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 29</span>
1478
+
1479
+ <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>
1480
+ <span class='kw'>return</span> <span class='kw'>self</span> <span class='kw'>if</span> <span class='id identifier rubyid_addend'>addend</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:zero?</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_addend'>addend</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
1481
+ <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_addend'>addend</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="" title="Mint::Money (class)">Money</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</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>
1482
+
1483
+ <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>
1484
+ <span class='kw'>end</span></pre>
1485
+ </td>
1486
+ </tr>
1487
+ </table>
1488
+ </div>
1489
+
1490
+ <div class="method_details ">
1491
+ <h3 class="signature " id="--instance_method">
1492
+
1493
+ #<strong>-</strong>(subtrahend) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1494
+
1495
+
1496
+
1497
+
1498
+
1499
+ </h3><div class="docstring">
1500
+ <div class="discussion">
1501
+ <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>
1502
+
1503
+ </div>
1504
+ </div>
1505
+ <div class="tags">
1506
+ <p class="tag_title">Parameters:</p>
1507
+ <ul class="param">
1508
+
1509
+ <li>
1510
+
1511
+ <span class='name'>subtrahend</span>
1512
+
1513
+
1514
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>)</span>
1515
+
1516
+
1517
+
1518
+ &mdash;
1519
+ <div class='inline'><p>the value to subtract</p></div>
1520
+
1521
+ </li>
1522
+
1523
+ </ul>
1524
+
1525
+ <p class="tag_title">Returns:</p>
1526
+ <ul class="return">
1527
+
1528
+ <li>
1529
+
1530
+
1531
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1532
+
1533
+
1534
+
1535
+ &mdash;
1536
+ <div class='inline'><p>the difference of the subtraction</p></div>
1537
+
1538
+ </li>
1539
+
1540
+ </ul>
1541
+ <p class="tag_title">Raises:</p>
1542
+ <ul class="raise">
1543
+
1544
+ <li>
1545
+
1546
+
1547
+ <span class='type'>(<tt>TypeError</tt>)</span>
1548
+
1549
+
1550
+
1551
+ &mdash;
1552
+ <div class='inline'><p>if subtraction involves a different currency or incompatible types</p></div>
1553
+
1554
+ </li>
1555
+
1556
+ </ul>
1557
+
1558
+ </div><table class="source_code">
1559
+ <tr>
1560
+ <td>
1561
+ <pre class="lines">
1562
+
1563
+
1564
+ 41
1565
+ 42
1566
+ 43
1567
+ 44
1568
+ 45
1569
+ 46
1570
+ 47
1571
+ 48</pre>
1572
+ </td>
1573
+ <td>
1574
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 41</span>
1575
+
1576
+ <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>
1577
+ <span class='kw'>return</span> <span class='kw'>self</span> <span class='kw'>if</span> <span class='id identifier rubyid_subtrahend'>subtrahend</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:zero?</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_subtrahend'>subtrahend</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
1578
+ <span class='kw'>if</span> <span class='id identifier rubyid_subtrahend'>subtrahend</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="" title="Mint::Money (class)">Money</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</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>
1579
+ <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>
1580
+ <span class='kw'>end</span>
1581
+
1582
+ <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>
1583
+ <span class='kw'>end</span></pre>
1584
+ </td>
1585
+ </tr>
1586
+ </table>
1587
+ </div>
1588
+
1589
+ <div class="method_details ">
1590
+ <h3 class="signature " id="-@-instance_method">
1591
+
1592
+ #<strong>-@</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+ </h3><div class="docstring">
1599
+ <div class="discussion">
1600
+ <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>
1601
+
1602
+ </div>
1603
+ </div>
1604
+ <div class="tags">
1605
+
1606
+ <p class="tag_title">Returns:</p>
1607
+ <ul class="return">
1608
+
1609
+ <li>
1610
+
1611
+
1612
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1613
+
1614
+
1615
+
1616
+ &mdash;
1617
+ <div class='inline'><p>negated Money instance</p></div>
1618
+
1619
+ </li>
1620
+
1621
+ </ul>
1622
+
1623
+ </div><table class="source_code">
1624
+ <tr>
1625
+ <td>
1626
+ <pre class="lines">
1627
+
1628
+
1629
+ 53
1630
+ 54
1631
+ 55</pre>
1632
+ </td>
1633
+ <td>
1634
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 53</span>
1635
+
1636
+ <span class='kw'>def</span> <span class='op'>-@</span>
1637
+ <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>
1638
+ <span class='kw'>end</span></pre>
1639
+ </td>
1640
+ </tr>
1641
+ </table>
1642
+ </div>
1643
+
1644
+ <div class="method_details ">
1645
+ <h3 class="signature " id="/-instance_method">
1646
+
1647
+ #<strong>/</strong>(divisor) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>
1648
+
1649
+
1650
+
1651
+
1652
+
1653
+ </h3><div class="docstring">
1654
+ <div class="discussion">
1655
+ <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>
1656
+
1657
+ </div>
1658
+ </div>
1659
+ <div class="tags">
1660
+ <p class="tag_title">Parameters:</p>
1661
+ <ul class="param">
1662
+
1663
+ <li>
1664
+
1665
+ <span class='name'>divisor</span>
1666
+
1667
+
1668
+ <span class='type'>(<tt>Numeric</tt>, <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1669
+
1670
+
1671
+
1672
+ &mdash;
1673
+ <div class='inline'><p>the divisor</p></div>
1674
+
1675
+ </li>
1676
+
1677
+ </ul>
1678
+
1679
+ <p class="tag_title">Returns:</p>
1680
+ <ul class="return">
1681
+
1682
+ <li>
1683
+
1684
+
1685
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>, <tt>Numeric</tt>)</span>
1686
+
1687
+
1688
+
1689
+ &mdash;
1690
+ <div class='inline'><p>a new Money (scalar division) or a numeric ratio (Money division)</p></div>
1691
+
1692
+ </li>
1693
+
1694
+ </ul>
1695
+ <p class="tag_title">Raises:</p>
1696
+ <ul class="raise">
1697
+
1698
+ <li>
1699
+
1700
+
1701
+ <span class='type'>(<tt>TypeError</tt>)</span>
1702
+
1703
+
1704
+
1705
+ &mdash;
1706
+ <div class='inline'><p>if divisor is of incompatible type or different currency</p></div>
1707
+
1708
+ </li>
1709
+
1710
+ <li>
1711
+
1712
+
1713
+ <span class='type'>(<tt>ZeroDivisionError</tt>)</span>
1714
+
1715
+
1716
+
1717
+ &mdash;
1718
+ <div class='inline'><p>if division by zero is attempted</p></div>
1719
+
1720
+ </li>
1721
+
1722
+ </ul>
1723
+
1724
+ </div><table class="source_code">
1725
+ <tr>
1726
+ <td>
1727
+ <pre class="lines">
1728
+
1729
+
1730
+ 74
1731
+ 75
1732
+ 76
1733
+ 77
1734
+ 78
1735
+ 79</pre>
1736
+ </td>
1737
+ <td>
1738
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 74</span>
1739
+
1740
+ <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>
1741
+ <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> <span class='kw'>if</span> <span class='id identifier rubyid_divisor'>divisor</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>
1742
+ <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>
1743
+
1744
+ <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>
1745
+ <span class='kw'>end</span></pre>
1746
+ </td>
1747
+ </tr>
1748
+ </table>
1749
+ </div>
1750
+
1751
+ <div class="method_details ">
1752
+ <h3 class="signature " id="<=>-instance_method">
1753
+
1754
+ #<strong>&lt;=&gt;</strong>(other) &#x21d2; <tt>Object</tt>
1755
+
1756
+
1757
+
1758
+
1759
+
1760
+ </h3><div class="docstring">
1761
+ <div class="discussion">
1762
+
1763
+
1764
+ </div>
1765
+ </div>
1766
+ <div class="tags">
1767
+
1768
+ <div class="examples">
1769
+ <h4 class="tag_title">Examples:</h4>
1770
+
1771
+
1772
+ <pre class="example code"><code>two_usd == Mint.money(2r, &#39;USD&#39;) #=&gt; [$ 2.00]
1773
+ two_usd &gt; 0 #=&gt; true
1774
+ two_usd &gt; Mint.money(2, &#39;USD&#39;) #=&gt; false
1775
+ two_usd &gt; 1
1776
+ =&gt; TypeError: [$ 2.00] can&#39;t be compared to 1
1777
+ two_usd &gt; Mint.money(2, &#39;BRL&#39;)
1778
+ =&gt; TypeError: [$ 2.00] can&#39;t be compared to [R$ 2.00]</code></pre>
1779
+
1780
+ </div>
1781
+
1782
+ <p class="tag_title">Raises:</p>
1783
+ <ul class="raise">
1784
+
1785
+ <li>
1786
+
1787
+
1788
+ <span class='type'>(<tt>TypeError</tt>)</span>
1789
+
1790
+
1791
+
1792
+ </li>
1793
+
1794
+ </ul>
1795
+
1796
+ </div><table class="source_code">
1797
+ <tr>
1798
+ <td>
1799
+ <pre class="lines">
1800
+
1801
+
1802
+ 29
1803
+ 30
1804
+ 31
1805
+ 32
1806
+ 33
1807
+ 34
1808
+ 35
1809
+ 36
1810
+ 37</pre>
1811
+ </td>
1812
+ <td>
1813
+ <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 29</span>
1814
+
1815
+ <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>
1816
+ <span class='kw'>case</span> <span class='id identifier rubyid_other'>other</span>
1817
+ <span class='kw'>when</span> <span class='const'>Numeric</span>
1818
+ <span class='kw'>return</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='kw'>if</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
1819
+ <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>
1820
+ <span class='kw'>return</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> <span class='kw'>if</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>
1821
+ <span class='kw'>end</span>
1822
+ <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>
1823
+ <span class='kw'>end</span></pre>
1824
+ </td>
1825
+ </tr>
1826
+ </table>
1827
+ </div>
1828
+
1829
+ <div class="method_details ">
1830
+ <h3 class="signature " id="==-instance_method">
1831
+
1832
+ #<strong>==</strong>(other) &#x21d2; <tt>Object</tt>
1833
+
1834
+
1835
+
1836
+
1837
+
1838
+ </h3><div class="docstring">
1839
+ <div class="discussion">
1840
+ <p>Returns true if both are zero, or both have same amount and same currency.</p>
1841
+
1842
+ </div>
1843
+ </div>
1844
+ <div class="tags">
1845
+
1846
+ <p class="tag_title">Returns:</p>
1847
+ <ul class="return">
1848
+
1849
+ <li>
1850
+
1851
+
1852
+ <span class='type'></span>
1853
+
1854
+
1855
+
1856
+
1857
+ <div class='inline'><p>true if both are zero, or both have same amount and same currency</p></div>
1858
+
1859
+ </li>
1860
+
1861
+ </ul>
1862
+
1863
+ </div><table class="source_code">
1864
+ <tr>
1865
+ <td>
1866
+ <pre class="lines">
1867
+
1868
+
1869
+ 8
1870
+ 9
1871
+ 10
1872
+ 11
1873
+ 12</pre>
1874
+ </td>
1875
+ <td>
1876
+ <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 8</span>
1877
+
1878
+ <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>
1879
+ <span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_zero?'>zero?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:zero?</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
1880
+
1881
+ <span class='id identifier rubyid_eql?'>eql?</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
1882
+ <span class='kw'>end</span></pre>
1883
+ </td>
1884
+ </tr>
1885
+ </table>
1886
+ </div>
1887
+
1888
+ <div class="method_details ">
1889
+ <h3 class="signature " id="abs-instance_method">
1890
+
1891
+ #<strong>abs</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
1892
+
1893
+
1894
+
1895
+
1896
+
1897
+ </h3><div class="docstring">
1898
+ <div class="discussion">
1899
+ <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>
1900
+
1901
+ </div>
1902
+ </div>
1903
+ <div class="tags">
1904
+
1905
+ <p class="tag_title">Returns:</p>
1906
+ <ul class="return">
1907
+
1908
+ <li>
1909
+
1910
+
1911
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
1912
+
1913
+
1914
+
1915
+ &mdash;
1916
+ <div class='inline'><p>the absolute value</p></div>
1917
+
1918
+ </li>
1919
+
1920
+ </ul>
1921
+
1922
+ </div><table class="source_code">
1923
+ <tr>
1924
+ <td>
1925
+ <pre class="lines">
1926
+
1927
+
1928
+ 6</pre>
1929
+ </td>
1930
+ <td>
1931
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 6</span>
1932
+
1933
+ <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>
1934
+ </td>
1935
+ </tr>
1936
+ </table>
1937
+ </div>
1938
+
1939
+ <div class="method_details ">
1940
+ <h3 class="signature " id="allocate-instance_method">
1941
+
1942
+ #<strong>allocate</strong>(proportions) &#x21d2; <tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>
1943
+
1944
+
1945
+
1946
+
1947
+
1948
+ </h3><div class="docstring">
1949
+ <div class="discussion">
1950
+ <p>Proportionally allocates the monetary amount among a list of ratios.
1951
+ Disperses any subunit rounding amounts across the initial slots</p>
1952
+
1953
+ </div>
1954
+ </div>
1955
+ <div class="tags">
1956
+
1957
+ <div class="examples">
1958
+ <h4 class="tag_title">Examples:</h4>
1959
+
1960
+
1961
+ <h5 class="example_title"><div class='inline'><p>Proportional allocation</p></div></h5>
1962
+
1963
+ <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>
1964
+ <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>
1965
+
1966
+ </div>
1967
+ <p class="tag_title">Parameters:</p>
1968
+ <ul class="param">
1969
+
1970
+ <li>
1971
+
1972
+ <span class='name'>proportions</span>
1973
+
1974
+
1975
+ <span class='type'>(<tt>Array&lt;Numeric&gt;</tt>)</span>
1976
+
1977
+
1978
+
1979
+ &mdash;
1980
+ <div class='inline'><p>a list of numeric proportions/ratios to allocate by</p></div>
1981
+
1982
+ </li>
1983
+
1984
+ </ul>
1985
+
1986
+ <p class="tag_title">Returns:</p>
1987
+ <ul class="return">
1988
+
1989
+ <li>
1990
+
1991
+
1992
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>)</span>
1993
+
1994
+
1995
+
1996
+ &mdash;
1997
+ <div class='inline'><p>the list of newly allocated Money objects</p></div>
1998
+
1999
+ </li>
2000
+
2001
+ </ul>
2002
+ <p class="tag_title">Raises:</p>
2003
+ <ul class="raise">
2004
+
2005
+ <li>
2006
+
2007
+
2008
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
2009
+
2010
+
2011
+
2012
+ &mdash;
2013
+ <div class='inline'><p>if the proportions list is empty or sums to zero</p></div>
2014
+
2015
+ </li>
2016
+
2017
+ </ul>
2018
+
2019
+ </div><table class="source_code">
2020
+ <tr>
2021
+ <td>
2022
+ <pre class="lines">
2023
+
2024
+
2025
+ 12
2026
+ 13
2027
+ 14
2028
+ 15
2029
+ 16
2030
+ 17
2031
+ 18
2032
+ 19
2033
+ 20</pre>
2034
+ </td>
2035
+ <td>
2036
+ <pre class="code"><span class="info file"># File 'lib/minting/money/allocation.rb', line 12</span>
2037
+
2038
+ <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>
2039
+ <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>
2040
+ <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>
2041
+ <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>
2042
+
2043
+ <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>
2044
+ <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='lparen'>(</span><span class='id identifier rubyid_amount'>amount</span> <span class='op'>*</span> <span class='id identifier rubyid_rate'>rate</span><span class='period'>.</span><span class='id identifier rubyid_to_r'>to_r</span> <span class='op'>/</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>
2045
+ <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>
2046
+ <span class='kw'>end</span></pre>
2047
+ </td>
2048
+ </tr>
2049
+ </table>
2050
+ </div>
2051
+
2052
+ <div class="method_details ">
2053
+ <h3 class="signature " id="coerce-instance_method">
2054
+
2055
+ #<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>
2056
+
2057
+
2058
+
2059
+
2060
+
2061
+ </h3><div class="docstring">
2062
+ <div class="discussion">
2063
+ <p>Implements the standard Ruby coercion protocol.
2064
+ 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.</p>
2065
+
2066
+ </div>
2067
+ </div>
2068
+ <div class="tags">
2069
+ <p class="tag_title">Parameters:</p>
2070
+ <ul class="param">
2071
+
2072
+ <li>
2073
+
2074
+ <span class='name'>other</span>
2075
+
2076
+
2077
+ <span class='type'>(<tt>Numeric</tt>)</span>
2078
+
2079
+
2080
+
2081
+ &mdash;
2082
+ <div class='inline'><p>the left-hand operand to coerce</p></div>
2083
+
2084
+ </li>
2085
+
2086
+ </ul>
2087
+
2088
+ <p class="tag_title">Returns:</p>
2089
+ <ul class="return">
2090
+
2091
+ <li>
2092
+
2093
+
2094
+ <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>
2095
+
2096
+
2097
+
2098
+ &mdash;
2099
+ <div class='inline'><p>coerced operand array</p></div>
2100
+
2101
+ </li>
2102
+
2103
+ </ul>
2104
+
2105
+ </div><table class="source_code">
2106
+ <tr>
2107
+ <td>
2108
+ <pre class="lines">
2109
+
2110
+
2111
+ 8
2112
+ 9
2113
+ 10</pre>
2114
+ </td>
2115
+ <td>
2116
+ <pre class="code"><span class="info file"># File 'lib/minting/money/coercion.rb', line 8</span>
2117
+
2118
+ <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>
2119
+ <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>
2120
+ <span class='kw'>end</span></pre>
2121
+ </td>
2122
+ </tr>
2123
+ </table>
2124
+ </div>
2125
+
2126
+ <div class="method_details ">
2127
+ <h3 class="signature " id="currency_code-instance_method">
2128
+
2129
+ #<strong>currency_code</strong> &#x21d2; <tt>String</tt>
2130
+
2131
+
2132
+
2133
+
2134
+
2135
+ </h3><div class="docstring">
2136
+ <div class="discussion">
2137
+ <p>Returns the ISO 3-letter currency code string.</p>
2138
+
2139
+ </div>
2140
+ </div>
2141
+ <div class="tags">
2142
+
2143
+ <p class="tag_title">Returns:</p>
2144
+ <ul class="return">
2145
+
2146
+ <li>
2147
+
2148
+
2149
+ <span class='type'>(<tt>String</tt>)</span>
2150
+
2151
+
2152
+
2153
+ &mdash;
2154
+ <div class='inline'><p>the ISO currency code</p></div>
2155
+
2156
+ </li>
2157
+
2158
+ </ul>
2159
+
2160
+ </div><table class="source_code">
2161
+ <tr>
2162
+ <td>
2163
+ <pre class="lines">
2164
+
2165
+
2166
+ 28</pre>
2167
+ </td>
2168
+ <td>
2169
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 28</span>
2170
+
2171
+ <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>
2172
+ </td>
2173
+ </tr>
2174
+ </table>
2175
+ </div>
2176
+
2177
+ <div class="method_details ">
2178
+ <h3 class="signature " id="eql?-instance_method">
2179
+
2180
+ #<strong>eql?</strong>(other) &#x21d2; <tt>Boolean</tt>
2181
+
2182
+
2183
+
2184
+
2185
+
2186
+ </h3><div class="docstring">
2187
+ <div class="discussion">
2188
+
2189
+
2190
+ </div>
2191
+ </div>
2192
+ <div class="tags">
2193
+
2194
+ <p class="tag_title">Returns:</p>
2195
+ <ul class="return">
2196
+
2197
+ <li>
2198
+
2199
+
2200
+ <span class='type'>(<tt>Boolean</tt>)</span>
2201
+
2202
+
2203
+
2204
+ </li>
2205
+
2206
+ </ul>
2207
+
2208
+ </div><table class="source_code">
2209
+ <tr>
2210
+ <td>
2211
+ <pre class="lines">
2212
+
2213
+
2214
+ 14
2215
+ 15
2216
+ 16
2217
+ 17
2218
+ 18</pre>
2219
+ </td>
2220
+ <td>
2221
+ <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 14</span>
2222
+
2223
+ <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>
2224
+ <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>
2225
+ <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>
2226
+ <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>
2227
+ <span class='kw'>end</span></pre>
2228
+ </td>
2229
+ </tr>
2230
+ </table>
2231
+ </div>
2232
+
2233
+ <div class="method_details ">
2234
+ <h3 class="signature " id="fractional-instance_method">
2235
+
2236
+ #<strong>fractional</strong> &#x21d2; <tt>Object</tt>
2237
+
2238
+
2239
+
2240
+
2241
+
2242
+ </h3><table class="source_code">
2243
+ <tr>
2244
+ <td>
2245
+ <pre class="lines">
2246
+
2247
+
2248
+ 30</pre>
2249
+ </td>
2250
+ <td>
2251
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 30</span>
2252
+
2253
+ <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>
2254
+ </td>
2255
+ </tr>
2256
+ </table>
2257
+ </div>
2258
+
2259
+ <div class="method_details ">
2260
+ <h3 class="signature " id="hash-instance_method">
2261
+
2262
+ #<strong>hash</strong> &#x21d2; <tt>Integer</tt>
2263
+
2264
+
2265
+
2266
+
2267
+
2268
+ </h3><div class="docstring">
2269
+ <div class="discussion">
2270
+ <p>Generates a stable hash key for Money instances.</p>
2271
+
2272
+ </div>
2273
+ </div>
2274
+ <div class="tags">
2275
+
2276
+ <p class="tag_title">Returns:</p>
2277
+ <ul class="return">
2278
+
2279
+ <li>
2280
+
2281
+
2282
+ <span class='type'>(<tt>Integer</tt>)</span>
2283
+
2284
+
2285
+
2286
+ &mdash;
2287
+ <div class='inline'><p>the calculated hash value</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
+ 35</pre>
2300
+ </td>
2301
+ <td>
2302
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 35</span>
2303
+
2304
+ <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>
2305
+ </td>
2306
+ </tr>
2307
+ </table>
2308
+ </div>
2309
+
2310
+ <div class="method_details ">
2311
+ <h3 class="signature " id="inspect-instance_method">
2312
+
2313
+ #<strong>inspect</strong> &#x21d2; <tt>String</tt>
2314
+
2315
+
2316
+
2317
+
2318
+
2319
+ </h3><div class="docstring">
2320
+ <div class="discussion">
2321
+ <p>Returns a standard developer-oriented string inspection of the Money object.</p>
2322
+
2323
+ </div>
2324
+ </div>
2325
+ <div class="tags">
2326
+
2327
+ <p class="tag_title">Returns:</p>
2328
+ <ul class="return">
2329
+
2330
+ <li>
2331
+
2332
+
2333
+ <span class='type'>(<tt>String</tt>)</span>
2334
+
2335
+
2336
+
2337
+ &mdash;
2338
+ <div class='inline'><p>the formatted inspect representation</p></div>
2339
+
2340
+ </li>
2341
+
2342
+ </ul>
2343
+
2344
+ </div><table class="source_code">
2345
+ <tr>
2346
+ <td>
2347
+ <pre class="lines">
2348
+
2349
+
2350
+ 48
2351
+ 49
2352
+ 50</pre>
2353
+ </td>
2354
+ <td>
2355
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 48</span>
2356
+
2357
+ <span class='kw'>def</span> <span class='id identifier rubyid_inspect'>inspect</span>
2358
+ <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>
2359
+ <span class='kw'>end</span></pre>
2360
+ </td>
2361
+ </tr>
2362
+ </table>
2363
+ </div>
2364
+
2365
+ <div class="method_details ">
2366
+ <h3 class="signature " id="mint-instance_method">
2367
+
2368
+ #<strong>mint</strong>(new_amount) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2369
+
2370
+
2371
+
2372
+
2373
+
2374
+ </h3><div class="docstring">
2375
+ <div class="discussion">
2376
+ <p>Returns a new Money object with the specified amount, or self if unchanged</p>
2377
+
2378
+ </div>
2379
+ </div>
2380
+ <div class="tags">
2381
+ <p class="tag_title">Parameters:</p>
2382
+ <ul class="param">
2383
+
2384
+ <li>
2385
+
2386
+ <span class='name'>new_amount</span>
2387
+
2388
+
2389
+ <span class='type'>(<tt>Numeric</tt>)</span>
2390
+
2391
+
2392
+
2393
+ &mdash;
2394
+ <div class='inline'><p>The new amount</p></div>
2395
+
2396
+ </li>
2397
+
2398
+ </ul>
2399
+
2400
+ <p class="tag_title">Returns:</p>
2401
+ <ul class="return">
2402
+
2403
+ <li>
2404
+
2405
+
2406
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2407
+
2408
+
2409
+
2410
+ &mdash;
2411
+ <div class='inline'><p>A new Money object or self</p></div>
2412
+
2413
+ </li>
2414
+
2415
+ </ul>
2416
+
2417
+ </div><table class="source_code">
2418
+ <tr>
2419
+ <td>
2420
+ <pre class="lines">
2421
+
2422
+
2423
+ 40
2424
+ 41
2425
+ 42
2426
+ 43</pre>
2427
+ </td>
2428
+ <td>
2429
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 40</span>
2430
+
2431
+ <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>
2432
+ <span class='id identifier rubyid_new_amount'>new_amount</span> <span class='op'>=</span> <span class='id identifier rubyid_new_amount'>new_amount</span><span class='period'>.</span><span class='id identifier rubyid_to_r'>to_r</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>
2433
+ <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>
2434
+ <span class='kw'>end</span></pre>
2435
+ </td>
2436
+ </tr>
2437
+ </table>
2438
+ </div>
2439
+
2440
+ <div class="method_details ">
2441
+ <h3 class="signature " id="negative?-instance_method">
2442
+
2443
+ #<strong>negative?</strong> &#x21d2; <tt>Boolean</tt>
2444
+
2445
+
2446
+
2447
+
2448
+
2449
+ </h3><div class="docstring">
2450
+ <div class="discussion">
2451
+ <p>Returns true if the monetary amount is less than zero.</p>
2452
+
2453
+ </div>
2454
+ </div>
2455
+ <div class="tags">
2456
+
2457
+ <p class="tag_title">Returns:</p>
2458
+ <ul class="return">
2459
+
2460
+ <li>
2461
+
2462
+
2463
+ <span class='type'>(<tt>Boolean</tt>)</span>
2464
+
2465
+
2466
+
2467
+ &mdash;
2468
+ <div class='inline'><p>true if negative, false otherwise</p></div>
2469
+
2470
+ </li>
2471
+
2472
+ </ul>
2473
+
2474
+ </div><table class="source_code">
2475
+ <tr>
2476
+ <td>
2477
+ <pre class="lines">
2478
+
2479
+
2480
+ 11</pre>
2481
+ </td>
2482
+ <td>
2483
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 11</span>
2484
+
2485
+ <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>
2486
+ </td>
2487
+ </tr>
2488
+ </table>
2489
+ </div>
2490
+
2491
+ <div class="method_details ">
2492
+ <h3 class="signature " id="nonzero?-instance_method">
2493
+
2494
+ #<strong>nonzero?</strong> &#x21d2; <tt>Boolean</tt>
2495
+
2496
+
2497
+
2498
+
2499
+
2500
+ </h3><div class="docstring">
2501
+ <div class="discussion">
2502
+
2503
+
2504
+ </div>
2505
+ </div>
2506
+ <div class="tags">
2507
+
2508
+ <p class="tag_title">Returns:</p>
2509
+ <ul class="return">
2510
+
2511
+ <li>
2512
+
2513
+
2514
+ <span class='type'>(<tt>Boolean</tt>)</span>
2515
+
2516
+
2517
+
2518
+ </li>
2519
+
2520
+ </ul>
2521
+
2522
+ </div><table class="source_code">
2523
+ <tr>
2524
+ <td>
2525
+ <pre class="lines">
2526
+
2527
+
2528
+ 39</pre>
2529
+ </td>
2530
+ <td>
2531
+ <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 39</span>
2532
+
2533
+ <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>
2534
+ </td>
2535
+ </tr>
2536
+ </table>
2537
+ </div>
2538
+
2539
+ <div class="method_details ">
2540
+ <h3 class="signature " id="positive?-instance_method">
2541
+
2542
+ #<strong>positive?</strong> &#x21d2; <tt>Boolean</tt>
2543
+
2544
+
2545
+
2546
+
2547
+
2548
+ </h3><div class="docstring">
2549
+ <div class="discussion">
2550
+ <p>Returns true if the monetary amount is greater than zero.</p>
2551
+
2552
+ </div>
2553
+ </div>
2554
+ <div class="tags">
2555
+
2556
+ <p class="tag_title">Returns:</p>
2557
+ <ul class="return">
2558
+
2559
+ <li>
2560
+
2561
+
2562
+ <span class='type'>(<tt>Boolean</tt>)</span>
2563
+
2564
+
2565
+
2566
+ &mdash;
2567
+ <div class='inline'><p>true if positive, false otherwise</p></div>
2568
+
2569
+ </li>
2570
+
2571
+ </ul>
2572
+
2573
+ </div><table class="source_code">
2574
+ <tr>
2575
+ <td>
2576
+ <pre class="lines">
2577
+
2578
+
2579
+ 16</pre>
2580
+ </td>
2581
+ <td>
2582
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 16</span>
2583
+
2584
+ <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>
2585
+ </td>
2586
+ </tr>
2587
+ </table>
2588
+ </div>
2589
+
2590
+ <div class="method_details ">
2591
+ <h3 class="signature " id="same_currency?-instance_method">
2592
+
2593
+ #<strong>same_currency?</strong>(other) &#x21d2; <tt>Boolean</tt>
2594
+
2595
+
2596
+
2597
+
2598
+
2599
+ </h3><div class="docstring">
2600
+ <div class="discussion">
2601
+ <p>Helper method to verify if another object has the identical currency.</p>
2602
+
2603
+ </div>
2604
+ </div>
2605
+ <div class="tags">
2606
+ <p class="tag_title">Parameters:</p>
2607
+ <ul class="param">
2608
+
2609
+ <li>
2610
+
2611
+ <span class='name'>other</span>
2612
+
2613
+
2614
+ <span class='type'>(<tt>Object</tt>)</span>
2615
+
2616
+
2617
+
2618
+ &mdash;
2619
+ <div class='inline'><p>the target object to compare</p></div>
2620
+
2621
+ </li>
2622
+
2623
+ </ul>
2624
+
2625
+ <p class="tag_title">Returns:</p>
2626
+ <ul class="return">
2627
+
2628
+ <li>
2629
+
2630
+
2631
+ <span class='type'>(<tt>Boolean</tt>)</span>
2632
+
2633
+
2634
+
2635
+ &mdash;
2636
+ <div class='inline'><p>true if currencies match, false otherwise</p></div>
2637
+
2638
+ </li>
2639
+
2640
+ </ul>
2641
+
2642
+ </div><table class="source_code">
2643
+ <tr>
2644
+ <td>
2645
+ <pre class="lines">
2646
+
2647
+
2648
+ 56</pre>
2649
+ </td>
2650
+ <td>
2651
+ <pre class="code"><span class="info file"># File 'lib/minting/money/money.rb', line 56</span>
2652
+
2653
+ <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_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:currency</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</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>
2654
+ </td>
2655
+ </tr>
2656
+ </table>
2657
+ </div>
2658
+
2659
+ <div class="method_details ">
2660
+ <h3 class="signature " id="split-instance_method">
2661
+
2662
+ #<strong>split</strong>(quantity) &#x21d2; <tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>
2663
+
2664
+
2665
+
2666
+
2667
+
2668
+ </h3><div class="docstring">
2669
+ <div class="discussion">
2670
+ <p>Splits the monetary amount into a given quantity of equal parts.
2671
+ Disperses any fractional subunit rounding differences across the initial slots
2672
+ so that the sum is preserved.</p>
2673
+
2674
+ </div>
2675
+ </div>
2676
+ <div class="tags">
2677
+
2678
+ <div class="examples">
2679
+ <h4 class="tag_title">Examples:</h4>
2680
+
2681
+
2682
+ <h5 class="example_title"><div class='inline'><p>Even split</p></div></h5>
2683
+
2684
+ <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>
2685
+ <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>
2686
+
2687
+ </div>
2688
+ <p class="tag_title">Parameters:</p>
2689
+ <ul class="param">
2690
+
2691
+ <li>
2692
+
2693
+ <span class='name'>quantity</span>
2694
+
2695
+
2696
+ <span class='type'>(<tt>Integer</tt>)</span>
2697
+
2698
+
2699
+
2700
+ &mdash;
2701
+ <div class='inline'><p>the number of equal parts to divide the money into (must be &gt; 0)</p></div>
2702
+
2703
+ </li>
2704
+
2705
+ </ul>
2706
+
2707
+ <p class="tag_title">Returns:</p>
2708
+ <ul class="return">
2709
+
2710
+ <li>
2711
+
2712
+
2713
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span>&gt;</tt>)</span>
2714
+
2715
+
2716
+
2717
+ &mdash;
2718
+ <div class='inline'><p>the list of newly split Money objects</p></div>
2719
+
2720
+ </li>
2721
+
2722
+ </ul>
2723
+ <p class="tag_title">Raises:</p>
2724
+ <ul class="raise">
2725
+
2726
+ <li>
2727
+
2728
+
2729
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
2730
+
2731
+
2732
+
2733
+ &mdash;
2734
+ <div class='inline'><p>if quantity is not a positive integer</p></div>
2735
+
2736
+ </li>
2737
+
2738
+ </ul>
2739
+
2740
+ </div><table class="source_code">
2741
+ <tr>
2742
+ <td>
2743
+ <pre class="lines">
2744
+
2745
+
2746
+ 33
2747
+ 34
2748
+ 35
2749
+ 36
2750
+ 37
2751
+ 38
2752
+ 39
2753
+ 40
2754
+ 41
2755
+ 42</pre>
2756
+ </td>
2757
+ <td>
2758
+ <pre class="code"><span class="info file"># File 'lib/minting/money/allocation.rb', line 33</span>
2759
+
2760
+ <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>
2761
+ <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>
2762
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span>
2763
+ <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>
2764
+ <span class='kw'>end</span>
2765
+
2766
+ <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>
2767
+ <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>
2768
+ <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>
2769
+ <span class='kw'>end</span></pre>
2770
+ </td>
2771
+ </tr>
2772
+ </table>
2773
+ </div>
2774
+
2775
+ <div class="method_details ">
2776
+ <h3 class="signature " id="succ-instance_method">
2777
+
2778
+ #<strong>succ</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>
2779
+
2780
+
2781
+
2782
+
2783
+
2784
+ </h3><div class="docstring">
2785
+ <div class="discussion">
2786
+ <p>Returns the successor of the Money instance by adding the minimum possible subunit amount.
2787
+ Enables standard ranges and stepping (e.g. <code>1.dollar..10.dollars</code>).</p>
2788
+
2789
+ </div>
2790
+ </div>
2791
+ <div class="tags">
2792
+
2793
+ <p class="tag_title">Returns:</p>
2794
+ <ul class="return">
2795
+
2796
+ <li>
2797
+
2798
+
2799
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Money (class)">Money</a></span></tt>)</span>
2800
+
2801
+
2802
+
2803
+ &mdash;
2804
+ <div class='inline'><p>successor Money instance</p></div>
2805
+
2806
+ </li>
2807
+
2808
+ </ul>
2809
+
2810
+ </div><table class="source_code">
2811
+ <tr>
2812
+ <td>
2813
+ <pre class="lines">
2814
+
2815
+
2816
+ 22</pre>
2817
+ </td>
2818
+ <td>
2819
+ <pre class="code"><span class="info file"># File 'lib/minting/money/arithmetics.rb', line 22</span>
2820
+
2821
+ <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>
2822
+ </td>
2823
+ </tr>
2824
+ </table>
2825
+ </div>
2826
+
2827
+ <div class="method_details ">
2828
+ <h3 class="signature " id="to_d-instance_method">
2829
+
2830
+ #<strong>to_d</strong> &#x21d2; <tt>BigDecimal</tt>
2831
+
2832
+
2833
+
2834
+
2835
+
2836
+ </h3><div class="docstring">
2837
+ <div class="discussion">
2838
+ <p>Converts the monetary amount to a BigDecimal object.</p>
2839
+
2840
+ </div>
2841
+ </div>
2842
+ <div class="tags">
2843
+
2844
+ <p class="tag_title">Returns:</p>
2845
+ <ul class="return">
2846
+
2847
+ <li>
2848
+
2849
+
2850
+ <span class='type'>(<tt>BigDecimal</tt>)</span>
2851
+
2852
+
2853
+
2854
+ &mdash;
2855
+ <div class='inline'><p>the decimal representation of the money amount</p></div>
2856
+
2857
+ </li>
2858
+
2859
+ </ul>
2860
+ <p class="tag_title">Raises:</p>
2861
+ <ul class="raise">
2862
+
2863
+ <li>
2864
+
2865
+
2866
+ <span class='type'>(<tt>NoMethodError</tt>)</span>
2867
+
2868
+
2869
+
2870
+ &mdash;
2871
+ <div class='inline'><p>if the bigdecimal gem is not loaded/available</p></div>
2872
+
2873
+ </li>
2874
+
2875
+ </ul>
2876
+
2877
+ </div><table class="source_code">
2878
+ <tr>
2879
+ <td>
2880
+ <pre class="lines">
2881
+
2882
+
2883
+ 10
2884
+ 11
2885
+ 12
2886
+ 13
2887
+ 14</pre>
2888
+ </td>
2889
+ <td>
2890
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 10</span>
2891
+
2892
+ <span class='kw'>def</span> <span class='id identifier rubyid_to_d'>to_d</span>
2893
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NoMethodError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>decimal gem required</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='kw'>defined?</span><span class='lparen'>(</span><span class='const'>BigDecimal</span><span class='rparen'>)</span>
2894
+
2895
+ <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>
2896
+ <span class='kw'>end</span></pre>
2897
+ </td>
2898
+ </tr>
2899
+ </table>
2900
+ </div>
2901
+
2902
+ <div class="method_details ">
2903
+ <h3 class="signature " id="to_f-instance_method">
2904
+
2905
+ #<strong>to_f</strong> &#x21d2; <tt>Float</tt>
2906
+
2907
+
2908
+
2909
+
2910
+
2911
+ </h3><div class="docstring">
2912
+ <div class="discussion">
2913
+ <p>Converts the monetary amount to a standard float.
2914
+ Note: Using float conversion loses precision guarantees.</p>
2915
+
2916
+ </div>
2917
+ </div>
2918
+ <div class="tags">
2919
+
2920
+ <p class="tag_title">Returns:</p>
2921
+ <ul class="return">
2922
+
2923
+ <li>
2924
+
2925
+
2926
+ <span class='type'>(<tt>Float</tt>)</span>
2927
+
2928
+
2929
+
2930
+ &mdash;
2931
+ <div class='inline'><p>the floating-point representation of the money amount</p></div>
2932
+
2933
+ </li>
2934
+
2935
+ </ul>
2936
+
2937
+ </div><table class="source_code">
2938
+ <tr>
2939
+ <td>
2940
+ <pre class="lines">
2941
+
2942
+
2943
+ 20
2944
+ 21
2945
+ 22</pre>
2946
+ </td>
2947
+ <td>
2948
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 20</span>
2949
+
2950
+ <span class='kw'>def</span> <span class='id identifier rubyid_to_f'>to_f</span>
2951
+ <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span>
2952
+ <span class='kw'>end</span></pre>
2953
+ </td>
2954
+ </tr>
2955
+ </table>
2956
+ </div>
2957
+
2958
+ <div class="method_details ">
2959
+ <h3 class="signature " id="to_hash-instance_method">
2960
+
2961
+ #<strong>to_hash</strong> &#x21d2; <tt>Object</tt>
2962
+
2963
+
2964
+
2965
+
2966
+
2967
+ </h3><table class="source_code">
2968
+ <tr>
2969
+ <td>
2970
+ <pre class="lines">
2971
+
2972
+
2973
+ 42
2974
+ 43
2975
+ 44</pre>
2976
+ </td>
2977
+ <td>
2978
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 42</span>
2979
+
2980
+ <span class='kw'>def</span> <span class='id identifier rubyid_to_hash'>to_hash</span>
2981
+ <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>
2982
+ <span class='kw'>end</span></pre>
2983
+ </td>
2984
+ </tr>
2985
+ </table>
2986
+ </div>
2987
+
2988
+ <div class="method_details ">
2989
+ <h3 class="signature " id="to_html-instance_method">
2990
+
2991
+ #<strong>to_html</strong>(format = DEFAULT_FORMAT) &#x21d2; <tt>String</tt>
2992
+
2993
+
2994
+
2995
+
2996
+
2997
+ </h3><div class="docstring">
2998
+ <div class="discussion">
2999
+ <p>Renders a safe HTML5 <code>&lt;data&gt;</code> element containing the formatted currency.
3000
+ Embeds the ISO currency description and raw value as the metadata <code>title</code> attribute.</p>
3001
+
3002
+ </div>
3003
+ </div>
3004
+ <div class="tags">
3005
+ <p class="tag_title">Parameters:</p>
3006
+ <ul class="param">
3007
+
3008
+ <li>
3009
+
3010
+ <span class='name'>format</span>
3011
+
3012
+
3013
+ <span class='type'>(<tt>String</tt>)</span>
3014
+
3015
+
3016
+ <em class="default">(defaults to: <tt>DEFAULT_FORMAT</tt>)</em>
3017
+
3018
+
3019
+ &mdash;
3020
+ <div class='inline'><p>the display format to apply to the visible HTML text</p></div>
3021
+
3022
+ </li>
3023
+
3024
+ </ul>
3025
+
3026
+ <p class="tag_title">Returns:</p>
3027
+ <ul class="return">
3028
+
3029
+ <li>
3030
+
3031
+
3032
+ <span class='type'>(<tt>String</tt>)</span>
3033
+
3034
+
3035
+
3036
+ &mdash;
3037
+ <div class='inline'><p>HTML5 <code>&lt;data&gt;</code> representation</p></div>
3038
+
3039
+ </li>
3040
+
3041
+ </ul>
3042
+
3043
+ </div><table class="source_code">
3044
+ <tr>
3045
+ <td>
3046
+ <pre class="lines">
3047
+
3048
+
3049
+ 29
3050
+ 30
3051
+ 31
3052
+ 32
3053
+ 33</pre>
3054
+ </td>
3055
+ <td>
3056
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 29</span>
3057
+
3058
+ <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>
3059
+ <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>
3060
+ <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>
3061
+ <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='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_title'>title</span><span class='rparen'>)</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>
3062
+ <span class='kw'>end</span></pre>
3063
+ </td>
3064
+ </tr>
3065
+ </table>
3066
+ </div>
3067
+
3068
+ <div class="method_details ">
3069
+ <h3 class="signature " id="to_i-instance_method">
3070
+
3071
+ #<strong>to_i</strong> &#x21d2; <tt>Integer</tt>
3072
+
3073
+
3074
+
3075
+
3076
+
3077
+ </h3><div class="docstring">
3078
+ <div class="discussion">
3079
+ <p>Truncates and converts the monetary amount to an Integer.</p>
3080
+
3081
+ </div>
3082
+ </div>
3083
+ <div class="tags">
3084
+
3085
+ <p class="tag_title">Returns:</p>
3086
+ <ul class="return">
3087
+
3088
+ <li>
3089
+
3090
+
3091
+ <span class='type'>(<tt>Integer</tt>)</span>
3092
+
3093
+
3094
+
3095
+ &mdash;
3096
+ <div class='inline'><p>the integer representation of the money amount</p></div>
3097
+
3098
+ </li>
3099
+
3100
+ </ul>
3101
+
3102
+ </div><table class="source_code">
3103
+ <tr>
3104
+ <td>
3105
+ <pre class="lines">
3106
+
3107
+
3108
+ 38
3109
+ 39
3110
+ 40</pre>
3111
+ </td>
3112
+ <td>
3113
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 38</span>
3114
+
3115
+ <span class='kw'>def</span> <span class='id identifier rubyid_to_i'>to_i</span>
3116
+ <span class='id identifier rubyid_amount'>amount</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
3117
+ <span class='kw'>end</span></pre>
3118
+ </td>
3119
+ </tr>
3120
+ </table>
3121
+ </div>
3122
+
3123
+ <div class="method_details ">
3124
+ <h3 class="signature " id="to_json-instance_method">
3125
+
3126
+ #<strong>to_json</strong>(*_args) &#x21d2; <tt>String</tt>
3127
+
3128
+
3129
+
3130
+
3131
+
3132
+ </h3><div class="docstring">
3133
+ <div class="discussion">
3134
+ <p>Serializes the money instance to a standard JSON object containing the amount and currency.
3135
+ Highly optimized to run without external dependencies.</p>
3136
+
3137
+ </div>
3138
+ </div>
3139
+ <div class="tags">
3140
+
3141
+ <p class="tag_title">Returns:</p>
3142
+ <ul class="return">
3143
+
3144
+ <li>
3145
+
3146
+
3147
+ <span class='type'>(<tt>String</tt>)</span>
3148
+
3149
+
3150
+
3151
+ &mdash;
3152
+ <div class='inline'><p>the JSON serialized string representation</p></div>
3153
+
3154
+ </li>
3155
+
3156
+ </ul>
3157
+
3158
+ </div><table class="source_code">
3159
+ <tr>
3160
+ <td>
3161
+ <pre class="lines">
3162
+
3163
+
3164
+ 50
3165
+ 51
3166
+ 52
3167
+ 53
3168
+ 54</pre>
3169
+ </td>
3170
+ <td>
3171
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 50</span>
3172
+
3173
+ <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>
3174
+ <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_format'>format</span><span class='lparen'>(</span>
3175
+ <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>
3176
+ <span class='rparen'>)</span>
3177
+ <span class='kw'>end</span></pre>
3178
+ </td>
3179
+ </tr>
3180
+ </table>
3181
+ </div>
3182
+
3183
+ <div class="method_details ">
3184
+ <h3 class="signature " id="to_r-instance_method">
3185
+
3186
+ #<strong>to_r</strong> &#x21d2; <tt>Rational</tt>
3187
+
3188
+
3189
+
3190
+
3191
+
3192
+ </h3><div class="docstring">
3193
+ <div class="discussion">
3194
+ <p>Returns the exact internal Rational representation of the monetary amount.</p>
3195
+
3196
+ </div>
3197
+ </div>
3198
+ <div class="tags">
3199
+
3200
+ <p class="tag_title">Returns:</p>
3201
+ <ul class="return">
3202
+
3203
+ <li>
3204
+
3205
+
3206
+ <span class='type'>(<tt>Rational</tt>)</span>
3207
+
3208
+
3209
+
3210
+ &mdash;
3211
+ <div class='inline'><p>the rational representation of the money amount</p></div>
3212
+
3213
+ </li>
3214
+
3215
+ </ul>
3216
+
3217
+ </div><table class="source_code">
3218
+ <tr>
3219
+ <td>
3220
+ <pre class="lines">
3221
+
3222
+
3223
+ 59
3224
+ 60
3225
+ 61</pre>
3226
+ </td>
3227
+ <td>
3228
+ <pre class="code"><span class="info file"># File 'lib/minting/money/conversion.rb', line 59</span>
3229
+
3230
+ <span class='kw'>def</span> <span class='id identifier rubyid_to_r'>to_r</span>
3231
+ <span class='id identifier rubyid_amount'>amount</span>
3232
+ <span class='kw'>end</span></pre>
3233
+ </td>
3234
+ </tr>
3235
+ </table>
3236
+ </div>
3237
+
3238
+ <div class="method_details ">
3239
+ <h3 class="signature " id="to_s-instance_method">
3240
+
3241
+ #<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>
3242
+
3243
+
3244
+
3245
+
3246
+
3247
+ </h3><div class="docstring">
3248
+ <div class="discussion">
3249
+ <p>Formats money as a string with customizable format, thousand delimiter, and decimal</p>
3250
+
3251
+ </div>
3252
+ </div>
3253
+ <div class="tags">
3254
+
3255
+ <div class="examples">
3256
+ <h4 class="tag_title">Examples:</h4>
3257
+
3258
+
3259
+ <h5 class="example_title"><div class='inline'><p>Basic formatting</p></div></h5>
3260
+
3261
+ <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>
3262
+ <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;
3263
+ </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;
3264
+ </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>
3265
+
3266
+
3267
+ <h5 class="example_title"><div class='inline'><p>Custom formats</p></div></h5>
3268
+
3269
+ <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;
3270
+ </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;
3271
+ </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;
3272
+ </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>
3273
+
3274
+
3275
+ <h5 class="example_title"><div class='inline'><p>Padding and alignment</p></div></h5>
3276
+
3277
+ <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;
3278
+ </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>
3279
+
3280
+ </div>
3281
+ <p class="tag_title">Parameters:</p>
3282
+ <ul class="param">
3283
+
3284
+ <li>
3285
+
3286
+ <span class='name'>format</span>
3287
+
3288
+
3289
+ <span class='type'>(<tt>String</tt>)</span>
3290
+
3291
+
3292
+ <em class="default">(defaults to: <tt>&#39;%&lt;symbol&gt;s%&lt;amount&gt;f&#39;</tt>)</em>
3293
+
3294
+
3295
+ &mdash;
3296
+ <div class='inline'><p>Format string with placeholders: %<symbol>s, %<amount>f, %<currency>s</p></div>
3297
+
3298
+ </li>
3299
+
3300
+ <li>
3301
+
3302
+ <span class='name'>thousand</span>
3303
+
3304
+
3305
+ <span class='type'>(<tt>String</tt>, <tt>false</tt>)</span>
3306
+
3307
+
3308
+ <em class="default">(defaults to: <tt>&#39;,&#39;</tt>)</em>
3309
+
3310
+
3311
+ &mdash;
3312
+ <div class='inline'><p>Thousands delimiter (e.g., ',' for 1,000)</p></div>
3313
+
3314
+ </li>
3315
+
3316
+ <li>
3317
+
3318
+ <span class='name'>decimal</span>
3319
+
3320
+
3321
+ <span class='type'>(<tt>String</tt>)</span>
3322
+
3323
+
3324
+ <em class="default">(defaults to: <tt>&#39;.&#39;</tt>)</em>
3325
+
3326
+
3327
+ &mdash;
3328
+ <div class='inline'><p>Decimal separator (e.g., '.' or ',')</p></div>
3329
+
3330
+ </li>
3331
+
3332
+ </ul>
3333
+
3334
+ <p class="tag_title">Returns:</p>
3335
+ <ul class="return">
3336
+
3337
+ <li>
3338
+
3339
+
3340
+ <span class='type'>(<tt>String</tt>)</span>
3341
+
3342
+
3343
+
3344
+ &mdash;
3345
+ <div class='inline'><p>Formatted money string</p></div>
3346
+
3347
+ </li>
3348
+
3349
+ </ul>
3350
+ <p class="tag_title">Raises:</p>
3351
+ <ul class="raise">
3352
+
3353
+ <li>
3354
+
3355
+
3356
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
3357
+
3358
+
3359
+
3360
+ </li>
3361
+
3362
+ </ul>
3363
+
3364
+ </div><table class="source_code">
3365
+ <tr>
3366
+ <td>
3367
+ <pre class="lines">
3368
+
3369
+
3370
+ 27
3371
+ 28
3372
+ 29
3373
+ 30
3374
+ 31
3375
+ 32
3376
+ 33
3377
+ 34
3378
+ 35
3379
+ 36
3380
+ 37
3381
+ 38
3382
+ 39
3383
+ 40
3384
+ 41
3385
+ 42</pre>
3386
+ </td>
3387
+ <td>
3388
+ <pre class="code"><span class="info file"># File 'lib/minting/money/formatting.rb', line 27</span>
3389
+
3390
+ <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>
3391
+ <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> <span class='kw'>unless</span> <span class='id identifier rubyid_format'>format</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_format'>format</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
3392
+
3393
+ <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>
3394
+
3395
+ <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>
3396
+
3397
+ <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>
3398
+ <span class='comment'># Regular expression courtesy of Money gem
3399
+ </span> <span class='comment'># Matches digits followed by groups of 3 digits until non-digit or end
3400
+ </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>
3401
+ <span class='kw'>end</span>
3402
+
3403
+ <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>
3404
+ <span class='id identifier rubyid_formatted'>formatted</span>
3405
+ <span class='kw'>end</span></pre>
3406
+ </td>
3407
+ </tr>
3408
+ </table>
3409
+ </div>
3410
+
3411
+ <div class="method_details ">
3412
+ <h3 class="signature " id="zero?-instance_method">
3413
+
3414
+ #<strong>zero?</strong> &#x21d2; <tt>Boolean</tt>
3415
+
3416
+
3417
+
3418
+
3419
+
3420
+ </h3><div class="docstring">
3421
+ <div class="discussion">
3422
+
3423
+
3424
+ </div>
3425
+ </div>
3426
+ <div class="tags">
3427
+
3428
+ <p class="tag_title">Returns:</p>
3429
+ <ul class="return">
3430
+
3431
+ <li>
3432
+
3433
+
3434
+ <span class='type'>(<tt>Boolean</tt>)</span>
3435
+
3436
+
3437
+
3438
+ </li>
3439
+
3440
+ </ul>
3441
+
3442
+ </div><table class="source_code">
3443
+ <tr>
3444
+ <td>
3445
+ <pre class="lines">
3446
+
3447
+
3448
+ 41</pre>
3449
+ </td>
3450
+ <td>
3451
+ <pre class="code"><span class="info file"># File 'lib/minting/money/comparable.rb', line 41</span>
3452
+
3453
+ <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>
3454
+ </td>
3455
+ </tr>
3456
+ </table>
3457
+ </div>
3458
+
3459
+ </div>
3460
+
3461
+ </div>
3462
+
3463
+ <div id="footer">
3464
+ Generated on Tue Jun 2 14:44:35 2026 by
3465
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
3466
+ 0.9.44 (ruby-4.0.1).
3467
+ </div>
3468
+
3469
+ </div>
3470
+ </body>
3471
+ </html>