class Riml::ClassMap
Map of {“ClassName” => ClassDefinitionNode} Can also query object for superclass of a named class, etc…
Ex : class_map.superclass(“g:SomeClass”) => “g:SomeClassBase”
Attributes
globbed_imports[R]
Public Class Methods
new()
click to toggle source
# File lib/riml/class_map.rb, line 12 def initialize @map = {} # list of ImportedClass objects that are #globbed? @globbed_imports = [] end
Public Instance Methods
[](key)
click to toggle source
# File lib/riml/class_map.rb, line 18 def [](key) ensure_key_is_string!(key) klass = @map[key] return klass if klass if key[0..1] == 'g:' globbed_imports.each do |imported_class| if imported_class.match?(key) return @map[key] = ImportedClass.new(key) end end end raise ClassNotFound, "class #{key.inspect} not found." end
[]=(key, val)
click to toggle source
# File lib/riml/class_map.rb, line 32 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") class_redefinition!(key) end end @map[key] = val end
class_names()
click to toggle source
# File lib/riml/class_map.rb, line 52 def class_names @map.keys end
classes()
click to toggle source
# File lib/riml/class_map.rb, line 48 def classes @map.values end
has_global_import?()
click to toggle source
# File lib/riml/class_map.rb, line 60 def has_global_import? @globbed_imports.any? { |import| import.global_import? } end
safe_fetch(key)
click to toggle source
# File lib/riml/class_map.rb, line 56 def safe_fetch(key) @map[key] end
superclass(key)
click to toggle source
# File lib/riml/class_map.rb, line 43 def superclass(key) super_key = self[key].superclass_name self[super_key] end
Protected Instance Methods
class_redefinition!(key)
click to toggle source
# File lib/riml/class_map.rb, line 72 def class_redefinition!(key) # allow class redefinitions in repl return if Riml.config && Riml.config.repl raise ClassRedefinitionError, "can't redefine class #{key.inspect}." end
ensure_key_is_string!(key)
click to toggle source
# File lib/riml/class_map.rb, line 66 def ensure_key_is_string!(key) unless key.is_a?(String) raise ArgumentError, "key must be name of class (String)" end end