* Non-String attributes are now converted to Strings; this means code such as

elem.attributes["a"] = 1
  will not cause an error when dumping the XML.  It also means that:
  elem.attributes["a"]    # => "1", not 1
* Transitive indenting has been cleaned up.
* Fixed a potential bug in parsing non-ASCII encoded streams
* Fixed a bug where trying to fill in ParseException data was causing an
  IO error (stream closed)
* Changes to Text mean that Element (and Text) can be used outside of a
  Document context.
* In some rare cases, the base parser wasn't reading enough bytes from the
  stream for the parsing algorithm to work properly.  This has been fixed
  (this was Ruby bug #48426)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6209 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ser 2004-04-23 15:44:30 +00:00
parent 7792d9026a
commit d15f41b0eb
7 changed files with 49 additions and 27 deletions

View file

@ -150,7 +150,7 @@ module REXML
def read
begin
str = @source.readline('>')
str = @source.readline(@line_break)
str = decode(str) if @to_utf and str
@buffer << str
rescue Exception, NameError
@ -167,7 +167,7 @@ module REXML
@buffer = $' if cons and rv
while !rv and @source
begin
str = @source.readline('>')
str = @source.readline(@line_break)
str = decode(str) if @to_utf and str
@buffer << str
rv = pattern.match(@buffer)
@ -186,17 +186,22 @@ module REXML
# @return the current line in the source
def current_line
pos = @er_source.pos # The byte position in the source
lineno = @er_source.lineno # The XML < position in the source
@er_source.rewind
line = 0 # The \r\n position in the source
begin
while @er_source.pos < pos
@er_source.readline
line += 1
end
rescue
end
begin
pos = @er_source.pos # The byte position in the source
lineno = @er_source.lineno # The XML < position in the source
@er_source.rewind
line = 0 # The \r\n position in the source
begin
while @er_source.pos < pos
@er_source.readline
line += 1
end
rescue
end
rescue IOError
pos = -1
line = -1
end
[pos, lineno, line]
end
end