money 3.1.0.pre3 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: money
3
3
  version: !ruby/object:Gem::Version
4
- hash: -502734836
5
- prerelease: true
4
+ hash: 3
5
+ prerelease: false
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
9
  - 0
10
- - pre3
11
- version: 3.1.0.pre3
10
+ version: 3.1.0
12
11
  platform: ruby
13
12
  authors:
14
13
  - Tobias Luetke
@@ -20,7 +19,7 @@ autorequire:
20
19
  bindir: bin
21
20
  cert_chain: []
22
21
 
23
- date: 2010-08-31 00:00:00 -04:00
22
+ date: 2010-09-13 00:00:00 -04:00
24
23
  default_executable:
25
24
  dependencies:
26
25
  - !ruby/object:Gem::Dependency
@@ -31,16 +30,14 @@ dependencies:
31
30
  requirements:
32
31
  - - ">="
33
32
  - !ruby/object:Gem::Version
34
- hash: 13
33
+ hash: 3
35
34
  segments:
36
- - 1
37
- - 2
38
- - 9
39
- version: 1.2.9
35
+ - 0
36
+ version: "0"
40
37
  type: :development
41
38
  version_requirements: *id001
42
39
  - !ruby/object:Gem::Dependency
43
- name: hanna
40
+ name: yard
44
41
  prerelease: false
45
42
  requirement: &id002 !ruby/object:Gem::Requirement
46
43
  none: false
@@ -50,30 +47,34 @@ dependencies:
50
47
  hash: 3
51
48
  segments:
52
49
  - 0
53
- - 1
54
- - 12
55
- version: 0.1.12
50
+ version: "0"
56
51
  type: :development
57
52
  version_requirements: *id002
58
- description: Money and currency exchange support library.
59
- email: hongli@phusion.nl
53
+ - !ruby/object:Gem::Dependency
54
+ name: json
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 3
62
+ segments:
63
+ - 0
64
+ version: "0"
65
+ type: :development
66
+ version_requirements: *id003
67
+ description: This library aids one in handling money and different currencies.
68
+ email:
69
+ - hongli@phusion.nl
70
+ - semmons99+RubyMoney@gmail.com
60
71
  executables: []
61
72
 
62
73
  extensions: []
63
74
 
64
- extra_rdoc_files:
65
- - CHANGELOG.rdoc
66
- - LICENSE
67
- - README.rdoc
75
+ extra_rdoc_files: []
76
+
68
77
  files:
69
- - .document
70
- - .gitignore
71
- - CHANGELOG.rdoc
72
- - LICENSE
73
- - README.rdoc
74
- - Rakefile
75
- - VERSION
76
- - lib/money.rb
77
78
  - lib/money/bank/base.rb
78
79
  - lib/money/bank/variable_exchange.rb
79
80
  - lib/money/core_extensions.rb
@@ -81,21 +82,17 @@ files:
81
82
  - lib/money/defaults.rb
82
83
  - lib/money/deprecations.rb
83
84
  - lib/money/money.rb
84
- - money.gemspec
85
- - spec/bank/base_spec.rb
86
- - spec/bank/variable_exchange_spec.rb
87
- - spec/core_extensions_spec.rb
88
- - spec/currency_spec.rb
89
- - spec/deprecations_spec.rb
90
- - spec/money_spec.rb
91
- - spec/spec_helper.rb
85
+ - lib/money.rb
86
+ - CHANGELOG.md
87
+ - LICENSE
88
+ - README.md
92
89
  has_rdoc: true
93
- homepage: http://money.rubyforge.org/
90
+ homepage: http://money.rubyforge.org
94
91
  licenses: []
95
92
 
96
93
  post_install_message:
97
- rdoc_options:
98
- - --charset=UTF-8
94
+ rdoc_options: []
95
+
99
96
  require_paths:
100
97
  - lib
101
98
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -110,26 +107,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
107
  required_rubygems_version: !ruby/object:Gem::Requirement
111
108
  none: false
112
109
  requirements:
113
- - - ">"
110
+ - - ">="
114
111
  - !ruby/object:Gem::Version
115
- hash: 25
112
+ hash: 21
116
113
  segments:
117
114
  - 1
118
115
  - 3
119
- - 1
120
- version: 1.3.1
121
- requirements: []
122
-
116
+ - 7
117
+ version: 1.3.7
118
+ requirements:
119
+ - json if you plan to import/export rates formatted as json
123
120
  rubyforge_project: money
