class DeepPreloader::PolymorphicSpec
Attributes
specs_by_type[R]
Public Class Methods
new(specs_by_type = {})
click to toggle source
# File lib/deep_preloader/polymorphic_spec.rb, line 17 def initialize(specs_by_type = {}) @specs_by_type = specs_by_type end
parse(data)
click to toggle source
# File lib/deep_preloader/polymorphic_spec.rb, line 6 def self.parse(data) if data.is_a?(Hash) specs = data.each_with_object({}) do |(k, v), h| h[k.to_s] = DeepPreloader::Spec.parse(v) end self.new(specs) else raise ArgumentError.new("Invalid polymorphic spec: '#{data.inspect}' is not a hash") end end
Public Instance Methods
==(other)
click to toggle source
# File lib/deep_preloader/polymorphic_spec.rb, line 51 def ==(other) self.class == other.class && self.specs_by_type == other.specs_by_type end
Also aliased as: eql?
for_type(clazz)
click to toggle source
# File lib/deep_preloader/polymorphic_spec.rb, line 25 def for_type(clazz) specs_by_type[clazz.name] end
hash()
click to toggle source
# File lib/deep_preloader/polymorphic_spec.rb, line 47 def hash [self.class, self.specs_by_type].hash end
inspect()
click to toggle source
# File lib/deep_preloader/polymorphic_spec.rb, line 57 def inspect "PolySpec#{specs_by_type.inspect}" end
merge!(other)
click to toggle source
# File lib/deep_preloader/polymorphic_spec.rb, line 29 def merge!(other) case other when nil return when DeepPreloader::PolymorphicSpec other.specs_by_type.each do |k, v| if specs_by_type[k] specs_by_type[k].merge!(v) else specs_by_type[k] = v end end else raise ArgumentError.new("Cannot merge #{other.class.name} into #{self.inspect}") end self end
polymorphic?()
click to toggle source
# File lib/deep_preloader/polymorphic_spec.rb, line 21 def polymorphic? true end