123456789_123456789_123456789_123456789_123456789_

Class: REXML::Parsers::PullEvent

Relationships & Source Files
Inherits: Object
Defined in: lib/rexml/parsers/pullparser.rb

Overview

A parsing event. The contents of the event are accessed as an +Array?, and the type is given either by the …? methods, or by accessing the type accessor. The contents of this object vary from event to event, but are identical to the arguments passed to ::REXML::StreamListeners for each event.

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(arg) ⇒ PullEvent

The type of this event. Will be one of :tag_start, :tag_end, :text, :processing_instruction, :comment, :doctype, :attlistdecl, :entitydecl, :notationdecl, :entity, :cdata, :xmldecl, or :error.

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 111

def initialize(arg)
  @contents = arg
end

Instance Attribute Details

#attlistdecl?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 164

def attlistdecl?
  @contents[0] == :attlistdecl
end

#cdata?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 195

def cdata?
  @contents[0] == :cdata
end

#comment?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 154

def comment?
  @contents[0] == :comment
end

#doctype?Boolean (readonly)

Content: [ String name, String pub_sys, String long_name, String uri ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 159

def doctype?
  @contents[0] == :start_doctype
end

#elementdecl?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 169

def elementdecl?
  @contents[0] == :elementdecl
end

#end_element?Boolean (readonly)

Content: [ String tag_name ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 139

def end_element?
  @contents[0] == :end_element
end

#entity?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 190

def entity?
  @contents[0] == :entity
end

#entitydecl?Boolean (readonly)

Due to the wonders of DTDs, an entity declaration can be just about anything. There’s no way to normalize it; you’ll have to interpret the content yourself. However, the following is true:

  • If the entity declaration is an internal entity:

    String name, String value

Content: [ String text ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 180

def entitydecl?
  @contents[0] == :entitydecl
end

#error?Boolean (readonly)

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 204

def error?
  @contents[0] == :error
end

#instruction?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 149

def instruction?
  @contents[0] == :processing_instruction
end

#notationdecl?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 185

def notationdecl?
  @contents[0] == :notationdecl
end

#start_element?Boolean (readonly)

Content: [ String tag_name, Hash attributes ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 134

def start_element?
  @contents[0] == :start_element
end

#text?Boolean (readonly)

Content: [ String raw_text, String unnormalized_text ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 144

def text?
  @contents[0] == :text
end

#xmldecl?Boolean (readonly)

Content: [ String version, String encoding, String standalone ]

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 200

def xmldecl?
  @contents[0] == :xmldecl
end

Instance Method Details

#[](start, endd = nil)

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 115

def []( start, endd=nil)
  if start.kind_of? Range
    @contents.slice( start.begin+1 .. start.end )
  elsif start.kind_of? Numeric
    if endd.nil?
      @contents.slice( start+1 )
    else
      @contents.slice( start+1, endd )
    end
  else
    raise "Illegal argument #{start.inspect} (#{start.class})"
  end
end

#event_type

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 129

def event_type
  @contents[0]
end

#inspect

[ GitHub ]

  
# File 'lib/rexml/parsers/pullparser.rb', line 208

def inspect
  @contents[0].to_s + ": " + @contents[1..-1].inspect
end