class Lutaml::Model::Xml::Builder::Nokogiri

def self.build(options = {})

def self.build(options = {})
  if block_given?
    ::Nokogiri::XML::Builder.new(options) do |xml|
      yield(new(xml))
    end
  else
    new(::Nokogiri::XML::Builder.new(options))
  end
end

def add_attribute(element, name, value)

def add_attribute(element, name, value)
  element[name] = value
end

def add_cdata(element, value)

def add_cdata(element, value)
  element.cdata(value)
end

def add_element(element, child)

def add_element(element, child)
  element.add_child(child)
end

def add_namespace_prefix(prefix)

def add_namespace_prefix(prefix)
  xml[prefix] if prefix
  self
end

def add_text(element, text, cdata: false)

def add_text(element, text, cdata: false)
  return add_cdata(element, text) if cdata
  if element.is_a?(self.class)
    element = element.xml.parent
  end
  text_node = ::Nokogiri::XML::Text.new(text.to_s, element)
  element.add_child(text_node)
end

def add_xml_fragment(element, content)

def add_xml_fragment(element, content)
  if element.is_a?(self.class)
    element = element.xml.parent
  end
  fragment = ::Nokogiri::XML::DocumentFragment.parse(content)
  element.add_child(fragment)
end

def create_and_add_element(

def create_and_add_element(
  element_name,
  prefix: (prefix_unset = true
           nil),
  attributes: {}
)
  add_namespace_prefix(prefix)
  element_name = element_name.first if element_name.is_a?(Array)
  element_name = "#{element_name}_" if respond_to?(element_name)
  if block_given?
    public_send(element_name, attributes) do
      xml.parent.namespace = nil if prefix.nil? && !prefix_unset
      yield(self)
    end
  else
    public_send(element_name, attributes)
  end
end

def create_element(name, attributes = {})

def create_element(name, attributes = {})
  xml.doc.create_element(name, attributes)
end

def initialize(xml)

def initialize(xml)
  @xml = xml
end

def method_missing(method_name, *args, &block)

def method_missing(method_name, *args, &block)
  if block
    xml.public_send(method_name, *args, &block)
  else
    xml.public_send(method_name, *args)
  end
end

def respond_to_missing?(method_name, include_private = false)

def respond_to_missing?(method_name, include_private = false)
  xml.respond_to?(method_name) || super
end