Module: ActsAsHashable::Hashable

Defined in:
lib/acts_as_hashable/hashable.rb

Overview

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

Defined Under Namespace

Classes: HydrationError

Instance Method Summary collapse

Instance Method Details

#array(object, nullable: true) ⇒ Object



47
48
49
50
51
52
# 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) ⇒ Object

Raises:

  • (ArgumentError)


54
55
56
57
58
59
60
61
62
# 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