Class: Riml::ClassMap

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

Overview

Map of => ClassDefinitionNode Can also query object for superclass of a named class, etc…

Ex : class_map.superclass(“g:SomeClass”) => “g:SomeClassBase”

Instance Method Summary collapse

Constructor Details

#initializeClassMap

Returns a new instance of ClassMap.



9
10
11
# File 'lib/class_map.rb', line 9

def initialize
  @map = {}
end

Instance Method Details

#[](key) ⇒ Object



13
14
15
16
# File 'lib/class_map.rb', line 13

def [](key)
  ensure_key_is_string!(key)
  @map[key] or raise ClassNotFound, "class #{key.inspect} not found."
end

#[]=(key, val) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/class_map.rb', line 18

def []=(key, val)
  ensure_key_is_string!(key)
  if class_node = @map[key]
    if !class_node.instance_variable_get("@registered_state") &&
       !val.instance_variable_get("@registered_state")
      raise ClassRedefinitionError, "can't redefine class #{key.inspect}."
    end
  end
  @map[key] = val
end

#class_namesObject



38
39
40
# File 'lib/class_map.rb', line 38

def class_names
  @map.keys
end

#classesObject



34
35
36
# File 'lib/class_map.rb', line 34

def classes
  @map.values
end

#superclass(key) ⇒ Object



29
30
31
32
# File 'lib/class_map.rb', line 29

def superclass(key)
  super_key = self[key].superclass_name
  self[super_key]
end