class Payload::DefinitionList
Immutable list of definitions.
Used internally by {Container} to define and look up definitions.
@api private
Attributes
definitions[R]
Public Class Methods
new(definitions = {})
click to toggle source
# File lib/payload/definition_list.rb, line 12 def initialize(definitions = {}) @definitions = definitions end
Public Instance Methods
add(name, resolver)
click to toggle source
# File lib/payload/definition_list.rb, line 16 def add(name, resolver) value = find(name).set(Definition.new(name, resolver)) self.class.new(definitions.merge(name => value)) end
decorate(name, block)
click to toggle source
# File lib/payload/definition_list.rb, line 25 def decorate(name, block) decorated = find(name).decorate(block) self.class.new(@definitions.merge(name => decorated)) end
export(names)
click to toggle source
# File lib/payload/definition_list.rb, line 30 def export(names) exported_definitions = names.inject({}) do |result, name| result.merge! name => ExportedDefinition.new(find(name), self) end self.class.new exported_definitions end
find(name)
click to toggle source
# File lib/payload/definition_list.rb, line 21 def find(name) definitions.fetch(name) { UndefinedDefinition.new(name) } end
import(imports)
click to toggle source
# File lib/payload/definition_list.rb, line 38 def import(imports) self.class.new definitions.merge(imports.definitions) end