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