Class: Builder::XmlEvents

Inherits:
XmlMarkup show all
Defined in:
lib/builder/xmlevents.rb

Overview

Create a series of SAX-like XML events (e.g. start_tag, end_tag) from the markup code. XmlEvent objects are used in a way similar to XmlMarkup objects, except that a series of events are generated and passed to a handler rather than generating character-based markup.

Usage:

xe = Builder::XmlEvents.new(hander)
xe.title("HI")    # Sends start_tag/end_tag/text messages to the handler.

Indentation may also be selected by providing value for the indentation size and initial indentation level.

xe = Builder::XmlEvents.new(handler, indent_size, initial_indent_level)

XML Event Handler

The handler object must expect the following events.

start_tag(tag, attrs)

Announces that a new tag has been found. tag is the name of the tag and attrs is a hash of attributes for the tag.

end_tag(tag)

Announces that an end tag for tag has been found.

text(text)

Announces that a string of characters (text) has been found. A series of characters may be broken up into more than one text call, so the client cannot assume that a single callback contains all the text data.

Instance Method Summary collapse

Methods inherited from XmlMarkup

#cdata!, #comment!, #declare!, #initialize, #instruct!, #target!

Methods inherited from XmlBase

#<<, #initialize, #method_missing, #nil?, #tag!

Methods inherited from BlankSlate

find_hidden_method, hide, reveal

Constructor Details

This class inherits a constructor from Builder::XmlMarkup

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Builder::XmlBase

Instance Method Details

#_end_tag(sym) ⇒ Object



58
59
60
# File 'lib/builder/xmlevents.rb', line 58

def _end_tag(sym)
  @target.end_tag(sym)
end

#_start_tag(sym, attrs, end_too = false) ⇒ Object



53
54
55
56
# File 'lib/builder/xmlevents.rb', line 53

def _start_tag(sym, attrs, end_too=false)
  @target.start_tag(sym, attrs)
  _end_tag(sym) if end_too
end

#text!(text) ⇒ Object



49
50
51
# File 'lib/builder/xmlevents.rb', line 49

def text!(text)
  @target.text(text)
end