class Lutaml::Model::XmlAdapter::XmlElement
def add_namespace(namespace)
def add_namespace(namespace) @namespaces ||= {} @namespaces[namespace.prefix] = namespace end
def attribute_is_namespace?(name)
def attribute_is_namespace?(name) name.to_s.start_with?("xmlns") end
def default_namespace
def default_namespace namespaces[nil] || @parent_document&.namespaces&.dig(nil) end
def document
def document XmlDocument.new(self) end
def extract_name(name)
def extract_name(name) n = name.to_s.split(":") return name if n.length <= 1 n[1..].join(":") end
def extract_namespace_prefix(name)
def extract_namespace_prefix(name) n = name.to_s.split(":") return if n.length <= 1 n.first end
def initialize(
def initialize( name, attributes = {}, children = [], text = nil, parent_document: nil, namespace_prefix: nil ) @name = extract_name(name) @namespace_prefix = namespace_prefix || extract_namespace_prefix(name) @attributes = attributes # .map { |k, v| XmlAttribute.new(k, v) } @children = children @text = text @parent_document = parent_document end
def name
def name if namespace_prefix "#{namespace_prefix}:#{@name}" else @name end end
def namespace
def namespace return default_namespace unless namespace_prefix namespaces[namespace_prefix] end
def namespaces
def namespaces @namespaces || @parent_document&.namespaces || {} end
def order
def order children.each_with_object([]) do |child, arr| arr << child.unprefixed_name end end
def own_namespaces
def own_namespaces @namespaces || {} end
def unprefixed_name
def unprefixed_name @name end