class LittleBoxes::Entry

Attributes

block[RW]
box[RW]
configure[RW]
eager[RW]
memo[RW]
mutex[RW]
name[RW]
then_block[RW]

Public Class Methods

new(name:, eager:, memo:, box:, block:, configure:, then_block:) click to toggle source
# File lib/little_boxes/entry.rb, line 5
def initialize(name:, eager:, memo:, box:, block:, configure:, then_block:)
  self.name = name
  self.memo = memo
  self.box = box
  self.eager = eager
  self.configure = configure
  self.then_block = then_block
  self.block = block
  self.mutex = Mutex.new if @memo
end

Public Instance Methods

block=(block) click to toggle source
# File lib/little_boxes/entry.rb, line 24
def block= block
  @block = Strategy.for(
    block, memo: @memo, configure: @configure, then_block: @then_block
  )
end
value() click to toggle source
# File lib/little_boxes/entry.rb, line 16
def value
  if @memo
    @mutex.synchronize { @block.call(@box) }
  else
    @block.call(@box)
  end
end