Method: WLang::Scope::ObjectScope#fetch

Defined in:
lib/wlang/scope/object_scope.rb

#fetch(key, dialect = nil, unfound = nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/wlang/scope/object_scope.rb', line 5

def fetch(key, dialect = nil, unfound = nil)
  s = subject

  # self special case
  if key == :self
    return s
  end

  # hash indirect access
  if s.respond_to?(:has_key?)
    return s[key]      if s.has_key?(key)
    return s[key.to_s] if s.has_key?(key.to_s)
  end

  # getter
  if s.respond_to?(key)
    return s.send(key)
  end

  safe_parent.fetch(key, dialect, unfound)
rescue NameError
  safe_parent.fetch(key, dialect, unfound)
end