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.

Instance Method Summary collapse

Methods included from SAX::NamespaceSplitter

#split_attributes_and_namespaces

Constructor Details

#initialize(handler) ⇒ OgaSAXBridge

Returns a new instance of OgaSAXBridge.



619
620
621
# File 'lib/moxml/adapter/oga.rb', line 619

def initialize(handler)
  @handler = handler
end

Instance Method Details

#emit(node) ⇒ Object

Walk a parsed Oga node and emit Moxml SAX events.



632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
# File 'lib/moxml/adapter/oga.rb', line 632

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



627
628
629
# File 'lib/moxml/adapter/oga.rb', line 627

def on_end_document
  @handler.on_end_document
end

#on_start_documentObject



623
624
625
# File 'lib/moxml/adapter/oga.rb', line 623

def on_start_document
  @handler.on_start_document
end