Sha256: c5170a128b4d3d58a98f47b4723a93472fc245bb098e945f6eaea1c7516f2efa
Contents?: true
Size: 1.09 KB
Versions: 1
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 unless 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sitemap_generator-6.0.0 | lib/sitemap_generator/core_ext/big_decimal.rb |