vcdom 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|