124
121
  rubygems_version: 1.3.7
125
122
  signing_key:
126
123
  specification_version: 3
127
- summary: Money and currency exchange support library
128
- test_files:
129
- - spec/bank/base_spec.rb
130
- - spec/bank/variable_exchange_spec.rb
131
- - spec/core_extensions_spec.rb
132
- - spec/currency_spec.rb
133
- - spec/deprecations_spec.rb
134
- - spec/money_spec.rb
135
- - spec/spec_helper.rb
124
+ summary: Money and currency exchange support library.
125
+ test_files: []
126
+
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
data/CHANGELOG.rdoc DELETED
@@ -1,68 +0,0 @@
1
- == Money 3.1.0.pre3
2
- * added google_currency.gem to list of Currency Exchange Implementations
3
- * updated HKD :subunit_to_unit from 10 to 100 (closes #20)
4
- * added #(export/import)_rates to Money::Bank::VariableExchange (closes #21)
5
-
6
- == Money 3.1.0.pre2
7
- * moved @rounding_method from Money::Bank::VariableExchange to
8
- Money::Bank::Base (closes #18)
9
- * added #setup and call after #initialize in Money::Bank::Base (closes #19)
10
- * update/fix documentation (closes #17)
11
-
12
- == Money 3.1.0.pre1
13
- * Implemented Money::Bank::Base (closes #14)
14
- * Added Bank::Base#exchange_with
15
- * Deprecated Bank::Base#exchange (removal in 3.2.0)
16
- * Implented Money::Bank::VariableExchange
17
- * Deprecated Money::VariableExchangeBank (removal in 3.2.0)
18
- * Set Money::SYMBOLS, Money::SEPARATORS and Money::DELIMITERS
19
- deprecation target to Money 3.2.0. (closes #16)
20
- * Fixed rounding error in Numeric#to_money (closes #15)
21
- * Implemented #has for Money and Money::Currency
22
- * Refactored test suite to conform to RSpec conventions
23
- * Moved project from github.com/FooBarWidget to github.com/RubyMoney
24
- * Added Simone Carletti to list of authors
25
-
26
- == Money 3.0.5
27
- * Added Money#abs
28
- * Updated Currency#subunit_to_unit documentation (it's an integer not a string)
29
- * Fixed issue when exchanging currencies with different :subunit_to_unit values
30
- * Added ability to pass a block to VariableExchangeBank#new or #exchange,
31
- specifying a custom truncation method
32
- * Added optional currency argument to Numeric#to_money
33
- * Added optional currency argument to String#to_money
34
- * Numeric#to_money now respects :subunit_to_unit
35
- * Use '¤' as the default currency symbol
36
-
37
- == Money 3.0.4
38
- * Updated #exchange to avoid floating point rounding errors
39
- * Use :subunit_to_unit in #to_s, #to_f and #format
40
- * Added :separator and :delimiter to Currency
41
- * Deprecated Money#SEPARATORS and Money#DELIMITERS
42
- * Updated the attributes of the Chilean Peso
43
-
44
- == Money 3.0.3
45
- * Added #currency_as_string and #currency_as_string= for easier integration
46
- with ActiveRecord/Rails
47
-
48
- == Money 3.0.2
49
- * Added #div, #divmod, #modulo, #% and #remainder methods
50
-
51
- == Money 3.0.1
52
- * Added #eql? method
53
- * Updated Numeric#to_money to work with all children of Numeric
54
- (BigDecimal, Integer, Fixnum, etc)
55
-
56
- == Money 3.0.0
57
- * Version Bump due to compatibility changes with ActiveRecord. See
58
- http://github.com/RubyMoney/money/issues#issue/4/comment/224880 for more information.
59
-
60
- == Money 2.3.0
61
- * Currency is now represented by a Currency Object instead of a string.
62
-
63
- == Money 2.2.0
64
- * Can now divide two Money objects by one another [#/]
65
- * Can now convert a Money object to a float [#to_f]
66
- * Users can now specify Seperators and Delimiters [#format]
67
- * Support for Brazilian Real [Money.new(1_00, :BRL)]
68
- * Migrated to Jeweler
data/README.rdoc DELETED
@@ -1,212 +0,0 @@
1
- = Introduction
2
-
3
- This library aids one in handling money and different currencies. Features:
4
-
5
- - Provides a <tt>Money</tt> class which encapsulates all information about an certain
6
- amount of money, such as its value and its currency.
7
- - Provides a <tt>Money::Currency</tt> class which encapsulates all information about
8
- a monetary unit.
9
- - Represents monetary values as integers, in cents. This avoids floating point
10
- rounding errors.
11
- - Represents currency as <tt>Money::Currency</tt> instances providing an high level of flexibility.
12
- - Provides APIs for exchanging money from one currency to another.
13
- - Has the ability to parse a money and currency strings
14
- into the corresponding Money/Currency object.
15
-
16
- Resources:
17
-
18
- - Website: http://money.rubyforge.org
19
- - RDoc API: http://money.rubyforge.org
20
- - Git repository: http://github.com/RubyMoney/money
21
-
22
- == Attention
23
-
24
- Starting in v3.1.0 we will be making two changes to the exchange process. First
25
- a new `Bank::Base` class will be available. This will allow users to more
26
- easily create custom `Bank` classes. Secondly the default `#exchange` method
27
- will be depreciated and a new `#exchange_with` method will be used. Currently
28
- `#exchange` passes the `cents` attribute. `#exchange_with` will pass the
29
- actual `Money` object instead.
30
-
31
- == Download
32
-
33
- Install stable releases with the following command:
34
-
35
- gem install money
36
-
37
- The development version (hosted on Github) can be installed with:
38
-
39
- git clone git://github.com/RubyMoney/money.git
40
- cd money
41
- rake install
42
-
43
- == Usage
44
-
45
- === Synopsis
46
-
47
- require 'money'
48
-
49
- # 10.00 USD
50
- money = Money.new(1000, "USD")
51
- money.cents # => 1000
52
- money.currency # => Currency.new("USD")
53
-
54
- # Comparisons
55
- Money.new(1000, "USD") == Money.new(1000, "USD") # => true
56
- Money.new(1000, "USD") == Money.new(100, "USD") # => false
57
- Money.new(1000, "USD") == Money.new(1000, "EUR") # => false
58
- Money.new(1000, "USD") != Money.new(1000, "EUR") # => true
59
-
60
- # Arithmetic
61
- Money.new(1000, "USD") + Money.new(500, "USD") == Money.new(1500, "USD")
62
- Money.new(1000, "USD") - Money.new(200, "USD") == Money.new(800, "USD")
63
- Money.new(1000, "USD") / 5 == Money.new(200, "USD")
64
- Money.new(1000, "USD") * 5 == Money.new(5000, "USD")
65
-
66
- # Currency conversions
67
- some_code_to_setup_exchange_rates
68
- Money.new(1000, "USD").exchange_to("EUR") == Money.new(some_value, "EUR")
69
-
70
- === Currency
71
-
72
- Currencies are consistently represented as instances of <tt>Money::Currency</tt>.
73
- The most part of <tt>Money</tt> APIs allows you to supply either a <tt>String</tt> or a <tt>Money::Currency</tt>.
74
-
75
- Money.new(1000, "USD") == Money.new(900, Currency.new("USD"))
76
- Money.new(1000, "EUR").currency == Currency.new("EUR")
77
-
78
- A <tt>Money::Currency</tt> instance holds all the information about the currency,
79
- including the currency symbol, name and much more.
80
-
81
- currency = Money.new(1000, "USD").currency
82
- currency.iso_code
83
- # => "USD"
84
- currency.name
85
- # => "United States Dollar"
86
-
87
- To define a new <tt>Money::Currency</tt> simply add a new item to the <tt>Money::Currency::TABLE</tt> hash,
88
- where the key is the identifier for the currency object and the value is a hash
89
- containing all the currency attributes.
90
-
91
- Money::Currency::TABLE[:usd] = {
92
- :priority => 1,
93
- :iso_code => "USD",
94
- :name => "United States Dollar",
95
- :symbol => "$",
96
- :subunit => "Cent"
97
- :subunit_to_unit => 100,
98
- :separator => ".",
99
- :delimiter => ","
100
- }
101
-
102
- The pre-defined set of attributes includes:
103
-
104
- - priority: a numerical value you can use to sort/group the currency list
105
- - iso_code: the international 3-letter code as defined by the ISO 4217 standard
106
- - name: the currency name
107
- - symbol: the currency symbol (UTF-8 encoded)
108
- - subunit: the name of the fractional monetary unit
109
- - subunit_to_unit: the proportion between the unit and the subunit
110
- - separator: character between the whole and fraction amounts
111
- - delimiter: character between each thousands place
112
-
113
- All attributes are optional. Some attributes, such as <tt>:symbol</tt>, are used by the Money class
114
- to print out a representation of the object. Other attributes, such as <tt>:name</tt> or <tt>:priority</tt>,
115
- exist to provide a basic API you can take advantage of to build your application.
116
-
117
- ==== priority
118
-
119
- The priority attribute is an arbitrary numerical value you can assign to the <tt>Money::Currency</tt>
120
- and use in sorting/grouping operation.
121
-
122
- For instance, let's assume your Rails application needs to render a currency selector
123
- like the one available at http://finance.yahoo.com/currency-converter/
124
- You can create a couple of custom methods to return the list of major_currencies
125
- and all_currencies as follows:
126
-
127
- # Returns an array of currency id where
128
- # priority < 10
129
- def major_currencies(hash)
130
- hash.inject([]) do |array, (id, attributes)|
131
- priority = attributes[:priority]
132
- if priority && priority < 10
133
- array[priority] ||= []
134
- array[priority] << id
135
- end
136
- array
137
- end.compact.flatten
138
- end
139
-
140
- # Returns an array of all currency id
141
- def all_currencies(hash)
142
- hash.keys
143
- end
144
-
145
- major_currencies(Money::Currency::TABLE)
146
- # => [ :usd, :eur, :bgp, :cad ]
147
-
148
- all_currencies(Money::Currency::TABLE)
149
- # => [ :aed, :afn, all, ... ]
150
-
151
-
152
- === Default Currency
153
-
154
- By default <tt>Money</tt> defaults to USD as its currency. This can be overwritten using
155
-
156
- Money.default_currency = Money::Currency.new("CAD")
157
-
158
- If you use Rails, then <tt>environment.rb</tt> is a very good place to put this.
159
-
160
- === Currency Exchange
161
-
162
- Exchanging money is performed through an exchange bank object. The default
163
- exchange bank object requires one to manually specify the exchange rate. Here's
164
- an example of how it works:
165
-
166
- Money.add_rate("USD", "CAD", 1.24515)
167
- Money.add_rate("CAD", "USD", 0.803115)
168
-
169
- Money.us_dollar(100).exchange_to("CAD") # => Money.new(124, "CAD")
170
- Money.ca_dollar(100).exchange_to("USD") # => Money.new(80, "USD")
171
-
172
- Comparison and arithmetic operations work as expected:
173
-
174
- Money.new(1000, "USD") <=> Money.new(900, "USD") # => 1; 9.00 USD is smaller
175
- Money.new(1000, "EUR") + Money.new(10, "EUR") == Money.new(1010, "EUR")
176
-
177
- Money.add_rate("USD", "EUR", 0.5)
178
- Money.new(1000, "EUR") + Money.new(1000, "USD") == Money.new(1500, "EUR")
179
-
180
- There is nothing stopping you from creating bank objects which scrapes
181
- www.xe.com for the current rates or just returns <tt>rand(2)</tt>:
182
-
183
- Money.default_bank = ExchangeBankWhichScrapesXeDotCom.new
184
-
185
- === Currency Exchange (Money::Bank::*) Implementations
186
-
187
- The following is a list of Money.gem compatible currency exchange rate
188
- implementations.
189
-
190
- * eu_central_bank.gem: http://github.com/RubyMoney/eu_central_bank
191
- * google_currency.gem: http://github.com/RubyMoney/google_currency
192
-
193
- === Ruby on Rails
194
-
195
- Use the +compose_of+ helper to let Active Record deal with embedding the money
196
- object in your models. The following example requires a +cents+ and a +currency+
197
- field.
198
-
199
- composed_of :price,
200
- :class_name => "Money",
201
- :mapping => [%w(cents cents), %w(currency currency_as_string)],
202
- :constructor => Proc.new { |cents, currency| Money.new(cents || 0, currency || Money.default_currency) }
203
-
204
- For Money 2.2.x and previous versions, simply use the following
205
- <tt>composed_of</tt> definition:
206
-
207
- composed_of :price,
208
- :class_name => "Money",
209
- :mapping => [%w(cents cents), %w(currency currency)],
210
- :constructor => Proc.new { |cents, currency| Money.new(cents || 0, currency || Money.default_currency) }
211
-
212
- For further details read the full discussion at http://github.com/RubyMoney/money/issues/4#comment_224880