Module: ScreenshotScout::Internal::EcmaScriptNumberFormatter
- Defined in:
- lib/screenshotscout/internal/ecma_script_number_formatter.rb
Overview
Formats IEEE-754 values like JavaScript String(number) and JSON.stringify.
Class Method Summary collapse
Class Method Details
.format(value) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/screenshotscout/internal/ecma_script_number_formatter.rb', line 9 def format(value) raise ArgumentError, "Expected a finite floating-point value." unless value.finite? return "0" if value.zero? encoded = value.to_s.downcase return normalize_decimal(encoded) unless encoded.include?("e") match = /\A(-?)([0-9])(?:\.([0-9]+))?e([+-]?[0-9]+)\z/.match(encoded) raise ArgumentError, "Unexpected floating-point encoding." if match.nil? negative = match[1] == "-" digits = (match[2] + match[3].to_s).sub(/0+\z/, "") digits = "0" if digits.empty? exponent = Integer(match[4], 10) number = (digits, exponent) negative ? "-#{number}" : number end |