Class: Upkeep::Runtime::ObservedHash

Inherits:
Object
  • Object
show all
Defined in:
lib/upkeep/runtime.rb

Instance Method Summary collapse

Constructor Details

#initialize(source:, values:) ⇒ ObservedHash

Returns a new instance of ObservedHash.



496
497
498
499
# File 'lib/upkeep/runtime.rb', line 496

def initialize(source:, values:)
  @source = source
  @values = values || {}
end

Instance Method Details

#[](key) ⇒ Object



501
502
503
504
505
# File 'lib/upkeep/runtime.rb', line 501

def [](key)
  value = lookup(key)
  record(key, value)
  value
end

#dig(first_key, *rest) ⇒ Object



519
520
521
522
# File 'lib/upkeep/runtime.rb', line 519

def dig(first_key, *rest)
  value = self[first_key]
  rest.empty? || value.nil? ? value : value.dig(*rest)
end

#fetch(key, *fallback) ⇒ Object



507
508
509
510
511
512
513
514
515
516
517
# File 'lib/upkeep/runtime.rb', line 507

def fetch(key, *fallback)
  if include_key?(key)
    self[key]
  elsif block_given?
    yield key
  elsif fallback.any?
    fallback.first
  else
    @values.fetch(key)
  end
end