Sha256: 418180232f35437251013caae565f1b756f41b2f257874c0eea18505e4760917
Contents?: true
Size: 1.09 KB
Versions: 32
Compression:
Stored size: 1.09 KB
Contents
require 'bigdecimal' begin require 'psych' rescue LoadError end require 'yaml' # Define our own class rather than modify the global class class SitemapGenerator::BigDecimal < BigDecimal YAML_TAG = 'tag:yaml.org,2002:float' YAML_MAPPING = { 'Infinity' => '.Inf', '-Infinity' => '-.Inf', 'NaN' => '.NaN' } yaml_as YAML_TAG # 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 defined?(YAML::ENGINE) && !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) end def to_d self 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
Version data entries
32 entries across 32 versions & 4 rubygems