Class: Lutaml::Xml::Decisions::Rules::ElementFormOptionRule
- Inherits:
-
DecisionRule
- Object
- DecisionRule
- Lutaml::Xml::Decisions::Rules::ElementFormOptionRule
- Defined in:
- lib/lutaml/xml/decisions/rules/element_form_option_rule.rb
Overview
Decision rule for element form option from map_element
When form: :qualified is specified on map_element, the element MUST use prefix format to explicitly qualify the element name. When form: :unqualified is specified, the element MUST NOT use prefix format (uses default or blank namespace).
Priority: 0.9 (between Tier 1 explicit option and Tier 2 format preservation)
-
form: :qualified forces prefix format (even if preserved input used default)
-
form: :unqualified forces default format (even if preserved input used prefix)
This allows per-element qualification overrides of the namespace’s element_form_default setting.
Instance Method Summary collapse
-
#applies?(context) ⇒ Boolean
Check if rule applies.
-
#decide(context) ⇒ Decision
Make the decision.
-
#priority ⇒ Integer
Priority level (-0.5 = higher than InheritFromParentRule’s 0).
Methods inherited from DecisionRule
Instance Method Details
#applies?(context) ⇒ Boolean
Check if rule applies
30 31 32 33 34 35 36 37 38 |
# File 'lib/lutaml/xml/decisions/rules/element_form_option_rule.rb', line 30 def applies?(context) return false unless context.element # Check if element responds to :form before accessing it return false unless context.element.respond_to?(:form) # Check if element has form attribute form = context.element.form !form.nil? end |
#decide(context) ⇒ Decision
Make the decision
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/lutaml/xml/decisions/rules/element_form_option_rule.rb', line 44 def decide(context) form = context.element.form if form == :qualified # Force prefix format when form: :qualified # Use namespace's prefix_default if available prefix = context.namespace_class&.prefix_default if prefix Decision.prefix( prefix: prefix, namespace_class: context.namespace_class, reason: "Priority 0.9: form: :qualified forces prefix format", ) else # No prefix available - this shouldn't happen in practice # since form: :qualified implies the element has a namespace Decision.new( format: :default, prefix: nil, namespace_class: context.namespace_class, reason: "Priority 0.9: form: :qualified but no namespace prefix available", ) end elsif form == :unqualified # Force default format when form: :unqualified Decision.default( namespace_class: context.namespace_class, reason: "Priority 0.9: form: :unqualified forces default format", ) else # Unknown form value - should not happen Decision::NEUTRAL end end |
#priority ⇒ Integer
Returns Priority level (-0.5 = higher than InheritFromParentRule’s 0).
22 23 24 |
# File 'lib/lutaml/xml/decisions/rules/element_form_option_rule.rb', line 22 def priority -0.5 end |