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:
parent
b841a6fce5
commit
94e117da62
5 changed files with 28 additions and 15 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue