minting 1.9.6 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +244 -121
  3. data/Rakefile +17 -26
  4. data/bin/bench_check +2 -2
  5. data/doc/agents/api_review-2026-06-15.md +1 -1
  6. data/doc/agents/copilot-instructions.md +5 -5
  7. data/doc/agents/expired/copilot-instructions.md +2 -2
  8. data/doc/agents/expired/gemini_gem_evaluation.md +2 -2
  9. data/lib/minting/aliases.rb +22 -0
  10. data/lib/minting/currency/currency.rb +87 -12
  11. data/lib/minting/data/crypto-currencies.yaml +126 -0
  12. data/lib/minting/data/world-currencies.yaml +75 -23
  13. data/lib/minting/mint/i18n.rb +79 -29
  14. data/lib/minting/mint/mint.rb +1 -26
  15. data/lib/minting/mint/registry/crypto.rb +59 -0
  16. data/lib/minting/mint/registry/registration.rb +1 -2
  17. data/lib/minting/mint/registry/symbols.rb +37 -30
  18. data/lib/minting/mint/rounding.rb +10 -7
  19. data/lib/minting/mint.rb +1 -2
  20. data/lib/minting/money/allocation/allocation.rb +2 -2
  21. data/lib/minting/money/allocation/split.rb +1 -1
  22. data/lib/minting/money/arithmetics/operators.rb +10 -13
  23. data/lib/minting/money/clamp.rb +6 -6
  24. data/lib/minting/money/coercion.rb +1 -1
  25. data/lib/minting/money/comparable.rb +3 -3
  26. data/lib/minting/money/constructors.rb +3 -42
  27. data/lib/minting/money/conversion.rb +23 -18
  28. data/lib/minting/money/format/format.rb +100 -0
  29. data/lib/minting/money/format/formatter.rb +102 -0
  30. data/lib/minting/money/format/to_s.rb +34 -99
  31. data/lib/minting/money/format/validator.rb +34 -0
  32. data/lib/minting/money/money.rb +25 -13
  33. data/lib/minting/money/parse.rb +127 -0
  34. data/lib/minting/money/rounding.rb +27 -0
  35. data/lib/minting/version.rb +1 -1
  36. data/lib/minting.rb +17 -8
  37. metadata +9 -28
  38. data/doc/Mint/Currency.html +0 -1943
  39. data/doc/Mint/CurrencyRegistry.html +0 -511
  40. data/doc/Mint/Money.html +0 -4607
  41. data/doc/Mint/RangeStepPatch.html +0 -277
  42. data/doc/Mint/Registry.html +0 -863
  43. data/doc/Mint/Rounding.html +0 -506
  44. data/doc/Mint/UnknownCurrency.html +0 -136
  45. data/doc/Mint.html +0 -1004
  46. data/doc/Minting.html +0 -142
  47. data/doc/_index.html +0 -180
  48. data/doc/class_list.html +0 -54
  49. data/doc/css/common.css +0 -1
  50. data/doc/css/full_list.css +0 -206
  51. data/doc/css/style.css +0 -1089
  52. data/doc/file.README.html +0 -277
  53. data/doc/file_list.html +0 -59
  54. data/doc/frames.html +0 -22
  55. data/doc/index.html +0 -277
  56. data/doc/js/app.js +0 -801
  57. data/doc/js/full_list.js +0 -334
  58. data/doc/js/jquery.js +0 -4
  59. data/doc/method_list.html +0 -686
  60. data/doc/top-level-namespace.html +0 -151
  61. data/lib/minting/mint/aliases.rb +0 -16
  62. data/lib/minting/mint/parser/parser.rb +0 -97
  63. data/lib/minting/mint/parser/separators.rb +0 -41
  64. data/lib/minting/money/format/formatting.rb +0 -97
