diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2009-03-21 03:33:07 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2009-03-21 04:35:16 -0700 |
commit | 005b40194e9103f5c52434334b5f3b5028cbe813 (patch) | |
tree | 0e59370635c0e55da24a743f82be4ce62162ae7a /activesupport/lib/active_support/core_ext | |
parent | 83fd1ae122cf1ee4ea2c52e0bd963462163516ca (diff) | |
download | rails-005b40194e9103f5c52434334b5f3b5028cbe813.tar.gz rails-005b40194e9103f5c52434334b5f3b5028cbe813.tar.bz2 rails-005b40194e9103f5c52434334b5f3b5028cbe813.zip |
Convert bigdecimal extension modules to class reopens
Diffstat (limited to 'activesupport/lib/active_support/core_ext')
-rw-r--r-- | activesupport/lib/active_support/core_ext/big_decimal.rb | 4 | ||||
-rw-r--r-- | activesupport/lib/active_support/core_ext/big_decimal/conversions.rb | 50 |
2 files changed, 21 insertions, 33 deletions
diff --git a/activesupport/lib/active_support/core_ext/big_decimal.rb b/activesupport/lib/active_support/core_ext/big_decimal.rb index d49587d861..8143113cfa 100644 --- a/activesupport/lib/active_support/core_ext/big_decimal.rb +++ b/activesupport/lib/active_support/core_ext/big_decimal.rb @@ -1,3 +1 @@ -require 'active_support/core_ext/util' -require 'bigdecimal' -ActiveSupport.core_ext BigDecimal, %w(conversions) +require 'active_support/core_ext/big_decimal/conversions' diff --git a/activesupport/lib/active_support/core_ext/big_decimal/conversions.rb b/activesupport/lib/active_support/core_ext/big_decimal/conversions.rb index bc9d578f38..f7f03f4d95 100644 --- a/activesupport/lib/active_support/core_ext/big_decimal/conversions.rb +++ b/activesupport/lib/active_support/core_ext/big_decimal/conversions.rb @@ -1,37 +1,27 @@ +require 'bigdecimal' require 'yaml' -module ActiveSupport #:nodoc: - module CoreExtensions #:nodoc: - module BigDecimal #:nodoc: - module Conversions - DEFAULT_STRING_FORMAT = 'F'.freeze - YAML_TAG = 'tag:yaml.org,2002:float'.freeze - YAML_MAPPING = { 'Infinity' => '.Inf', '-Infinity' => '-.Inf', 'NaN' => '.NaN' } +class BigDecimal + YAML_TAG = 'tag:yaml.org,2002:float' + YAML_MAPPING = { 'Infinity' => '.Inf', '-Infinity' => '-.Inf', 'NaN' => '.NaN' } - def self.included(base) #:nodoc: - base.class_eval do - alias_method :_original_to_s, :to_s - alias_method :to_s, :to_formatted_s + yaml_as YAML_TAG - yaml_as YAML_TAG - end - end - - def to_formatted_s(format = DEFAULT_STRING_FORMAT) - _original_to_s(format) - end - - # This emits the number without any scientific notation. - # This is better than self.to_f.to_s since it doesn't lose precision. - # - # Note that reconstituting YAML floats to native floats may lose precision. - def to_yaml(opts = {}) - YAML.quick_emit(nil, opts) do |out| - string = to_s - out.scalar(YAML_TAG, YAML_MAPPING[string] || string, :plain) - end - end - end + # This emits the number without any scientific notation. + # This is better than self.to_f.to_s since it doesn't lose precision. + # + # Note that reconstituting YAML floats to native floats may lose precision. + def to_yaml(opts = {}) + YAML.quick_emit(nil, opts) do |out| + string = to_s + out.scalar(YAML_TAG, YAML_MAPPING[string] || string, :plain) end end + + DEFAULT_STRING_FORMAT = 'F' + def to_formatted_s(format = DEFAULT_STRING_FORMAT) + _original_to_s(format) + end + alias_method :_original_to_s, :to_s + alias_method :to_s, :to_formatted_s end |