Module: Eco::Language::Klass::Resolver

Included in:
Builder, HelpersBuilt
Defined in:
lib/eco/language/klass/resolver.rb

Instance Method Summary collapse

Instance Method Details

#class_resolver(name, klass) ⇒ Object

Creates a class and instance object methods with name name to resolve klass name



4
5
6
7
# File 'lib/eco/language/klass/resolver.rb', line 4

def class_resolver(name, klass)
  define_singleton_method(name) { resolve_class(klass) }
  define_method(name) { self.class.resolve_class(klass) }
end

#resolve_class(klass, exception: true) ⇒ Class

With given a klass name it resolves to an actual Class

Returns:

  • (Class)

    the class that was being searched by name klass.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/eco/language/klass/resolver.rb', line 11

def resolve_class(klass, exception: true)
  @resolved ||= {}
  @resolved[klass] ||=
    case klass
    when Class
      klass
    when String
      begin
        Kernel.const_get(klass)
      rescue NameError
        raise if exception
      end
    when Symbol
      resolve_class(send(klass))
    else
      raise "Unknown class: #{klass}" if exception
    end
end