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

@ -31,7 +31,6 @@ module REXML
def initialize(arg)
@orig = @buffer = arg
self.encoding = check_encoding( @buffer )
#@buffer = decode(@buffer) unless @encoding == UTF_8
@line = 0
end
@ -96,7 +95,7 @@ module REXML
# @return true if the Source is exhausted
def empty?
@buffer.nil?
@buffer == ""
end
# @return the current line in the source
@ -113,17 +112,14 @@ module REXML
class IOSource < Source
#attr_reader :block_size
# block_size has been deprecated
def initialize(arg, block_size=500)
@er_source = @source = arg
@to_utf = false
# READLINE OPT
# The following was commented out when IOSource started using readline
# to pull the data from the stream.
#@block_size = block_size
#super @source.read(@block_size)
@line_break = '>'
#super @source.readline( "\n" )
super @source.readline( @line_break )+@source.read
# FIXME
# This is broken. If the user puts in enough carriage returns, this can fail
# to calculate the correct encoding.
super @source.read( 100 )
@line_break = encode( '>' )
end