Class: Xmi::EaRoot

Inherits:
Object
  • Object
show all
Defined in:
lib/xmi/ea_root.rb,
lib/xmi/ea_root/xml_parsing.rb,
lib/xmi/ea_root/code_generation.rb,
lib/xmi/ea_root/namespace_handling.rb,
lib/xmi/ea_root/extension_lifecycle.rb

Class Method Summary collapse

Class Method Details

.extension_loaded?(extension_id) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
46
# File 'lib/xmi/ea_root.rb', line 43

def extension_loaded?(extension_id)
  extension_id = extension_id.to_s.capitalize
  loaded_extensions.key?(extension_id)
end

.load_extension(xml_path) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/xmi/ea_root.rb', line 20

def load_extension(xml_path)
  extension_id = derive_module_name(xml_path)

  if loaded_extensions.key?(extension_id)
    raise ArgumentError,
          "Extension '#{extension_id}' is already loaded from " \
          "'#{loaded_extensions[extension_id]}'. " \
          "Call unload_extension('#{extension_id}') first if you want to reload it."
  end

  build_extension(xml_path)
  update_mappings(extension_id)
  loaded_extensions[extension_id] = xml_path
end

.loaded_extensionsObject



48
49
50
# File 'lib/xmi/ea_root.rb', line 48

def loaded_extensions
  @loaded_extensions ||= {}
end

.unload_extension(extension_id) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/xmi/ea_root.rb', line 35

def unload_extension(extension_id)
  extension_id = extension_id.to_s.capitalize

  remove_const(extension_id) if const_defined?(extension_id)

  loaded_extensions.delete(extension_id)
end