class Cult::Definition

Attributes

bag[R]
object[R]
to_h[R]

Public Class Methods

new(object) click to toggle source
# File lib/cult/definition.rb, line 8
def initialize(object)
  @object = object
end

Public Instance Methods

[](k) click to toggle source
# File lib/cult/definition.rb, line 51
def [](k)
  fail ArgumentError unless k.is_a?(String)
  if bag.key?(k)
    bag[k]
  else
    parent_responses = definition_parents.map do |p|
      [p, p.definition[k]]
    end.reject do |k, v|
      v.nil?
    end
    consensus = parent_responses.group_by(&:last)
    if consensus.empty?
      return nil
    elsif consensus.size != 1
      msg = "#{object.inspect}: I didn't have key '#{k}', and " +
            "my parents had conflicting answers: " +
            "[answer, parents]: #{consensus}"
      fail KeyError, msg
    end
    consensus.keys[0]
  end
end
[]=(k, v) click to toggle source
# File lib/cult/definition.rb, line 75
def []=(k, v)
  fail "Use string keys" unless k.is_a?(String)
  bag[k] = v
end
definition_parameters() click to toggle source
# File lib/cult/definition.rb, line 12
def definition_parameters
  object.definition_parameters
end
definition_parents() click to toggle source
# File lib/cult/definition.rb, line 20
def definition_parents
  object.definition_parents
end
definition_path() click to toggle source
# File lib/cult/definition.rb, line 16
def definition_path
  object.definition_path
end
direct(k) click to toggle source
# File lib/cult/definition.rb, line 45
def direct(k)
  fail ArgumentError unless k.is_a?(String)
  bag[k]
end
inspect() click to toggle source
# File lib/cult/definition.rb, line 24
def inspect
  "\#<#{self.class.name} " +
    "object: #{object.inspect}, " +
    "params: #{definition_parameters}, " +
    "parents: #{definition_parents}, " +
    "bag: #{bag}>"
end
Also aliased as: to_s
to_s()
Alias for: inspect