nokogiri 1.4.7-x86-mswin32-60 → 1.5.0-x86-mswin32-60
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of nokogiri might be problematic. Click here for more details.
- data/CHANGELOG.ja.rdoc +59 -1
- data/CHANGELOG.rdoc +51 -2
- data/Manifest.txt +66 -66
- data/README.ja.rdoc +4 -0
- data/README.rdoc +31 -3
- data/Rakefile +111 -135
- data/bin/nokogiri +1 -2
- data/ext/nokogiri/extconf.rb +9 -3
- data/ext/nokogiri/nokogiri.c +21 -3
- data/ext/nokogiri/nokogiri.h +0 -2
- data/ext/nokogiri/xml_node.c +0 -6
- data/ext/nokogiri/xml_relax_ng.c +0 -7
- data/ext/nokogiri/xml_sax_parser.c +9 -4
- data/ext/nokogiri/xslt_stylesheet.c +5 -1
- data/lib/nokogiri.rb +19 -25
- data/lib/nokogiri/1.8/nokogiri.so +0 -0
- data/lib/nokogiri/1.9/nokogiri.so +0 -0
- data/lib/nokogiri/css.rb +0 -1
- data/lib/nokogiri/html.rb +1 -0
- data/lib/nokogiri/html/document.rb +9 -2
- data/lib/nokogiri/html/element_description_defaults.rb +671 -0
- data/lib/nokogiri/version.rb +76 -31
- data/lib/nokogiri/xml/attribute_decl.rb +1 -1
- data/lib/nokogiri/xml/builder.rb +7 -0
- data/lib/nokogiri/xml/document.rb +17 -1
- data/lib/nokogiri/xml/document_fragment.rb +14 -0
- data/lib/nokogiri/xml/dtd.rb +1 -1
- data/lib/nokogiri/xml/element_decl.rb +1 -1
- data/lib/nokogiri/xml/entity_decl.rb +1 -1
- data/lib/nokogiri/xml/node.rb +39 -15
- data/lib/nokogiri/xml/node/save_options.rb +14 -5
- data/lib/nokogiri/xml/node_set.rb +7 -0
- data/lib/nokogiri/xml/reader.rb +2 -2
- data/lib/nokogiri/xml/sax/document.rb +2 -2
- data/lib/nokogiri/xslt/stylesheet.rb +1 -1
- data/nokogiri_help_responses.md +40 -0
- data/tasks/cross_compile.rb +134 -155
- data/tasks/nokogiri.org.rb +18 -0
- data/tasks/test.rb +2 -2
- data/test/files/metacharset.html +10 -0
- data/test/files/noencoding.html +47 -0
- data/test/helper.rb +2 -1
- data/test/html/sax/test_parser.rb +22 -5
- data/test/html/test_document.rb +21 -2
- data/test/html/test_document_encoding.rb +9 -1
- data/test/html/test_document_fragment.rb +5 -3
- data/test/html/test_element_description.rb +4 -2
- data/test/test_memory_leak.rb +4 -39
- data/test/test_nokogiri.rb +14 -20
- data/test/test_reader.rb +12 -8
- data/test/xml/node/test_save_options.rb +10 -2
- data/test/xml/sax/test_parser.rb +14 -7
- data/test/xml/test_attribute_decl.rb +7 -3
- data/test/xml/test_builder.rb +17 -0
- data/test/xml/test_document.rb +31 -4
- data/test/xml/test_dtd.rb +13 -3
- data/test/xml/test_element_content.rb +1 -1
- data/test/xml/test_element_decl.rb +1 -1
- data/test/xml/test_entity_decl.rb +12 -10
- data/test/xml/test_namespace.rb +7 -5
- data/test/xml/test_node.rb +21 -10
- data/test/xml/test_node_reparenting.rb +16 -3
- data/test/xml/test_node_set.rb +34 -0
- data/test/xslt/test_custom_functions.rb +2 -2
- data/test/xslt/test_exception_handling.rb +37 -0
- metadata +110 -88
- data/lib/nokogiri/ffi/encoding_handler.rb +0 -42
- data/lib/nokogiri/ffi/html/document.rb +0 -28
- data/lib/nokogiri/ffi/html/element_description.rb +0 -81
- data/lib/nokogiri/ffi/html/entity_lookup.rb +0 -16
- data/lib/nokogiri/ffi/html/sax/parser_context.rb +0 -38
- data/lib/nokogiri/ffi/io_callbacks.rb +0 -42
- data/lib/nokogiri/ffi/libxml.rb +0 -420
- data/lib/nokogiri/ffi/structs/common_node.rb +0 -38
- data/lib/nokogiri/ffi/structs/html_elem_desc.rb +0 -24
- data/lib/nokogiri/ffi/structs/html_entity_desc.rb +0 -13
- data/lib/nokogiri/ffi/structs/xml_alloc.rb +0 -16
- data/lib/nokogiri/ffi/structs/xml_attr.rb +0 -20
- data/lib/nokogiri/ffi/structs/xml_attribute.rb +0 -27
- data/lib/nokogiri/ffi/structs/xml_buffer.rb +0 -16
- data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +0 -11
- data/lib/nokogiri/ffi/structs/xml_document.rb +0 -117
- data/lib/nokogiri/ffi/structs/xml_dtd.rb +0 -28
- data/lib/nokogiri/ffi/structs/xml_element.rb +0 -26
- data/lib/nokogiri/ffi/structs/xml_element_content.rb +0 -17
- data/lib/nokogiri/ffi/structs/xml_entity.rb +0 -32
- data/lib/nokogiri/ffi/structs/xml_enumeration.rb +0 -12
- data/lib/nokogiri/ffi/structs/xml_node.rb +0 -28
- data/lib/nokogiri/ffi/structs/xml_node_set.rb +0 -53
- data/lib/nokogiri/ffi/structs/xml_notation.rb +0 -11
- data/lib/nokogiri/ffi/structs/xml_ns.rb +0 -15
- data/lib/nokogiri/ffi/structs/xml_parser_context.rb +0 -20
- data/lib/nokogiri/ffi/structs/xml_parser_input.rb +0 -19
- data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +0 -14
- data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +0 -51
- data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +0 -124
- data/lib/nokogiri/ffi/structs/xml_schema.rb +0 -13
- data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +0 -31
- data/lib/nokogiri/ffi/structs/xml_text_reader.rb +0 -12
- data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +0 -38
- data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +0 -35
- data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +0 -20
- data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +0 -13
- data/lib/nokogiri/ffi/weak_bucket.rb +0 -40
- data/lib/nokogiri/ffi/xml/attr.rb +0 -41
- data/lib/nokogiri/ffi/xml/attribute_decl.rb +0 -27
- data/lib/nokogiri/ffi/xml/cdata.rb +0 -19
- data/lib/nokogiri/ffi/xml/comment.rb +0 -18
- data/lib/nokogiri/ffi/xml/document.rb +0 -174
- data/lib/nokogiri/ffi/xml/document_fragment.rb +0 -21
- data/lib/nokogiri/ffi/xml/dtd.rb +0 -67
- data/lib/nokogiri/ffi/xml/element_content.rb +0 -43
- data/lib/nokogiri/ffi/xml/element_decl.rb +0 -19
- data/lib/nokogiri/ffi/xml/entity_decl.rb +0 -36
- data/lib/nokogiri/ffi/xml/entity_reference.rb +0 -19
- data/lib/nokogiri/ffi/xml/namespace.rb +0 -44
- data/lib/nokogiri/ffi/xml/node.rb +0 -559
- data/lib/nokogiri/ffi/xml/node_set.rb +0 -150
- data/lib/nokogiri/ffi/xml/processing_instruction.rb +0 -20
- data/lib/nokogiri/ffi/xml/reader.rb +0 -236
- data/lib/nokogiri/ffi/xml/relax_ng.rb +0 -85
- data/lib/nokogiri/ffi/xml/sax/parser.rb +0 -143
- data/lib/nokogiri/ffi/xml/sax/parser_context.rb +0 -79
- data/lib/nokogiri/ffi/xml/sax/push_parser.rb +0 -51
- data/lib/nokogiri/ffi/xml/schema.rb +0 -109
- data/lib/nokogiri/ffi/xml/syntax_error.rb +0 -98
- data/lib/nokogiri/ffi/xml/text.rb +0 -18
- data/lib/nokogiri/ffi/xml/xpath.rb +0 -9
- data/lib/nokogiri/ffi/xml/xpath_context.rb +0 -153
- data/lib/nokogiri/ffi/xslt/stylesheet.rb +0 -77
- data/lib/nokogiri/version_warning.rb +0 -14
- data/test/ffi/test_document.rb +0 -35
@@ -1,20 +0,0 @@
|
|
1
|
-
module Nokogiri
|
2
|
-
module LibXML # :nodoc:
|
3
|
-
|
4
|
-
class XmlXpathParserContext < FFI::Struct # :nodoc:
|
5
|
-
|
6
|
-
layout(
|
7
|
-
:cur, :pointer,
|
8
|
-
:base, :pointer,
|
9
|
-
:error, :int,
|
10
|
-
:context, :pointer
|
11
|
-
)
|
12
|
-
|
13
|
-
def context
|
14
|
-
p = self[:context]
|
15
|
-
LibXML::XmlXpathContextCast.new(p)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# :stopdoc:
|
2
|
-
if ENV['NOKOGIRI_ID2REF'] || RUBY_PLATFORM !~ /java/
|
3
|
-
Nokogiri::VERSION_INFO['refs'] = "id2ref"
|
4
|
-
else
|
5
|
-
require 'weakling'
|
6
|
-
Nokogiri::VERSION_INFO['refs'] = "weakling"
|
7
|
-
end
|
8
|
-
|
9
|
-
module Nokogiri
|
10
|
-
class WeakBucket
|
11
|
-
if Nokogiri::VERSION_INFO['refs'] == "weakling"
|
12
|
-
@@bucket = Weakling::IdHash.new
|
13
|
-
@@semaphore = Mutex.new
|
14
|
-
|
15
|
-
def WeakBucket.get_object(cstruct)
|
16
|
-
@@semaphore.synchronize do
|
17
|
-
@@bucket[cstruct.ruby_node_pointer]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def WeakBucket.set_object(cstruct, object)
|
22
|
-
@@semaphore.synchronize do
|
23
|
-
cstruct.ruby_node_pointer = @@bucket.add(object)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
else
|
28
|
-
|
29
|
-
def WeakBucket.get_object(cstruct)
|
30
|
-
ptr = cstruct.ruby_node_pointer
|
31
|
-
ptr != 0 ? ObjectSpace._id2ref(ptr) : nil
|
32
|
-
end
|
33
|
-
|
34
|
-
def WeakBucket.set_object(cstruct, object)
|
35
|
-
cstruct.ruby_node_pointer = object.object_id
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
# :startdoc:
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Nokogiri
|
2
|
-
module XML
|
3
|
-
class Attr < Node
|
4
|
-
|
5
|
-
def self.new(document, name, *rest) # :nodoc:
|
6
|
-
node_ptr = LibXML.xmlNewDocProp(document.cstruct, name.to_s, nil)
|
7
|
-
node_cstruct = LibXML::XmlNode.new(node_ptr)
|
8
|
-
node_cstruct.keep_reference_from_document!
|
9
|
-
|
10
|
-
node = Node.wrap(node_cstruct, self)
|
11
|
-
node.send :initialize, document, name, *rest
|
12
|
-
yield node if block_given?
|
13
|
-
node
|
14
|
-
end
|
15
|
-
|
16
|
-
def value=(content) # :nodoc:
|
17
|
-
unless cstruct[:children].null?
|
18
|
-
LibXML.xmlFreeNodeList(cstruct[:children])
|
19
|
-
end
|
20
|
-
cstruct[:children] = cstruct[:last] = nil
|
21
|
-
return unless content
|
22
|
-
|
23
|
-
char_ptr = LibXML.xmlEncodeEntitiesReentrant(cstruct[:doc], content)
|
24
|
-
|
25
|
-
cstruct[:children] = LibXML.xmlStringGetNodeList(cstruct[:doc], char_ptr)
|
26
|
-
child_cstruct = cstruct[:children]
|
27
|
-
while ! child_cstruct.null?
|
28
|
-
child = Node.wrap(child_cstruct)
|
29
|
-
child.cstruct[:parent] = cstruct
|
30
|
-
child.cstruct[:doc] = cstruct[:doc]
|
31
|
-
cstruct[:last] = child.cstruct
|
32
|
-
child_cstruct = child.cstruct[:next]
|
33
|
-
end
|
34
|
-
LibXML.xmlFree(char_ptr)
|
35
|
-
|
36
|
-
content
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Nokogiri
|
2
|
-
module XML
|
3
|
-
# :stopdoc:
|
4
|
-
class AttributeDecl < Nokogiri::XML::Node
|
5
|
-
def enumeration
|
6
|
-
list = []
|
7
|
-
return list if cstruct[:tree].null?
|
8
|
-
head = LibXML::XmlEnumeration.new cstruct[:tree]
|
9
|
-
loop do
|
10
|
-
list << head[:name]
|
11
|
-
break if head[:next].null?
|
12
|
-
head = LibXML::XmlEnumeration.new head[:next]
|
13
|
-
end
|
14
|
-
list
|
15
|
-
end
|
16
|
-
|
17
|
-
def attribute_type
|
18
|
-
cstruct[:atype]
|
19
|
-
end
|
20
|
-
|
21
|
-
def default
|
22
|
-
cstruct[:default_value]
|
23
|
-
end
|
24
|
-
end
|
25
|
-
# :startdoc:
|
26
|
-
end
|
27
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Nokogiri
|
2
|
-
module XML
|
3
|
-
class CDATA < Text
|
4
|
-
|
5
|
-
def self.new(document, content, *rest) # :nodoc:
|
6
|
-
length = content.nil? ? 0 : content.length
|
7
|
-
node_ptr = LibXML.xmlNewCDataBlock(document.cstruct[:doc], content, length)
|
8
|
-
node_cstruct = LibXML::XmlNode.new(node_ptr)
|
9
|
-
node_cstruct.keep_reference_from_document!
|
10
|
-
|
11
|
-
node = Node.wrap(node_cstruct, self)
|
12
|
-
node.send :initialize, document, content, *rest
|
13
|
-
yield node if block_given?
|
14
|
-
node
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Nokogiri
|
2
|
-
module XML
|
3
|
-
class Comment < CharacterData
|
4
|
-
|
5
|
-
def self.new(document, content, *rest) # :nodoc:
|
6
|
-
node_ptr = LibXML.xmlNewDocComment(document.cstruct, content)
|
7
|
-
node_cstruct = LibXML::XmlNode.new(node_ptr)
|
8
|
-
node_cstruct.keep_reference_from_document!
|
9
|
-
|
10
|
-
node = Node.wrap(node_ptr, self)
|
11
|
-
node.send :initialize, document, content, *rest
|
12
|
-
yield node if block_given?
|
13
|
-
node
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,174 +0,0 @@
|
|
1
|
-
# :stopdoc:
|
2
|
-
module Nokogiri
|
3
|
-
module XML
|
4
|
-
class Document < Node
|
5
|
-
|
6
|
-
attr_accessor :cstruct
|
7
|
-
|
8
|
-
def url
|
9
|
-
cstruct[:URL]
|
10
|
-
end
|
11
|
-
|
12
|
-
def root= new_root
|
13
|
-
old_root = nil
|
14
|
-
|
15
|
-
if new_root.nil?
|
16
|
-
old_root_ptr = LibXML.xmlDocGetRootElement(cstruct)
|
17
|
-
if (! old_root_ptr.null?)
|
18
|
-
old_root = Node.wrap(old_root_ptr)
|
19
|
-
LibXML.xmlUnlinkNode(old_root.cstruct)
|
20
|
-
old_root.cstruct.keep_reference_from_document!
|
21
|
-
end
|
22
|
-
return new_root
|
23
|
-
end
|
24
|
-
|
25
|
-
if new_root.cstruct[:doc] != cstruct[:doc]
|
26
|
-
old_root_ptr = LibXML.xmlDocGetRootElement(cstruct)
|
27
|
-
new_root_ptr = LibXML.xmlDocCopyNode(new_root.cstruct, cstruct, 1)
|
28
|
-
raise RuntimeError "Could not reparent node (xmlDocCopyNode)" if new_root_ptr.null?
|
29
|
-
new_root = Node.wrap(new_root_ptr)
|
30
|
-
end
|
31
|
-
LibXML.xmlDocSetRootElement(cstruct, new_root.cstruct)
|
32
|
-
if old_root_ptr && ! old_root_ptr.null?
|
33
|
-
LibXML::XmlNode.new(old_root_ptr).keep_reference_from_document!
|
34
|
-
end
|
35
|
-
new_root
|
36
|
-
end
|
37
|
-
|
38
|
-
def root
|
39
|
-
ptr = LibXML.xmlDocGetRootElement(cstruct)
|
40
|
-
ptr.null? ? nil : Node.wrap(LibXML::XmlNode.new(ptr))
|
41
|
-
end
|
42
|
-
|
43
|
-
def encoding= encoding
|
44
|
-
# TODO: if :encoding is already set, then it's probably getting leaked.
|
45
|
-
cstruct[:encoding] = LibXML.xmlStrdup(encoding)
|
46
|
-
end
|
47
|
-
|
48
|
-
def encoding
|
49
|
-
ptr = cstruct[:encoding]
|
50
|
-
ptr.null? ? nil : ptr.read_string
|
51
|
-
end
|
52
|
-
|
53
|
-
def version
|
54
|
-
cstruct[:version]
|
55
|
-
end
|
56
|
-
|
57
|
-
def self.read_io io, url, encoding, options
|
58
|
-
wrap_with_error_handling do
|
59
|
-
LibXML.xmlReadIO(IoCallbacks.reader(io), nil, nil, url, encoding, options)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.read_memory(string, url, encoding, options)
|
64
|
-
wrap_with_error_handling do
|
65
|
-
LibXML.xmlReadMemory(string, string.length, url, encoding, options)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def dup deep = 1
|
70
|
-
dup_ptr = LibXML.xmlCopyDoc(cstruct, deep)
|
71
|
-
return nil if dup_ptr.null?
|
72
|
-
|
73
|
-
# xmlCopyDoc does not preserve document type. wtf?
|
74
|
-
cstruct = LibXML::XmlDocumentCast.new(dup_ptr)
|
75
|
-
cstruct[:type] = self.type
|
76
|
-
|
77
|
-
self.class.wrap(dup_ptr)
|
78
|
-
end
|
79
|
-
|
80
|
-
def remove_namespaces!
|
81
|
-
self.class.recursively_remove_namespaces_from_node(root)
|
82
|
-
end
|
83
|
-
|
84
|
-
def create_entity(name, entity_type=Nokogiri::XML::EntityDecl::INTERNAL_GENERAL,
|
85
|
-
external_id=nil, system_id=nil, content=nil)
|
86
|
-
LibXML.xmlResetLastError()
|
87
|
-
ptr = LibXML.xmlAddDocEntity(cstruct, name, entity_type, external_id, system_id, content)
|
88
|
-
if ptr.null?
|
89
|
-
error = LibXML.xmlGetLastError()
|
90
|
-
if error
|
91
|
-
raise SyntaxError.wrap(error)
|
92
|
-
else
|
93
|
-
raise RuntimeError, "Could not create entity"
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
Node.wrap(LibXML::XmlEntity.new(ptr))
|
98
|
-
end
|
99
|
-
|
100
|
-
class << self
|
101
|
-
def new(*args)
|
102
|
-
version = args.first || "1.0"
|
103
|
-
doc = wrap(LibXML.xmlNewDoc(version))
|
104
|
-
doc.send :initialize, *args
|
105
|
-
doc
|
106
|
-
end
|
107
|
-
|
108
|
-
def wrap doc_struct
|
109
|
-
if doc_struct.is_a?(FFI::Pointer)
|
110
|
-
# cast native pointers up into a doc cstruct
|
111
|
-
return nil if doc_struct.null?
|
112
|
-
doc_struct = LibXML::XmlDocument.new(doc_struct)
|
113
|
-
end
|
114
|
-
|
115
|
-
doc = self.allocate
|
116
|
-
doc.cstruct = doc_struct
|
117
|
-
doc.cstruct.ruby_doc = doc
|
118
|
-
doc.instance_eval { @decorators = nil; @node_cache = [] }
|
119
|
-
doc.send :initialize
|
120
|
-
doc
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
private
|
125
|
-
|
126
|
-
class << self
|
127
|
-
def wrap_with_error_handling(&block)
|
128
|
-
error_list = []
|
129
|
-
LibXML.xmlInitParser()
|
130
|
-
LibXML.xmlResetLastError()
|
131
|
-
LibXML.xmlSetStructuredErrorFunc(nil, SyntaxError.error_array_pusher(error_list))
|
132
|
-
|
133
|
-
ptr = yield
|
134
|
-
|
135
|
-
LibXML.xmlSetStructuredErrorFunc(nil, nil)
|
136
|
-
|
137
|
-
if ptr.null?
|
138
|
-
error = LibXML.xmlGetLastError()
|
139
|
-
if error
|
140
|
-
raise SyntaxError.wrap(error)
|
141
|
-
else
|
142
|
-
raise RuntimeError, "Could not parse document"
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
document = wrap(ptr)
|
147
|
-
document.errors = error_list
|
148
|
-
return document
|
149
|
-
end
|
150
|
-
|
151
|
-
def recursively_remove_namespaces_from_node(node)
|
152
|
-
node.cstruct[:ns] = nil
|
153
|
-
node.children.each do |child|
|
154
|
-
recursively_remove_namespaces_from_node(child)
|
155
|
-
end
|
156
|
-
unless node.cstruct[:nsDef].nil?
|
157
|
-
LibXML.xmlFreeNsList(node.cstruct[:nsDef])
|
158
|
-
node.cstruct[:nsDef] = nil
|
159
|
-
end
|
160
|
-
unless node.cstruct[:properties].nil?
|
161
|
-
prop_ptr = node.cstruct[:properties]
|
162
|
-
while ! prop_ptr.null?
|
163
|
-
prop_cstruct = LibXML::XmlAttr.new(node.cstruct[:properties])
|
164
|
-
prop_cstruct[:ns] = nil unless prop_cstruct[:ns].nil?
|
165
|
-
prop_ptr = prop_cstruct[:next]
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
174
|
-
# :startdoc:
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Nokogiri
|
2
|
-
module XML
|
3
|
-
class DocumentFragment < Node
|
4
|
-
|
5
|
-
def self.new(document, *rest) # :nodoc:
|
6
|
-
node_ptr = LibXML.xmlNewDocFragment(document.cstruct)
|
7
|
-
node_cstruct = LibXML::XmlNode.new(node_ptr)
|
8
|
-
node_cstruct.keep_reference_from_document!
|
9
|
-
|
10
|
-
node = Node.wrap(node_cstruct, self)
|
11
|
-
|
12
|
-
node.send :initialize, document, *rest
|
13
|
-
yield node if block_given?
|
14
|
-
|
15
|
-
node
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
data/lib/nokogiri/ffi/xml/dtd.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
# :stopdoc:
|
2
|
-
module Nokogiri
|
3
|
-
module XML
|
4
|
-
class DTD < Node
|
5
|
-
def validate document
|
6
|
-
error_list = []
|
7
|
-
ctxt = LibXML.xmlNewValidCtxt
|
8
|
-
|
9
|
-
LibXML.xmlSetStructuredErrorFunc(nil, SyntaxError.error_array_pusher(error_list))
|
10
|
-
LibXML.xmlValidateDtd ctxt, document.cstruct, cstruct
|
11
|
-
|
12
|
-
LibXML.xmlSetStructuredErrorFunc nil, nil
|
13
|
-
|
14
|
-
LibXML.xmlFreeValidCtxt ctxt
|
15
|
-
|
16
|
-
error_list
|
17
|
-
end
|
18
|
-
|
19
|
-
def system_id
|
20
|
-
cstruct[:system_id]
|
21
|
-
end
|
22
|
-
|
23
|
-
def external_id
|
24
|
-
cstruct[:external_id]
|
25
|
-
end
|
26
|
-
|
27
|
-
def elements
|
28
|
-
internal_attributes :elements
|
29
|
-
end
|
30
|
-
|
31
|
-
def entities
|
32
|
-
internal_attributes :entities
|
33
|
-
end
|
34
|
-
|
35
|
-
def attributes
|
36
|
-
internal_attributes :attributes
|
37
|
-
end
|
38
|
-
|
39
|
-
def notations
|
40
|
-
attr_ptr = cstruct[:notations]
|
41
|
-
return nil if attr_ptr.null?
|
42
|
-
|
43
|
-
ahash = {}
|
44
|
-
LibXML.xmlHashScan(attr_ptr, nil) do |payload, data, name|
|
45
|
-
notation_cstruct = LibXML::XmlNotation.new(payload)
|
46
|
-
ahash[name] = Notation.new(notation_cstruct[:name], notation_cstruct[:PublicID],
|
47
|
-
notation_cstruct[:SystemID])
|
48
|
-
end
|
49
|
-
ahash
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
def internal_attributes attr_name
|
55
|
-
attr_ptr = cstruct[attr_name.to_sym]
|
56
|
-
ahash = {}
|
57
|
-
return ahash if attr_ptr.null?
|
58
|
-
|
59
|
-
LibXML.xmlHashScan(attr_ptr, nil) do |payload, data, name|
|
60
|
-
ahash[name] = Node.wrap(payload)
|
61
|
-
end
|
62
|
-
ahash
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
# :startdoc:
|