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

r1025 | ser | 2004-07-18 08:18:36 -0400 (Sun, 18 Jul 2004) | 2 lines

@@ Fixed a CDATA pretty-printing bug. (#39) @@
r1026 | ser | 2004-07-18 09:03:02 -0400 (Sun, 18 Jul 2004) | 4 lines
@@ Fixed a buffering bug in Source.rb that affected the SAX parser @@
This bug was related to how REXML determines the encoding of a file, and
evinced itself by hanging on input when using the SAX parser.
r1028 | ser | 2004-07-18 09:06:18 -0400 (Sun, 18 Jul 2004) | 3 lines
* Minor pretty printing fix WRT CDATA segments.
@@ Applied Curt Sampson's optimization improvements @@


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ser 2004-07-18 14:04:03 +00:00
parent b841a6fce5
commit 94e117da62
5 changed files with 28 additions and 15 deletions

View file

@ -116,11 +116,21 @@ module REXML
def initialize(arg, block_size=500)
@er_source = @source = arg
@to_utf = false
# 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( '>' )
# Determining the encoding is a deceptively difficult issue to resolve.
# First, we check the first two bytes for UTF-16. Then we
# assume that the encoding is at least ASCII enough for the '>', and
# we read until we get one of those. This gives us the XML declaration,
# if there is one. If there isn't one, the file MUST be UTF-8, as per
# the XML spec. If there is one, we can determine the encoding from
# it.
str = @source.read( 2 )
if (str[0] == 254 && str[1] == 255) || (str[0] == 255 && str[1] == 254)
@encoding = check_encoding( str )
@line_break = encode( '>' )
else
@line_break = '>'
end
super str+@source.readline( @line_break )
end
def scan(pattern, cons=false)