minting 1.9.7 → 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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +234 -116
  3. data/Rakefile +2 -7
  4. data/doc/agents/api_review-2026-06-15.md +1 -1
  5. data/doc/agents/copilot-instructions.md +2 -2
  6. data/doc/agents/expired/copilot-instructions.md +2 -2
  7. data/doc/agents/expired/gemini_gem_evaluation.md +2 -2
  8. data/lib/minting/aliases.rb +22 -0
  9. data/lib/minting/currency/currency.rb +81 -9
  10. data/lib/minting/data/crypto-currencies.yaml +126 -0
  11. data/lib/minting/mint/i18n.rb +79 -29
  12. data/lib/minting/mint/mint.rb +1 -26
  13. data/lib/minting/mint/registry/crypto.rb +59 -0
  14. data/lib/minting/mint/registry/registration.rb +1 -2
  15. data/lib/minting/mint/registry/symbols.rb +37 -30
  16. data/lib/minting/mint/rounding.rb +9 -7
  17. data/lib/minting/mint.rb +1 -2
  18. data/lib/minting/money/allocation/allocation.rb +2 -2
  19. data/lib/minting/money/allocation/split.rb +1 -1
  20. data/lib/minting/money/arithmetics/operators.rb +10 -13
  21. data/lib/minting/money/clamp.rb +6 -6
  22. data/lib/minting/money/coercion.rb +1 -1
  23. data/lib/minting/money/comparable.rb +3 -3
  24. data/lib/minting/money/constructors.rb +3 -42
  25. data/lib/minting/money/conversion.rb +22 -18
  26. data/lib/minting/money/format/format.rb +100 -0
  27. data/lib/minting/money/format/formatter.rb +102 -0
  28. data/lib/minting/money/format/to_s.rb +20 -102
  29. data/lib/minting/money/format/validator.rb +34 -0
  30. data/lib/minting/money/money.rb +25 -9
  31. data/lib/minting/money/parse.rb +127 -0
  32. data/lib/minting/money/rounding.rb +27 -0
  33. data/lib/minting/version.rb +1 -1
  34. data/lib/minting.rb +17 -8
  35. metadata +9 -29
  36. data/doc/Mint/Currency.html +0 -2032
  37. data/doc/Mint/Money.html +0 -5139
  38. data/doc/Mint/RangeStepPatch.html +0 -277
  39. data/doc/Mint/Registry.html +0 -863
  40. data/doc/Mint/Rounding.html +0 -506
  41. data/doc/Mint/UnknownCurrency.html +0 -138
  42. data/doc/Mint.html +0 -931
  43. data/doc/Minting.html +0 -142
  44. data/doc/Numeric.html +0 -479
  45. data/doc/String.html +0 -241
  46. data/doc/_index.html +0 -206
  47. data/doc/class_list.html +0 -54
  48. data/doc/css/common.css +0 -1
  49. data/doc/css/full_list.css +0 -206
  50. data/doc/css/style.css +0 -1089
  51. data/doc/file.README.html +0 -291
  52. data/doc/file_list.html +0 -59
  53. data/doc/frames.html +0 -22
  54. data/doc/index.html +0 -291
  55. data/doc/js/app.js +0 -801
  56. data/doc/js/full_list.js +0 -334
  57. data/doc/js/jquery.js +0 -4
  58. data/doc/method_list.html +0 -758
  59. data/doc/top-level-namespace.html +0 -135
  60. data/lib/minting/mint/aliases.rb +0 -16
  61. data/lib/minting/mint/parser/parser.rb +0 -97
  62. data/lib/minting/mint/parser/separators.rb +0 -41
  63. data/lib/minting/money/format/formatting.rb +0 -130
