Class: DisplayCase::IsAClassComparator::ClassTracker

Inherits:
Object
  • Object
show all
Defined in:
lib/display_case/is_a_class_comparator.rb

Overview

A simple memoizing class name tracker

Instance Method Summary collapse

Constructor Details

#initializeClassTracker

Returns a new instance of ClassTracker.



11
12
13
14
# File 'lib/display_case/is_a_class_comparator.rb', line 11

def initialize
  @context = Object
  @data = Hash.new {|h, k| h[k] = constantize(k)}
end

Instance Method Details

#class_for(class_name) ⇒ Object



16
17
18
# File 'lib/display_case/is_a_class_comparator.rb', line 16

def class_for(class_name)
  @data[class_name]
end

#constantize(class_name) ⇒ Object



20
21
22
23
24
25
# File 'lib/display_case/is_a_class_comparator.rb', line 20

def constantize(class_name)
  return class_name if Module === class_name
  class_name.to_s.split('::').inject(@context){|context, name|
    context.const_get(name)
  }
end