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

@@ 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
40 lines
843 B
Ruby
40 lines
843 B
Ruby
require "rexml/parseexception"
|
|
|
|
module REXML
|
|
# Represents a node in the tree. Nodes are never encountered except as
|
|
# superclasses of other objects. Nodes have siblings.
|
|
module Node
|
|
# @return the next sibling (nil if unset)
|
|
def next_sibling_node
|
|
return nil if @parent.nil?
|
|
@parent[ @parent.index(self) + 1 ]
|
|
end
|
|
|
|
# @return the previous sibling (nil if unset)
|
|
def previous_sibling_node
|
|
return nil if @parent.nil?
|
|
ind = @parent.index(self)
|
|
return nil if ind == 0
|
|
@parent[ ind - 1 ]
|
|
end
|
|
|
|
def to_s indent=-1
|
|
rv = ""
|
|
write rv,indent
|
|
rv
|
|
end
|
|
|
|
def indent to, ind
|
|
if @parent and not @parent.context[:indentstyle].nil? then
|
|
indentstyle = @parent.context[:indentstyle]
|
|
else
|
|
indentstyle = ' '
|
|
end
|
|
to << indentstyle*ind unless ind<1
|
|
end
|
|
|
|
def parent?
|
|
false;
|
|
end
|
|
end
|
|
end
|