mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
-
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
f2b75020ba
commit
3289dfc78b
13 changed files with 246 additions and 123 deletions
|
|
@ -100,6 +100,23 @@ module REXML
|
|||
self.stream = source
|
||||
end
|
||||
|
||||
def add_listener( listener )
|
||||
if !defined?(@listeners) or !@listeners
|
||||
@listeners = []
|
||||
instance_eval <<-EOL
|
||||
alias :_old_pull :pull
|
||||
def pull
|
||||
event = _old_pull
|
||||
@listeners.each do |listener|
|
||||
listener.receive event
|
||||
end
|
||||
event
|
||||
end
|
||||
EOL
|
||||
end
|
||||
@listeners << listener
|
||||
end
|
||||
|
||||
attr_reader :source
|
||||
|
||||
def stream=( source )
|
||||
|
|
@ -162,11 +179,11 @@ module REXML
|
|||
|
||||
# Returns the next event. This is a +PullEvent+ object.
|
||||
def pull
|
||||
return [ :end_document ] if empty?
|
||||
if @closed
|
||||
x, @closed = @closed, nil
|
||||
return [ :end_element, x ]
|
||||
end
|
||||
return [ :end_document ] if empty?
|
||||
return @stack.shift if @stack.size > 0
|
||||
@source.read if @source.buffer.size<2
|
||||
if @document_status == nil
|
||||
|
|
@ -411,3 +428,23 @@ module REXML
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
=begin
|
||||
case event[0]
|
||||
when :start_element
|
||||
when :text
|
||||
when :end_element
|
||||
when :processing_instruction
|
||||
when :cdata
|
||||
when :comment
|
||||
when :xmldecl
|
||||
when :start_doctype
|
||||
when :end_doctype
|
||||
when :externalentity
|
||||
when :elementdecl
|
||||
when :entity
|
||||
when :attlistdecl
|
||||
when :notationdecl
|
||||
when :end_doctype
|
||||
end
|
||||
=end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue