nokogiri 1.10.3 → 1.13.9
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 +5 -0
- data/LICENSE-DEPENDENCIES.md +1173 -884
- data/LICENSE.md +1 -1
- data/README.md +178 -96
- data/bin/nokogiri +63 -50
- data/dependencies.yml +13 -62
- data/ext/nokogiri/depend +38 -358
- data/ext/nokogiri/extconf.rb +761 -424
- 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 +119 -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 +199 -88
- data/ext/nokogiri/test_global_handlers.c +40 -0
- data/ext/nokogiri/xml_attr.c +17 -17
- data/ext/nokogiri/xml_attribute_decl.c +21 -21
- data/ext/nokogiri/xml_cdata.c +14 -19
- data/ext/nokogiri/xml_comment.c +19 -26
- data/ext/nokogiri/xml_document.c +296 -220
- data/ext/nokogiri/xml_document_fragment.c +12 -16
- data/ext/nokogiri/xml_dtd.c +64 -58
- data/ext/nokogiri/xml_element_content.c +31 -26
- data/ext/nokogiri/xml_element_decl.c +25 -25
- data/ext/nokogiri/xml_encoding_handler.c +43 -18
- data/ext/nokogiri/xml_entity_decl.c +37 -35
- data/ext/nokogiri/xml_entity_reference.c +16 -18
- data/ext/nokogiri/xml_namespace.c +98 -53
- data/ext/nokogiri/xml_node.c +1065 -653
- data/ext/nokogiri/xml_node_set.c +178 -166
- data/ext/nokogiri/xml_processing_instruction.c +17 -19
- data/ext/nokogiri/xml_reader.c +277 -175
- 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 +112 -86
- data/ext/nokogiri/xml_sax_push_parser.c +36 -27
- data/ext/nokogiri/xml_schema.c +114 -35
- data/ext/nokogiri/xml_syntax_error.c +42 -21
- data/ext/nokogiri/xml_text.c +14 -18
- data/ext/nokogiri/xml_xpath_context.c +226 -115
- data/ext/nokogiri/xslt_stylesheet.c +265 -173
- 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 +4875 -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/class_resolver.rb +67 -0
- data/lib/nokogiri/css/node.rb +10 -8
- data/lib/nokogiri/css/parser.rb +397 -377
- data/lib/nokogiri/css/parser.y +250 -245
- data/lib/nokogiri/css/parser_extras.rb +54 -49
- data/lib/nokogiri/css/syntax_error.rb +3 -1
- data/lib/nokogiri/css/tokenizer.rb +107 -104
- data/lib/nokogiri/css/tokenizer.rex +3 -2
- data/lib/nokogiri/css/xpath_visitor.rb +218 -91
- data/lib/nokogiri/css.rb +50 -17
- data/lib/nokogiri/decorators/slop.rb +9 -7
- data/lib/nokogiri/extension.rb +31 -0
- data/lib/nokogiri/gumbo.rb +15 -0
- data/lib/nokogiri/html.rb +38 -27
- data/lib/nokogiri/{html → html4}/builder.rb +4 -2
- data/lib/nokogiri/{html → html4}/document.rb +103 -105
- data/lib/nokogiri/html4/document_fragment.rb +54 -0
- data/lib/nokogiri/{html → html4}/element_description.rb +3 -1
- data/lib/nokogiri/html4/element_description_defaults.rb +578 -0
- data/lib/nokogiri/{html → html4}/entity_lookup.rb +4 -2
- data/lib/nokogiri/{html → html4}/sax/parser.rb +17 -16
- data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
- data/lib/nokogiri/{html → html4}/sax/push_parser.rb +12 -11
- data/lib/nokogiri/html4.rb +46 -0
- data/lib/nokogiri/html5/document.rb +91 -0
- data/lib/nokogiri/html5/document_fragment.rb +83 -0
- data/lib/nokogiri/html5/node.rb +100 -0
- data/lib/nokogiri/html5.rb +478 -0
- data/lib/nokogiri/jruby/dependencies.rb +21 -0
- data/lib/nokogiri/syntax_error.rb +2 -0
- data/lib/nokogiri/version/constant.rb +6 -0
- data/lib/nokogiri/version/info.rb +222 -0
- data/lib/nokogiri/version.rb +3 -108
- data/lib/nokogiri/xml/attr.rb +6 -3
- data/lib/nokogiri/xml/attribute_decl.rb +3 -1
- data/lib/nokogiri/xml/builder.rb +97 -53
- data/lib/nokogiri/xml/cdata.rb +3 -1
- data/lib/nokogiri/xml/character_data.rb +2 -0
- data/lib/nokogiri/xml/document.rb +224 -86
- data/lib/nokogiri/xml/document_fragment.rb +46 -44
- data/lib/nokogiri/xml/dtd.rb +4 -2
- data/lib/nokogiri/xml/element_content.rb +2 -0
- data/lib/nokogiri/xml/element_decl.rb +3 -1
- data/lib/nokogiri/xml/entity_decl.rb +4 -2
- data/lib/nokogiri/xml/entity_reference.rb +2 -0
- data/lib/nokogiri/xml/namespace.rb +3 -0
- data/lib/nokogiri/xml/node/save_options.rb +10 -5
- data/lib/nokogiri/xml/node.rb +884 -378
- data/lib/nokogiri/xml/node_set.rb +51 -54
- data/lib/nokogiri/xml/notation.rb +13 -0
- data/lib/nokogiri/xml/parse_options.rb +22 -8
- data/lib/nokogiri/xml/pp/character_data.rb +9 -6
- data/lib/nokogiri/xml/pp/node.rb +25 -26
- data/lib/nokogiri/xml/pp.rb +4 -2
- data/lib/nokogiri/xml/processing_instruction.rb +3 -1
- data/lib/nokogiri/xml/reader.rb +21 -28
- data/lib/nokogiri/xml/relax_ng.rb +8 -2
- data/lib/nokogiri/xml/sax/document.rb +45 -49
- data/lib/nokogiri/xml/sax/parser.rb +38 -34
- data/lib/nokogiri/xml/sax/parser_context.rb +8 -3
- data/lib/nokogiri/xml/sax/push_parser.rb +6 -5
- data/lib/nokogiri/xml/sax.rb +6 -4
- data/lib/nokogiri/xml/schema.rb +19 -9
- data/lib/nokogiri/xml/searchable.rb +112 -72
- data/lib/nokogiri/xml/syntax_error.rb +6 -4
- data/lib/nokogiri/xml/text.rb +2 -0
- data/lib/nokogiri/xml/xpath/syntax_error.rb +4 -2
- data/lib/nokogiri/xml/xpath.rb +15 -4
- data/lib/nokogiri/xml/xpath_context.rb +3 -3
- data/lib/nokogiri/xml.rb +38 -37
- data/lib/nokogiri/xslt/stylesheet.rb +3 -1
- data/lib/nokogiri/xslt.rb +29 -20
- data/lib/nokogiri.rb +49 -65
- data/lib/xsd/xmlparser/nokogiri.rb +26 -24
- 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/0003-libxml2.la-is-in-top_builddir.patch +25 -0
- data/patches/libxml2/0005-avoid-isnan-isinf.patch +81 -0
- data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
- data/patches/libxslt/0001-update-automake-files-for-arm64.patch +3037 -0
- data/ports/archives/libxml2-2.10.3.tar.xz +0 -0
- data/ports/archives/libxslt-1.1.37.tar.xz +0 -0
- metadata +205 -138
- 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/document_fragment.rb +0 -49
- data/lib/nokogiri/html/element_description_defaults.rb +0 -671
- 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/libxslt/0001-Fix-security-framework-bypass.patch +0 -120
- data/ports/archives/libxml2-2.9.9.tar.gz +0 -0
- data/ports/archives/libxslt-1.1.33.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,22 @@ 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);
|
29
|
-
|
30
31
|
return rb_node;
|
31
32
|
}
|
32
33
|
|
33
|
-
|
34
|
-
|
34
|
+
void
|
35
|
+
noko_init_xml_document_fragment()
|
35
36
|
{
|
36
|
-
|
37
|
-
VALUE xml = rb_define_module_under(nokogiri, "XML");
|
38
|
-
VALUE node = rb_define_class_under(xml, "Node", rb_cObject);
|
39
|
-
|
37
|
+
assert(cNokogiriXmlNode);
|
40
38
|
/*
|
41
39
|
* DocumentFragment represents a DocumentFragment node in an xml document.
|
42
40
|
*/
|
43
|
-
|
44
|
-
|
45
|
-
cNokogiriXmlDocumentFragment = klass;
|
41
|
+
cNokogiriXmlDocumentFragment = rb_define_class_under(mNokogiriXml, "DocumentFragment", cNokogiriXmlNode);
|
46
42
|
|
47
|
-
rb_define_singleton_method(
|
43
|
+
rb_define_singleton_method(cNokogiriXmlDocumentFragment, "new", new, -1);
|
48
44
|
}
|
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
|
+
Noko_Node_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
|
|
@@ -51,18 +57,19 @@ static VALUE entities(VALUE self)
|
|
51
57
|
|
52
58
|
/*
|
53
59
|
* call-seq:
|
54
|
-
* notations
|
60
|
+
* notations() → Hash<name(String)⇒Notation>
|
55
61
|
*
|
56
|
-
*
|
62
|
+
* [Returns] All the notations for this DTD in a Hash of Notation +name+ to Notation.
|
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
|
+
Noko_Node_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,16 +84,17 @@ 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;
|
84
92
|
|
85
|
-
|
93
|
+
Noko_Node_Get_Struct(self, xmlDtd, dtd);
|
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
|
+
Noko_Node_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,15 +130,16 @@ 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;
|
128
138
|
xmlValidCtxtPtr ctxt;
|
129
139
|
VALUE error_list;
|
130
140
|
|
131
|
-
|
132
|
-
|
141
|
+
Noko_Node_Get_Struct(self, xmlDtd, dtd);
|
142
|
+
Noko_Node_Get_Struct(document, xmlDoc, doc);
|
133
143
|
error_list = rb_ary_new();
|
134
144
|
|
135
145
|
ctxt = xmlNewValidCtxt();
|
@@ -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
|
+
Noko_Node_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
|
+
Noko_Node_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,10 +10,11 @@ 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
|
+
Noko_Node_Get_Struct(self, xmlElement, node);
|
15
18
|
return INT2NUM((long)node->etype);
|
16
19
|
}
|
17
20
|
|
@@ -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
|
+
Noko_Node_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
|
+
Noko_Node_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,63 +1,84 @@
|
|
1
|
-
#include <
|
1
|
+
#include <nokogiri.h>
|
2
|
+
|
3
|
+
VALUE cNokogiriEncodingHandler;
|
4
|
+
|
5
|
+
|
6
|
+
static void
|
7
|
+
_xml_encoding_handler_dealloc(xmlCharEncodingHandlerPtr c_handler)
|
8
|
+
{
|
9
|
+
/* make sure iconv handlers are cleaned up and freed */
|
10
|
+
xmlCharEncCloseFunc(c_handler);
|
11
|
+
}
|
12
|
+
|
2
13
|
|
3
14
|
/*
|
4
15
|
* call-seq: Nokogiri::EncodingHandler.[](name)
|
5
16
|
*
|
6
17
|
* Get the encoding handler for +name+
|
7
18
|
*/
|
8
|
-
static VALUE
|
19
|
+
static VALUE
|
20
|
+
rb_xml_encoding_handler_s_get(VALUE klass, VALUE key)
|
9
21
|
{
|
10
22
|
xmlCharEncodingHandlerPtr handler;
|
11
23
|
|
12
24
|
handler = xmlFindCharEncodingHandler(StringValueCStr(key));
|
13
|
-
if(handler)
|
14
|
-
return Data_Wrap_Struct(klass, NULL,
|
25
|
+
if (handler) {
|
26
|
+
return Data_Wrap_Struct(klass, NULL, _xml_encoding_handler_dealloc, handler);
|
27
|
+
}
|
15
28
|
|
16
29
|
return Qnil;
|
17
30
|
}
|
18
31
|
|
32
|
+
|
19
33
|
/*
|
20
34
|
* call-seq: Nokogiri::EncodingHandler.delete(name)
|
21
35
|
*
|
22
36
|
* Delete the encoding alias named +name+
|
23
37
|
*/
|
24
|
-
static VALUE
|
38
|
+
static VALUE
|
39
|
+
rb_xml_encoding_handler_s_delete(VALUE klass, VALUE name)
|
25
40
|
{
|
26
|
-
if(xmlDelEncodingAlias(StringValueCStr(name))) return Qnil;
|
41
|
+
if (xmlDelEncodingAlias(StringValueCStr(name))) { return Qnil; }
|
27
42
|
|
28
43
|
return Qtrue;
|
29
44
|
}
|
30
45
|
|
46
|
+
|
31
47
|
/*
|
32
48
|
* call-seq: Nokogiri::EncodingHandler.alias(from, to)
|
33
49
|
*
|
34
50
|
* Alias encoding handler with name +from+ to name +to+
|
35
51
|
*/
|
36
|
-
static VALUE
|
52
|
+
static VALUE
|
53
|
+
rb_xml_encoding_handler_s_alias(VALUE klass, VALUE from, VALUE to)
|
37
54
|
{
|
38
55
|
xmlAddEncodingAlias(StringValueCStr(from), StringValueCStr(to));
|
39
56
|
|
40
57
|
return to;
|
41
58
|
}
|
42
59
|
|
60
|
+
|
43
61
|
/*
|
44
62
|
* call-seq: Nokogiri::EncodingHandler.clear_aliases!
|
45
63
|
*
|
46
64
|
* Remove all encoding aliases.
|
47
65
|
*/
|
48
|
-
static VALUE
|
66
|
+
static VALUE
|
67
|
+
rb_xml_encoding_handler_s_clear_aliases(VALUE klass)
|
49
68
|
{
|
50
69
|
xmlCleanupEncodingAliases();
|
51
70
|
|
52
71
|
return klass;
|
53
72
|
}
|
54
73
|
|
74
|
+
|
55
75
|
/*
|
56
76
|
* call-seq: name
|
57
77
|
*
|
58
78
|
* Get the name of this EncodingHandler
|
59
79
|
*/
|
60
|
-
static VALUE
|
80
|
+
static VALUE
|
81
|
+
rb_xml_encoding_handler_name(VALUE self)
|
61
82
|
{
|
62
83
|
xmlCharEncodingHandlerPtr handler;
|
63
84
|
|
@@ -66,14 +87,18 @@ static VALUE name(VALUE self)
|
|
66
87
|
return NOKOGIRI_STR_NEW2(handler->name);
|
67
88
|
}
|
68
89
|
|
69
|
-
|
90
|
+
|
91
|
+
void
|
92
|
+
noko_init_xml_encoding_handler()
|
70
93
|
{
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
rb_define_singleton_method(
|
76
|
-
rb_define_singleton_method(
|
77
|
-
rb_define_singleton_method(
|
78
|
-
|
94
|
+
cNokogiriEncodingHandler = rb_define_class_under(mNokogiri, "EncodingHandler", rb_cObject);
|
95
|
+
|
96
|
+
rb_undef_alloc_func(cNokogiriEncodingHandler);
|
97
|
+
|
98
|
+
rb_define_singleton_method(cNokogiriEncodingHandler, "[]", rb_xml_encoding_handler_s_get, 1);
|
99
|
+
rb_define_singleton_method(cNokogiriEncodingHandler, "delete", rb_xml_encoding_handler_s_delete, 1);
|
100
|
+
rb_define_singleton_method(cNokogiriEncodingHandler, "alias", rb_xml_encoding_handler_s_alias, 2);
|
101
|
+
rb_define_singleton_method(cNokogiriEncodingHandler, "clear_aliases!", rb_xml_encoding_handler_s_clear_aliases, 0);
|
102
|
+
|
103
|
+
rb_define_method(cNokogiriEncodingHandler, "name", rb_xml_encoding_handler_name, 0);
|
79
104
|
}
|