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.



521
522
523
524
# File 'lib/upkeep/runtime.rb', line 521

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

Instance Method Details

#[](key) ⇒ Object



526
527
528
529
530
# File 'lib/upkeep/runtime.rb', line 526

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

#dig(first_key, *rest) ⇒ Object



544
545
546
547
# File 'lib/upkeep/runtime.rb', line 544

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

#fetch(key, *fallback) ⇒ Object



532
533
534
535
536
537
538
539
540
541
542
# File 'lib/upkeep/runtime.rb', line 532

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