No need to override the to_yaml method in BigDecimal
This commit is contained in:
parent
761b049b2e
commit
d8ed247c7f
@ -1,24 +1,9 @@
|
||||
require 'bigdecimal'
|
||||
require 'psych'
|
||||
require 'yaml'
|
||||
|
||||
class BigDecimal
|
||||
YAML_TAG = 'tag:yaml.org,2002:float'
|
||||
YAML_MAPPING = { 'Infinity' => '.Inf', '-Infinity' => '-.Inf', 'NaN' => '.NaN' }
|
||||
|
||||
# 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 = {})
|
||||
return super if !YAML::ENGINE.syck?
|
||||
|
||||
YAML.quick_emit(nil, opts) do |out|
|
||||
string = to_s
|
||||
out.scalar(YAML_TAG, YAML_MAPPING[string] || string, :plain)
|
||||
end
|
||||
end
|
||||
|
||||
def encode_with(coder)
|
||||
string = to_s
|
||||
coder.represent_scalar(nil, YAML_MAPPING[string] || string)
|
||||
|
Loading…
Reference in New Issue
Block a user