Class: Moxml::Adapter::Oga::OgaSAXBridge

Inherits:
Object
  • Object
show all
Includes:
SAX::NamespaceSplitter
Defined in:
lib/moxml/adapter/oga.rb

Overview

Bridge between a parsed Oga DOM and Moxml SAX events.

Constant Summary

Constants included from SAX::NamespaceSplitter

SAX::NamespaceSplitter::EMPTY_NAMESPACES

Instance Method Summary collapse

Methods included from SAX::NamespaceSplitter

#split_attributes_and_namespaces

Constructor Details

#initialize(handler) ⇒ OgaSAXBridge

Returns a new instance of OgaSAXBridge.



682
683
684
# File 'lib/moxml/adapter/oga.rb', line 682

def initialize(handler)
  @handler = handler
end

Instance Method Details

#emit(node) ⇒ Object

Walk a parsed Oga node and emit Moxml SAX events.



695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
# File 'lib/moxml/adapter/oga.rb', line 695

def emit(node)
  case node
  when ::Oga::XML::Element
    element_name = qualified_name(node.namespace_name, node.name)
    pairs = node.attributes.map do |a|
      [qualified_name(a.namespace_name, a.name), a.value]
    end
    attrs, namespaces = split_attributes_and_namespaces(pairs)
    @handler.on_start_element(element_name, attrs, namespaces)
    node.children.each { |c| emit(c) }
    @handler.on_end_element(element_name)
  when ::Oga::XML::Text
    @handler.on_characters(node.text)
  when ::Oga::XML::Cdata
    @handler.on_cdata(node.text)
  when ::Oga::XML::Comment
    @handler.on_comment(node.text)
  when ::Oga::XML::ProcessingInstruction
    @handler.on_processing_instruction(node.name, node.text || "")
  end
end

#on_end_documentObject



690
691
692
# File 'lib/moxml/adapter/oga.rb', line 690

def on_end_document
  @handler.on_end_document
end

#on_start_documentObject



686
687
688
# File 'lib/moxml/adapter/oga.rb', line 686

def on_start_document
  @handler.on_start_document
end