Class: Lutaml::Xml::Decisions::Rules::NamespaceScopeRule
- Inherits:
-
DecisionRule
- Object
- DecisionRule
- Lutaml::Xml::Decisions::Rules::NamespaceScopeRule
- Defined in:
- lib/lutaml/xml/decisions/rules/namespace_scope_rule.rb
Overview
Priority 3: namespace_scope configuration
When namespace_scope hoists a namespace to root, elements using that namespace MUST use prefix format (UNLESS it’s the ROOT element’s OWN namespace - in which case default format is preferred)
Instance Method Summary collapse
-
#applies?(context) ⇒ Boolean
Applies when namespace is in namespace_scope configuration AND will be hoisted.
-
#decide(context) ⇒ Object
Decision: Use prefix (except for root’s own namespace).
-
#priority ⇒ Object
Priority 3.
Methods inherited from DecisionRule
Instance Method Details
#applies?(context) ⇒ Boolean
Applies when namespace is in namespace_scope configuration AND will be hoisted
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/lutaml/xml/decisions/rules/namespace_scope_rule.rb', line 20 def applies?(context) return false unless context.has_namespace? config = context.namespace_scope_config return false if config.nil? # Only apply if namespace_scope will actually hoist ns_usage = context.namespace_usage config.always_mode? || (config.auto_mode? && ns_usage&.used_in&.any?) end |
#decide(context) ⇒ Object
Decision: Use prefix (except for root’s own namespace)
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/lutaml/xml/decisions/rules/namespace_scope_rule.rb', line 32 def decide(context) context.namespace_scope_config if context.is_root && context.has_namespace? # Root element with its own namespace -> use default format (cleaner) Decision.default( namespace_class: context.namespace_class, reason: "Priority 3: Root element's own namespace - use default format", ) else # Other hoisted namespaces OR non-root elements -> MUST use prefix Decision.prefix( prefix: context.namespace_class.prefix_default, namespace_class: context.namespace_class, reason: "Priority 3: namespace_scope hoisting - use prefix format", ) end end |
#priority ⇒ Object
Priority 3
15 16 17 |
# File 'lib/lutaml/xml/decisions/rules/namespace_scope_rule.rb', line 15 def priority 3 end |