acvwilson-currency 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
data/currency.gemspec CHANGED
@@ -1,12 +1,12 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{currency}
3
- s.version = "0.6.3"
3
+ s.version = "0.6.4"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
- s.authors = ["Asa Wilson"]
6
+ s.authors = ["Asa Wilson", "David Palm"]
7
7
  s.date = %q{#{Date.today}}
8
8
  s.description = %q{Currency conversions for Ruby}
9
- s.email = ["acvwilson@gmail.com"]
9
+ s.email = ["acvwilson@gmail.com", "dvdplm@gmail.com"]
10
10
  s.extra_rdoc_files = ["ChangeLog", "COPYING.txt", "LICENSE.txt", "Manifest.txt", "README.txt", "Releases.txt", "TODO.txt"]
11
11
  s.files = ["COPYING.txt", "currency.gemspec", "examples/ex1.rb", "examples/xe1.rb", "lib/currency/active_record.rb", "lib/currency/config.rb", "lib/currency/core_extensions.rb", "lib/currency/currency/factory.rb", "lib/currency/currency.rb", "lib/currency/exception.rb", "lib/currency/exchange/rate/deriver.rb", "lib/currency/exchange/rate/source/base.rb", "lib/currency/exchange/rate/source/failover.rb", "lib/currency/exchange/rate/source/federal_reserve.rb", "lib/currency/exchange/rate/source/historical/rate.rb", "lib/currency/exchange/rate/source/historical/rate_loader.rb", "lib/currency/exchange/rate/source/historical/writer.rb", "lib/currency/exchange/rate/source/historical.rb", "lib/currency/exchange/rate/source/new_york_fed.rb", "lib/currency/exchange/rate/source/provider.rb", "lib/currency/exchange/rate/source/test.rb", "lib/currency/exchange/rate/source/the_financials.rb", "lib/currency/exchange/rate/source/timed_cache.rb", "lib/currency/exchange/rate/source/xe.rb", "lib/currency/exchange/rate/source.rb", "lib/currency/exchange/rate.rb", "lib/currency/exchange/time_quantitizer.rb", "lib/currency/exchange.rb", "lib/currency/formatter.rb", "lib/currency/macro.rb", "lib/currency/money.rb", "lib/currency/money_helper.rb", "lib/currency/parser.rb", "lib/currency.rb", "LICENSE.txt", "Manifest.txt", "README.txt", "Releases.txt", "spec/ar_spec_helper.rb", "spec/ar_column_spec.rb", "spec/ar_simple_spec.rb", "spec/config_spec.rb", "spec/federal_reserve_spec.rb", "spec/formatter_spec.rb", "spec/historical_writer_spec.rb", "spec/macro_spec.rb", "spec/money_spec.rb", "spec/new_york_fed_spec.rb", "spec/parser_spec.rb", "spec/spec_helper.rb", "spec/time_quantitizer_spec.rb", "spec/timed_cache_spec.rb", "spec/xe_spec.rb", "TODO.txt"]
12
12
  s.has_rdoc = true
@@ -203,6 +203,15 @@ end_eval
203
203
  validate = "# Validation\n"
204
204
  validate << "\nvalidates_numericality_of :#{attr_name}#{validate_allow_nil}\n"
205
205
  validate << "\nvalidates_format_of :#{currency_column}, :with => /^[A-Z][A-Z][A-Z]$/#{validate_allow_nil}\n" if currency_column
206
+ # validate << "\nbefore_validation :debug_#{attr_name}_before_validate\n"
207
+ #
208
+ # validate << %Q{
209
+ # def debug_#{attr_name}_before_validate
210
+ # logger.debug "\tValidating #{attr_name}. Allow nils? #{validate_allow_nil}"
211
+ # logger.debug "\t\t'#{attr_name}': '\#\{#{attr_name}.inspect\}' (class: '\#\{#{attr_name}.class\}')"
212
+ # logger.debug "\t\tcurrency column, '#{currency_column}': '\#\{#{currency_column}.inspect\}' (class: '\#\{#{currency_column}.class\}'), matches '/^[A-Z][A-Z][A-Z]$/': \#\{'#{currency_column}'.match(/^[A-Z][A-Z][A-Z]$/).to_a.inspect\}"
213
+ # end
214
+ # }
206
215
 
207
216
  alias_accessor ||= ''
208
217
 
@@ -246,13 +255,38 @@ def #{attr_name}=(value)
246
255
  end
247
256
 
248
257
  def #{attr_name}_before_type_cast
249
- # FIXME: User cannot specify Currency
250
- x = #{attr_name}
251
- x &&= x.format(:symbol => false, :currency => false, :thousands => false)
252
- x
258
+ #{attr_name}.to_f if #{attr_name}
253
259
  end
254
260
 
255
261
  end_eval
262
+ =begin
263
+ Replaced the _before_type_cast because it's buggy and weird:
264
+
265
+ Bug: if the Currency::Formatter.default is set to include the currency code (:code => true) then the
266
+ call below to format() will leave the code in. When the validates_numericality_of kicks in it
267
+ can't cast to Float (yes, validates_numericality_of basically does just that) because of the "USD"
268
+ of the currency code and everything fails. All the time.
269
+
270
+ Weird: assigning to "x" doesn't really make any sense, just useless overhead. Using the rare &&= is not a big
271
+ win over something like:
272
+ x && x.format(..., ...)
273
+ and actually longer too.
274
+ The intention of the _before_type_cast method is to return a raw, unformatted value.
275
+ When it does work, it returns a string on the form "123.456". Why not cast to Float right away?
276
+ Arguably, the "raw" currency value is the integer rep stored in the db, but that wouldn't work
277
+ very well with any known rails validations. I think casting to Float is reasonable.
278
+ The taste Kurt Stephens has for weird Ruby code never ceases to amaze me.
279
+
280
+ :)
281
+ (dvd, 05-02-2009)
282
+ def #{attr_name}_before_type_cast
283
+ # FIXME: User cannot specify Currency
284
+ x = #{attr_name}
285
+ x &&= x.format(:symbol => false, :currency => false, :thousands => false)
286
+ x
287
+ end
288
+ =end
289
+
256
290
  # $stderr.puts " CODE = #{x}"
257
291
  end
258
292
  end
@@ -175,6 +175,7 @@ class Currency::Exchange::Rate::Source::Historical::Rate < ::ActiveRecord::Base
175
175
 
176
176
  # Shorthand.
177
177
  def find_matching_this(opt1 = :all, *opts)
178
+ # FIXME: this breaks somehow in Ruby 1.9 Not sure why. (dvd, 04-02-2009)
178
179
  self.class.find(opt1, :conditions => find_matching_this_conditions, *opts)
179
180
  end
180
181
 
metadata CHANGED
@@ -1,21 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acvwilson-currency
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asa Wilson
8
+ - David Palm
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2009-01-23 04:22:08.879031 -08:00
13
+ date: 2009-02-05 06:05:45.477389 -08:00
13
14
  default_executable:
14
15
  dependencies: []
15
16
 
16
17
  description: Currency conversions for Ruby
17
18
  email:
18
19
  - acvwilson@gmail.com
20
+ - dvdplm@gmail.com
19
21
  executables: []
20
22
 
21
23
  extensions: []