Class: Lutaml::Xml::TypeNamespace::Resolver

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/xml/type_namespace/resolver.rb

Overview

Resolves type namespace prefixes for elements

Type namespaces are declared on parent elements and used as prefixes on child elements. This resolver determines which prefix to use for a given type namespace.

Instance Method Summary collapse

Instance Method Details

#needs_declaration?(type_namespace_class, element_namespace_class) ⇒ Boolean

Check if a type namespace needs to be declared



34
35
36
37
38
39
# File 'lib/lutaml/xml/type_namespace/resolver.rb', line 34

def needs_declaration?(type_namespace_class, element_namespace_class)
  return true unless element_namespace_class

  # If element and type have same namespace, element handles it
  type_namespace_class != element_namespace_class
end

#prefix_for(type_namespace_class, declaration_plan) ⇒ String?

Get the prefix for a type namespace on an element



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/lutaml/xml/type_namespace/resolver.rb', line 17

def prefix_for(type_namespace_class, declaration_plan)
  return nil unless type_namespace_class
  return nil unless declaration_plan

  # Look up namespace in plan
  ns_info = declaration_plan.namespace_for_class(type_namespace_class)
  return nil unless ns_info

  # Return the prefix
  ns_info[:prefix]
end