Module: Xmi::NamespaceRegistry

Defined in:
lib/xmi/namespace_registry.rb

Overview

Registry for mapping namespace URIs to namespace classes

This module provides a central registry for namespace classes, allowing dynamic lookup of namespace classes by URI.

Class Method Summary collapse

Class Method Details

.bootstrap!Object

Bootstrap the registry with all known OMG and Sparx namespaces

This method registers all known namespace URIs from the Xmi::Namespace::Omg and Xmi::Namespace::Sparx modules.



57
58
59
60
# File 'lib/xmi/namespace_registry.rb', line 57

def bootstrap!
  register_omg_namespaces!
  register_sparx_namespaces!
end

.clearObject

Clear the registry (mainly for testing)



49
50
51
# File 'lib/xmi/namespace_registry.rb', line 49

def clear
  @uri_map = {}
end

.register(uri, namespace_class) ⇒ Object

Register a URI-to-class mapping

Parameters:

  • uri (String)

    The namespace URI

  • namespace_class (Class)

    The namespace class



21
22
23
# File 'lib/xmi/namespace_registry.rb', line 21

def register(uri, namespace_class)
  uri_map[uri] = namespace_class
end

.registered?(uri) ⇒ Boolean

Check if a URI is registered

Parameters:

  • uri (String)

    The namespace URI to check

Returns:

  • (Boolean)

    True if the URI is registered



37
38
39
# File 'lib/xmi/namespace_registry.rb', line 37

def registered?(uri)
  uri_map.key?(uri)
end

.registered_urisArray<String>

Get all registered URIs

Returns:

  • (Array<String>)

    List of registered URIs



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

def registered_uris
  uri_map.keys
end

.resolve(uri) ⇒ Class?

Resolve a namespace class by URI

Parameters:

  • uri (String)

    The namespace URI to look up

Returns:

  • (Class, nil)

    The namespace class or nil if not found



29
30
31
# File 'lib/xmi/namespace_registry.rb', line 29

def resolve(uri)
  uri_map[uri]
end

.uri_mapHash<String, Class>

Get the URI-to-class mapping

Returns:

  • (Hash<String, Class>)

    The mapping of URIs to namespace classes



13
14
15
# File 'lib/xmi/namespace_registry.rb', line 13

def uri_map
  @uri_map ||= {}
end