Class: ConstStricter::ConstResolver

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/const_stricter/const_resolver.rb

Defined Under Namespace

Classes: ConstLookup

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConstResolver

Returns a new instance of ConstResolver.



7
8
9
# File 'lib/const_stricter/const_resolver.rb', line 7

def initialize
  @cache = {}
end

Class Method Details

.evaluate(namespace:, const_name:) ⇒ Object



15
16
17
# File 'lib/const_stricter/const_resolver.rb', line 15

def self.evaluate(namespace:, const_name:)
  instance.evaluate(namespace:, const_name:)
end

.missing?(namespace:, const_name:) ⇒ Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/const_stricter/const_resolver.rb', line 11

def self.missing?(namespace:, const_name:)
  evaluate(namespace:, const_name:).nil?
end

Instance Method Details

#evaluate(namespace:, const_name:) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/const_stricter/const_resolver.rb', line 19

def evaluate(namespace:, const_name:)
  lookup = ConstLookup.new
  lookup.cache = @cache

  evaluated_constant =
    lookup.find_constant(namespace:, const_name:, inherit: false) ||
    lookup.find_constant(namespace:, const_name:, inherit: true)

  lookup.resolved_paths.each do |const_hsh|
    @cache[const_hsh] = evaluated_constant
  end

  evaluated_constant
end