class Encase::ContainerItem

Attributes

container[RW]
key[RW]
reified_value[RW]
value[RW]

Public Class Methods

new(container) click to toggle source
# File lib/encase/container_item.rb, line 8
def initialize(container)
  self.container = container
end

Public Instance Methods

fetch() click to toggle source

returns just the reified value by default

# File lib/encase/container_item.rb, line 48
def fetch
  reified_value
end
inject(object, origin = nil) click to toggle source
# File lib/encase/container_item.rb, line 17
def inject(object, origin = nil)
  if origin.nil?
    container = self.container
  else
    container = origin
  end

  container.inject(object)
end
instance(origin = nil) click to toggle source

public api

# File lib/encase/container_item.rb, line 53
def instance(origin = nil)
  reify unless reified?
  object = fetch
  inject(object, origin)

  object
end
reified?() click to toggle source
# File lib/encase/container_item.rb, line 43
def reified?
  !self.reified_value.nil?
end
reify() click to toggle source
# File lib/encase/container_item.rb, line 27
def reify
  return false if reified?

  if value.is_a? Proc
    if value.arity == 1
      self.reified_value = value.call(container)
    else
      self.reified_value = value.call
    end
  else
    self.reified_value = value
  end

  true
end
store(key, value) click to toggle source
# File lib/encase/container_item.rb, line 12
def store(key, value)
  self.key = key
  self.value = value
end