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

Parameters:

  • type_namespace_class (XmlNamespace)

    The type namespace class

  • element_namespace_class (XmlNamespace, nil)

    The element’s namespace

Returns:

  • (Boolean)

    true if declaration needed



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

Parameters:

Returns:

  • (String, nil)

    The prefix, or nil if not declared



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