@@ -1,1943 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>
7
- Class: Mint::Currency
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::Currency";
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 (C)</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">Currency</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::Currency
65
-
66
-
67
-
68
- </h1>
69
- <div class="box_info">
70
-
71
- <dl>
72
- <dt>Inherits:</dt>
73
- <dd>
74
- <span class="inheritName">Data</span>
75
-
76
- <ul class="fullTree">
77
- <li>Object</li>
78
-
79
- <li class="next">Data</li>
80
-
81
- <li class="next">Mint::Currency</li>
82
-
83
- </ul>
84
- <a href="#" class="inheritanceTree">show all</a>
85
-
86
- </dd>
87
- </dl>
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
- <dl>
100
- <dt>Defined in:</dt>
101
- <dd>lib/minting/currency/currency.rb
102
- </dd>
103
- </dl>
104
-
105
- </div>
106
-
107
- <h2>Overview</h2><div class="docstring">
108
- <div class="discussion">
109
- <p>Represents a specific currency unit, identified by ISO 4217 alphabetic code.
110
- Currency objects are immutable and define the properties of a monetary unit
111
- including its subunit precision, display symbol, and formatting rules.</p>
112
-
113
- </div>
114
- </div>
115
- <div class="tags">
116
-
117
-
118
- <p class="tag_title">See Also:</p>
119
- <ul class="see">
120
-
121
- <li><a href="https://www.iso.org/iso-4217-currency-codes.html" target="_parent" title="https://www.iso.org/iso-4217-currency-codes.html">https://www.iso.org/iso-4217-currency-codes.html</a></li>
122
-
123
- </ul>
124
-
125
- </div>
126
-
127
-
128
-
129
- <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
130
- <ul class="summary">
131
-
132
- <li class="public ">
133
- <span class="summary_signature">
134
-
135
- <a href="#code-instance_method" title="#code (instance method)">#<strong>code</strong> &#x21d2; String </a>
136
-
137
-
138
-
139
- </span>
140
-
141
-
142
-
143
-
144
- <span class="note title readonly">readonly</span>
145
-
146
-
147
-
148
-
149
-
150
-
151
-
152
-
153
-
154
- <span class="summary_desc"><div class='inline'><p>ISO 4217 currency code (e.g., &quot;USD&quot;, &quot;EUR&quot;).</p></div></span>
155
-
156
- </li>
157
-
158
-
159
- <li class="public ">
160
- <span class="summary_signature">
161
-
162
- <a href="#country-instance_method" title="#country (instance method)">#<strong>country</strong> &#x21d2; String<sup>?</sup> </a>
163
-
164
-
165
-
166
- </span>
167
-
168
-
169
-
170
-
171
- <span class="note title readonly">readonly</span>
172
-
173
-
174
-
175
-
176
-
177
-
178
-
179
-
180
-
181
- <span class="summary_desc"><div class='inline'><p>Associated country code.</p></div></span>
182
-
183
- </li>
184
-
185
-
186
- <li class="public ">
187
- <span class="summary_signature">
188
-
189
- <a href="#fractional_multiplier-instance_method" title="#fractional_multiplier (instance method)">#<strong>fractional_multiplier</strong> &#x21d2; Integer </a>
190
-
191
-
192
-
193
- </span>
194
-
195
-
196
-
197
-
198
- <span class="note title readonly">readonly</span>
199
-
200
-
201
-
202
-
203
-
204
-
205
-
206
-
207
-
208
- <span class="summary_desc"><div class='inline'><p>10^subunit, used for fractional conversions.</p></div></span>
209
-
210
- </li>
211
-
212
-
213
- <li class="public ">
214
- <span class="summary_signature">
215
-
216
- <a href="#name-instance_method" title="#name (instance method)">#<strong>name</strong> &#x21d2; String<sup>?</sup> </a>
217
-
218
-
219
-
220
- </span>
221
-
222
-
223
-
224
-
225
- <span class="note title readonly">readonly</span>
226
-
227
-
228
-
229
-
230
-
231
-
232
-
233
-
234
-
235
- <span class="summary_desc"><div class='inline'><p>Currency name.</p></div></span>
236
-
237
- </li>
238
-
239
-
240
- <li class="public ">
241
- <span class="summary_signature">
242
-
243
- <a href="#priority-instance_method" title="#priority (instance method)">#<strong>priority</strong> &#x21d2; Integer </a>
244
-
245
-
246
-
247
- </span>
248
-
249
-
250
-
251
-
252
- <span class="note title readonly">readonly</span>
253
-
254
-
255
-
256
-
257
-
258
-
259
-
260
-
261
-
262
- <span class="summary_desc"><div class='inline'><p>Parser precedence for symbol detection.</p></div></span>
263
-
264
- </li>
265
-
266
-
267
- <li class="public ">
268
- <span class="summary_signature">
269
-
270
- <a href="#subunit-instance_method" title="#subunit (instance method)">#<strong>subunit</strong> &#x21d2; Integer </a>
271
-
272
-
273
-
274
- </span>
275
-
276
-
277
-
278
-
279
- <span class="note title readonly">readonly</span>
280
-
281
-
282
-
283
-
284
-
285
-
286
-
287
-
288
-
289
- <span class="summary_desc"><div class='inline'><p>Number of decimal places (0 for JPY, 2 for USD, 3 for IQD).</p></div></span>
290
-
291
- </li>
292
-
293
-
294
- <li class="public ">
295
- <span class="summary_signature">
296
-
297
- <a href="#symbol-instance_method" title="#symbol (instance method)">#<strong>symbol</strong> &#x21d2; String </a>
298
-
299
-
300
-
301
- </span>
302
-
303
-
304
-
305
-
306
- <span class="note title readonly">readonly</span>
307
-
308
-
309
-
310
-
311
-
312
-
313
-
314
-
315
-
316
- <span class="summary_desc"><div class='inline'><p>Display symbol (e.g., &quot;$&quot;, &quot;€&quot;, &quot;R$&quot;).</p></div></span>
317
-
318
- </li>
319
-
320
-
321
- </ul>
322
-
323
-
324
-
325
-
326
-
327
- <h2>
328
- Class Method Summary
329
- <small><a href="#" class="summary_toggle">collapse</a></small>
330
- </h2>
331
-
332
- <ul class="summary">
333
-
334
- <li class="public ">
335
- <span class="summary_signature">
336
-
337
- <a href="#for_code-class_method" title="for_code (class method)">.<strong>for_code</strong>(code) &#x21d2; Currency<sup>?</sup> </a>
338
-
339
-
340
-
341
- </span>
342
-
343
-
344
-
345
-
346
-
347
-
348
-
349
-
350
-
351
- <span class="summary_desc"><div class='inline'><p>Looks up a registered currency by its alpha code.</p></div></span>
352
-
353
- </li>
354
-
355
-
356
- <li class="public ">
357
- <span class="summary_signature">
358
-
359
- <a href="#for_symbol-class_method" title="for_symbol (class method)">.<strong>for_symbol</strong>(symbol) &#x21d2; Currency<sup>?</sup> </a>
360
-
361
-
362
-
363
- </span>
364
-
365
-
366
-
367
-
368
-
369
-
370
-
371
-
372
-
373
- <span class="summary_desc"><div class='inline'><p>Looks up a currency by its display symbol.</p></div></span>
374
-
375
- </li>
376
-
377
-
378
- <li class="public ">
379
- <span class="summary_signature">
380
-
381
- <a href="#register-class_method" title="register (class method)">.<strong>register</strong>(code:, subunit: 0, symbol: &#39;&#39;, priority: 0) &#x21d2; Currency </a>
382
-
383
-
384
-
385
- </span>
386
-
387
-
388
-
389
-
390
-
391
-
392
-
393
-
394
-
395
- <span class="summary_desc"><div class='inline'><p>Registers a new currency, raising a KeyError if already registered.</p></div></span>
396
-
397
- </li>
398
-
399
-
400
- <li class="public ">
401
- <span class="summary_signature">
402
-
403
- <a href="#resolve-class_method" title="resolve (class method)">.<strong>resolve</strong>(object) &#x21d2; Currency<sup>?</sup> </a>
404
-
405
-
406
-
407
- </span>
408
-
409
-
410
-
411
-
412
-
413
-
414
-
415
-
416
-
417
- <span class="summary_desc"><div class='inline'><p>Resolves an object into a <span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span>, returning <code>nil</code> when it can't.</p></div></span>
418
-
419
- </li>
420
-
421
-
422
- <li class="public ">
423
- <span class="summary_signature">
424
-
425
- <a href="#resolve!-class_method" title="resolve! (class method)">.<strong>resolve!</strong>(object) &#x21d2; Currency </a>
426
-
427
-
428
-
429
- </span>
430
-
431
-
432
-
433
-
434
-
435
-
436
-
437
-
438
-
439
- <span class="summary_desc"><div class='inline'><p>Resolves an object into a <span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span>, raising on failure.</p></div></span>
440
-
441
- </li>
442
-
443
-
444
- <li class="public ">
445
- <span class="summary_signature">
446
-
447
- <a href="#zero-class_method" title="zero (class method)">.<strong>zero</strong>(currency) &#x21d2; Money </a>
448
-
449
-
450
-
451
- </span>
452
-
453
-
454
-
455
-
456
-
457
-
458
-
459
-
460
-
461
- <span class="summary_desc"><div class='inline'><p>Returns a zero <span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span> in the given currency, useful as a default value for discounts, totals, or placeholders.</p></div></span>
462
-
463
- </li>
464
-
465
-
466
- </ul>
467
-
468
-
469
- <h2>
470
- Instance Method Summary
471
- <small><a href="#" class="summary_toggle">collapse</a></small>
472
- </h2>
473
-
474
- <ul class="summary">
475
-
476
- <li class="public ">
477
- <span class="summary_signature">
478
-
479
- <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(code:, symbol:, subunit: 0, priority: 0, country: nil, name: nil) &#x21d2; Currency </a>
480
-
481
-
482
-
483
- </span>
484
-
485
-
486
- <span class="note title constructor">constructor</span>
487
-
488
-
489
-
490
-
491
-
492
-
493
-
494
-
495
- <span class="summary_desc"><div class='inline'><p>A new instance of Currency.</p></div></span>
496
-
497
- </li>
498
-
499
-
500
- <li class="public ">
501
- <span class="summary_signature">
502
-
503
- <a href="#inspect-instance_method" title="#inspect (instance method)">#<strong>inspect</strong> &#x21d2; String </a>
504
-
505
-
506
-
507
- </span>
508
-
509
-
510
-
511
-
512
-
513
-
514
-
515
-
516
-
517
- <span class="summary_desc"><div class='inline'><p>Debug representation.</p></div></span>
518
-
519
- </li>
520
-
521
-
522
- <li class="public ">
523
- <span class="summary_signature">
524
-
525
- <a href="#minimum_amount-instance_method" title="#minimum_amount (instance method)">#<strong>minimum_amount</strong> &#x21d2; Rational </a>
526
-
527
-
528
-
529
- </span>
530
-
531
-
532
-
533
-
534
-
535
-
536
-
537
-
538
-
539
- <span class="summary_desc"><div class='inline'><p>Smallest representable amount (1/fractional_multiplier).</p></div></span>
540
-
541
- </li>
542
-
543
-
544
- <li class="public ">
545
- <span class="summary_signature">
546
-
547
- <a href="#normalize_amount-instance_method" title="#normalize_amount (instance method)">#<strong>normalize_amount</strong>(amount) &#x21d2; Object </a>
548
-
549
-
550
-
551
- </span>
552
-
553
-
554
-
555
-
556
-
557
-
558
-
559
-
560
-
561
- <span class="summary_desc"><div class='inline'><p>Normalizes numeric amounts for this currency 1.</p></div></span>
562
-
563
- </li>
564
-
565
-
566
- <li class="public ">
567
- <span class="summary_signature">
568
-
569
- <a href="#zero-instance_method" title="#zero (instance method)">#<strong>zero</strong> &#x21d2; Money </a>
570
-
571
-
572
-
573
- </span>
574
-
575
-
576
-
577
-
578
-
579
-
580
-
581
-
582
-
583
- <span class="summary_desc"><div class='inline'><p>Returns the cached frozen zero-Money for this currency.</p></div></span>
584
-
585
- </li>
586
-
587
-
588
- </ul>
589
-
590
-
591
-
592
-
593
- <div id="constructor_details" class="method_details_list">
594
- <h2>Constructor Details</h2>
595
-
596
- <div class="method_details first">
597
- <h3 class="signature first" id="initialize-instance_method">
598
-
599
- #<strong>initialize</strong>(code:, symbol:, subunit: 0, priority: 0, country: nil, name: nil) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>
600
-
601
-
602
-
603
-
604
-
605
- </h3><div class="docstring">
606
- <div class="discussion">
607
- <p>Returns a new instance of Currency.</p>
608
-
609
- </div>
610
- </div>
611
- <div class="tags">
612
- <p class="tag_title">Parameters:</p>
613
- <ul class="param">
614
-
615
- <li>
616
-
617
- <span class='name'>code</span>
618
-
619
-
620
- <span class='type'>(<tt>String</tt>)</span>
621
-
622
-
623
-
624
- &mdash;
625
- <div class='inline'><p>ISO 4217 currency code</p></div>
626
-
627
- </li>
628
-
629
- <li>
630
-
631
- <span class='name'>symbol</span>
632
-
633
-
634
- <span class='type'>(<tt>String</tt>)</span>
635
-
636
-
637
-
638
- &mdash;
639
- <div class='inline'><p>Display symbol</p></div>
640
-
641
- </li>
642
-
643
- <li>
644
-
645
- <span class='name'>subunit</span>
646
-
647
-
648
- <span class='type'>(<tt>Integer</tt>)</span>
649
-
650
-
651
- <em class="default">(defaults to: <tt>0</tt>)</em>
652
-
653
-
654
- &mdash;
655
- <div class='inline'><p>Number of decimal places (default 0)</p></div>
656
-
657
- </li>
658
-
659
- <li>
660
-
661
- <span class='name'>priority</span>
662
-
663
-
664
- <span class='type'>(<tt>Integer</tt>)</span>
665
-
666
-
667
- <em class="default">(defaults to: <tt>0</tt>)</em>
668
-
669
-
670
- &mdash;
671
- <div class='inline'><p>Parser precedence for symbol detection (default 0)</p></div>
672
-
673
- </li>
674
-
675
- <li>
676
-
677
- <span class='name'>country</span>
678
-
679
-
680
- <span class='type'>(<tt>String</tt>, <tt>nil</tt>)</span>
681
-
682
-
683
- <em class="default">(defaults to: <tt>nil</tt>)</em>
684
-
685
-
686
- &mdash;
687
- <div class='inline'><p>Associated country code (default nil)</p></div>
688
-
689
- </li>
690
-
691
- <li>
692
-
693
- <span class='name'>name</span>
694
-
695
-
696
- <span class='type'>(<tt>String</tt>, <tt>nil</tt>)</span>
697
-
698
-
699
- <em class="default">(defaults to: <tt>nil</tt>)</em>
700
-
701
-
702
- &mdash;
703
- <div class='inline'><p>Currency name (default nil)</p></div>
704
-
705
- </li>
706
-
707
- </ul>
708
-
709
-
710
- </div><table class="source_code">
711
- <tr>
712
- <td>
713
- <pre class="lines">
714
-
715
-
716
- 26
717
- 27
718
- 28
719
- 29
720
- 30
721
- 31
722
- 32</pre>
723
- </td>
724
- <td>
725
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 26</span>
726
-
727
- <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>code:</span><span class='comma'>,</span> <span class='label'>symbol:</span><span class='comma'>,</span> <span class='label'>subunit:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>priority:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>country:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>name:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
728
- <span class='id identifier rubyid_subunit'>subunit</span> <span class='op'>=</span> <span class='id identifier rubyid_subunit'>subunit</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
729
- <span class='id identifier rubyid_priority'>priority</span> <span class='op'>=</span> <span class='id identifier rubyid_priority'>priority</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
730
- <span class='id identifier rubyid_fractional_multiplier'>fractional_multiplier</span> <span class='op'>=</span> <span class='int'>10</span><span class='op'>**</span><span class='id identifier rubyid_subunit'>subunit</span>
731
- <span class='kw'>super</span><span class='lparen'>(</span><span class='label'>code:</span><span class='comma'>,</span> <span class='label'>subunit:</span><span class='comma'>,</span> <span class='label'>symbol:</span><span class='comma'>,</span> <span class='label'>priority:</span><span class='comma'>,</span> <span class='label'>country:</span><span class='comma'>,</span> <span class='label'>name:</span><span class='comma'>,</span>
732
- <span class='label'>fractional_multiplier:</span><span class='rparen'>)</span>
733
- <span class='kw'>end</span></pre>
734
- </td>
735
- </tr>
736
- </table>
737
- </div>
738
-
739
- </div>
740
-
741
- <div id="instance_attr_details" class="attr_details">
742
- <h2>Instance Attribute Details</h2>
743
-
744
-
745
- <span id=""></span>
746
- <div class="method_details first">
747
- <h3 class="signature first" id="code-instance_method">
748
-
749
- #<strong>code</strong> &#x21d2; <tt>String</tt> <span class="extras">(readonly)</span>
750
-
751
-
752
-
753
-
754
-
755
- </h3><div class="docstring">
756
- <div class="discussion">
757
- <p>ISO 4217 currency code (e.g., &quot;USD&quot;, &quot;EUR&quot;)</p>
758
-
759
- </div>
760
- </div>
761
- <div class="tags">
762
-
763
- <p class="tag_title">Returns:</p>
764
- <ul class="return">
765
-
766
- <li>
767
-
768
-
769
- <span class='type'>(<tt>String</tt>)</span>
770
-
771
-
772
-
773
- &mdash;
774
- <div class='inline'><p>the current value of code</p></div>
775
-
776
- </li>
777
-
778
- </ul>
779
-
780
- </div><table class="source_code">
781
- <tr>
782
- <td>
783
- <pre class="lines">
784
-
785
-
786
- 18
787
- 19
788
- 20</pre>
789
- </td>
790
- <td>
791
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 18</span>
792
-
793
- <span class='kw'>def</span> <span class='id identifier rubyid_code'>code</span>
794
- <span class='ivar'>@code</span>
795
- <span class='kw'>end</span></pre>
796
- </td>
797
- </tr>
798
- </table>
799
- </div>
800
-
801
-
802
- <span id=""></span>
803
- <div class="method_details ">
804
- <h3 class="signature " id="country-instance_method">
805
-
806
- #<strong>country</strong> &#x21d2; <tt>String</tt><sup>?</sup> <span class="extras">(readonly)</span>
807
-
808
-
809
-
810
-
811
-
812
- </h3><div class="docstring">
813
- <div class="discussion">
814
- <p>Associated country code</p>
815
-
816
- </div>
817
- </div>
818
- <div class="tags">
819
-
820
- <p class="tag_title">Returns:</p>
821
- <ul class="return">
822
-
823
- <li>
824
-
825
-
826
- <span class='type'>(<tt>String</tt>, <tt>nil</tt>)</span>
827
-
828
-
829
-
830
- &mdash;
831
- <div class='inline'><p>the current value of country</p></div>
832
-
833
- </li>
834
-
835
- </ul>
836
-
837
- </div><table class="source_code">
838
- <tr>
839
- <td>
840
- <pre class="lines">
841
-
842
-
843
- 18
844
- 19
845
- 20</pre>
846
- </td>
847
- <td>
848
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 18</span>
849
-
850
- <span class='kw'>def</span> <span class='id identifier rubyid_country'>country</span>
851
- <span class='ivar'>@country</span>
852
- <span class='kw'>end</span></pre>
853
- </td>
854
- </tr>
855
- </table>
856
- </div>
857
-
858
-
859
- <span id=""></span>
860
- <div class="method_details ">
861
- <h3 class="signature " id="fractional_multiplier-instance_method">
862
-
863
- #<strong>fractional_multiplier</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
864
-
865
-
866
-
867
-
868
-
869
- </h3><div class="docstring">
870
- <div class="discussion">
871
- <p>10^subunit, used for fractional conversions</p>
872
-
873
- </div>
874
- </div>
875
- <div class="tags">
876
-
877
- <p class="tag_title">Returns:</p>
878
- <ul class="return">
879
-
880
- <li>
881
-
882
-
883
- <span class='type'>(<tt>Integer</tt>)</span>
884
-
885
-
886
-
887
- &mdash;
888
- <div class='inline'><p>the current value of fractional_multiplier</p></div>
889
-
890
- </li>
891
-
892
- </ul>
893
-
894
- </div><table class="source_code">
895
- <tr>
896
- <td>
897
- <pre class="lines">
898
-
899
-
900
- 18
901
- 19
902
- 20</pre>
903
- </td>
904
- <td>
905
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 18</span>
906
-
907
- <span class='kw'>def</span> <span class='id identifier rubyid_fractional_multiplier'>fractional_multiplier</span>
908
- <span class='ivar'>@fractional_multiplier</span>
909
- <span class='kw'>end</span></pre>
910
- </td>
911
- </tr>
912
- </table>
913
- </div>
914
-
915
-
916
- <span id=""></span>
917
- <div class="method_details ">
918
- <h3 class="signature " id="name-instance_method">
919
-
920
- #<strong>name</strong> &#x21d2; <tt>String</tt><sup>?</sup> <span class="extras">(readonly)</span>
921
-
922
-
923
-
924
-
925
-
926
- </h3><div class="docstring">
927
- <div class="discussion">
928
- <p>Currency name</p>
929
-
930
- </div>
931
- </div>
932
- <div class="tags">
933
-
934
- <p class="tag_title">Returns:</p>
935
- <ul class="return">
936
-
937
- <li>
938
-
939
-
940
- <span class='type'>(<tt>String</tt>, <tt>nil</tt>)</span>
941
-
942
-
943
-
944
- &mdash;
945
- <div class='inline'><p>the current value of name</p></div>
946
-
947
- </li>
948
-
949
- </ul>
950
-
951
- </div><table class="source_code">
952
- <tr>
953
- <td>
954
- <pre class="lines">
955
-
956
-
957
- 18
958
- 19
959
- 20</pre>
960
- </td>
961
- <td>
962
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 18</span>
963
-
964
- <span class='kw'>def</span> <span class='id identifier rubyid_name'>name</span>
965
- <span class='ivar'>@name</span>
966
- <span class='kw'>end</span></pre>
967
- </td>
968
- </tr>
969
- </table>
970
- </div>
971
-
972
-
973
- <span id=""></span>
974
- <div class="method_details ">
975
- <h3 class="signature " id="priority-instance_method">
976
-
977
- #<strong>priority</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
978
-
979
-
980
-
981
-
982
-
983
- </h3><div class="docstring">
984
- <div class="discussion">
985
- <p>Parser precedence for symbol detection</p>
986
-
987
- </div>
988
- </div>
989
- <div class="tags">
990
-
991
- <p class="tag_title">Returns:</p>
992
- <ul class="return">
993
-
994
- <li>
995
-
996
-
997
- <span class='type'>(<tt>Integer</tt>)</span>
998
-
999
-
1000
-
1001
- &mdash;
1002
- <div class='inline'><p>the current value of priority</p></div>
1003
-
1004
- </li>
1005
-
1006
- </ul>
1007
-
1008
- </div><table class="source_code">
1009
- <tr>
1010
- <td>
1011
- <pre class="lines">
1012
-
1013
-
1014
- 18
1015
- 19
1016
- 20</pre>
1017
- </td>
1018
- <td>
1019
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 18</span>
1020
-
1021
- <span class='kw'>def</span> <span class='id identifier rubyid_priority'>priority</span>
1022
- <span class='ivar'>@priority</span>
1023
- <span class='kw'>end</span></pre>
1024
- </td>
1025
- </tr>
1026
- </table>
1027
- </div>
1028
-
1029
-
1030
- <span id=""></span>
1031
- <div class="method_details ">
1032
- <h3 class="signature " id="subunit-instance_method">
1033
-
1034
- #<strong>subunit</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
1035
-
1036
-
1037
-
1038
-
1039
-
1040
- </h3><div class="docstring">
1041
- <div class="discussion">
1042
- <p>Number of decimal places (0 for JPY, 2 for USD, 3 for IQD)</p>
1043
-
1044
- </div>
1045
- </div>
1046
- <div class="tags">
1047
-
1048
- <p class="tag_title">Returns:</p>
1049
- <ul class="return">
1050
-
1051
- <li>
1052
-
1053
-
1054
- <span class='type'>(<tt>Integer</tt>)</span>
1055
-
1056
-
1057
-
1058
- &mdash;
1059
- <div class='inline'><p>the current value of subunit</p></div>
1060
-
1061
- </li>
1062
-
1063
- </ul>
1064
-
1065
- </div><table class="source_code">
1066
- <tr>
1067
- <td>
1068
- <pre class="lines">
1069
-
1070
-
1071
- 18
1072
- 19
1073
- 20</pre>
1074
- </td>
1075
- <td>
1076
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 18</span>
1077
-
1078
- <span class='kw'>def</span> <span class='id identifier rubyid_subunit'>subunit</span>
1079
- <span class='ivar'>@subunit</span>
1080
- <span class='kw'>end</span></pre>
1081
- </td>
1082
- </tr>
1083
- </table>
1084
- </div>
1085
-
1086
-
1087
- <span id=""></span>
1088
- <div class="method_details ">
1089
- <h3 class="signature " id="symbol-instance_method">
1090
-
1091
- #<strong>symbol</strong> &#x21d2; <tt>String</tt> <span class="extras">(readonly)</span>
1092
-
1093
-
1094
-
1095
-
1096
-
1097
- </h3><div class="docstring">
1098
- <div class="discussion">
1099
- <p>Display symbol (e.g., &quot;$&quot;, &quot;€&quot;, &quot;R$&quot;)</p>
1100
-
1101
- </div>
1102
- </div>
1103
- <div class="tags">
1104
-
1105
- <p class="tag_title">Returns:</p>
1106
- <ul class="return">
1107
-
1108
- <li>
1109
-
1110
-
1111
- <span class='type'>(<tt>String</tt>)</span>
1112
-
1113
-
1114
-
1115
- &mdash;
1116
- <div class='inline'><p>the current value of symbol</p></div>
1117
-
1118
- </li>
1119
-
1120
- </ul>
1121
-
1122
- </div><table class="source_code">
1123
- <tr>
1124
- <td>
1125
- <pre class="lines">
1126
-
1127
-
1128
- 18
1129
- 19
1130
- 20</pre>
1131
- </td>
1132
- <td>
1133
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 18</span>
1134
-
1135
- <span class='kw'>def</span> <span class='id identifier rubyid_symbol'>symbol</span>
1136
- <span class='ivar'>@symbol</span>
1137
- <span class='kw'>end</span></pre>
1138
- </td>
1139
- </tr>
1140
- </table>
1141
- </div>
1142
-
1143
- </div>
1144
-
1145
-
1146
- <div id="class_method_details" class="method_details_list">
1147
- <h2>Class Method Details</h2>
1148
-
1149
-
1150
- <div class="method_details first">
1151
- <h3 class="signature first" id="for_code-class_method">
1152
-
1153
- .<strong>for_code</strong>(code) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt><sup>?</sup>
1154
-
1155
-
1156
-
1157
-
1158
-
1159
- </h3><div class="docstring">
1160
- <div class="discussion">
1161
- <p>Looks up a registered currency by its alpha code.</p>
1162
-
1163
- </div>
1164
- </div>
1165
- <div class="tags">
1166
- <p class="tag_title">Parameters:</p>
1167
- <ul class="param">
1168
-
1169
- <li>
1170
-
1171
- <span class='name'>code</span>
1172
-
1173
-
1174
- <span class='type'>(<tt>String</tt>)</span>
1175
-
1176
-
1177
-
1178
- &mdash;
1179
- <div class='inline'><p>the currency code</p></div>
1180
-
1181
- </li>
1182
-
1183
- </ul>
1184
-
1185
- <p class="tag_title">Returns:</p>
1186
- <ul class="return">
1187
-
1188
- <li>
1189
-
1190
-
1191
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>, <tt>nil</tt>)</span>
1192
-
1193
-
1194
-
1195
- &mdash;
1196
- <div class='inline'><p>the registered Currency, or <code>nil</code> if not found</p></div>
1197
-
1198
- </li>
1199
-
1200
- </ul>
1201
-
1202
- </div><table class="source_code">
1203
- <tr>
1204
- <td>
1205
- <pre class="lines">
1206
-
1207
-
1208
- 100
1209
- 101
1210
- 102</pre>
1211
- </td>
1212
- <td>
1213
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 100</span>
1214
-
1215
- <span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_for_code'>for_code</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='rparen'>)</span>
1216
- <span class='const'><span class='object_link'><a href="Registry.html" title="Mint::Registry (module)">Registry</a></span></span><span class='period'>.</span><span class='id identifier rubyid_currencies'><span class='object_link'><a href="Registry.html#currencies-class_method" title="Mint::Registry.currencies (method)">currencies</a></span></span><span class='lbracket'>[</span><span class='id identifier rubyid_code'>code</span><span class='rbracket'>]</span>
1217
- <span class='kw'>end</span></pre>
1218
- </td>
1219
- </tr>
1220
- </table>
1221
- </div>
1222
-
1223
- <div class="method_details ">
1224
- <h3 class="signature " id="for_symbol-class_method">
1225
-
1226
- .<strong>for_symbol</strong>(symbol) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt><sup>?</sup>
1227
-
1228
-
1229
-
1230
-
1231
-
1232
- </h3><div class="docstring">
1233
- <div class="discussion">
1234
- <p>Looks up a currency by its display symbol.</p>
1235
-
1236
- </div>
1237
- </div>
1238
- <div class="tags">
1239
- <p class="tag_title">Parameters:</p>
1240
- <ul class="param">
1241
-
1242
- <li>
1243
-
1244
- <span class='name'>symbol</span>
1245
-
1246
-
1247
- <span class='type'>(<tt>String</tt>)</span>
1248
-
1249
-
1250
-
1251
- &mdash;
1252
- <div class='inline'><p>the display symbol (e.g. &quot;$&quot;, &quot;R$&quot;)</p></div>
1253
-
1254
- </li>
1255
-
1256
- </ul>
1257
-
1258
- <p class="tag_title">Returns:</p>
1259
- <ul class="return">
1260
-
1261
- <li>
1262
-
1263
-
1264
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>, <tt>nil</tt>)</span>
1265
-
1266
-
1267
-
1268
- &mdash;
1269
- <div class='inline'><p>the highest-priority currency for the symbol</p></div>
1270
-
1271
- </li>
1272
-
1273
- </ul>
1274
-
1275
- </div><table class="source_code">
1276
- <tr>
1277
- <td>
1278
- <pre class="lines">
1279
-
1280
-
1281
- 108
1282
- 109
1283
- 110</pre>
1284
- </td>
1285
- <td>
1286
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 108</span>
1287
-
1288
- <span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_for_symbol'>for_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span>
1289
- <span class='const'><span class='object_link'><a href="Registry.html" title="Mint::Registry (module)">Registry</a></span></span><span class='period'>.</span><span class='id identifier rubyid_currency_for_symbol'><span class='object_link'><a href="Registry.html#currency_for_symbol-instance_method" title="Mint::Registry#currency_for_symbol (method)">currency_for_symbol</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_symbol'>symbol</span><span class='rparen'>)</span>
1290
- <span class='kw'>end</span></pre>
1291
- </td>
1292
- </tr>
1293
- </table>
1294
- </div>
1295
-
1296
- <div class="method_details ">
1297
- <h3 class="signature " id="register-class_method">
1298
-
1299
- .<strong>register</strong>(code:, subunit: 0, symbol: &#39;&#39;, priority: 0) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>
1300
-
1301
-
1302
-
1303
-
1304
-
1305
- </h3><div class="docstring">
1306
- <div class="discussion">
1307
- <p>Registers a new currency, raising a KeyError if already registered.</p>
1308
-
1309
- </div>
1310
- </div>
1311
- <div class="tags">
1312
- <p class="tag_title">Parameters:</p>
1313
- <ul class="param">
1314
-
1315
- <li>
1316
-
1317
- <span class='name'>code</span>
1318
-
1319
-
1320
- <span class='type'>(<tt>String</tt>)</span>
1321
-
1322
-
1323
-
1324
- &mdash;
1325
- <div class='inline'><p>the unique currency code</p></div>
1326
-
1327
- </li>
1328
-
1329
- <li>
1330
-
1331
- <span class='name'>subunit</span>
1332
-
1333
-
1334
- <span class='type'>(<tt>Integer</tt>)</span>
1335
-
1336
-
1337
- <em class="default">(defaults to: <tt>0</tt>)</em>
1338
-
1339
-
1340
- &mdash;
1341
- <div class='inline'><p>the decimal subunit precision, defaults to 0</p></div>
1342
-
1343
- </li>
1344
-
1345
- <li>
1346
-
1347
- <span class='name'>symbol</span>
1348
-
1349
-
1350
- <span class='type'>(<tt>String</tt>)</span>
1351
-
1352
-
1353
- <em class="default">(defaults to: <tt>&#39;&#39;</tt>)</em>
1354
-
1355
-
1356
- &mdash;
1357
- <div class='inline'><p>the display symbol</p></div>
1358
-
1359
- </li>
1360
-
1361
- <li>
1362
-
1363
- <span class='name'>priority</span>
1364
-
1365
-
1366
- <span class='type'>(<tt>Integer</tt>)</span>
1367
-
1368
-
1369
- <em class="default">(defaults to: <tt>0</tt>)</em>
1370
-
1371
-
1372
- &mdash;
1373
- <div class='inline'><p>parser precedence priority</p></div>
1374
-
1375
- </li>
1376
-
1377
- </ul>
1378
-
1379
- <p class="tag_title">Returns:</p>
1380
- <ul class="return">
1381
-
1382
- <li>
1383
-
1384
-
1385
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>)</span>
1386
-
1387
-
1388
-
1389
- &mdash;
1390
- <div class='inline'><p>the newly registered Currency instance</p></div>
1391
-
1392
- </li>
1393
-
1394
- </ul>
1395
- <p class="tag_title">Raises:</p>
1396
- <ul class="raise">
1397
-
1398
- <li>
1399
-
1400
-
1401
- <span class='type'>(<tt>ArgumentError</tt>)</span>
1402
-
1403
-
1404
-
1405
- &mdash;
1406
- <div class='inline'><p>if the code contains invalid characters</p></div>
1407
-
1408
- </li>
1409
-
1410
- <li>
1411
-
1412
-
1413
- <span class='type'>(<tt>KeyError</tt>)</span>
1414
-
1415
-
1416
-
1417
- &mdash;
1418
- <div class='inline'><p>if the currency code is already registered</p></div>
1419
-
1420
- </li>
1421
-
1422
- </ul>
1423
-
1424
- </div><table class="source_code">
1425
- <tr>
1426
- <td>
1427
- <pre class="lines">
1428
-
1429
-
1430
- 62
1431
- 63
1432
- 64</pre>
1433
- </td>
1434
- <td>
1435
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 62</span>
1436
-
1437
- <span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_register'>register</span><span class='lparen'>(</span><span class='label'>code:</span><span class='comma'>,</span> <span class='label'>subunit:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>symbol:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>priority:</span> <span class='int'>0</span><span class='rparen'>)</span>
1438
- <span class='const'><span class='object_link'><a href="Registry.html" title="Mint::Registry (module)">Registry</a></span></span><span class='period'>.</span><span class='id identifier rubyid_register'><span class='object_link'><a href="Registry.html#register-class_method" title="Mint::Registry.register (method)">register</a></span></span><span class='lparen'>(</span><span class='label'>code:</span><span class='comma'>,</span> <span class='label'>subunit:</span><span class='comma'>,</span> <span class='label'>symbol:</span><span class='comma'>,</span> <span class='label'>priority:</span><span class='rparen'>)</span>
1439
- <span class='kw'>end</span></pre>
1440
- </td>
1441
- </tr>
1442
- </table>
1443
- </div>
1444
-
1445
- <div class="method_details ">
1446
- <h3 class="signature " id="resolve-class_method">
1447
-
1448
- .<strong>resolve</strong>(object) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt><sup>?</sup>
1449
-
1450
-
1451
-
1452
-
1453
-
1454
- </h3><div class="docstring">
1455
- <div class="discussion">
1456
- <p>Resolves an object into a <span class='object_link'><a href="" title="Mint::Currency (class)">Mint::Currency</a></span>, returning <code>nil</code> when it can't.</p>
1457
- <p>Accepts <code>nil</code>, <code>String</code>, <span class='object_link'><a href="" title="Mint::Currency (class)">Mint::Currency</a></span>, or <span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span>.
1458
- Passing a <span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span> extracts its currency</p>
1459
-
1460
- </div>
1461
- </div>
1462
- <div class="tags">
1463
- <p class="tag_title">Parameters:</p>
1464
- <ul class="param">
1465
-
1466
- <li>
1467
-
1468
- <span class='name'>object</span>
1469
-
1470
-
1471
- <span class='type'>(<tt>String</tt>, <tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>, <tt><span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span></tt>, <tt>nil</tt>)</span>
1472
-
1473
-
1474
-
1475
- &mdash;
1476
- <div class='inline'><p>a currency code, object, or <code>nil</code></p></div>
1477
-
1478
- </li>
1479
-
1480
- </ul>
1481
-
1482
- <p class="tag_title">Returns:</p>
1483
- <ul class="return">
1484
-
1485
- <li>
1486
-
1487
-
1488
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>, <tt>nil</tt>)</span>
1489
-
1490
-
1491
-
1492
- &mdash;
1493
- <div class='inline'><p>the resolved Currency, or <code>nil</code> if <code>object</code> is <code>nil</code>
1494
- or the code is not registered</p></div>
1495
-
1496
- </li>
1497
-
1498
- </ul>
1499
- <p class="tag_title">Raises:</p>
1500
- <ul class="raise">
1501
-
1502
- <li>
1503
-
1504
-
1505
- <span class='type'>(<tt>ArgumentError</tt>)</span>
1506
-
1507
-
1508
-
1509
- &mdash;
1510
- <div class='inline'><p>if <code>object</code> is an unsupported type (e.g. <code>Integer</code>)</p></div>
1511
-
1512
- </li>
1513
-
1514
- </ul>
1515
-
1516
- </div><table class="source_code">
1517
- <tr>
1518
- <td>
1519
- <pre class="lines">
1520
-
1521
-
1522
- 75
1523
- 76
1524
- 77
1525
- 78
1526
- 79
1527
- 80
1528
- 81
1529
- 82
1530
- 83</pre>
1531
- </td>
1532
- <td>
1533
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 75</span>
1534
-
1535
- <span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_resolve'>resolve</span><span class='lparen'>(</span><span class='id identifier rubyid_object'>object</span><span class='rparen'>)</span>
1536
- <span class='kw'>case</span> <span class='id identifier rubyid_object'>object</span>
1537
- <span class='kw'>when</span> <span class='const'>NilClass</span> <span class='kw'>then</span> <span class='kw'>nil</span>
1538
- <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></span> <span class='kw'>then</span> <span class='id identifier rubyid_object'>object</span>
1539
- <span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span></span> <span class='kw'>then</span> <span class='id identifier rubyid_object'>object</span><span class='period'>.</span><span class='id identifier rubyid_currency'>currency</span>
1540
- <span class='kw'>when</span> <span class='const'>String</span> <span class='kw'>then</span> <span class='const'><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_for_code'><span class='object_link'><a href="#for_code-class_method" title="Mint::Currency.for_code (method)">for_code</a></span></span> <span class='id identifier rubyid_object'>object</span>
1541
- <span class='kw'>else</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>currency must be [Currency], [Money], [String] or nil (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_object'>object</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1542
- <span class='kw'>end</span>
1543
- <span class='kw'>end</span></pre>
1544
- </td>
1545
- </tr>
1546
- </table>
1547
- </div>
1548
-
1549
- <div class="method_details ">
1550
- <h3 class="signature " id="resolve!-class_method">
1551
-
1552
- .<strong>resolve!</strong>(object) &#x21d2; <tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>
1553
-
1554
-
1555
-
1556
-
1557
-
1558
- </h3><div class="docstring">
1559
- <div class="discussion">
1560
- <p>Resolves an object into a <span class='object_link'><a href="" title="Mint::Currency (class)">Mint::Currency</a></span>, raising on failure.</p>
1561
- <p>Like <span class='object_link'><a href="#resolve-class_method" title="Mint::Currency.resolve (method)">resolve</a></span> but raises when the result would be <code>nil</code>.</p>
1562
-
1563
- </div>
1564
- </div>
1565
- <div class="tags">
1566
- <p class="tag_title">Parameters:</p>
1567
- <ul class="param">
1568
-
1569
- <li>
1570
-
1571
- <span class='name'>object</span>
1572
-
1573
-
1574
- <span class='type'>(<tt>String</tt>, <tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>, <tt><span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span></tt>, <tt>nil</tt>)</span>
1575
-
1576
-
1577
-
1578
- &mdash;
1579
- <div class='inline'><p>a currency code, object, or <code>nil</code></p></div>
1580
-
1581
- </li>
1582
-
1583
- </ul>
1584
-
1585
- <p class="tag_title">Returns:</p>
1586
- <ul class="return">
1587
-
1588
- <li>
1589
-
1590
-
1591
- <span class='type'>(<tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>)</span>
1592
-
1593
-
1594
-
1595
- &mdash;
1596
- <div class='inline'><p>the resolved Currency</p></div>
1597
-
1598
- </li>
1599
-
1600
- </ul>
1601
- <p class="tag_title">Raises:</p>
1602
- <ul class="raise">
1603
-
1604
- <li>
1605
-
1606
-
1607
- <span class='type'>(<tt>ArgumentError</tt>)</span>
1608
-
1609
-
1610
-
1611
- &mdash;
1612
- <div class='inline'><p>if <code>object</code> cannot be resolved into a registered currency</p></div>
1613
-
1614
- </li>
1615
-
1616
- </ul>
1617
-
1618
- </div><table class="source_code">
1619
- <tr>
1620
- <td>
1621
- <pre class="lines">
1622
-
1623
-
1624
- 92
1625
- 93
1626
- 94</pre>
1627
- </td>
1628
- <td>
1629
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 92</span>
1630
-
1631
- <span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_resolve!'>resolve!</span><span class='lparen'>(</span><span class='id identifier rubyid_object'>object</span><span class='rparen'>)</span>
1632
- <span class='id identifier rubyid_resolve'>resolve</span><span class='lparen'>(</span><span class='id identifier rubyid_object'>object</span><span class='rparen'>)</span> <span class='kw'>or</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Could not resolve (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_object'>object</span><span class='embexpr_end'>}</span><span class='tstring_content'>) into a currency</span><span class='tstring_end'>&quot;</span></span>
1633
- <span class='kw'>end</span></pre>
1634
- </td>
1635
- </tr>
1636
- </table>
1637
- </div>
1638
-
1639
- <div class="method_details ">
1640
- <h3 class="signature " id="zero-class_method">
1641
-
1642
- .<strong>zero</strong>(currency) &#x21d2; <tt><span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span></tt>
1643
-
1644
-
1645
-
1646
-
1647
-
1648
- </h3><div class="docstring">
1649
- <div class="discussion">
1650
- <p>Returns a zero <span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span> in the given currency, useful as a default value
1651
- for discounts, totals, or placeholders.</p>
1652
-
1653
- </div>
1654
- </div>
1655
- <div class="tags">
1656
- <p class="tag_title">Parameters:</p>
1657
- <ul class="param">
1658
-
1659
- <li>
1660
-
1661
- <span class='name'>currency</span>
1662
-
1663
-
1664
- <span class='type'>(<tt>String</tt>, <tt><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></tt>)</span>
1665
-
1666
-
1667
-
1668
- &mdash;
1669
- <div class='inline'><p>a currency code or object</p></div>
1670
-
1671
- </li>
1672
-
1673
- </ul>
1674
-
1675
- <p class="tag_title">Returns:</p>
1676
- <ul class="return">
1677
-
1678
- <li>
1679
-
1680
-
1681
- <span class='type'>(<tt><span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span></tt>)</span>
1682
-
1683
-
1684
-
1685
- &mdash;
1686
- <div class='inline'><p>a frozen zero-Money</p></div>
1687
-
1688
- </li>
1689
-
1690
- </ul>
1691
- <p class="tag_title">Raises:</p>
1692
- <ul class="raise">
1693
-
1694
- <li>
1695
-
1696
-
1697
- <span class='type'>(<tt>ArgumentError</tt>)</span>
1698
-
1699
-
1700
-
1701
- &mdash;
1702
- <div class='inline'><p>if the currency can't be resolved</p></div>
1703
-
1704
- </li>
1705
-
1706
- </ul>
1707
-
1708
- </div><table class="source_code">
1709
- <tr>
1710
- <td>
1711
- <pre class="lines">
1712
-
1713
-
1714
- 118</pre>
1715
- </td>
1716
- <td>
1717
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 118</span>
1718
-
1719
- <span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_zero'>zero</span><span class='lparen'>(</span><span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Registry.html" title="Mint::Registry (module)">Registry</a></span></span><span class='period'>.</span><span class='id identifier rubyid_zero_for'><span class='object_link'><a href="Registry.html#zero_for-class_method" title="Mint::Registry.zero_for (method)">zero_for</a></span></span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_resolve!'><span class='object_link'><a href="#resolve!-class_method" title="Mint::Currency.resolve! (method)">resolve!</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span><span class='rparen'>)</span></pre>
1720
- </td>
1721
- </tr>
1722
- </table>
1723
- </div>
1724
-
1725
- </div>
1726
-
1727
- <div id="instance_method_details" class="method_details_list">
1728
- <h2>Instance Method Details</h2>
1729
-
1730
-
1731
- <div class="method_details first">
1732
- <h3 class="signature first" id="inspect-instance_method">
1733
-
1734
- #<strong>inspect</strong> &#x21d2; <tt>String</tt>
1735
-
1736
-
1737
-
1738
-
1739
-
1740
- </h3><div class="docstring">
1741
- <div class="discussion">
1742
- <p>Returns debug representation.</p>
1743
-
1744
- </div>
1745
- </div>
1746
- <div class="tags">
1747
-
1748
- <p class="tag_title">Returns:</p>
1749
- <ul class="return">
1750
-
1751
- <li>
1752
-
1753
-
1754
- <span class='type'>(<tt>String</tt>)</span>
1755
-
1756
-
1757
-
1758
- &mdash;
1759
- <div class='inline'><p>debug representation</p></div>
1760
-
1761
- </li>
1762
-
1763
- </ul>
1764
-
1765
- </div><table class="source_code">
1766
- <tr>
1767
- <td>
1768
- <pre class="lines">
1769
-
1770
-
1771
- 35</pre>
1772
- </td>
1773
- <td>
1774
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 35</span>
1775
-
1776
- <span class='kw'>def</span> <span class='id identifier rubyid_inspect'>inspect</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&lt;Currency:(</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_code'>code</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_symbol'>symbol</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subunit'>subunit</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>)&gt;</span><span class='tstring_end'>&quot;</span></span></pre>
1777
- </td>
1778
- </tr>
1779
- </table>
1780
- </div>
1781
-
1782
- <div class="method_details ">
1783
- <h3 class="signature " id="minimum_amount-instance_method">
1784
-
1785
- #<strong>minimum_amount</strong> &#x21d2; <tt>Rational</tt>
1786
-
1787
-
1788
-
1789
-
1790
-
1791
- </h3><div class="docstring">
1792
- <div class="discussion">
1793
- <p>Returns smallest representable amount (1/fractional_multiplier).</p>
1794
-
1795
- </div>
1796
- </div>
1797
- <div class="tags">
1798
-
1799
- <p class="tag_title">Returns:</p>
1800
- <ul class="return">
1801
-
1802
- <li>
1803
-
1804
-
1805
- <span class='type'>(<tt>Rational</tt>)</span>
1806
-
1807
-
1808
-
1809
- &mdash;
1810
- <div class='inline'><p>smallest representable amount (1/fractional_multiplier)</p></div>
1811
-
1812
- </li>
1813
-
1814
- </ul>
1815
-
1816
- </div><table class="source_code">
1817
- <tr>
1818
- <td>
1819
- <pre class="lines">
1820
-
1821
-
1822
- 38</pre>
1823
- </td>
1824
- <td>
1825
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 38</span>
1826
-
1827
- <span class='kw'>def</span> <span class='id identifier rubyid_minimum_amount'>minimum_amount</span> <span class='op'>=</span> <span class='const'>Rational</span><span class='lparen'>(</span><span class='int'>1</span><span class='comma'>,</span> <span class='id identifier rubyid_fractional_multiplier'>fractional_multiplier</span><span class='rparen'>)</span></pre>
1828
- </td>
1829
- </tr>
1830
- </table>
1831
- </div>
1832
-
1833
- <div class="method_details ">
1834
- <h3 class="signature " id="normalize_amount-instance_method">
1835
-
1836
- #<strong>normalize_amount</strong>(amount) &#x21d2; <tt>Object</tt>
1837
-
1838
-
1839
-
1840
-
1841
-
1842
- </h3><div class="docstring">
1843
- <div class="discussion">
1844
- <p>Normalizes numeric amounts for this currency</p>
1845
- <ol>
1846
- <li>Converts to Rational</li>
1847
- <li>Rounds to respect currency subunit</li>
1848
- </ol>
1849
-
1850
- </div>
1851
- </div>
1852
- <div class="tags">
1853
-
1854
-
1855
- </div><table class="source_code">
1856
- <tr>
1857
- <td>
1858
- <pre class="lines">
1859
-
1860
-
1861
- 43</pre>
1862
- </td>
1863
- <td>
1864
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 43</span>
1865
-
1866
- <span class='kw'>def</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='op'>=</span> <span class='id identifier rubyid_amount'>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_subunit'>subunit</span><span class='rparen'>)</span></pre>
1867
- </td>
1868
- </tr>
1869
- </table>
1870
- </div>
1871
-
1872
- <div class="method_details ">
1873
- <h3 class="signature " id="zero-instance_method">
1874
-
1875
- #<strong>zero</strong> &#x21d2; <tt><span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span></tt>
1876
-
1877
-
1878
-
1879
-
1880
-
1881
- </h3><div class="docstring">
1882
- <div class="discussion">
1883
- <p>Returns the cached frozen zero-Money for this currency.</p>
1884
-
1885
- </div>
1886
- </div>
1887
- <div class="tags">
1888
-
1889
- <div class="examples">
1890
- <h4 class="tag_title">Examples:</h4>
1891
-
1892
-
1893
- <pre class="example code"><code><span class='const'><span class='object_link'><a href="../Mint.html" title="Mint (module)">Mint</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Mint::Currency (class)">Currency</a></span></span><span class='period'>.</span><span class='id identifier rubyid_for_code'><span class='object_link'><a href="#for_code-class_method" title="Mint::Currency.for_code (method)">for_code</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>USD</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_zero'><span class='object_link'><a href="#zero-class_method" title="Mint::Currency.zero (method)">zero</a></span></span> <span class='comment'>#=&gt; [USD 0.00]</span></code></pre>
1894
-
1895
- </div>
1896
-
1897
- <p class="tag_title">Returns:</p>
1898
- <ul class="return">
1899
-
1900
- <li>
1901
-
1902
-
1903
- <span class='type'>(<tt><span class='object_link'><a href="Money.html" title="Mint::Money (class)">Money</a></span></tt>)</span>
1904
-
1905
-
1906
-
1907
- &mdash;
1908
- <div class='inline'><p>a frozen zero-Money instance</p></div>
1909
-
1910
- </li>
1911
-
1912
- </ul>
1913
-
1914
- </div><table class="source_code">
1915
- <tr>
1916
- <td>
1917
- <pre class="lines">
1918
-
1919
-
1920
- 50</pre>
1921
- </td>
1922
- <td>
1923
- <pre class="code"><span class="info file"># File 'lib/minting/currency/currency.rb', line 50</span>
1924
-
1925
- <span class='kw'>def</span> <span class='id identifier rubyid_zero'>zero</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Registry.html" title="Mint::Registry (module)">Registry</a></span></span><span class='period'>.</span><span class='id identifier rubyid_zero_for'><span class='object_link'><a href="Registry.html#zero_for-class_method" title="Mint::Registry.zero_for (method)">zero_for</a></span></span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span></pre>
1926
- </td>
1927
- </tr>
1928
- </table>
1929
- </div>
1930
-
1931
- </div>
1932
-
1933
- </div>
1934
-
1935
- <div id="footer">
1936
- Generated on Mon Jun 22 16:47:02 2026 by
1937
- <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1938
- 0.9.44 (ruby-4.0.5).
1939
- </div>
1940
-
1941
- </div>
1942
- </body>
1943
- </html>