Class: Accord::RO

Inherits:
Object
  • Object
show all
Defined in:
lib/accord/ro.rb

Constant Summary collapse

CACHE_IVAR_NAME =
:@_accord_ro_cache_

Instance Method Summary collapse

Constructor Details

#initialize(item, &block) ⇒ RO

Returns a new instance of RO.



5
6
7
8
# File 'lib/accord/ro.rb', line 5

def initialize(item, &block)
  @item = item
  @block = block
end

Instance Method Details

#changedObject



19
20
21
22
# File 'lib/accord/ro.rb', line 19

def changed
  invalidate
  resolve
end

#resolveObject



10
11
12
13
14
15
16
17
# File 'lib/accord/ro.rb', line 10

def resolve
  cached = from_cache
  return cached if cached

  bases = block.call(item)
  bases_ros = bases.map { |b| RO.new(b, &block).resolve }
  merge([[item]] + bases_ros + [bases]).tap { |ro| cache(ro) }
end