Sha256: 8dd42f29143185b541eb640feb8bbb684aba53208ae22a3bb3b6f6e6c2eb3ed7

Contents?: true

Size: 516 Bytes

Versions: 1

Compression:

Stored size: 516 Bytes

Contents

# frozen_string_literal: true
require 'hashie'

class Raiblocks::Response < Hash
  include ::Hashie::Extensions::MergeInitializer
  include ::Hashie::Extensions::IndifferentAccess
  include ::Hashie::Extensions::MethodAccess

  def initialize(hash = {})
    super
    coerce_values
  end

  private

  def coerce_values
    merge!(self) { |_k, v| to_f_or_i_or_s(v) }
  end

  def to_f_or_i_or_s(v)
    (float = Float(v)) && (float % 1.0).zero? ? float.to_i : float
  rescue ArgumentError, TypeErrror
    v
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
raiblocks_rpc-0.4.0 lib/raiblocks/response.rb