summaryrefslogtreecommitdiff
path: root/lib/rexml/parsers
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rexml/parsers')
-rw-r--r--lib/rexml/parsers/baseparser.rb17
-rw-r--r--lib/rexml/parsers/sax2parser.rb9
2 files changed, 15 insertions, 11 deletions
diff --git a/lib/rexml/parsers/baseparser.rb b/lib/rexml/parsers/baseparser.rb
index 057617d6e8..025d43db54 100644
--- a/lib/rexml/parsers/baseparser.rb
+++ b/lib/rexml/parsers/baseparser.rb
@@ -122,14 +122,14 @@ module REXML
# Returns true if there are no more events
def empty?
- !has_next?
+ #puts "@source.empty? = #{@source.empty?}"
+ #puts "@stack.empty? = #{@stack.empty?}"
+ return (@source.empty? and @stack.empty?)
end
# Returns true if there are more events. Synonymous with !empty?
def has_next?
- return true if @closed
- @source.read if @source.buffer.size==0 and !@source.empty?
- (!@source.empty? and @source.buffer.strip.size>0) or @stack.size>0 or @closed
+ return !(@source.empty? and @stack.empty?)
end
# Push an event back on the head of the stream. This method
@@ -329,9 +329,12 @@ module REXML
end
else
md = @source.match( TEXT_PATTERN, true )
- #md = @source.match_to_consume( '<', TEXT_PATTERN )
- #@source.read
- raise REXML::ParseException("no text to add") if md[0].length == 0
+ if md[0].length == 0
+ #puts "EMPTY = #{empty?}"
+ #puts "BUFFER = \"#{@source.buffer}\""
+ @source.match( /(\s+)/, true )
+ end
+ #return [ :text, "" ] if md[0].length == 0
# unnormalized = Text::unnormalize( md[1], self )
# return PullEvent.new( :text, md[1], unnormalized )
return [ :text, md[1] ]
diff --git a/lib/rexml/parsers/sax2parser.rb b/lib/rexml/parsers/sax2parser.rb
index aab87caae4..8c82cf8fc1 100644
--- a/lib/rexml/parsers/sax2parser.rb
+++ b/lib/rexml/parsers/sax2parser.rb
@@ -45,7 +45,7 @@ module REXML
if args.size == 2
args[1].each { |match| @procs << [args[0], match, blok] }
else
- add( [args[0], /.*/, blok] )
+ add( [args[0], nil, blok] )
end
elsif args[0].kind_of? Array
if args.size == 2
@@ -54,7 +54,7 @@ module REXML
args[0].each { |match| add( [ :start_element, match, blok ] ) }
end
else
- add([nil, /.*/, args[0]])
+ add([nil, nil, args[0]])
end
end
@@ -164,9 +164,10 @@ module REXML
def get_procs( symbol, name )
return nil if @procs.size == 0
@procs.find_all do |sym, match, block|
+ #puts sym.inspect+"=="+symbol.inspect+ "\t"+match.inspect+"=="+name.inspect+ "\t"+( (sym.nil? or symbol == sym) and ((name.nil? and match.nil?) or match.nil? or ( (name == match) or (match.kind_of? Regexp and name =~ match)))).to_s
(
(sym.nil? or symbol == sym) and
- (name.nil? or (
+ ((name.nil? and match.nil?) or match.nil? or (
(name == match) or
(match.kind_of? Regexp and name =~ match)
)
@@ -179,7 +180,7 @@ module REXML
@listeners.find_all do |sym, match, block|
(
(sym.nil? or symbol == sym) and
- (name.nil? or (
+ ((name.nil? and match.nil?) or match.nil? or (
(name == match) or
(match.kind_of? Regexp and name =~ match)
)