class NanoRpc::Response

Public Class Methods

new(hash = {}) click to toggle source
Calls superclass method
# File lib/nano_rpc/response.rb, line 9
def initialize(hash = {})
  super
  coerce_values
end

Private Instance Methods

big_integer?(val) click to toggle source
# File lib/nano_rpc/response.rb, line 28
def big_integer?(val)
  val.respond_to?(:to_i) && val.to_i > 1_000_000_000_000_000
end
coerce_values() click to toggle source
# File lib/nano_rpc/response.rb, line 16
def coerce_values
  merge!(self) { |_k, v| to_f_or_i_or_s(v) }
end
to_f_or_i_or_s(val) click to toggle source
# File lib/nano_rpc/response.rb, line 20
def to_f_or_i_or_s(val)
  return if val.nil?
  return val.to_i if big_integer?(val)
  (float = Float(val)) && (float % 1.0).zero? ? float.to_i : float
rescue ArgumentError, TypeError
  val
end