Class: XMPPSimple::Parser
- Inherits:
-
Nokogiri::XML::SAX::Document
- Object
- Nokogiri::XML::SAX::Document
- XMPPSimple::Parser
- Defined in:
- lib/xmpp_simple/parser.rb
Instance Method Summary collapse
- #<<(data) ⇒ Object
- #characters(chars = '') ⇒ Object
- #end_element_namespace(name, prefix = nil, uri = nil) ⇒ Object
-
#initialize(client) ⇒ Parser
constructor
A new instance of Parser.
- #process(node) ⇒ Object
- #start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = []) ⇒ Object
Constructor Details
#initialize(client) ⇒ Parser
Returns a new instance of Parser.
3 4 5 6 7 |
# File 'lib/xmpp_simple/parser.rb', line 3 def initialize(client) @parser = Nokogiri::XML::SAX::PushParser.new self @client = client @current = nil end |
Instance Method Details
#<<(data) ⇒ Object
9 10 11 12 13 14 15 16 |
# File 'lib/xmpp_simple/parser.rb', line 9 def <<(data) @parser << data self rescue Nokogiri::XML::SyntaxError => e @parser = Nokogiri::XML::SAX::PushParser.new self @current = nil XMPPSimple.logger.error e. end |
#characters(chars = '') ⇒ Object
39 40 41 42 |
# File 'lib/xmpp_simple/parser.rb', line 39 def characters(chars = '') XMPPSimple.logger.debug "Parse chars: #{chars}" @current << Nokogiri::XML::Text.new(chars, @current.document) if @current end |
#end_element_namespace(name, prefix = nil, uri = nil) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/xmpp_simple/parser.rb', line 28 def end_element_namespace(name, prefix = nil, uri = nil) params = { name: name, prefix: prefix, uri: uri } XMPPSimple.logger.debug "Parse end elem: #{params.inspect}" return if name == 'stream' if @current.parent @current = @current.parent return end process(@current) end |
#process(node) ⇒ Object
44 45 46 47 |
# File 'lib/xmpp_simple/parser.rb', line 44 def process(node) @current = nil @client.process(node) end |
#start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = []) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/xmpp_simple/parser.rb', line 18 def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = []) params = { name: name, attrs: attrs, prefix: prefix, uri: uri, ns: ns } XMPPSimple.logger.debug "Parse start elem: #{params.inspect}" return if name == 'stream' doc = @current.nil? ? Nokogiri::XML::Document.new : @current.document node = Node.new(name, attrs, ns, doc) @current << node if @current @current = node end |