class ParamsReady::Marshaller::ClassCollection
Attributes
factories[R]
Public Class Methods
new(canonical, default = nil, instances = {}, factories = {})
click to toggle source
Calls superclass method
ParamsReady::Marshaller::InstanceCollection::new
# File lib/params_ready/marshaller/collection.rb, line 107 def initialize(canonical, default = nil, instances = {}, factories = {}) @factories = factories super canonical, default, instances end
Public Instance Methods
add_factory(name, factory)
click to toggle source
# File lib/params_ready/marshaller/collection.rb, line 116 def add_factory(name, factory) name = name.to_sym raise ParamsReadyError, "Name '#{name}' already taken" if factory?(name) raise ParamsReadyError, "Factory must be frozen" unless factory.frozen? @factories[name] = factory end
add_instance(value_class, instance)
click to toggle source
Calls superclass method
ParamsReady::Marshaller::InstanceCollection#add_instance
# File lib/params_ready/marshaller/collection.rb, line 124 def add_instance(value_class, instance) raise ParamsReadyError, "Marshaller for '#{value_class.name}' already exists" if instance?(value_class) super end
build_instance(name, **opts)
click to toggle source
# File lib/params_ready/marshaller/collection.rb, line 130 def build_instance(name, **opts) factory(name).instance(**opts) end
factory(name)
click to toggle source
# File lib/params_ready/marshaller/collection.rb, line 134 def factory(name) @factories[name] end
factory?(name)
click to toggle source
# File lib/params_ready/marshaller/collection.rb, line 138 def factory?(name) @factories.key? name end
freeze()
click to toggle source
Calls superclass method
ParamsReady::Marshaller::InstanceCollection#freeze
# File lib/params_ready/marshaller/collection.rb, line 142 def freeze @factories.freeze super end
instance_collection()
click to toggle source
# File lib/params_ready/marshaller/collection.rb, line 112 def instance_collection InstanceCollection.new(@canonical, nil, @instances.dup) end
populate_clone(clone, other)
click to toggle source
Calls superclass method
ParamsReady::Marshaller::InstanceCollection#populate_clone
# File lib/params_ready/marshaller/collection.rb, line 152 def populate_clone(clone, other) merged = super other.factories.each do |value_class, f| next if merged.factory?(value_class) clone.add_factory value_class, f end merged end
reverse_merge(other)
click to toggle source
# File lib/params_ready/marshaller/collection.rb, line 147 def reverse_merge(other) clone = self.class.new(@canonical, @default, @instances.dup, @factories.dup) populate_clone(clone, other) end