module ActsAsHashable::Hashable

This class contains the main set of class-level methods that can be used by hashable classes.

Constants

HASHABLE_HYDRATORS

Public Instance Methods

array(object, nullable: true) click to toggle source
# File lib/acts_as_hashable/hashable.rb, line 47
def array(object, nullable: true)
  objects = object.is_a?(Hash) ? [object] : Array(object)

  objects.reject { |o| o.is_a?(FalseClass) || o.nil? }
         .map { |o| make(o, nullable: nullable) }
end
make(object, nullable: true) click to toggle source
# File lib/acts_as_hashable/hashable.rb, line 54
def make(object, nullable: true)
  HASHABLE_HYDRATORS.each do |hydrator|
    next unless hydrator[:condition].call(self, object, nullable)

    return hydrate(hydrator, object, nullable)
  end

  raise ArgumentError, "Cannot create hashable object with class name: #{object.class.name}"
end

Private Instance Methods

hydrate(hydrator, object, nullable) click to toggle source
# File lib/acts_as_hashable/hashable.rb, line 66
def hydrate(hydrator, object, nullable)
  hydrator[:converter].call(self, object, nullable)
rescue ArgumentError
  raise HydrationError, "#{name} cannot be hydrated using arguments: #{object}"
end