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 107

def initialize(arg)
  @contents = arg
end

Instance Attribute Details

#attlistdecl?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

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

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

#cdata?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

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

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

#comment?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

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

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 155

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

#elementdecl?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

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

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

#end_element?Boolean (readonly)

Content: [ String tag_name ]

[ GitHub ]

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

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

#entity?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

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

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 176

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

#error?Boolean (readonly)

[ GitHub ]

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

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

#instruction?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

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

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

#notationdecl?Boolean (readonly)

Content: [ String text ]

[ GitHub ]

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

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

#start_element?Boolean (readonly)

Content: [ String tag_name, Hash attributes ]

[ GitHub ]

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

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 140

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

#xmldecl?Boolean (readonly)

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

[ GitHub ]

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

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

Instance Method Details

#[](start, endd = nil)

[ GitHub ]

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

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 125

def event_type
  @contents[0]
end

#inspect

[ GitHub ]

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

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