1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

@@ Fix for the XPath descendant* result set ordering bug @@

@@ SAX2 listener bug fixes @@
@@ Undid a code change that caused a 10x speed regression @@
@@ Indentation fixes, and a new word wrapping feature for text nodes
  was contributed by Devin Bayer (documentation forthcoming; see the
  change logs for now) @@

The XPath bug fix is really ugly and inefficient, but I spent two days hacking
at it and this was the best I could come up with.

The SAX2 listener fixes had to do with crashes in certain conditions, like when
there was a carriage return at the end of a document

Several people submitted patches for the speed regression; it is embarrassing
how long it took me to get around to looking at this.  To this day, I don't
know where the offending code came from.

Encoding fixes

Added a contributed word wrapping option for text formatting.  Devin Bayer
contributed this.  Here's his comment:
"Setting :wordwrapping to :all, wordwraps all text nodes longer than 60
  characters.
  Setting :indentstyle to aString, make aString used as indentation,
  instead of the default '  '.
  And as long as :respect_whitespace isn't set for the element,
  multiline text nodes will be indented."


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ser 2004-02-13 22:40:14 +00:00
parent be3b9b1c5c
commit 95be40a06d
13 changed files with 110 additions and 50 deletions

View file

@ -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)
)