1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
## -*- Ruby -*-
## XML::DOM
## 1998-2001 by yoshidam
##
require 'xml/dom2/characterdata'
require 'xml/dom2/domexception'
module XML
module DOM
=begin
== Class XML::DOM::Text
=== superclass
Node
=end
class Text<CharacterData
=begin
=== Class Methods
--- Text.new(text)
creates a new Text.
=end
## new(text)
## text: String
def initialize(text = nil)
super(text)
end
=begin
=== Methods
--- Text#nodeType
[DOM]
returns the nodeType.
=end
## [DOM]
def nodeType
TEXT_NODE
end
=begin
--- Text#nodeName
[DOM]
returns the nodeName.
=end
## [DOM]
def nodeName
"#text"
end
=begin
--- Text#to_s
return the string representation of the Text.
=end
def to_s
ret = ""
@value.scan(/./um) do |c|
code = c.unpack("U")[0]
if code == 13
ret << sprintf("&#x%X;", code)
elsif c == "&"
ret << "&"
elsif c == "<"
ret << "<"
elsif c == ">"
ret << ">"
else
ret << c
end
end
ret
## XML.charRef(@value)
end
=begin
--- Text#dump(depth = 0)
dumps the Text.
=end
def dump(depth = 0)
print ' ' * depth * 2
print "#{@value.inspect}\n"
end
=begin
--- Text#splitText(offset)
[DOM]
breaks this Text node into two Text nodes at the specified offset.
=end
## [DOM]
def splitText(offset)
if offset > @value.length || offset < 0
raise DOMException.new(DOMException::INDEX_SIZE_ERR)
end
newText = @value[offset, @value.length]
newNode = Text.new(newText)
if !self.parentNode.nil?
self.parentNode.insertAfter(newNode, self)
end
@value[offset, @value.length] = ""
newNode
end
=begin
--- Text#trim(preserve = false)
trim extra whitespaces.
=end
def trim(preserve = false)
if !preserve
@value.sub!(/\A\s*([\s\S]*?)\s*\Z/, "\\1")
return @value
end
nil
end
end
end
end
|