cash 0.0.2
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.
- data/.gitignore +17 -0
- data/Gemfile +7 -0
- data/Guardfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +19 -0
- data/Rakefile +6 -0
- data/cash.gemspec +21 -0
- data/lib/cash.rb +5 -0
- data/lib/cash/currency.rb +38 -0
- data/lib/cash/currency/iso4217.rb +184 -0
- data/lib/cash/equalable.rb +10 -0
- data/spec/lib/cash/currency_spec.rb +53 -0
- data/spec/spec_helper.rb +9 -0
- metadata +98 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Norbert Wojtowicz
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Cash
|
2
|
+
|
3
|
+
Money object for your application. Based on BigDecimal and ISO-4217 currencies.
|
4
|
+
|
5
|
+
## Features
|
6
|
+
|
7
|
+
Encapsulates an amount with its currency.
|
8
|
+
|
9
|
+
Backed by BigDecimal, so it can store arbitrary-precision values without rounding errors. Useful if you’re dealing with fractional cents.
|
10
|
+
|
11
|
+
Safe and strict. Fail fast approach let's you sleep like a baby.
|
12
|
+
|
13
|
+
## Credits
|
14
|
+
|
15
|
+
Huge thanks go out to:
|
16
|
+
|
17
|
+
* The guys from money gem, helping rid the world of floating finances
|
18
|
+
* The guys from big_money gem, helping to spread the word that BigDecimal is bigger and better
|
19
|
+
* Luca Guidi for being awesome and giving up the cash gem name ;]
|
data/Rakefile
ADDED
data/cash.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = "cash"
|
7
|
+
gem.version = '0.0.2'
|
8
|
+
gem.authors = ["Norbert Wojtowicz"]
|
9
|
+
gem.email = ["wojtowicz.norbert@gmail.com"]
|
10
|
+
gem.description = "Money model backed by BigDecimal"
|
11
|
+
gem.summary = gem.description
|
12
|
+
gem.homepage = "https://github.com/pithyless/cash"
|
13
|
+
|
14
|
+
gem.files = `git ls-files`.split($/)
|
15
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
16
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
17
|
+
gem.require_paths = ["lib"]
|
18
|
+
|
19
|
+
gem.add_development_dependency 'rake'
|
20
|
+
gem.add_development_dependency 'rspec'
|
21
|
+
end
|
data/lib/cash.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'set'
|
2
|
+
require 'cash/equalable'
|
3
|
+
|
4
|
+
class Cash
|
5
|
+
class Currency
|
6
|
+
include Equalable
|
7
|
+
|
8
|
+
attr_reader :code, :offset, :name
|
9
|
+
|
10
|
+
def equality_state
|
11
|
+
[code, offset, name]
|
12
|
+
end
|
13
|
+
protected :equality_state
|
14
|
+
|
15
|
+
def initialize(code, offset, name)
|
16
|
+
@code, @offset, @name = code.to_s.upcase, Integer(offset), name
|
17
|
+
end
|
18
|
+
|
19
|
+
class << self
|
20
|
+
|
21
|
+
def find(currency)
|
22
|
+
currency = currency.to_s.upcase
|
23
|
+
all.find{ |c| c.code == currency }
|
24
|
+
end
|
25
|
+
|
26
|
+
def all
|
27
|
+
@all ||= Set.new
|
28
|
+
end
|
29
|
+
|
30
|
+
def register(*args)
|
31
|
+
self.all << currency = new(*args).freeze
|
32
|
+
currency
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,184 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class Cash
|
4
|
+
class Currency
|
5
|
+
AED = self.register(%q{AED}, 2, %q{United Arab Emirates dirham})
|
6
|
+
AFN = self.register(%q{AFN}, 2, %q{Afghani})
|
7
|
+
ALL = self.register(%q{ALL}, 2, %q{Lek})
|
8
|
+
AMD = self.register(%q{AMD}, 0, %q{Armenian dram})
|
9
|
+
ANG = self.register(%q{ANG}, 2, %q{Netherlands Antillean guilder})
|
10
|
+
AOA = self.register(%q{AOA}, 1, %q{Kwanza})
|
11
|
+
ARS = self.register(%q{ARS}, 2, %q{Argentine peso})
|
12
|
+
AUD = self.register(%q{AUD}, 2, %q{Australian dollar})
|
13
|
+
AWG = self.register(%q{AWG}, 2, %q{Aruban guilder})
|
14
|
+
AZN = self.register(%q{AZN}, 2, %q{Azerbaijanian manat})
|
15
|
+
BAM = self.register(%q{BAM}, 2, %q{Convertible marks})
|
16
|
+
BBD = self.register(%q{BBD}, 2, %q{Barbados dollar})
|
17
|
+
BDT = self.register(%q{BDT}, 2, %q{Bangladeshi taka})
|
18
|
+
BGN = self.register(%q{BGN}, 2, %q{Bulgarian lev})
|
19
|
+
BHD = self.register(%q{BHD}, 3, %q{Bahraini dinar})
|
20
|
+
BIF = self.register(%q{BIF}, 0, %q{Burundian franc})
|
21
|
+
BMD = self.register(%q{BMD}, 2, %q{Bermudian dollar})
|
22
|
+
BND = self.register(%q{BND}, 2, %q{Brunei dollar})
|
23
|
+
BOB = self.register(%q{BOB}, 2, %q{Boliviano})
|
24
|
+
BOV = self.register(%q{BOV}, 2, %q{Bolivian Mvdol (funds code)})
|
25
|
+
BRL = self.register(%q{BRL}, 2, %q{Brazilian real})
|
26
|
+
BSD = self.register(%q{BSD}, 2, %q{Bahamian dollar})
|
27
|
+
BTN = self.register(%q{BTN}, 2, %q{Ngultrum})
|
28
|
+
BWP = self.register(%q{BWP}, 2, %q{Pula})
|
29
|
+
BYR = self.register(%q{BYR}, 0, %q{Belarusian ruble})
|
30
|
+
BZD = self.register(%q{BZD}, 2, %q{Belize dollar})
|
31
|
+
CAD = self.register(%q{CAD}, 2, %q{Canadian dollar})
|
32
|
+
CDF = self.register(%q{CDF}, 2, %q{Franc Congolais})
|
33
|
+
CHE = self.register(%q{CHE}, 2, %q{WIR eurocomplementary currency})
|
34
|
+
CHF = self.register(%q{CHF}, 2, %q{Swiss franc})
|
35
|
+
CHW = self.register(%q{CHW}, 2, %q{WIR franccomplementary currency})
|
36
|
+
CLF = self.register(%q{CLF}, 0, %q{Unidad de Fomento})
|
37
|
+
CLP = self.register(%q{CLP}, 0, %q{Chilean peso})
|
38
|
+
CNY = self.register(%q{CNY}, 1, %q{Chinese Yuan})
|
39
|
+
COP = self.register(%q{COP}, 0, %q{Colombian peso})
|
40
|
+
COU = self.register(%q{COU}, 2, %q{Unidad de Valor Real})
|
41
|
+
CRC = self.register(%q{CRC}, 2, %q{Costa Rican colon})
|
42
|
+
CUC = self.register(%q{CUC}, 2, %q{Cuban convertible peso})
|
43
|
+
CUP = self.register(%q{CUP}, 2, %q{Cuban peso})
|
44
|
+
CVE = self.register(%q{CVE}, 2, %q{Cape Verde escudo})
|
45
|
+
CZK = self.register(%q{CZK}, 2, %q{Czech Koruna})
|
46
|
+
DJF = self.register(%q{DJF}, 0, %q{Djibouti franc})
|
47
|
+
DKK = self.register(%q{DKK}, 2, %q{Danish krone})
|
48
|
+
DOP = self.register(%q{DOP}, 2, %q{Dominican peso})
|
49
|
+
DZD = self.register(%q{DZD}, 2, %q{Algerian dinar})
|
50
|
+
EEK = self.register(%q{EEK}, 2, %q{Kroon})
|
51
|
+
EGP = self.register(%q{EGP}, 2, %q{Egyptian pound})
|
52
|
+
ERN = self.register(%q{ERN}, 2, %q{Nakfa})
|
53
|
+
ETB = self.register(%q{ETB}, 2, %q{Ethiopian birr})
|
54
|
+
EUR = self.register(%q{EUR}, 2, %q{euro})
|
55
|
+
FJD = self.register(%q{FJD}, 2, %q{Fiji dollar})
|
56
|
+
FKP = self.register(%q{FKP}, 2, %q{Falkland Islands pound})
|
57
|
+
GBP = self.register(%q{GBP}, 2, %q{Pound sterling})
|
58
|
+
GEL = self.register(%q{GEL}, 2, %q{Lari})
|
59
|
+
GHS = self.register(%q{GHS}, 2, %q{Cedi})
|
60
|
+
GIP = self.register(%q{GIP}, 2, %q{Gibraltar pound})
|
61
|
+
GMD = self.register(%q{GMD}, 2, %q{Dalasi})
|
62
|
+
GNF = self.register(%q{GNF}, 0, %q{Guinea franc})
|
63
|
+
GTQ = self.register(%q{GTQ}, 2, %q{Quetzal})
|
64
|
+
GYD = self.register(%q{GYD}, 2, %q{Guyana dollar})
|
65
|
+
HKD = self.register(%q{HKD}, 2, %q{Hong Kong dollar})
|
66
|
+
HNL = self.register(%q{HNL}, 2, %q{Lempira})
|
67
|
+
HRK = self.register(%q{HRK}, 2, %q{Croatian kuna})
|
68
|
+
HTG = self.register(%q{HTG}, 2, %q{Haiti gourde})
|
69
|
+
HUF = self.register(%q{HUF}, 2, %q{Forint})
|
70
|
+
IDR = self.register(%q{IDR}, 0, %q{Rupiah})
|
71
|
+
ILS = self.register(%q{ILS}, 2, %q{Israeli new sheqel})
|
72
|
+
INR = self.register(%q{INR}, 2, %q{Indian rupee})
|
73
|
+
IQD = self.register(%q{IQD}, 0, %q{Iraqi dinar})
|
74
|
+
IRR = self.register(%q{IRR}, 0, %q{Iranian rial})
|
75
|
+
ISK = self.register(%q{ISK}, 0, %q{Iceland krona})
|
76
|
+
JMD = self.register(%q{JMD}, 2, %q{Jamaican dollar})
|
77
|
+
JOD = self.register(%q{JOD}, 3, %q{Jordanian dinar})
|
78
|
+
JPY = self.register(%q{JPY}, 0, %q{Japanese yen})
|
79
|
+
KES = self.register(%q{KES}, 2, %q{Kenyan shilling})
|
80
|
+
KGS = self.register(%q{KGS}, 2, %q{Som})
|
81
|
+
KHR = self.register(%q{KHR}, 0, %q{Riel})
|
82
|
+
KMF = self.register(%q{KMF}, 0, %q{Comoro franc})
|
83
|
+
KPW = self.register(%q{KPW}, 0, %q{North Korean won})
|
84
|
+
KRW = self.register(%q{KRW}, 0, %q{South Korean won})
|
85
|
+
KWD = self.register(%q{KWD}, 3, %q{Kuwaiti dinar})
|
86
|
+
KYD = self.register(%q{KYD}, 2, %q{Cayman Islands dollar})
|
87
|
+
KZT = self.register(%q{KZT}, 2, %q{Tenge})
|
88
|
+
LAK = self.register(%q{LAK}, 0, %q{Kip})
|
89
|
+
LBP = self.register(%q{LBP}, 0, %q{Lebanese pound})
|
90
|
+
LKR = self.register(%q{LKR}, 2, %q{Sri Lanka rupee})
|
91
|
+
LRD = self.register(%q{LRD}, 2, %q{Liberian dollar})
|
92
|
+
LSL = self.register(%q{LSL}, 2, %q{Lesotho loti})
|
93
|
+
LTL = self.register(%q{LTL}, 2, %q{Lithuanian litas})
|
94
|
+
LVL = self.register(%q{LVL}, 2, %q{Latvian lats})
|
95
|
+
LYD = self.register(%q{LYD}, 3, %q{Libyan dinar})
|
96
|
+
MAD = self.register(%q{MAD}, 2, %q{Moroccan dirham})
|
97
|
+
MDL = self.register(%q{MDL}, 2, %q{Moldovan leu})
|
98
|
+
MGA = self.register(%q{MGA}, 0, %q{Malagasy ariary})
|
99
|
+
MKD = self.register(%q{MKD}, 2, %q{Denar})
|
100
|
+
MMK = self.register(%q{MMK}, 0, %q{Kyat})
|
101
|
+
MNT = self.register(%q{MNT}, 2, %q{Tugrik})
|
102
|
+
MOP = self.register(%q{MOP}, 1, %q{Pataca})
|
103
|
+
MRO = self.register(%q{MRO}, 0, %q{Ouguiya})
|
104
|
+
MUR = self.register(%q{MUR}, 2, %q{Mauritius rupee})
|
105
|
+
MVR = self.register(%q{MVR}, 2, %q{Rufiyaa})
|
106
|
+
MWK = self.register(%q{MWK}, 2, %q{Kwacha})
|
107
|
+
MXN = self.register(%q{MXN}, 2, %q{Mexican peso})
|
108
|
+
MXV = self.register(%q{MXV}, 2, %q{Mexican Unidad de Inversion})
|
109
|
+
MYR = self.register(%q{MYR}, 2, %q{Malaysian ringgit})
|
110
|
+
MZN = self.register(%q{MZN}, 2, %q{Metical})
|
111
|
+
NAD = self.register(%q{NAD}, 2, %q{Namibian dollar})
|
112
|
+
NGN = self.register(%q{NGN}, 2, %q{Naira})
|
113
|
+
NIO = self.register(%q{NIO}, 2, %q{Cordoba oro})
|
114
|
+
NOK = self.register(%q{NOK}, 2, %q{Norwegian krone})
|
115
|
+
NPR = self.register(%q{NPR}, 2, %q{Nepalese rupee})
|
116
|
+
NZD = self.register(%q{NZD}, 2, %q{New Zealand dollar})
|
117
|
+
OMR = self.register(%q{OMR}, 3, %q{Rial Omani})
|
118
|
+
PAB = self.register(%q{PAB}, 2, %q{Balboa})
|
119
|
+
PEN = self.register(%q{PEN}, 2, %q{Nuevo sol})
|
120
|
+
PGK = self.register(%q{PGK}, 2, %q{Kina})
|
121
|
+
PHP = self.register(%q{PHP}, 2, %q{Philippine peso})
|
122
|
+
PKR = self.register(%q{PKR}, 2, %q{Pakistan rupee})
|
123
|
+
PLN = self.register(%q{PLN}, 2, %q{Złoty})
|
124
|
+
PYG = self.register(%q{PYG}, 0, %q{Guarani})
|
125
|
+
QAR = self.register(%q{QAR}, 2, %q{Qatari rial})
|
126
|
+
RON = self.register(%q{RON}, 2, %q{Romanian new leu})
|
127
|
+
RSD = self.register(%q{RSD}, 2, %q{Serbian dinar})
|
128
|
+
RUB = self.register(%q{RUB}, 2, %q{Russian rouble})
|
129
|
+
RWF = self.register(%q{RWF}, 0, %q{Rwanda franc})
|
130
|
+
SAR = self.register(%q{SAR}, 2, %q{Saudi riyal})
|
131
|
+
SBD = self.register(%q{SBD}, 2, %q{Solomon Islands dollar})
|
132
|
+
SCR = self.register(%q{SCR}, 2, %q{Seychelles rupee})
|
133
|
+
SDG = self.register(%q{SDG}, 2, %q{Sudanese pound})
|
134
|
+
SEK = self.register(%q{SEK}, 2, %q{Swedish krona})
|
135
|
+
SGD = self.register(%q{SGD}, 2, %q{Singapore dollar})
|
136
|
+
SHP = self.register(%q{SHP}, 2, %q{Saint Helena pound})
|
137
|
+
SLL = self.register(%q{SLL}, 0, %q{Leone})
|
138
|
+
SOS = self.register(%q{SOS}, 2, %q{Somali shilling})
|
139
|
+
SRD = self.register(%q{SRD}, 2, %q{Surinam dollar})
|
140
|
+
STD = self.register(%q{STD}, 0, %q{Dobra})
|
141
|
+
SYP = self.register(%q{SYP}, 2, %q{Syrian pound})
|
142
|
+
SZL = self.register(%q{SZL}, 2, %q{Lilangeni})
|
143
|
+
THB = self.register(%q{THB}, 2, %q{Baht})
|
144
|
+
TJS = self.register(%q{TJS}, 2, %q{Somoni})
|
145
|
+
TMT = self.register(%q{TMT}, 2, %q{Manat})
|
146
|
+
TND = self.register(%q{TND}, 3, %q{Tunisian dinar})
|
147
|
+
TOP = self.register(%q{TOP}, 2, %q{Pa'anga})
|
148
|
+
TRY = self.register(%q{TRY}, 2, %q{Turkish lira})
|
149
|
+
TTD = self.register(%q{TTD}, 2, %q{Trinidad and Tobago dollar})
|
150
|
+
TWD = self.register(%q{TWD}, 1, %q{New Taiwan dollar})
|
151
|
+
TZS = self.register(%q{TZS}, 2, %q{Tanzanian shilling})
|
152
|
+
UAH = self.register(%q{UAH}, 2, %q{Hryvnia})
|
153
|
+
UGX = self.register(%q{UGX}, 0, %q{Uganda shilling})
|
154
|
+
USD = self.register(%q{USD}, 2, %q{US dollar})
|
155
|
+
USN = self.register(%q{USN}, 2, %q{United States dollar (next day) (funds code)})
|
156
|
+
USS = self.register(%q{USS}, 2, %q{who?})
|
157
|
+
UYU = self.register(%q{UYU}, 2, %q{Peso Uruguayo})
|
158
|
+
UZS = self.register(%q{UZS}, 2, %q{Uzbekistan som})
|
159
|
+
VEF = self.register(%q{VEF}, 2, %q{Venezuelan bolívar fuerte})
|
160
|
+
VND = self.register(%q{VND}, 0, %q{Vietnamese đồng})
|
161
|
+
VUV = self.register(%q{VUV}, 0, %q{Vatu})
|
162
|
+
WST = self.register(%q{WST}, 2, %q{Samoan tala})
|
163
|
+
XAF = self.register(%q{XAF}, 0, %q{CFA franc BEAC})
|
164
|
+
XAG = self.register(%q{XAG}, 0, %q{Silvertroy ounce})
|
165
|
+
XAU = self.register(%q{XAU}, 0, %q{Goldtroy ounce})
|
166
|
+
XBA = self.register(%q{XBA}, 0, %q{European Composite Unit})
|
167
|
+
XBB = self.register(%q{XBB}, 0, %q{European Monetary Unit})
|
168
|
+
XBC = self.register(%q{XBC}, 0, %q{European Unit of Account 9})
|
169
|
+
XBD = self.register(%q{XBD}, 0, %q{European Unit of Account 17})
|
170
|
+
XCD = self.register(%q{XCD}, 2, %q{East Caribbean dollar})
|
171
|
+
XDR = self.register(%q{XDR}, 0, %q{Special Drawing Rights})
|
172
|
+
XFU = self.register(%q{XFU}, 0, %q{UIC franc})
|
173
|
+
XOF = self.register(%q{XOF}, 0, %q{CFA Franc BCEAO})
|
174
|
+
XPD = self.register(%q{XPD}, 0, %q{Palladiumtroy ounce})
|
175
|
+
XPF = self.register(%q{XPF}, 0, %q{CFP franc})
|
176
|
+
XPT = self.register(%q{XPT}, 0, %q{Platinumtroy ounce})
|
177
|
+
XTS = self.register(%q{XTS}, 0, %q{Code reserved for testing purposes})
|
178
|
+
XXX = self.register(%q{XXX}, 0, %q{No currency})
|
179
|
+
YER = self.register(%q{YER}, 0, %q{Yemeni rial})
|
180
|
+
ZAR = self.register(%q{ZAR}, 2, %q{South African rand})
|
181
|
+
ZMK = self.register(%q{ZMK}, 0, %q{Kwacha})
|
182
|
+
ZWL = self.register(%q{ZWL}, 2, %q{Zimbabwe dollar})
|
183
|
+
end
|
184
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#encoding: UTF-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Cash::Currency do
|
6
|
+
|
7
|
+
describe '#initialize' do
|
8
|
+
it 'accepts code' do
|
9
|
+
['USD', 'usd', :USD, :usd].each do |code|
|
10
|
+
Cash::Currency.new(code, 2, 'US dollar').code.should == 'USD'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'accepts offset' do
|
15
|
+
[2, '2'].each do |offset|
|
16
|
+
Cash::Currency.new(:usd, offset, 'US dollar').offset.should == 2
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'accepts name' do
|
21
|
+
Cash::Currency.new(:usd, 2, 'US dollar').name.should == 'US dollar'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '::find' do
|
26
|
+
it 'returns registered currency' do
|
27
|
+
[:usd, :USD, 'usd', 'USD'].each do |currency|
|
28
|
+
Cash::Currency.find(currency).should == Cash::Currency::USD
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'returns nil for missing currency' do
|
33
|
+
Cash::Currency.find('zzz').should be_nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
context 'equality' do
|
39
|
+
let(:usd) { Cash::Currency::USD }
|
40
|
+
let(:usd2) { Cash::Currency.new('usd', 2, 'US dollar') }
|
41
|
+
|
42
|
+
it { (usd == usd2).should be_true }
|
43
|
+
it { (usd.eql?(usd2)).should be_true }
|
44
|
+
|
45
|
+
it { (usd.equal?(usd2)).should be_false }
|
46
|
+
|
47
|
+
it { usd.hash.should == usd2.hash }
|
48
|
+
|
49
|
+
it { usd.should == Cash::Currency.find('usd') }
|
50
|
+
it { usd.should_not == Cash::Currency.find('pln') }
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cash
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Norbert Wojtowicz
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-10-02 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
description: Money model backed by BigDecimal
|
47
|
+
email:
|
48
|
+
- wojtowicz.norbert@gmail.com
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- .gitignore
|
54
|
+
- Gemfile
|
55
|
+
- Guardfile
|
56
|
+
- LICENSE.txt
|
57
|
+
- README.md
|
58
|
+
- Rakefile
|
59
|
+
- cash.gemspec
|
60
|
+
- lib/cash.rb
|
61
|
+
- lib/cash/currency.rb
|
62
|
+
- lib/cash/currency/iso4217.rb
|
63
|
+
- lib/cash/equalable.rb
|
64
|
+
- spec/lib/cash/currency_spec.rb
|
65
|
+
- spec/spec_helper.rb
|
66
|
+
homepage: https://github.com/pithyless/cash
|
67
|
+
licenses: []
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
hash: 2019834350230060789
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
hash: 2019834350230060789
|
90
|
+
requirements: []
|
91
|
+
rubyforge_project:
|
92
|
+
rubygems_version: 1.8.23
|
93
|
+
signing_key:
|
94
|
+
specification_version: 3
|
95
|
+
summary: Money model backed by BigDecimal
|
96
|
+
test_files:
|
97
|
+
- spec/lib/cash/currency_spec.rb
|
98
|
+
- spec/spec_helper.rb
|