data/doc/String.html DELETED
@@ -1,241 +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: String
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 = "String";
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 (S)</a> &raquo;
42
-
43
-
44
- <span class="title">String</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: String
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">String</li>
80
-
81
- </ul>
82
- <a href="#" class="inheritanceTree">show all</a>
83
-
84
- </dd>
85
- </dl>
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
- <dl>
98
- <dt>Defined in:</dt>
99
- <dd>lib/minting/mint/dsl/string.rb
100
- </dd>
101
- </dl>
102
-
103
- </div>
104
-
105
- <h2>Overview</h2><div class="docstring">
106
- <div class="discussion">
107
- <p>Core extension: adds money-parsing helper to String.</p>
108
-
109
- </div>
110
- </div>
111
- <div class="tags">
112
-
113
-
114
- </div>
115
-
116
-
117
-
118
-
119
-
120
-
121
-
122
- <h2>
123
- Instance Method Summary
124
- <small><a href="#" class="summary_toggle">collapse</a></small>
125
- </h2>
126
-
127
- <ul class="summary">
128
-
129
- <li class="public ">
130
- <span class="summary_signature">
131
-
132
- <a href="#to_money-instance_method" title="#to_money (instance method)">#<strong>to_money</strong>(currency = nil) &#x21d2; Money </a>
133
-
134
-
135
-
136
- </span>
137
-
138
-
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
- <span class="summary_desc"><div class='inline'><p>Parses self as a numeric string and creates a Money in the given currency.</p></div></span>
147
-
148
- </li>
149
-
150
-
151
- </ul>
152
-
153
-
154
-
155
-
156
-
157
- <div id="instance_method_details" class="method_details_list">
158
- <h2>Instance Method Details</h2>
159
-
160
-
161
- <div class="method_details first">
162
- <h3 class="signature first" id="to_money-instance_method">
163
-
164
- #<strong>to_money</strong>(currency = nil) &#x21d2; <tt><span class='object_link'><a href="top-level-namespace.html#Money-constant" title="Money (constant)">Money</a></span></tt>
165
-
166
-
167
-
168
-
169
-
170
- </h3><div class="docstring">
171
- <div class="discussion">
172
- <p>Parses self as a numeric string and creates a Money in the given currency.</p>
173
-
174
- </div>
175
- </div>
176
- <div class="tags">
177
- <p class="tag_title">Parameters:</p>
178
- <ul class="param">
179
-
180
- <li>
181
-
182
- <span class='name'>currency</span>
183
-
184
-
185
- <span class='type'>(<tt><span class='object_link'><a href="" title="String (class)">String</a></span></tt>, <tt>Symbol</tt>, <tt><span class='object_link'><a href="top-level-namespace.html#Currency-constant" title="Currency (constant)">Currency</a></span></tt>)</span>
186
-
187
-
188
- <em class="default">(defaults to: <tt>nil</tt>)</em>
189
-
190
-
191
- &mdash;
192
- <div class='inline'><p>target currency</p></div>
193
-
194
- </li>
195
-
196
- </ul>
197
-
198
- <p class="tag_title">Returns:</p>
199
- <ul class="return">
200
-
201
- <li>
202
-
203
-
204
- <span class='type'>(<tt><span class='object_link'><a href="top-level-namespace.html#Money-constant" title="Money (constant)">Money</a></span></tt>)</span>
205
-
206
-
207
-
208
- </li>
209
-
210
- </ul>
211
-
212
- </div><table class="source_code">
213
- <tr>
214
- <td>
215
- <pre class="lines">
216
-
217
-
218
- 9</pre>
219
- </td>
220
- <td>
221
- <pre class="code"><span class="info file"># File 'lib/minting/mint/dsl/string.rb', line 9</span>
222
-
223
- <span class='kw'>def</span> <span class='id identifier rubyid_to_money'>to_money</span><span class='lparen'>(</span><span class='id identifier rubyid_currency'>currency</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Mint.html" title="Mint (module)">Mint</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mint/Money.html" title="Mint::Money (class)">Money</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'><span class='object_link'><a href="Mint/Money.html#parse-class_method" title="Mint::Money.parse (method)">parse</a></span></span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_currency'>currency</span><span class='rparen'>)</span></pre>
224
- </td>
225
- </tr>
226
- </table>
227
- </div>
228
-
229
- </div>
230
-
231
- </div>
232
-
233
- <div id="footer">
234
- Generated on Wed Jul 1 01:11:53 2026 by
235
- <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
236
- 0.9.44 (ruby-4.0.5).
237
- </div>
238
-
239
- </div>
240
- </body>
241
- </html>
data/doc/_index.html DELETED
@@ -1,206 +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
- Documentation by YARD 0.9.44
8
-
9
- </title>
10
-
11
- <link rel="stylesheet" href="css/style.css" type="text/css">
12
-
13
- <link rel="stylesheet" href="css/common.css" type="text/css">
14
-
15
- <script type="text/javascript">
16
- pathId = null;
17
- relpath = '';
18
- </script>
19
-
20
-
21
- <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
22
-
23
- <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
24
-
25
-
26
- </head>
27
- <body>
28
- <div id="main_progress" aria-hidden="true"></div>
29
-
30
- <div class="nav_wrap">
31
- <iframe id="nav" src="class_list.html?1"></iframe>
32
- <div id="resizer"></div>
33
- </div>
34
-
35
- <div id="main" tabindex="-1">
36
- <div id="header">
37
- <div id="menu">
38
-
39
- </div>
40
-
41
- <div id="search">
42
-
43
- <a class="full_list_link" id="class_list_link"
44
- href="class_list.html">
45
-
46
- <svg width="24" height="24">
47
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
48
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
49
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
50
- </svg>
51
- </a>
52
-
53
- </div>
54
- <div class="clear"></div>
55
- </div>
56
-
57
- <div id="content"><h1 class="noborder title">Documentation by YARD 0.9.44</h1>
58
- <div id="listing">
59
- <h1 class="alphaindex">Alphabetic Index</h1>
60
-
61
- <h2>File Listing</h2>
62
- <ul id="files" class="index_inline_list">
63
-
64
-
65
- <li class="r1"><a href="index.html" title="README">README</a></li>
66
-
67
-
68
- </ul>
69
-
70
- <div class="clear"></div>
71
- <h2>Namespace Listing A-Z</h2>
72
-
73
-
74
-
75
-
76
- <table>
77
- <tr>
78
- <td valign='top' width="33%">
79
-
80
-
81
- <ul id="alpha_C" class="alpha">
82
- <li class="letter">C</li>
83
- <ul>
84
-
85
- <li>
86
- <span class='object_link'><a href="Mint/Currency.html" title="Mint::Currency (class)">Currency</a></span>
87
-
88
- <small>(Mint)</small>
89
-
90
- </li>
91
-
92
- </ul>
93
- </ul>
94
-
95
-
96
- <ul id="alpha_M" class="alpha">
97
- <li class="letter">M</li>
98
- <ul>
99
-
100
- <li>
101
- <span class='object_link'><a href="Mint.html" title="Mint (module)">Mint</a></span>
102
-
103
- </li>
104
-
105
- <li>
106
- <span class='object_link'><a href="Minting.html" title="Minting (module)">Minting</a></span>
107
-
108
- </li>
109
-
110
- <li>
111
- <span class='object_link'><a href="Mint/Money.html" title="Mint::Money (class)">Money</a></span>
112
-
113
- <small>(Mint)</small>
114
-
115
- </li>
116
-
117
- </ul>
118
- </ul>
119
-
120
-
121
- <ul id="alpha_N" class="alpha">
122
- <li class="letter">N</li>
123
- <ul>
124
-
125
- <li>
126
- <span class='object_link'><a href="Numeric.html" title="Numeric (class)">Numeric</a></span>
127
-
128
- </li>
129
-
130
- </ul>
131
- </ul>
132
-
133
-
134
- <ul id="alpha_R" class="alpha">
135
- <li class="letter">R</li>
136
- <ul>
137
-
138
- <li>
139
- <span class='object_link'><a href="Mint/RangeStepPatch.html" title="Mint::RangeStepPatch (module)">RangeStepPatch</a></span>
140
-
141
- <small>(Mint)</small>
142
-
143
- </li>
144
-
145
- <li>
146
- <span class='object_link'><a href="Mint/Registry.html" title="Mint::Registry (module)">Registry</a></span>
147
-
148
- <small>(Mint)</small>
149
-
150
- </li>
151
-
152
- <li>
153
- <span class='object_link'><a href="Mint/Rounding.html" title="Mint::Rounding (module)">Rounding</a></span>
154
-
155
- <small>(Mint)</small>
156
-
157
- </li>
158
-
159
- </ul>
160
- </ul>
161
-
162
-
163
- <ul id="alpha_S" class="alpha">
164
- <li class="letter">S</li>
165
- <ul>
166
-
167
- <li>
168
- <span class='object_link'><a href="String.html" title="String (class)">String</a></span>
169
-
170
- </li>
171
-
172
- </ul>
173
- </ul>
174
-
175
-
176
- <ul id="alpha_U" class="alpha">
177
- <li class="letter">U</li>
178
- <ul>
179
-
180
- <li>
181
- <span class='object_link'><a href="Mint/UnknownCurrency.html" title="Mint::UnknownCurrency (class)">UnknownCurrency</a></span>
182
-
183
- <small>(Mint)</small>
184
-
185
- </li>
186
-
187
- </ul>
188
- </ul>
189
-
190
- </td>
191
- </tr>
192
- </table>
193
-
194
- </div>
195
-
196
- </div>
197
-
198
- <div id="footer">
199
- Generated on Wed Jul 1 01:11:52 2026 by
200
- <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
201
- 0.9.44 (ruby-4.0.5).
202
- </div>
203
-
204
- </div>
205
- </body>
206
- </html>
data/doc/class_list.html DELETED
@@ -1,54 +0,0 @@
1
- <!DOCTYPE html>
2
- <html >
3
- <head>
4
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
5
- <meta charset="utf-8">
6
-
7
- <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen">
8
-
9
- <link rel="stylesheet" href="css/common.css" type="text/css" media="screen">
10
-
11
-
12
-
13
- <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
14
-
15
- <script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
16
-
17
-
18
- <title>Class List</title>
19
- <base id="base_target" target="_parent">
20
- </head>
21
- <body>
22
- <div id="content">
23
- <div class="fixed_header">
24
- <h1 id="full_list_header">Class List</h1>
25
- <div id="full_list_nav">
26
-
27
- <span><a target="_self" href="class_list.html">
28
- Classes
29
- </a></span>
30
-
31
- <span><a target="_self" href="method_list.html">
32
- Methods
33
- </a></span>
34
-
35
- <span><a target="_self" href="file_list.html">
36
- Files
37
- </a></span>
38
-
39
- </div>
40
-
41
- <div id="search">
42
- <label for="search-class">Search:</label>
43
- <input id="search-class" type="text">
44
- </div>
45
- </div>
46
-
47
- <ul id="full_list" class="class">
48
- <li id="object_" class="odd"><div class="item" style="padding-left:30px"><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></div></li>
49
- <li id='object_Mint' class='even'><div class='item' style='padding-left:30px'><a tabindex='0' class='toggle' role='button' aria-label='Mint child nodes' aria-expanded='false' aria-controls='object_Mint'></a> <span class='object_link'><a href="Mint.html" title="Mint (module)">Mint</a></span><small class='search_info'>Top Level Namespace</small></div><div aria-labelledby='object_Mint'><ul><li id='object_Mint::Currency' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Mint/Currency.html" title="Mint::Currency (class)">Currency</a></span> &lt; Data<small class='search_info'>Mint</small></div></li><li id='object_Mint::Money' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Mint/Money.html" title="Mint::Money (class)">Money</a></span> &lt; Object<small class='search_info'>Mint</small></div></li><li id='object_Mint::RangeStepPatch' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Mint/RangeStepPatch.html" title="Mint::RangeStepPatch (module)">RangeStepPatch</a></span><small class='search_info'>Mint</small></div></li><li id='object_Mint::Registry' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Mint/Registry.html" title="Mint::Registry (module)">Registry</a></span><small class='search_info'>Mint</small></div></li><li id='object_Mint::Rounding' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Mint/Rounding.html" title="Mint::Rounding (module)">Rounding</a></span><small class='search_info'>Mint</small></div></li><li id='object_Mint::UnknownCurrency' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Mint/UnknownCurrency.html" title="Mint::UnknownCurrency (class)">UnknownCurrency</a></span> &lt; ArgumentError<small class='search_info'>Mint</small></div></li></ul></div></li><li id='object_Minting' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="Minting.html" title="Minting (module)">Minting</a></span><small class='search_info'>Top Level Namespace</small></div></li><li id='object_Numeric' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="Numeric.html" title="Numeric (class)">Numeric</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_String' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="String.html" title="String (class)">String</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li>
50
-
51
- </ul>
52
- </div>
53
- </body>
54
- </html>
data/doc/css/common.css DELETED
@@ -1 +0,0 @@
1
- /* Override this file with custom rules */