class HashesEqual::TimeCoarsener

Constants

VALID_TIME_GRANULARITY

Attributes

object_to_convert[R]
time_granularity[R]

Public Class Methods

new(time_granularity) click to toggle source
# File lib/hashes_equal/time_coarsener.rb, line 18
def initialize(time_granularity)
  @time_granularity = time_granularity
  assert_send :time_granularity
  check_valid_granularity_for_time_aware_comparison
end

Public Instance Methods

call(object_to_convert) click to toggle source

Either an enumerable or a Time object

# File lib/hashes_equal/time_coarsener.rb, line 25
def call(object_to_convert)
  @object_to_convert = object_to_convert
  assert_send :object_to_convert

  convert_object(object_to_convert)
end

Private Instance Methods

check_valid_granularity_for_time_aware_comparison() click to toggle source
# File lib/hashes_equal/time_coarsener.rb, line 76
def check_valid_granularity_for_time_aware_comparison
  return if VALID_TIME_GRANULARITY.include?(time_granularity.to_sym)

  raise(
    InvalidTimeGranularity,
    [
      "#{time_granularity.inspect} is not a valid time_granularity.",
      "Valid values are: #{VALID_TIME_GRANULARITY.inspect}"
    ].join(' ')
  )
end
coarsen_to_sec(time_to_convert) click to toggle source
# File lib/hashes_equal/time_coarsener.rb, line 60
def coarsen_to_sec(time_to_convert)
  Time.at(
    time_to_convert.to_i
  )
end
coarsen_to_usec(time_to_convert) click to toggle source
# File lib/hashes_equal/time_coarsener.rb, line 66
def coarsen_to_usec(time_to_convert)
  Time.at(
    time_to_convert.to_i, time_to_convert.usec, :usec
  )
end
coarsening_method_name() click to toggle source
# File lib/hashes_equal/time_coarsener.rb, line 72
def coarsening_method_name
  "coarsen_to_#{time_granularity}"
end
convert_enumerable(enumerable_to_convert) click to toggle source
# File lib/hashes_equal/time_coarsener.rb, line 50
def convert_enumerable(enumerable_to_convert)
  enumerable_to_convert.map do |value|
    convert_object value
  end
end
convert_hash(hash_to_convert) click to toggle source
# File lib/hashes_equal/time_coarsener.rb, line 44
def convert_hash(hash_to_convert)
  hash_to_convert.transform_values do |value|
    convert_object(value)
  end
end
convert_object(object) click to toggle source
# File lib/hashes_equal/time_coarsener.rb, line 36
def convert_object(object)
  return convert_hash(object) if object.is_a?(Hash)
  return convert_enumerable(object) if object.is_a?(Enumerable)
  return convert_time(object) if object.is_a?(Time)

  object
end
convert_time(time_to_convert) click to toggle source
# File lib/hashes_equal/time_coarsener.rb, line 56
def convert_time(time_to_convert)
  send(coarsening_method_name, time_to_convert)
end