nokogiri 1.10.10 → 1.12.5
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.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/LICENSE-DEPENDENCIES.md +1173 -884
- data/LICENSE.md +1 -1
- data/README.md +176 -96
- data/dependencies.yml +12 -12
- data/ext/nokogiri/depend +38 -358
- data/ext/nokogiri/extconf.rb +716 -414
- data/ext/nokogiri/gumbo.c +584 -0
- data/ext/nokogiri/html4_document.c +166 -0
- data/ext/nokogiri/html4_element_description.c +294 -0
- data/ext/nokogiri/html4_entity_lookup.c +37 -0
- data/ext/nokogiri/html4_sax_parser_context.c +120 -0
- data/ext/nokogiri/html4_sax_push_parser.c +95 -0
- data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
- data/ext/nokogiri/nokogiri.c +228 -91
- data/ext/nokogiri/nokogiri.h +191 -89
- data/ext/nokogiri/test_global_handlers.c +40 -0
- data/ext/nokogiri/xml_attr.c +15 -15
- data/ext/nokogiri/xml_attribute_decl.c +18 -18
- data/ext/nokogiri/xml_cdata.c +13 -18
- data/ext/nokogiri/xml_comment.c +19 -26
- data/ext/nokogiri/xml_document.c +267 -195
- data/ext/nokogiri/xml_document_fragment.c +13 -15
- data/ext/nokogiri/xml_dtd.c +54 -48
- data/ext/nokogiri/xml_element_content.c +31 -26
- data/ext/nokogiri/xml_element_decl.c +22 -22
- data/ext/nokogiri/xml_encoding_handler.c +28 -17
- data/ext/nokogiri/xml_entity_decl.c +32 -30
- data/ext/nokogiri/xml_entity_reference.c +16 -18
- data/ext/nokogiri/xml_namespace.c +60 -51
- data/ext/nokogiri/xml_node.c +493 -407
- data/ext/nokogiri/xml_node_set.c +174 -162
- data/ext/nokogiri/xml_processing_instruction.c +17 -19
- data/ext/nokogiri/xml_reader.c +197 -172
- data/ext/nokogiri/xml_relax_ng.c +52 -28
- data/ext/nokogiri/xml_sax_parser.c +112 -112
- data/ext/nokogiri/xml_sax_parser_context.c +105 -86
- data/ext/nokogiri/xml_sax_push_parser.c +36 -27
- data/ext/nokogiri/xml_schema.c +96 -46
- data/ext/nokogiri/xml_syntax_error.c +42 -21
- data/ext/nokogiri/xml_text.c +13 -17
- data/ext/nokogiri/xml_xpath_context.c +158 -73
- data/ext/nokogiri/xslt_stylesheet.c +158 -164
- data/gumbo-parser/CHANGES.md +63 -0
- data/gumbo-parser/Makefile +101 -0
- data/gumbo-parser/THANKS +27 -0
- data/gumbo-parser/src/Makefile +34 -0
- data/gumbo-parser/src/README.md +41 -0
- data/gumbo-parser/src/ascii.c +75 -0
- data/gumbo-parser/src/ascii.h +115 -0
- data/gumbo-parser/src/attribute.c +42 -0
- data/gumbo-parser/src/attribute.h +17 -0
- data/gumbo-parser/src/char_ref.c +22225 -0
- data/gumbo-parser/src/char_ref.h +29 -0
- data/gumbo-parser/src/char_ref.rl +2154 -0
- data/gumbo-parser/src/error.c +626 -0
- data/gumbo-parser/src/error.h +148 -0
- data/gumbo-parser/src/foreign_attrs.c +104 -0
- data/gumbo-parser/src/foreign_attrs.gperf +27 -0
- data/gumbo-parser/src/gumbo.h +943 -0
- data/gumbo-parser/src/insertion_mode.h +33 -0
- data/gumbo-parser/src/macros.h +91 -0
- data/gumbo-parser/src/parser.c +4886 -0
- data/gumbo-parser/src/parser.h +41 -0
- data/gumbo-parser/src/replacement.h +33 -0
- data/gumbo-parser/src/string_buffer.c +103 -0
- data/gumbo-parser/src/string_buffer.h +68 -0
- data/gumbo-parser/src/string_piece.c +48 -0
- data/gumbo-parser/src/svg_attrs.c +174 -0
- data/gumbo-parser/src/svg_attrs.gperf +77 -0
- data/gumbo-parser/src/svg_tags.c +137 -0
- data/gumbo-parser/src/svg_tags.gperf +55 -0
- data/gumbo-parser/src/tag.c +222 -0
- data/gumbo-parser/src/tag_lookup.c +382 -0
- data/gumbo-parser/src/tag_lookup.gperf +169 -0
- data/gumbo-parser/src/tag_lookup.h +13 -0
- data/gumbo-parser/src/token_buffer.c +79 -0
- data/gumbo-parser/src/token_buffer.h +71 -0
- data/gumbo-parser/src/token_type.h +17 -0
- data/gumbo-parser/src/tokenizer.c +3463 -0
- data/gumbo-parser/src/tokenizer.h +112 -0
- data/gumbo-parser/src/tokenizer_states.h +339 -0
- data/gumbo-parser/src/utf8.c +245 -0
- data/gumbo-parser/src/utf8.h +164 -0
- data/gumbo-parser/src/util.c +68 -0
- data/gumbo-parser/src/util.h +30 -0
- data/gumbo-parser/src/vector.c +111 -0
- data/gumbo-parser/src/vector.h +45 -0
- data/lib/nokogiri/css/node.rb +1 -0
- data/lib/nokogiri/css/parser.rb +64 -63
- data/lib/nokogiri/css/parser.y +3 -3
- data/lib/nokogiri/css/parser_extras.rb +39 -36
- data/lib/nokogiri/css/syntax_error.rb +2 -1
- data/lib/nokogiri/css/tokenizer.rb +1 -0
- data/lib/nokogiri/css/xpath_visitor.rb +73 -43
- data/lib/nokogiri/css.rb +15 -14
- data/lib/nokogiri/decorators/slop.rb +1 -0
- data/lib/nokogiri/extension.rb +31 -0
- data/lib/nokogiri/gumbo.rb +14 -0
- data/lib/nokogiri/html.rb +32 -27
- data/lib/nokogiri/{html → html4}/builder.rb +3 -2
- data/lib/nokogiri/{html → html4}/document.rb +17 -30
- data/lib/nokogiri/{html → html4}/document_fragment.rb +18 -17
- data/lib/nokogiri/{html → html4}/element_description.rb +2 -1
- data/lib/nokogiri/{html → html4}/element_description_defaults.rb +2 -1
- data/lib/nokogiri/{html → html4}/entity_lookup.rb +2 -1
- data/lib/nokogiri/{html → html4}/sax/parser.rb +12 -14
- data/lib/nokogiri/html4/sax/parser_context.rb +19 -0
- data/lib/nokogiri/{html → html4}/sax/push_parser.rb +6 -5
- data/lib/nokogiri/html4.rb +40 -0
- data/lib/nokogiri/html5/document.rb +74 -0
- data/lib/nokogiri/html5/document_fragment.rb +80 -0
- data/lib/nokogiri/html5/node.rb +93 -0
- data/lib/nokogiri/html5.rb +473 -0
- data/lib/nokogiri/jruby/dependencies.rb +20 -0
- data/lib/nokogiri/syntax_error.rb +1 -0
- data/lib/nokogiri/version/constant.rb +5 -0
- data/lib/nokogiri/version/info.rb +215 -0
- data/lib/nokogiri/version.rb +3 -109
- data/lib/nokogiri/xml/attr.rb +1 -0
- data/lib/nokogiri/xml/attribute_decl.rb +1 -0
- data/lib/nokogiri/xml/builder.rb +41 -2
- data/lib/nokogiri/xml/cdata.rb +1 -0
- data/lib/nokogiri/xml/character_data.rb +1 -0
- data/lib/nokogiri/xml/document.rb +138 -41
- data/lib/nokogiri/xml/document_fragment.rb +5 -6
- data/lib/nokogiri/xml/dtd.rb +1 -0
- data/lib/nokogiri/xml/element_content.rb +1 -0
- data/lib/nokogiri/xml/element_decl.rb +1 -0
- data/lib/nokogiri/xml/entity_decl.rb +1 -0
- data/lib/nokogiri/xml/entity_reference.rb +1 -0
- data/lib/nokogiri/xml/namespace.rb +1 -0
- data/lib/nokogiri/xml/node/save_options.rb +2 -1
- data/lib/nokogiri/xml/node.rb +629 -293
- data/lib/nokogiri/xml/node_set.rb +1 -0
- data/lib/nokogiri/xml/notation.rb +1 -0
- data/lib/nokogiri/xml/parse_options.rb +12 -3
- data/lib/nokogiri/xml/pp/character_data.rb +1 -0
- data/lib/nokogiri/xml/pp/node.rb +1 -0
- data/lib/nokogiri/xml/pp.rb +3 -2
- data/lib/nokogiri/xml/processing_instruction.rb +1 -0
- data/lib/nokogiri/xml/reader.rb +9 -12
- data/lib/nokogiri/xml/relax_ng.rb +7 -2
- data/lib/nokogiri/xml/sax/document.rb +25 -30
- data/lib/nokogiri/xml/sax/parser.rb +1 -0
- data/lib/nokogiri/xml/sax/parser_context.rb +1 -0
- data/lib/nokogiri/xml/sax/push_parser.rb +1 -0
- data/lib/nokogiri/xml/sax.rb +5 -4
- data/lib/nokogiri/xml/schema.rb +13 -4
- data/lib/nokogiri/xml/searchable.rb +25 -16
- data/lib/nokogiri/xml/syntax_error.rb +1 -0
- data/lib/nokogiri/xml/text.rb +1 -0
- data/lib/nokogiri/xml/xpath/syntax_error.rb +2 -1
- data/lib/nokogiri/xml/xpath.rb +4 -5
- data/lib/nokogiri/xml/xpath_context.rb +1 -0
- data/lib/nokogiri/xml.rb +36 -36
- data/lib/nokogiri/xslt/stylesheet.rb +2 -1
- data/lib/nokogiri/xslt.rb +17 -16
- data/lib/nokogiri.rb +32 -51
- data/lib/xsd/xmlparser/nokogiri.rb +1 -0
- data/patches/libxml2/{0002-Remove-script-macro-support.patch → 0001-Remove-script-macro-support.patch} +0 -0
- data/patches/libxml2/{0003-Update-entities-to-remove-handling-of-ssi.patch → 0002-Update-entities-to-remove-handling-of-ssi.patch} +0 -0
- data/patches/libxml2/{0004-libxml2.la-is-in-top_builddir.patch → 0003-libxml2.la-is-in-top_builddir.patch} +1 -1
- data/patches/libxml2/0004-use-glibc-strlen.patch +53 -0
- data/patches/libxml2/0005-avoid-isnan-isinf.patch +81 -0
- data/patches/libxml2/0006-update-automake-files-for-arm64.patch +2511 -0
- data/patches/libxml2/0007-Fix-XPath-recursion-limit.patch +31 -0
- data/patches/libxslt/0001-update-automake-files-for-arm64.patch +2511 -0
- data/patches/libxslt/0002-Fix-xml2-config-check-in-configure-script.patch +19 -0
- data/ports/archives/libxml2-2.9.12.tar.gz +0 -0
- metadata +139 -161
- data/ext/nokogiri/html_document.c +0 -170
- data/ext/nokogiri/html_document.h +0 -10
- data/ext/nokogiri/html_element_description.c +0 -279
- data/ext/nokogiri/html_element_description.h +0 -10
- data/ext/nokogiri/html_entity_lookup.c +0 -32
- data/ext/nokogiri/html_entity_lookup.h +0 -8
- data/ext/nokogiri/html_sax_parser_context.c +0 -116
- data/ext/nokogiri/html_sax_parser_context.h +0 -11
- data/ext/nokogiri/html_sax_push_parser.c +0 -87
- data/ext/nokogiri/html_sax_push_parser.h +0 -9
- data/ext/nokogiri/xml_attr.h +0 -9
- data/ext/nokogiri/xml_attribute_decl.h +0 -9
- data/ext/nokogiri/xml_cdata.h +0 -9
- data/ext/nokogiri/xml_comment.h +0 -9
- data/ext/nokogiri/xml_document.h +0 -23
- data/ext/nokogiri/xml_document_fragment.h +0 -10
- data/ext/nokogiri/xml_dtd.h +0 -10
- data/ext/nokogiri/xml_element_content.h +0 -10
- data/ext/nokogiri/xml_element_decl.h +0 -9
- data/ext/nokogiri/xml_encoding_handler.h +0 -8
- data/ext/nokogiri/xml_entity_decl.h +0 -10
- data/ext/nokogiri/xml_entity_reference.h +0 -9
- data/ext/nokogiri/xml_io.c +0 -61
- data/ext/nokogiri/xml_io.h +0 -11
- data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
- data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
- data/ext/nokogiri/xml_namespace.h +0 -14
- data/ext/nokogiri/xml_node.h +0 -13
- data/ext/nokogiri/xml_node_set.h +0 -12
- data/ext/nokogiri/xml_processing_instruction.h +0 -9
- data/ext/nokogiri/xml_reader.h +0 -10
- data/ext/nokogiri/xml_relax_ng.h +0 -9
- data/ext/nokogiri/xml_sax_parser.h +0 -39
- data/ext/nokogiri/xml_sax_parser_context.h +0 -10
- data/ext/nokogiri/xml_sax_push_parser.h +0 -9
- data/ext/nokogiri/xml_schema.h +0 -9
- data/ext/nokogiri/xml_syntax_error.h +0 -13
- data/ext/nokogiri/xml_text.h +0 -9
- data/ext/nokogiri/xml_xpath_context.h +0 -10
- data/ext/nokogiri/xslt_stylesheet.h +0 -14
- data/lib/nokogiri/html/sax/parser_context.rb +0 -16
- data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
- data/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch +0 -32
- data/ports/archives/libxml2-2.9.10.tar.gz +0 -0
@@ -1,4 +1,6 @@
|
|
1
|
-
#include <
|
1
|
+
#include <nokogiri.h>
|
2
|
+
|
3
|
+
VALUE cNokogiriXmlDocumentFragment;
|
2
4
|
|
3
5
|
/*
|
4
6
|
* call-seq:
|
@@ -6,7 +8,8 @@
|
|
6
8
|
*
|
7
9
|
* Create a new DocumentFragment element on the +document+
|
8
10
|
*/
|
9
|
-
static VALUE
|
11
|
+
static VALUE
|
12
|
+
new (int argc, VALUE *argv, VALUE klass)
|
10
13
|
{
|
11
14
|
xmlDocPtr xml_doc;
|
12
15
|
xmlNodePtr node;
|
@@ -20,29 +23,24 @@ static VALUE new(int argc, VALUE *argv, VALUE klass)
|
|
20
23
|
|
21
24
|
node = xmlNewDocFragment(xml_doc->doc);
|
22
25
|
|
23
|
-
|
26
|
+
noko_xml_document_pin_node(node);
|
24
27
|
|
25
|
-
rb_node =
|
28
|
+
rb_node = noko_xml_node_wrap(klass, node);
|
26
29
|
rb_obj_call_init(rb_node, argc, argv);
|
27
30
|
|
28
|
-
if(rb_block_given_p()) rb_yield(rb_node);
|
31
|
+
if (rb_block_given_p()) { rb_yield(rb_node); }
|
29
32
|
|
30
33
|
return rb_node;
|
31
34
|
}
|
32
35
|
|
33
|
-
|
34
|
-
|
36
|
+
void
|
37
|
+
noko_init_xml_document_fragment()
|
35
38
|
{
|
36
|
-
|
37
|
-
VALUE xml = rb_define_module_under(nokogiri, "XML");
|
38
|
-
VALUE node = rb_define_class_under(xml, "Node", rb_cObject);
|
39
|
-
|
39
|
+
assert(cNokogiriXmlNode);
|
40
40
|
/*
|
41
41
|
* DocumentFragment represents a DocumentFragment node in an xml document.
|
42
42
|
*/
|
43
|
-
|
44
|
-
|
45
|
-
cNokogiriXmlDocumentFragment = klass;
|
43
|
+
cNokogiriXmlDocumentFragment = rb_define_class_under(mNokogiriXml, "DocumentFragment", cNokogiriXmlNode);
|
46
44
|
|
47
|
-
rb_define_singleton_method(
|
45
|
+
rb_define_singleton_method(cNokogiriXmlDocumentFragment, "new", new, -1);
|
48
46
|
}
|
data/ext/nokogiri/xml_dtd.c
CHANGED
@@ -1,30 +1,35 @@
|
|
1
|
-
#include <
|
1
|
+
#include <nokogiri.h>
|
2
2
|
|
3
|
-
|
3
|
+
VALUE cNokogiriXmlDtd;
|
4
|
+
|
5
|
+
static void
|
6
|
+
notation_copier(void *c_notation_ptr, void *rb_hash_ptr, const xmlChar *name)
|
4
7
|
{
|
5
|
-
VALUE
|
6
|
-
|
8
|
+
VALUE rb_hash = (VALUE)rb_hash_ptr;
|
9
|
+
xmlNotationPtr c_notation = (xmlNotationPtr)c_notation_ptr;
|
10
|
+
VALUE rb_notation;
|
11
|
+
VALUE cNokogiriXmlNotation;
|
12
|
+
VALUE rb_constructor_args[3];
|
7
13
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
argv[0] = (c_notation->name ? NOKOGIRI_STR_NEW2(c_notation->name) : Qnil);
|
12
|
-
argv[1] = (c_notation->PublicID ? NOKOGIRI_STR_NEW2(c_notation->PublicID) : Qnil);
|
13
|
-
argv[2] = (c_notation->SystemID ? NOKOGIRI_STR_NEW2(c_notation->SystemID) : Qnil);
|
14
|
+
rb_constructor_args[0] = (c_notation->name ? NOKOGIRI_STR_NEW2(c_notation->name) : Qnil);
|
15
|
+
rb_constructor_args[1] = (c_notation->PublicID ? NOKOGIRI_STR_NEW2(c_notation->PublicID) : Qnil);
|
16
|
+
rb_constructor_args[2] = (c_notation->SystemID ? NOKOGIRI_STR_NEW2(c_notation->SystemID) : Qnil);
|
14
17
|
|
15
|
-
|
18
|
+
cNokogiriXmlNotation = rb_const_get_at(mNokogiriXml, rb_intern("Notation"));
|
19
|
+
rb_notation = rb_class_new_instance(3, rb_constructor_args, cNokogiriXmlNotation);
|
16
20
|
|
17
|
-
rb_hash_aset(
|
21
|
+
rb_hash_aset(rb_hash, NOKOGIRI_STR_NEW2(name), rb_notation);
|
18
22
|
}
|
19
23
|
|
20
|
-
static void
|
24
|
+
static void
|
25
|
+
element_copier(void *c_node_ptr, void *rb_hash_ptr, const xmlChar *c_name)
|
21
26
|
{
|
22
|
-
VALUE
|
23
|
-
xmlNodePtr
|
27
|
+
VALUE rb_hash = (VALUE)rb_hash_ptr;
|
28
|
+
xmlNodePtr c_node = (xmlNodePtr)c_node_ptr;
|
24
29
|
|
25
|
-
VALUE
|
30
|
+
VALUE rb_node = noko_xml_node_wrap(Qnil, c_node);
|
26
31
|
|
27
|
-
rb_hash_aset(
|
32
|
+
rb_hash_aset(rb_hash, NOKOGIRI_STR_NEW2(c_name), rb_node);
|
28
33
|
}
|
29
34
|
|
30
35
|
/*
|
@@ -33,14 +38,15 @@ static void element_copier(void *_payload, void *data, const xmlChar *name)
|
|
33
38
|
*
|
34
39
|
* Get a hash of the elements for this DTD.
|
35
40
|
*/
|
36
|
-
static VALUE
|
41
|
+
static VALUE
|
42
|
+
entities(VALUE self)
|
37
43
|
{
|
38
44
|
xmlDtdPtr dtd;
|
39
45
|
VALUE hash;
|
40
46
|
|
41
47
|
Data_Get_Struct(self, xmlDtd, dtd);
|
42
48
|
|
43
|
-
if(!dtd->entities) return Qnil;
|
49
|
+
if (!dtd->entities) { return Qnil; }
|
44
50
|
|
45
51
|
hash = rb_hash_new();
|
46
52
|
|
@@ -55,14 +61,15 @@ static VALUE entities(VALUE self)
|
|
55
61
|
*
|
56
62
|
* Get a hash of the notations for this DTD.
|
57
63
|
*/
|
58
|
-
static VALUE
|
64
|
+
static VALUE
|
65
|
+
notations(VALUE self)
|
59
66
|
{
|
60
67
|
xmlDtdPtr dtd;
|
61
68
|
VALUE hash;
|
62
69
|
|
63
70
|
Data_Get_Struct(self, xmlDtd, dtd);
|
64
71
|
|
65
|
-
if(!dtd->notations) return Qnil;
|
72
|
+
if (!dtd->notations) { return Qnil; }
|
66
73
|
|
67
74
|
hash = rb_hash_new();
|
68
75
|
|
@@ -77,7 +84,8 @@ static VALUE notations(VALUE self)
|
|
77
84
|
*
|
78
85
|
* Get a hash of the attributes for this DTD.
|
79
86
|
*/
|
80
|
-
static VALUE
|
87
|
+
static VALUE
|
88
|
+
attributes(VALUE self)
|
81
89
|
{
|
82
90
|
xmlDtdPtr dtd;
|
83
91
|
VALUE hash;
|
@@ -86,7 +94,7 @@ static VALUE attributes(VALUE self)
|
|
86
94
|
|
87
95
|
hash = rb_hash_new();
|
88
96
|
|
89
|
-
if(!dtd->attributes) return hash;
|
97
|
+
if (!dtd->attributes) { return hash; }
|
90
98
|
|
91
99
|
xmlHashScan((xmlHashTablePtr)dtd->attributes, element_copier, (void *)hash);
|
92
100
|
|
@@ -99,14 +107,15 @@ static VALUE attributes(VALUE self)
|
|
99
107
|
*
|
100
108
|
* Get a hash of the elements for this DTD.
|
101
109
|
*/
|
102
|
-
static VALUE
|
110
|
+
static VALUE
|
111
|
+
elements(VALUE self)
|
103
112
|
{
|
104
113
|
xmlDtdPtr dtd;
|
105
114
|
VALUE hash;
|
106
115
|
|
107
116
|
Data_Get_Struct(self, xmlDtd, dtd);
|
108
117
|
|
109
|
-
if(!dtd->elements) return Qnil;
|
118
|
+
if (!dtd->elements) { return Qnil; }
|
110
119
|
|
111
120
|
hash = rb_hash_new();
|
112
121
|
|
@@ -121,7 +130,8 @@ static VALUE elements(VALUE self)
|
|
121
130
|
*
|
122
131
|
* Validate +document+ returning a list of errors
|
123
132
|
*/
|
124
|
-
static VALUE
|
133
|
+
static VALUE
|
134
|
+
validate(VALUE self, VALUE document)
|
125
135
|
{
|
126
136
|
xmlDocPtr doc;
|
127
137
|
xmlDtdPtr dtd;
|
@@ -151,12 +161,13 @@ static VALUE validate(VALUE self, VALUE document)
|
|
151
161
|
*
|
152
162
|
* Get the System ID for this DTD
|
153
163
|
*/
|
154
|
-
static VALUE
|
164
|
+
static VALUE
|
165
|
+
system_id(VALUE self)
|
155
166
|
{
|
156
167
|
xmlDtdPtr dtd;
|
157
168
|
Data_Get_Struct(self, xmlDtd, dtd);
|
158
169
|
|
159
|
-
if(!dtd->SystemID) return Qnil;
|
170
|
+
if (!dtd->SystemID) { return Qnil; }
|
160
171
|
|
161
172
|
return NOKOGIRI_STR_NEW2(dtd->SystemID);
|
162
173
|
}
|
@@ -167,36 +178,31 @@ static VALUE system_id(VALUE self)
|
|
167
178
|
*
|
168
179
|
* Get the External ID for this DTD
|
169
180
|
*/
|
170
|
-
static VALUE
|
181
|
+
static VALUE
|
182
|
+
external_id(VALUE self)
|
171
183
|
{
|
172
184
|
xmlDtdPtr dtd;
|
173
185
|
Data_Get_Struct(self, xmlDtd, dtd);
|
174
186
|
|
175
|
-
if(!dtd->ExternalID) return Qnil;
|
187
|
+
if (!dtd->ExternalID) { return Qnil; }
|
176
188
|
|
177
189
|
return NOKOGIRI_STR_NEW2(dtd->ExternalID);
|
178
190
|
}
|
179
191
|
|
180
|
-
|
181
|
-
|
182
|
-
void init_xml_dtd()
|
192
|
+
void
|
193
|
+
noko_init_xml_dtd()
|
183
194
|
{
|
184
|
-
|
185
|
-
VALUE xml = rb_define_module_under(nokogiri, "XML");
|
186
|
-
VALUE node = rb_define_class_under(xml, "Node", rb_cObject);
|
187
|
-
|
195
|
+
assert(cNokogiriXmlNode);
|
188
196
|
/*
|
189
197
|
* Nokogiri::XML::DTD wraps DTD nodes in an XML document
|
190
198
|
*/
|
191
|
-
|
192
|
-
|
193
|
-
cNokogiriXmlDtd
|
194
|
-
|
195
|
-
rb_define_method(
|
196
|
-
rb_define_method(
|
197
|
-
rb_define_method(
|
198
|
-
rb_define_method(
|
199
|
-
rb_define_method(
|
200
|
-
rb_define_method(klass, "system_id", system_id, 0);
|
201
|
-
rb_define_method(klass, "external_id", external_id, 0);
|
199
|
+
cNokogiriXmlDtd = rb_define_class_under(mNokogiriXml, "DTD", cNokogiriXmlNode);
|
200
|
+
|
201
|
+
rb_define_method(cNokogiriXmlDtd, "notations", notations, 0);
|
202
|
+
rb_define_method(cNokogiriXmlDtd, "elements", elements, 0);
|
203
|
+
rb_define_method(cNokogiriXmlDtd, "entities", entities, 0);
|
204
|
+
rb_define_method(cNokogiriXmlDtd, "validate", validate, 1);
|
205
|
+
rb_define_method(cNokogiriXmlDtd, "attributes", attributes, 0);
|
206
|
+
rb_define_method(cNokogiriXmlDtd, "system_id", system_id, 0);
|
207
|
+
rb_define_method(cNokogiriXmlDtd, "external_id", external_id, 0);
|
202
208
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#include <
|
1
|
+
#include <nokogiri.h>
|
2
2
|
|
3
3
|
VALUE cNokogiriXmlElementContent;
|
4
4
|
|
@@ -8,12 +8,13 @@ VALUE cNokogiriXmlElementContent;
|
|
8
8
|
*
|
9
9
|
* Get the require element +name+
|
10
10
|
*/
|
11
|
-
static VALUE
|
11
|
+
static VALUE
|
12
|
+
get_name(VALUE self)
|
12
13
|
{
|
13
14
|
xmlElementContentPtr elem;
|
14
15
|
Data_Get_Struct(self, xmlElementContent, elem);
|
15
16
|
|
16
|
-
if(!elem->name) return Qnil;
|
17
|
+
if (!elem->name) { return Qnil; }
|
17
18
|
return NOKOGIRI_STR_NEW2(elem->name);
|
18
19
|
}
|
19
20
|
|
@@ -24,7 +25,8 @@ static VALUE get_name(VALUE self)
|
|
24
25
|
* Get the element content +type+. Possible values are PCDATA, ELEMENT, SEQ,
|
25
26
|
* or OR.
|
26
27
|
*/
|
27
|
-
static VALUE
|
28
|
+
static VALUE
|
29
|
+
get_type(VALUE self)
|
28
30
|
{
|
29
31
|
xmlElementContentPtr elem;
|
30
32
|
Data_Get_Struct(self, xmlElementContent, elem);
|
@@ -38,13 +40,14 @@ static VALUE get_type(VALUE self)
|
|
38
40
|
*
|
39
41
|
* Get the first child.
|
40
42
|
*/
|
41
|
-
static VALUE
|
43
|
+
static VALUE
|
44
|
+
get_c1(VALUE self)
|
42
45
|
{
|
43
46
|
xmlElementContentPtr elem;
|
44
47
|
Data_Get_Struct(self, xmlElementContent, elem);
|
45
48
|
|
46
|
-
if(!elem->c1) return Qnil;
|
47
|
-
return
|
49
|
+
if (!elem->c1) { return Qnil; }
|
50
|
+
return noko_xml_element_content_wrap(rb_iv_get(self, "@document"), elem->c1);
|
48
51
|
}
|
49
52
|
|
50
53
|
/*
|
@@ -53,13 +56,14 @@ static VALUE get_c1(VALUE self)
|
|
53
56
|
*
|
54
57
|
* Get the first child.
|
55
58
|
*/
|
56
|
-
static VALUE
|
59
|
+
static VALUE
|
60
|
+
get_c2(VALUE self)
|
57
61
|
{
|
58
62
|
xmlElementContentPtr elem;
|
59
63
|
Data_Get_Struct(self, xmlElementContent, elem);
|
60
64
|
|
61
|
-
if(!elem->c2) return Qnil;
|
62
|
-
return
|
65
|
+
if (!elem->c2) { return Qnil; }
|
66
|
+
return noko_xml_element_content_wrap(rb_iv_get(self, "@document"), elem->c2);
|
63
67
|
}
|
64
68
|
|
65
69
|
/*
|
@@ -69,7 +73,8 @@ static VALUE get_c2(VALUE self)
|
|
69
73
|
* Get the element content +occur+ flag. Possible values are ONCE, OPT, MULT
|
70
74
|
* or PLUS.
|
71
75
|
*/
|
72
|
-
static VALUE
|
76
|
+
static VALUE
|
77
|
+
get_occur(VALUE self)
|
73
78
|
{
|
74
79
|
xmlElementContentPtr elem;
|
75
80
|
Data_Get_Struct(self, xmlElementContent, elem);
|
@@ -83,17 +88,19 @@ static VALUE get_occur(VALUE self)
|
|
83
88
|
*
|
84
89
|
* Get the element content namespace +prefix+.
|
85
90
|
*/
|
86
|
-
static VALUE
|
91
|
+
static VALUE
|
92
|
+
get_prefix(VALUE self)
|
87
93
|
{
|
88
94
|
xmlElementContentPtr elem;
|
89
95
|
Data_Get_Struct(self, xmlElementContent, elem);
|
90
96
|
|
91
|
-
if(!elem->prefix) return Qnil;
|
97
|
+
if (!elem->prefix) { return Qnil; }
|
92
98
|
|
93
99
|
return NOKOGIRI_STR_NEW2(elem->prefix);
|
94
100
|
}
|
95
101
|
|
96
|
-
VALUE
|
102
|
+
VALUE
|
103
|
+
noko_xml_element_content_wrap(VALUE doc, xmlElementContentPtr element)
|
97
104
|
{
|
98
105
|
VALUE elem = Data_Wrap_Struct(cNokogiriXmlElementContent, 0, 0, element);
|
99
106
|
|
@@ -104,20 +111,18 @@ VALUE Nokogiri_wrap_element_content(VALUE doc, xmlElementContentPtr element)
|
|
104
111
|
return elem;
|
105
112
|
}
|
106
113
|
|
107
|
-
void
|
114
|
+
void
|
115
|
+
noko_init_xml_element_content()
|
108
116
|
{
|
109
|
-
|
110
|
-
VALUE xml = rb_define_module_under(nokogiri, "XML");
|
117
|
+
cNokogiriXmlElementContent = rb_define_class_under(mNokogiriXml, "ElementContent", rb_cObject);
|
111
118
|
|
112
|
-
|
119
|
+
rb_undef_alloc_func(cNokogiriXmlElementContent);
|
113
120
|
|
114
|
-
cNokogiriXmlElementContent
|
121
|
+
rb_define_method(cNokogiriXmlElementContent, "name", get_name, 0);
|
122
|
+
rb_define_method(cNokogiriXmlElementContent, "type", get_type, 0);
|
123
|
+
rb_define_method(cNokogiriXmlElementContent, "occur", get_occur, 0);
|
124
|
+
rb_define_method(cNokogiriXmlElementContent, "prefix", get_prefix, 0);
|
115
125
|
|
116
|
-
|
117
|
-
|
118
|
-
rb_define_method(klass, "occur", get_occur, 0);
|
119
|
-
rb_define_method(klass, "prefix", get_prefix, 0);
|
120
|
-
|
121
|
-
rb_define_private_method(klass, "c1", get_c1, 0);
|
122
|
-
rb_define_private_method(klass, "c2", get_c2, 0);
|
126
|
+
rb_define_private_method(cNokogiriXmlElementContent, "c1", get_c1, 0);
|
127
|
+
rb_define_private_method(cNokogiriXmlElementContent, "c2", get_c2, 0);
|
123
128
|
}
|
@@ -1,4 +1,6 @@
|
|
1
|
-
#include <
|
1
|
+
#include <nokogiri.h>
|
2
|
+
|
3
|
+
VALUE cNokogiriXmlElementDecl;
|
2
4
|
|
3
5
|
static ID id_document;
|
4
6
|
|
@@ -8,7 +10,8 @@ static ID id_document;
|
|
8
10
|
*
|
9
11
|
* The element_type
|
10
12
|
*/
|
11
|
-
static VALUE
|
13
|
+
static VALUE
|
14
|
+
element_type(VALUE self)
|
12
15
|
{
|
13
16
|
xmlElementPtr node;
|
14
17
|
Data_Get_Struct(self, xmlElement, node);
|
@@ -21,17 +24,18 @@ static VALUE element_type(VALUE self)
|
|
21
24
|
*
|
22
25
|
* The allowed content for this ElementDecl
|
23
26
|
*/
|
24
|
-
static VALUE
|
27
|
+
static VALUE
|
28
|
+
content(VALUE self)
|
25
29
|
{
|
26
30
|
xmlElementPtr node;
|
27
31
|
Data_Get_Struct(self, xmlElement, node);
|
28
32
|
|
29
|
-
if(!node->content) return Qnil;
|
33
|
+
if (!node->content) { return Qnil; }
|
30
34
|
|
31
|
-
return
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
+
return noko_xml_element_content_wrap(
|
36
|
+
rb_funcall(self, id_document, 0),
|
37
|
+
node->content
|
38
|
+
);
|
35
39
|
}
|
36
40
|
|
37
41
|
/*
|
@@ -40,30 +44,26 @@ static VALUE content(VALUE self)
|
|
40
44
|
*
|
41
45
|
* The namespace prefix for this ElementDecl
|
42
46
|
*/
|
43
|
-
static VALUE
|
47
|
+
static VALUE
|
48
|
+
prefix(VALUE self)
|
44
49
|
{
|
45
50
|
xmlElementPtr node;
|
46
51
|
Data_Get_Struct(self, xmlElement, node);
|
47
52
|
|
48
|
-
if(!node->prefix) return Qnil;
|
53
|
+
if (!node->prefix) { return Qnil; }
|
49
54
|
|
50
55
|
return NOKOGIRI_STR_NEW2(node->prefix);
|
51
56
|
}
|
52
57
|
|
53
|
-
|
54
|
-
|
55
|
-
void init_xml_element_decl()
|
58
|
+
void
|
59
|
+
noko_init_xml_element_decl()
|
56
60
|
{
|
57
|
-
|
58
|
-
|
59
|
-
VALUE node = rb_define_class_under(xml, "Node", rb_cObject);
|
60
|
-
VALUE klass = rb_define_class_under(xml, "ElementDecl", node);
|
61
|
-
|
62
|
-
cNokogiriXmlElementDecl = klass;
|
61
|
+
assert(cNokogiriXmlNode);
|
62
|
+
cNokogiriXmlElementDecl = rb_define_class_under(mNokogiriXml, "ElementDecl", cNokogiriXmlNode);
|
63
63
|
|
64
|
-
rb_define_method(
|
65
|
-
rb_define_method(
|
66
|
-
rb_define_method(
|
64
|
+
rb_define_method(cNokogiriXmlElementDecl, "element_type", element_type, 0);
|
65
|
+
rb_define_method(cNokogiriXmlElementDecl, "content", content, 0);
|
66
|
+
rb_define_method(cNokogiriXmlElementDecl, "prefix", prefix, 0);
|
67
67
|
|
68
68
|
id_document = rb_intern("document");
|
69
69
|
}
|
@@ -1,17 +1,22 @@
|
|
1
|
-
#include <
|
1
|
+
#include <nokogiri.h>
|
2
|
+
|
3
|
+
VALUE cNokogiriEncodingHandler;
|
4
|
+
|
2
5
|
|
3
6
|
/*
|
4
7
|
* call-seq: Nokogiri::EncodingHandler.[](name)
|
5
8
|
*
|
6
9
|
* Get the encoding handler for +name+
|
7
10
|
*/
|
8
|
-
static VALUE
|
11
|
+
static VALUE
|
12
|
+
get(VALUE klass, VALUE key)
|
9
13
|
{
|
10
14
|
xmlCharEncodingHandlerPtr handler;
|
11
15
|
|
12
16
|
handler = xmlFindCharEncodingHandler(StringValueCStr(key));
|
13
|
-
if(handler)
|
17
|
+
if (handler) {
|
14
18
|
return Data_Wrap_Struct(klass, NULL, NULL, handler);
|
19
|
+
}
|
15
20
|
|
16
21
|
return Qnil;
|
17
22
|
}
|
@@ -21,9 +26,10 @@ static VALUE get(VALUE klass, VALUE key)
|
|
21
26
|
*
|
22
27
|
* Delete the encoding alias named +name+
|
23
28
|
*/
|
24
|
-
static VALUE
|
29
|
+
static VALUE
|
30
|
+
delete (VALUE klass, VALUE name)
|
25
31
|
{
|
26
|
-
if(xmlDelEncodingAlias(StringValueCStr(name))) return Qnil;
|
32
|
+
if (xmlDelEncodingAlias(StringValueCStr(name))) { return Qnil; }
|
27
33
|
|
28
34
|
return Qtrue;
|
29
35
|
}
|
@@ -33,7 +39,8 @@ static VALUE delete(VALUE klass, VALUE name)
|
|
33
39
|
*
|
34
40
|
* Alias encoding handler with name +from+ to name +to+
|
35
41
|
*/
|
36
|
-
static VALUE
|
42
|
+
static VALUE
|
43
|
+
alias(VALUE klass, VALUE from, VALUE to)
|
37
44
|
{
|
38
45
|
xmlAddEncodingAlias(StringValueCStr(from), StringValueCStr(to));
|
39
46
|
|
@@ -45,7 +52,8 @@ static VALUE alias(VALUE klass, VALUE from, VALUE to)
|
|
45
52
|
*
|
46
53
|
* Remove all encoding aliases.
|
47
54
|
*/
|
48
|
-
static VALUE
|
55
|
+
static VALUE
|
56
|
+
clear_aliases(VALUE klass)
|
49
57
|
{
|
50
58
|
xmlCleanupEncodingAliases();
|
51
59
|
|
@@ -57,7 +65,8 @@ static VALUE clear_aliases(VALUE klass)
|
|
57
65
|
*
|
58
66
|
* Get the name of this EncodingHandler
|
59
67
|
*/
|
60
|
-
static VALUE
|
68
|
+
static VALUE
|
69
|
+
name(VALUE self)
|
61
70
|
{
|
62
71
|
xmlCharEncodingHandlerPtr handler;
|
63
72
|
|
@@ -66,14 +75,16 @@ static VALUE name(VALUE self)
|
|
66
75
|
return NOKOGIRI_STR_NEW2(handler->name);
|
67
76
|
}
|
68
77
|
|
69
|
-
void
|
78
|
+
void
|
79
|
+
noko_init_xml_encoding_handler()
|
70
80
|
{
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
rb_define_singleton_method(
|
76
|
-
rb_define_singleton_method(
|
77
|
-
rb_define_singleton_method(
|
78
|
-
|
81
|
+
cNokogiriEncodingHandler = rb_define_class_under(mNokogiri, "EncodingHandler", rb_cObject);
|
82
|
+
|
83
|
+
rb_undef_alloc_func(cNokogiriEncodingHandler);
|
84
|
+
|
85
|
+
rb_define_singleton_method(cNokogiriEncodingHandler, "[]", get, 1);
|
86
|
+
rb_define_singleton_method(cNokogiriEncodingHandler, "delete", delete, 1);
|
87
|
+
rb_define_singleton_method(cNokogiriEncodingHandler, "alias", alias, 2);
|
88
|
+
rb_define_singleton_method(cNokogiriEncodingHandler, "clear_aliases!", clear_aliases, 0);
|
89
|
+
rb_define_method(cNokogiriEncodingHandler, "name", name, 0);
|
79
90
|
}
|
@@ -1,4 +1,6 @@
|
|
1
|
-
#include <
|
1
|
+
#include <nokogiri.h>
|
2
|
+
|
3
|
+
VALUE cNokogiriXmlEntityDecl;
|
2
4
|
|
3
5
|
/*
|
4
6
|
* call-seq:
|
@@ -6,12 +8,13 @@
|
|
6
8
|
*
|
7
9
|
* Get the original_content before ref substitution
|
8
10
|
*/
|
9
|
-
static VALUE
|
11
|
+
static VALUE
|
12
|
+
original_content(VALUE self)
|
10
13
|
{
|
11
14
|
xmlEntityPtr node;
|
12
15
|
Data_Get_Struct(self, xmlEntity, node);
|
13
16
|
|
14
|
-
if(!node->orig) return Qnil;
|
17
|
+
if (!node->orig) { return Qnil; }
|
15
18
|
|
16
19
|
return NOKOGIRI_STR_NEW2(node->orig);
|
17
20
|
}
|
@@ -22,12 +25,13 @@ static VALUE original_content(VALUE self)
|
|
22
25
|
*
|
23
26
|
* Get the content
|
24
27
|
*/
|
25
|
-
static VALUE
|
28
|
+
static VALUE
|
29
|
+
get_content(VALUE self)
|
26
30
|
{
|
27
31
|
xmlEntityPtr node;
|
28
32
|
Data_Get_Struct(self, xmlEntity, node);
|
29
33
|
|
30
|
-
if(!node->content) return Qnil;
|
34
|
+
if (!node->content) { return Qnil; }
|
31
35
|
|
32
36
|
return NOKOGIRI_STR_NEW(node->content, node->length);
|
33
37
|
}
|
@@ -38,7 +42,8 @@ static VALUE get_content(VALUE self)
|
|
38
42
|
*
|
39
43
|
* Get the entity type
|
40
44
|
*/
|
41
|
-
static VALUE
|
45
|
+
static VALUE
|
46
|
+
entity_type(VALUE self)
|
42
47
|
{
|
43
48
|
xmlEntityPtr node;
|
44
49
|
Data_Get_Struct(self, xmlEntity, node);
|
@@ -52,12 +57,13 @@ static VALUE entity_type(VALUE self)
|
|
52
57
|
*
|
53
58
|
* Get the external identifier for PUBLIC
|
54
59
|
*/
|
55
|
-
static VALUE
|
60
|
+
static VALUE
|
61
|
+
external_id(VALUE self)
|
56
62
|
{
|
57
63
|
xmlEntityPtr node;
|
58
64
|
Data_Get_Struct(self, xmlEntity, node);
|
59
65
|
|
60
|
-
if(!node->ExternalID) return Qnil;
|
66
|
+
if (!node->ExternalID) { return Qnil; }
|
61
67
|
|
62
68
|
return NOKOGIRI_STR_NEW2(node->ExternalID);
|
63
69
|
}
|
@@ -68,43 +74,39 @@ static VALUE external_id(VALUE self)
|
|
68
74
|
*
|
69
75
|
* Get the URI for a SYSTEM or PUBLIC Entity
|
70
76
|
*/
|
71
|
-
static VALUE
|
77
|
+
static VALUE
|
78
|
+
system_id(VALUE self)
|
72
79
|
{
|
73
80
|
xmlEntityPtr node;
|
74
81
|
Data_Get_Struct(self, xmlEntity, node);
|
75
82
|
|
76
|
-
if(!node->SystemID) return Qnil;
|
83
|
+
if (!node->SystemID) { return Qnil; }
|
77
84
|
|
78
85
|
return NOKOGIRI_STR_NEW2(node->SystemID);
|
79
86
|
}
|
80
87
|
|
81
|
-
|
82
|
-
|
83
|
-
void init_xml_entity_decl()
|
88
|
+
void
|
89
|
+
noko_init_xml_entity_decl()
|
84
90
|
{
|
85
|
-
|
86
|
-
|
87
|
-
VALUE node = rb_define_class_under(xml, "Node", rb_cObject);
|
88
|
-
VALUE klass = rb_define_class_under(xml, "EntityDecl", node);
|
89
|
-
|
90
|
-
cNokogiriXmlEntityDecl = klass;
|
91
|
+
assert(cNokogiriXmlNode);
|
92
|
+
cNokogiriXmlEntityDecl = rb_define_class_under(mNokogiriXml, "EntityDecl", cNokogiriXmlNode);
|
91
93
|
|
92
|
-
rb_define_method(
|
93
|
-
rb_define_method(
|
94
|
-
rb_define_method(
|
95
|
-
rb_define_method(
|
96
|
-
rb_define_method(
|
94
|
+
rb_define_method(cNokogiriXmlEntityDecl, "original_content", original_content, 0);
|
95
|
+
rb_define_method(cNokogiriXmlEntityDecl, "content", get_content, 0);
|
96
|
+
rb_define_method(cNokogiriXmlEntityDecl, "entity_type", entity_type, 0);
|
97
|
+
rb_define_method(cNokogiriXmlEntityDecl, "external_id", external_id, 0);
|
98
|
+
rb_define_method(cNokogiriXmlEntityDecl, "system_id", system_id, 0);
|
97
99
|
|
98
100
|
rb_const_set(cNokogiriXmlEntityDecl, rb_intern("INTERNAL_GENERAL"),
|
99
|
-
|
101
|
+
INT2NUM(XML_INTERNAL_GENERAL_ENTITY));
|
100
102
|
rb_const_set(cNokogiriXmlEntityDecl, rb_intern("EXTERNAL_GENERAL_PARSED"),
|
101
|
-
|
103
|
+
INT2NUM(XML_EXTERNAL_GENERAL_PARSED_ENTITY));
|
102
104
|
rb_const_set(cNokogiriXmlEntityDecl, rb_intern("EXTERNAL_GENERAL_UNPARSED"),
|
103
|
-
|
105
|
+
INT2NUM(XML_EXTERNAL_GENERAL_UNPARSED_ENTITY));
|
104
106
|
rb_const_set(cNokogiriXmlEntityDecl, rb_intern("INTERNAL_PARAMETER"),
|
105
|
-
|
107
|
+
INT2NUM(XML_INTERNAL_PARAMETER_ENTITY));
|
106
108
|
rb_const_set(cNokogiriXmlEntityDecl, rb_intern("EXTERNAL_PARAMETER"),
|
107
|
-
|
109
|
+
INT2NUM(XML_EXTERNAL_PARAMETER_ENTITY));
|
108
110
|
rb_const_set(cNokogiriXmlEntityDecl, rb_intern("INTERNAL_PREDEFINED"),
|
109
|
-
|
111
|
+
INT2NUM(XML_INTERNAL_PREDEFINED_ENTITY));
|
110
112
|
}
|