cash 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|