vcdom 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/vcdom/attr.rb +70 -0
- data/lib/vcdom/attr_node_map.rb +30 -0
- data/lib/vcdom/attr_ns.rb +38 -0
- data/lib/vcdom/character_data.rb +22 -0
- data/lib/vcdom/child.rb +53 -0
- data/lib/vcdom/document.rb +126 -0
- data/lib/vcdom/element.rb +332 -0
- data/lib/vcdom/element_ns.rb +44 -0
- data/lib/vcdom/node.rb +278 -0
- data/lib/vcdom/node_list.rb +32 -0
- data/lib/vcdom/parent.rb +126 -0
- data/lib/vcdom/text.rb +23 -0
- data/lib/vcdom/xml_parser.rb +368 -0
- data/lib/vcdom/xml_serializer.rb +55 -0
- metadata +48 -81
- data/History.txt +0 -4
- data/Manifest.txt +0 -34
- data/PostInstall.txt +0 -7
- data/README.rdoc +0 -51
- data/Rakefile +0 -26
- data/lib/vcdom/minidom/attr.rb +0 -139
- data/lib/vcdom/minidom/attr_ns.rb +0 -47
- data/lib/vcdom/minidom/cdata_section.rb +0 -34
- data/lib/vcdom/minidom/character_data.rb +0 -263
- data/lib/vcdom/minidom/comment.rb +0 -34
- data/lib/vcdom/minidom/document.rb +0 -245
- data/lib/vcdom/minidom/dom_exception.rb +0 -51
- data/lib/vcdom/minidom/dom_implementation.rb +0 -214
- data/lib/vcdom/minidom/element.rb +0 -512
- data/lib/vcdom/minidom/element_ns.rb +0 -42
- data/lib/vcdom/minidom/mini_parser.rb +0 -9
- data/lib/vcdom/minidom/mini_serializer.rb +0 -118
- data/lib/vcdom/minidom/minidom_standard_error.rb +0 -9
- data/lib/vcdom/minidom/mod_child_node.rb +0 -51
- data/lib/vcdom/minidom/mod_elements_getter.rb +0 -49
- data/lib/vcdom/minidom/mod_namespaceuri_manageable.rb +0 -152
- data/lib/vcdom/minidom/mod_parent_node.rb +0 -307
- data/lib/vcdom/minidom/named_node_map_attr.rb +0 -277
- data/lib/vcdom/minidom/node.rb +0 -178
- data/lib/vcdom/minidom/node_list.rb +0 -41
- data/lib/vcdom/minidom/text.rb +0 -77
- data/lib/vcdom/minidom/xml_reg_exp.rb +0 -39
- data/lib/vcdom/minidom.rb +0 -9
- data/lib/vcdom.rb +0 -6
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
- data/test/test_helper.rb +0 -3
- data/test/test_vcdom.rb +0 -11
data/Rakefile
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
gem 'hoe', '>= 2.1.0'
|
3
|
-
require 'hoe'
|
4
|
-
require 'fileutils'
|
5
|
-
require './lib/vcdom'
|
6
|
-
|
7
|
-
Hoe.plugin :newgem
|
8
|
-
# Hoe.plugin :website
|
9
|
-
# Hoe.plugin :cucumberfeatures
|
10
|
-
|
11
|
-
# Generate all the Rake tasks
|
12
|
-
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
13
|
-
$hoe = Hoe.spec 'vcdom' do
|
14
|
-
self.developer 'Y. NOBUOKA', 'nobuoka@r-definition.com'
|
15
|
-
self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
16
|
-
self.rubyforge_name = 'vcdom' # TODO this is default value
|
17
|
-
# self.extra_deps = [['activesupport','>= 2.0.2']]
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
require 'newgem/tasks'
|
22
|
-
Dir['tasks/**/*.rake'].each { |t| load t }
|
23
|
-
|
24
|
-
# TODO - want other tests/tasks run by default? Add them to the list
|
25
|
-
# remove_task :default
|
26
|
-
# task :default => [:spec, :features]
|
data/lib/vcdom/minidom/attr.rb
DELETED
@@ -1,139 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require "vcdom/minidom/node"
|
4
|
-
require "vcdom/minidom/mod_parent_node"
|
5
|
-
|
6
|
-
module VCDOM
|
7
|
-
module MiniDOM
|
8
|
-
class Attr < Node
|
9
|
-
|
10
|
-
module OwnerElementManageable
|
11
|
-
protected
|
12
|
-
def owner_element=( element )
|
13
|
-
@owner_element = element
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
include ModParentNode
|
18
|
-
include OwnerElementManageable
|
19
|
-
|
20
|
-
def node_type
|
21
|
-
return Node::ATTRIBUTE_NODE
|
22
|
-
end
|
23
|
-
|
24
|
-
# ===== Attributes =====
|
25
|
-
|
26
|
-
# name of type DOMString, readonly
|
27
|
-
# Returns the name of this attribute.
|
28
|
-
# If Node.localName is different from null, this attribute is a qualified name.
|
29
|
-
def name
|
30
|
-
return @name
|
31
|
-
end
|
32
|
-
alias :node_name :name
|
33
|
-
|
34
|
-
# value of type DOMString
|
35
|
-
# On retrieval, the value of the attribute is returned as a string.
|
36
|
-
# Character and general entity references are replaced with their values.
|
37
|
-
# See also the method getAttribute on the Element interface.
|
38
|
-
# On setting, this creates a Text node with the unparsed contents of the string,
|
39
|
-
# i.e. any characters that an XML processor would recognize as markup are instead
|
40
|
-
# treated as literal text.
|
41
|
-
# See also the method Element.setAttribute().
|
42
|
-
# Some specialized implementations, such as some [SVG 1.1] implementations,
|
43
|
-
# may do normalization automatically, even after mutation; in such case, the
|
44
|
-
# value on retrieval may differ from the value on setting.
|
45
|
-
#
|
46
|
-
# Exceptions on setting
|
47
|
-
# DOMException
|
48
|
-
# NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
|
49
|
-
def value
|
50
|
-
return self.text_content
|
51
|
-
end
|
52
|
-
def value=( value )
|
53
|
-
if self.is_readonly then
|
54
|
-
raise DOMException.new( DOMException::NO_MODIFICATION_ALLOWED_ERR,
|
55
|
-
'This node is readonly.' )
|
56
|
-
end
|
57
|
-
if ! value.instance_of? String then
|
58
|
-
raise TypeError.new( "The argument must be String object." )
|
59
|
-
end
|
60
|
-
self.text_content = value
|
61
|
-
end
|
62
|
-
|
63
|
-
# nodeValue of type DOMString
|
64
|
-
# The value of this node, depending on its type; see the table above.
|
65
|
-
# When it is defined to be null, setting it has no effect, including if the node is read-only.
|
66
|
-
#
|
67
|
-
# Interface nodeValue
|
68
|
-
# ------------------------------------------------------------------------------------------------
|
69
|
-
# Attr same as Attr.value
|
70
|
-
#
|
71
|
-
# Exceptions on setting
|
72
|
-
# DOMException
|
73
|
-
# NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly and
|
74
|
-
# if it is not defined to be null.
|
75
|
-
# Exceptions on retrieval
|
76
|
-
# DOMException
|
77
|
-
# DOMSTRING_SIZE_ERR: Raised when it would return more characters than
|
78
|
-
# fit in a DOMString variable on the implementation platform.
|
79
|
-
#
|
80
|
-
# Attr, PI, CharacterData ( = CDATASection, Comment, Text ) でオーバーロード
|
81
|
-
alias :node_value :value
|
82
|
-
alias :node_value= :value=
|
83
|
-
|
84
|
-
# ownerElement of type Element, readonly, introduced in DOM Level 2
|
85
|
-
# The Element node this attribute is attached to or null if this attribute is not in use.
|
86
|
-
def owner_element; return @owner_element end
|
87
|
-
|
88
|
-
# specified of type boolean, readonly
|
89
|
-
# True if this attribute was explicitly given a value in the instance document,
|
90
|
-
# false otherwise.
|
91
|
-
# #=> この属性 (specified ではなく Attr ノード) が, 文書中で明示的に値を与えられている場合は
|
92
|
-
# true, さもなければ false である.
|
93
|
-
# If the application changed the value of this attribute node (even if it ends
|
94
|
-
# up having the same value as the default value) then it is set to true.
|
95
|
-
# #=> もし, アプリケーションがこの Attr ノードの値を変化させた場合 (たとえ結果的にデフォルト値と同じ
|
96
|
-
# 値であったとしても), true になる.
|
97
|
-
# The implementation may handle attributes with default values from other schemas
|
98
|
-
# similarly but applications should use Document.normalizeDocument() to guarantee
|
99
|
-
# this information is up-to-date.
|
100
|
-
# #=> ...
|
101
|
-
def specified
|
102
|
-
return true
|
103
|
-
end
|
104
|
-
|
105
|
-
# ===== コンストラクタ =====
|
106
|
-
# Exceptions
|
107
|
-
# DOMException
|
108
|
-
# INVALID_CHARACTER_ERR: Raised if the specified name is not an XML name according to
|
109
|
-
# the XML version in use specified in the Document.xmlVersion attribute.
|
110
|
-
def initialize( owner_document, name )
|
111
|
-
if XMLRegExp::NAME !~ name then
|
112
|
-
# the specified qualified name is not an XML name
|
113
|
-
raise DOMException.new( DOMException::INVALID_CHARACTER_ERR,
|
114
|
-
'The specified name "' + name + '" is not an XML name.' )
|
115
|
-
end
|
116
|
-
super( owner_document )
|
117
|
-
init_mod_parent_node()
|
118
|
-
@name = name
|
119
|
-
end
|
120
|
-
|
121
|
-
protected
|
122
|
-
def name=( name )
|
123
|
-
@name = name
|
124
|
-
end
|
125
|
-
def check_hierarchy( new_child )
|
126
|
-
# Text, EntityReference
|
127
|
-
super( new_child, true )
|
128
|
-
case new_child.node_type
|
129
|
-
when Node::TEXT_NODE, Node::ENTITY_REFERENCE_NODE then
|
130
|
-
return true
|
131
|
-
else
|
132
|
-
raise DOMException.new( DOMException::HIERARCHY_REQUEST_ERR,
|
133
|
-
'This node is of a type that does not allow children of the type of the newChild node.' )
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require "vcdom/minidom/node"
|
4
|
-
require "vcdom/minidom/mod_parent_node"
|
5
|
-
require "vcdom/minidom/mod_namespaceuri_manageable"
|
6
|
-
|
7
|
-
module VCDOM
|
8
|
-
module MiniDOM
|
9
|
-
class AttrNS < Attr
|
10
|
-
|
11
|
-
include ModNamespaceURIManageable
|
12
|
-
|
13
|
-
# DOMException
|
14
|
-
# INVALID_CHARACTER_ERR: Raised if the specified qualifiedName is not an XML name according
|
15
|
-
# to the XML version in use specified in the Document.xmlVersion attribute.
|
16
|
-
# NAMESPACE_ERR: Raised if the qualifiedName is a malformed qualified name,
|
17
|
-
# if the qualifiedName has a prefix and the namespaceURI is null,
|
18
|
-
# if the qualifiedName has a prefix that is "xml" and the namespaceURI is different
|
19
|
-
# from "http://www.w3.org/XML/1998/namespace", if the qualifiedName or its prefix is
|
20
|
-
# "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/",
|
21
|
-
# or if the namespaceURI is "http://www.w3.org/2000/xmlns/" and
|
22
|
-
# neither the qualifiedName nor its prefix is "xmlns".
|
23
|
-
# #=> QName が奇形の場合, QName が接頭辞を持ちながら名前空間 URI が null の場合,
|
24
|
-
# QName の接頭辞が "xml" なのに名前空間 URI が
|
25
|
-
# "http://www.w3.org/XML/1998/namespace" ではない場合, QName の接頭辞が
|
26
|
-
# "xmlns" にもかかわらず名前空間 URI が "http://www.w3.org/2000/xmlns/"
|
27
|
-
# ではないとき, そして名前空間 URI が "http://www.w3.org/2000/xmlns/" なのに,
|
28
|
-
# QName または接頭辞が "xmlns" ではないとき例外発生.
|
29
|
-
# NOT_SUPPORTED_ERR: Always thrown if the current document does not support the "XML" feature,
|
30
|
-
# since namespaces were defined by XML.
|
31
|
-
def initialize( owner_document, namespace_uri, qualified_name )
|
32
|
-
begin
|
33
|
-
super( owner_document, qualified_name )
|
34
|
-
rescue DOMException => err
|
35
|
-
if err.code == DOMException::INVALID_CHARACTER_ERR then
|
36
|
-
raise DOMException.new( DOMException::INVALID_CHARACTER_ERR,
|
37
|
-
'The specified qualified name "' + qualified_name + '" is not an XML name.' )
|
38
|
-
else
|
39
|
-
raise err
|
40
|
-
end
|
41
|
-
end
|
42
|
-
init_mod_namespaceuri_manageable( namespace_uri, qualified_name )
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require "vcdom/minidom/node"
|
4
|
-
require "vcdom/minidom/character_data"
|
5
|
-
require "vcdom/minidom/mod_child_node"
|
6
|
-
require "vcdom/minidom/dom_exception"
|
7
|
-
|
8
|
-
module VCDOM
|
9
|
-
module MiniDOM
|
10
|
-
class CDATASection < CharacterData
|
11
|
-
|
12
|
-
# nodeType of type unsigned short, readonly
|
13
|
-
# A code representing the type of the underlying object, as defined above.
|
14
|
-
def node_type
|
15
|
-
return Node::CDATA_SECTION_NODE
|
16
|
-
end
|
17
|
-
|
18
|
-
# nodeName of type DOMString, readonly
|
19
|
-
# The name of this node, depending on its type; see the table above.
|
20
|
-
#
|
21
|
-
# Interface nodeName
|
22
|
-
# ------------------------------------------------------------
|
23
|
-
# CDATASection "#cdata-section"
|
24
|
-
def node_name
|
25
|
-
return "#cdata-section"
|
26
|
-
end
|
27
|
-
|
28
|
-
def initialize( owner_document, value )
|
29
|
-
super( owner_document, value )
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,263 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require "vcdom/minidom/node"
|
4
|
-
require "vcdom/minidom/mod_child_node"
|
5
|
-
require "vcdom/minidom/dom_exception"
|
6
|
-
|
7
|
-
module VCDOM
|
8
|
-
module MiniDOM
|
9
|
-
class CharacterData < Node
|
10
|
-
|
11
|
-
include ModChildNode
|
12
|
-
|
13
|
-
# data of type DOMString
|
14
|
-
#
|
15
|
-
# The character data of the node that implements this interface.
|
16
|
-
# The DOM implementation may not put arbitrary limits on the amount of
|
17
|
-
# data that may be stored in a CharacterData node.
|
18
|
-
# However, implementation limits may mean that the entirety of a node's
|
19
|
-
# data may not fit into a single DOMString.
|
20
|
-
# In such cases, the user may call substringData to retrieve the data in
|
21
|
-
# appropriately sized pieces.
|
22
|
-
#
|
23
|
-
# Exceptions on setting
|
24
|
-
# DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
|
25
|
-
# Exceptions on retrieval
|
26
|
-
# DOMException DOMSTRING_SIZE_ERR: Raised when it would return more characters than fit in a DOMString variable on the implementation platform.
|
27
|
-
def data
|
28
|
-
return @data
|
29
|
-
end
|
30
|
-
def data=( value )
|
31
|
-
if self.is_readonly then
|
32
|
-
raise DOMException.new( DOMException::NO_MODIFICATION_ALLOWED_ERR,
|
33
|
-
'This node is readonly.' )
|
34
|
-
end
|
35
|
-
@data = value
|
36
|
-
end
|
37
|
-
|
38
|
-
# nodeValue of type DOMString
|
39
|
-
# The value of this node, depending on its type; see the table above.
|
40
|
-
# When it is defined to be null, setting it has no effect, including if the node is read-only.
|
41
|
-
#
|
42
|
-
# Interface nodeValue
|
43
|
-
# ------------------------------------------------------------------------------------------------
|
44
|
-
# Text same as CharacterData.data, the content of the text node
|
45
|
-
#
|
46
|
-
# Exceptions on setting
|
47
|
-
# DOMException
|
48
|
-
# NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly and
|
49
|
-
# if it is not defined to be null.
|
50
|
-
# Exceptions on retrieval
|
51
|
-
# DOMException
|
52
|
-
# DOMSTRING_SIZE_ERR: Raised when it would return more characters than
|
53
|
-
# fit in a DOMString variable on the implementation platform.
|
54
|
-
#
|
55
|
-
# Attr, PI, CharacterData ( = CDATASection, Comment, Text ) でオーバーロード
|
56
|
-
alias :node_value :data
|
57
|
-
alias :node_value= :data=
|
58
|
-
|
59
|
-
|
60
|
-
# ===== Attributes =====
|
61
|
-
|
62
|
-
# length of type unsigned long, readonly
|
63
|
-
#
|
64
|
-
# The number of 16-bit units that are available through data and the substringData method below.
|
65
|
-
# This may have the value zero, i.e., CharacterData nodes may be empty.
|
66
|
-
def length
|
67
|
-
count = 0
|
68
|
-
while /\A.{#{count}}/mu =~ @data do
|
69
|
-
count += 1
|
70
|
-
end
|
71
|
-
count -= 1
|
72
|
-
return count
|
73
|
-
end
|
74
|
-
|
75
|
-
# ===== Methods =====
|
76
|
-
|
77
|
-
# appendData
|
78
|
-
#
|
79
|
-
# Append the string to the end of the character data of the node.
|
80
|
-
# Upon success, data provides access to the concatenation of data and the DOMString specified.
|
81
|
-
#
|
82
|
-
# Parameters
|
83
|
-
# arg of type DOMString
|
84
|
-
# The DOMString to append.
|
85
|
-
# Exceptions
|
86
|
-
# DOMException
|
87
|
-
# NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
88
|
-
# No Return Value
|
89
|
-
def append_data( arg )
|
90
|
-
if self.is_readonly then
|
91
|
-
raise DOMException.new( DOMException::NO_MODIFICATION_ALLOWED_ERR,
|
92
|
-
'This node is readonly.' )
|
93
|
-
end
|
94
|
-
@data = @data + arg
|
95
|
-
return nil
|
96
|
-
end
|
97
|
-
|
98
|
-
# deleteData
|
99
|
-
# Remove a range of 16-bit units from the node. Upon success, data and length
|
100
|
-
# reflect the change.
|
101
|
-
#
|
102
|
-
# Parameters
|
103
|
-
# offset of type unsigned long
|
104
|
-
# The offset from which to start removing.
|
105
|
-
# count of type unsigned long
|
106
|
-
# The number of 16-bit units to delete. If the sum of offset and count
|
107
|
-
# exceeds length then all 16-bit units from offset to the end of the data
|
108
|
-
# are deleted.
|
109
|
-
# Exceptions
|
110
|
-
# DOMException
|
111
|
-
# INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
|
112
|
-
# than the number of 16-bit units in data, or if the specified
|
113
|
-
# count is negative.
|
114
|
-
# NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
115
|
-
# No Return Value
|
116
|
-
def delete_data( offset, count )
|
117
|
-
if self.is_readonly then
|
118
|
-
raise DOMException.new( DOMException::NO_MODIFICATION_ALLOWED_ERR,
|
119
|
-
'This node is readonly.' )
|
120
|
-
end
|
121
|
-
begin
|
122
|
-
substrs = split( offset, count )
|
123
|
-
rescue DOMException => err
|
124
|
-
raise DOMException.new( err )
|
125
|
-
end
|
126
|
-
@data = substrs[0] + substrs[2]
|
127
|
-
return nil
|
128
|
-
end
|
129
|
-
|
130
|
-
# insertData
|
131
|
-
#
|
132
|
-
# Insert a string at the specified 16-bit unit offset.
|
133
|
-
#
|
134
|
-
# Parameters
|
135
|
-
# offset of type unsigned long
|
136
|
-
# The character offset at which to insert.
|
137
|
-
# arg of type DOMString
|
138
|
-
# The DOMString to insert.
|
139
|
-
# Exceptions
|
140
|
-
# DOMException
|
141
|
-
# INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
|
142
|
-
# than the number of 16-bit units in data.
|
143
|
-
# NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
144
|
-
# No Return Value
|
145
|
-
def insert_data( offset, arg )
|
146
|
-
if self.is_readonly then
|
147
|
-
raise DOMException.new( DOMException::NO_MODIFICATION_ALLOWED_ERR,
|
148
|
-
'This node is readonly.' )
|
149
|
-
end
|
150
|
-
begin
|
151
|
-
substrs = split( offset )
|
152
|
-
rescue DOMException => err
|
153
|
-
raise DOMException.new( err )
|
154
|
-
end
|
155
|
-
@data = substrs[0] + arg + substrs[1]
|
156
|
-
return nil
|
157
|
-
end
|
158
|
-
|
159
|
-
# replaceData
|
160
|
-
#
|
161
|
-
# Replace the characters starting at the specified 16-bit unit offset with
|
162
|
-
# the specified string.
|
163
|
-
#
|
164
|
-
# Parameters
|
165
|
-
# offset of type unsigned long
|
166
|
-
# The offset from which to start replacing.
|
167
|
-
# count of type unsigned long
|
168
|
-
# The number of 16-bit units to replace. If the sum of offset and count
|
169
|
-
# exceeds length, then all 16-bit units to the end of the data are replaced;
|
170
|
-
# (i.e., the effect is the same as a remove method call with the same range,
|
171
|
-
# followed by an append method invocation).
|
172
|
-
# arg of type DOMString
|
173
|
-
# The DOMString with which the range must be replaced.
|
174
|
-
# Exceptions
|
175
|
-
# DOMException
|
176
|
-
# INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
|
177
|
-
# than the number of 16-bit units in data, or if the specified count
|
178
|
-
# is negative.
|
179
|
-
# NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
|
180
|
-
# No Return Value
|
181
|
-
def replace_data( offset, count, arg )
|
182
|
-
if self.is_readonly then
|
183
|
-
raise DOMException.new( DOMException::NO_MODIFICATION_ALLOWED_ERR,
|
184
|
-
'This node is readonly.' )
|
185
|
-
end
|
186
|
-
begin
|
187
|
-
substrs = split( offset, count )
|
188
|
-
rescue DOMException => err
|
189
|
-
raise DOMException.new( err )
|
190
|
-
end
|
191
|
-
@data = substrs[0] + arg + substrs[2]
|
192
|
-
return nil
|
193
|
-
end
|
194
|
-
|
195
|
-
# substringData
|
196
|
-
#
|
197
|
-
# Extracts a range of data from the node.
|
198
|
-
#
|
199
|
-
# Parameters
|
200
|
-
# offset of type unsigned long
|
201
|
-
# Start offset of substring to extract.
|
202
|
-
# count of type unsigned long
|
203
|
-
# The number of 16-bit units to extract.
|
204
|
-
# Return Value
|
205
|
-
# DOMString
|
206
|
-
# The specified substring. If the sum of offset and count exceeds the length,
|
207
|
-
# then all 16-bit units to the end of the data are returned.
|
208
|
-
# Exceptions
|
209
|
-
# DOMException
|
210
|
-
# INDEX_SIZE_ERR: Raised if the specified offset is negative or greater than
|
211
|
-
# the number of 16-bit units in data, or if the specified count is
|
212
|
-
# negative.
|
213
|
-
# DOMSTRING_SIZE_ERR: Raised if the specified range of text does not fit
|
214
|
-
# into a DOMString.
|
215
|
-
def substring_data( offset, count )
|
216
|
-
begin
|
217
|
-
substrs = split( offset, count )
|
218
|
-
rescue DOMException => err
|
219
|
-
raise DOMException.new( err )
|
220
|
-
end
|
221
|
-
return substrs[1]
|
222
|
-
end
|
223
|
-
|
224
|
-
|
225
|
-
def initialize( owner_document, value )
|
226
|
-
super( owner_document )
|
227
|
-
init_mod_child_node()
|
228
|
-
@data = value
|
229
|
-
end
|
230
|
-
|
231
|
-
private
|
232
|
-
def split( offset, count = nil )
|
233
|
-
if offset < 0 then
|
234
|
-
raise DOMException.new( DOMException::INDEX_SIZE_ERR,
|
235
|
-
'The specified offset is negative.' )
|
236
|
-
end
|
237
|
-
if /\A(.{#{offset}})(.*)\Z/mu =~ @data then
|
238
|
-
substr1 = ( $1 or '' )
|
239
|
-
substr2 = ( $2 or '' )
|
240
|
-
else
|
241
|
-
raise DOMException.new( DOMException::INDEX_SIZE_ERR,
|
242
|
-
'The specified offset is greater than the number of Character data.' )
|
243
|
-
end
|
244
|
-
if count.nil? then
|
245
|
-
return [substr1, substr2]
|
246
|
-
else
|
247
|
-
if count < 0 then
|
248
|
-
raise DOMException.new( DOMException::INDEX_SIZE_ERR,
|
249
|
-
'The specified count is negative.' )
|
250
|
-
end
|
251
|
-
if /\A(.{#{count}})(.*)\Z/mu =~ substr2 then
|
252
|
-
substr2 = ( $1 or '' )
|
253
|
-
substr3 = ( $2 or '' )
|
254
|
-
else
|
255
|
-
substr3 = ''
|
256
|
-
end
|
257
|
-
return [substr1, substr2, substr3]
|
258
|
-
end
|
259
|
-
end
|
260
|
-
|
261
|
-
end
|
262
|
-
end
|
263
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require "vcdom/minidom/node"
|
4
|
-
require "vcdom/minidom/character_data"
|
5
|
-
require "vcdom/minidom/mod_child_node"
|
6
|
-
require "vcdom/minidom/dom_exception"
|
7
|
-
|
8
|
-
module VCDOM
|
9
|
-
module MiniDOM
|
10
|
-
class Comment < CharacterData
|
11
|
-
|
12
|
-
# nodeType of type unsigned short, readonly
|
13
|
-
# A code representing the type of the underlying object, as defined above.
|
14
|
-
def node_type
|
15
|
-
return Node::COMMENT_NODE
|
16
|
-
end
|
17
|
-
|
18
|
-
# nodeName of type DOMString, readonly
|
19
|
-
# The name of this node, depending on its type; see the table above.
|
20
|
-
#
|
21
|
-
# Interface nodeName
|
22
|
-
# ------------------------------------------------------------
|
23
|
-
# Comment "#comment"
|
24
|
-
def node_name
|
25
|
-
return "#comment"
|
26
|
-
end
|
27
|
-
|
28
|
-
def initialize( owner_document, value )
|
29
|
-
super( owner_document, value )
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|