nokogiri 1.18.0-aarch64-linux-gnu

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.

Files changed (203) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +39 -0
  3. data/LICENSE-DEPENDENCIES.md +2224 -0
  4. data/LICENSE.md +9 -0
  5. data/README.md +293 -0
  6. data/bin/nokogiri +131 -0
  7. data/dependencies.yml +42 -0
  8. data/ext/nokogiri/depend +38 -0
  9. data/ext/nokogiri/extconf.rb +1173 -0
  10. data/ext/nokogiri/gumbo.c +610 -0
  11. data/ext/nokogiri/html4_document.c +171 -0
  12. data/ext/nokogiri/html4_element_description.c +299 -0
  13. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  14. data/ext/nokogiri/html4_sax_parser.c +40 -0
  15. data/ext/nokogiri/html4_sax_parser_context.c +98 -0
  16. data/ext/nokogiri/html4_sax_push_parser.c +96 -0
  17. data/ext/nokogiri/include/libexslt/exslt.h +108 -0
  18. data/ext/nokogiri/include/libexslt/exsltconfig.h +70 -0
  19. data/ext/nokogiri/include/libexslt/exsltexports.h +63 -0
  20. data/ext/nokogiri/include/libxml2/libxml/HTMLparser.h +336 -0
  21. data/ext/nokogiri/include/libxml2/libxml/HTMLtree.h +147 -0
  22. data/ext/nokogiri/include/libxml2/libxml/SAX.h +202 -0
  23. data/ext/nokogiri/include/libxml2/libxml/SAX2.h +171 -0
  24. data/ext/nokogiri/include/libxml2/libxml/c14n.h +115 -0
  25. data/ext/nokogiri/include/libxml2/libxml/catalog.h +182 -0
  26. data/ext/nokogiri/include/libxml2/libxml/chvalid.h +230 -0
  27. data/ext/nokogiri/include/libxml2/libxml/debugXML.h +217 -0
  28. data/ext/nokogiri/include/libxml2/libxml/dict.h +82 -0
  29. data/ext/nokogiri/include/libxml2/libxml/encoding.h +244 -0
  30. data/ext/nokogiri/include/libxml2/libxml/entities.h +166 -0
  31. data/ext/nokogiri/include/libxml2/libxml/globals.h +41 -0
  32. data/ext/nokogiri/include/libxml2/libxml/hash.h +251 -0
  33. data/ext/nokogiri/include/libxml2/libxml/list.h +137 -0
  34. data/ext/nokogiri/include/libxml2/libxml/nanoftp.h +186 -0
  35. data/ext/nokogiri/include/libxml2/libxml/nanohttp.h +98 -0
  36. data/ext/nokogiri/include/libxml2/libxml/parser.h +1390 -0
  37. data/ext/nokogiri/include/libxml2/libxml/parserInternals.h +671 -0
  38. data/ext/nokogiri/include/libxml2/libxml/pattern.h +106 -0
  39. data/ext/nokogiri/include/libxml2/libxml/relaxng.h +219 -0
  40. data/ext/nokogiri/include/libxml2/libxml/schemasInternals.h +959 -0
  41. data/ext/nokogiri/include/libxml2/libxml/schematron.h +143 -0
  42. data/ext/nokogiri/include/libxml2/libxml/threads.h +87 -0
  43. data/ext/nokogiri/include/libxml2/libxml/tree.h +1382 -0
  44. data/ext/nokogiri/include/libxml2/libxml/uri.h +106 -0
  45. data/ext/nokogiri/include/libxml2/libxml/valid.h +477 -0
  46. data/ext/nokogiri/include/libxml2/libxml/xinclude.h +136 -0
  47. data/ext/nokogiri/include/libxml2/libxml/xlink.h +189 -0
  48. data/ext/nokogiri/include/libxml2/libxml/xmlIO.h +438 -0
  49. data/ext/nokogiri/include/libxml2/libxml/xmlautomata.h +146 -0
  50. data/ext/nokogiri/include/libxml2/libxml/xmlerror.h +962 -0
  51. data/ext/nokogiri/include/libxml2/libxml/xmlexports.h +146 -0
  52. data/ext/nokogiri/include/libxml2/libxml/xmlmemory.h +188 -0
  53. data/ext/nokogiri/include/libxml2/libxml/xmlmodule.h +57 -0
  54. data/ext/nokogiri/include/libxml2/libxml/xmlreader.h +436 -0
  55. data/ext/nokogiri/include/libxml2/libxml/xmlregexp.h +215 -0
  56. data/ext/nokogiri/include/libxml2/libxml/xmlsave.h +102 -0
  57. data/ext/nokogiri/include/libxml2/libxml/xmlschemas.h +249 -0
  58. data/ext/nokogiri/include/libxml2/libxml/xmlschemastypes.h +152 -0
  59. data/ext/nokogiri/include/libxml2/libxml/xmlstring.h +140 -0
  60. data/ext/nokogiri/include/libxml2/libxml/xmlunicode.h +366 -0
  61. data/ext/nokogiri/include/libxml2/libxml/xmlversion.h +347 -0
  62. data/ext/nokogiri/include/libxml2/libxml/xmlwriter.h +489 -0
  63. data/ext/nokogiri/include/libxml2/libxml/xpath.h +579 -0
  64. data/ext/nokogiri/include/libxml2/libxml/xpathInternals.h +633 -0
  65. data/ext/nokogiri/include/libxml2/libxml/xpointer.h +138 -0
  66. data/ext/nokogiri/include/libxslt/attributes.h +39 -0
  67. data/ext/nokogiri/include/libxslt/documents.h +93 -0
  68. data/ext/nokogiri/include/libxslt/extensions.h +262 -0
  69. data/ext/nokogiri/include/libxslt/extra.h +72 -0
  70. data/ext/nokogiri/include/libxslt/functions.h +78 -0
  71. data/ext/nokogiri/include/libxslt/imports.h +75 -0
  72. data/ext/nokogiri/include/libxslt/keys.h +53 -0
  73. data/ext/nokogiri/include/libxslt/namespaces.h +68 -0
  74. data/ext/nokogiri/include/libxslt/numbersInternals.h +73 -0
  75. data/ext/nokogiri/include/libxslt/pattern.h +84 -0
  76. data/ext/nokogiri/include/libxslt/preproc.h +43 -0
  77. data/ext/nokogiri/include/libxslt/security.h +104 -0
  78. data/ext/nokogiri/include/libxslt/templates.h +77 -0
  79. data/ext/nokogiri/include/libxslt/transform.h +207 -0
  80. data/ext/nokogiri/include/libxslt/variables.h +118 -0
  81. data/ext/nokogiri/include/libxslt/xslt.h +110 -0
  82. data/ext/nokogiri/include/libxslt/xsltInternals.h +1995 -0
  83. data/ext/nokogiri/include/libxslt/xsltconfig.h +146 -0
  84. data/ext/nokogiri/include/libxslt/xsltexports.h +64 -0
  85. data/ext/nokogiri/include/libxslt/xsltlocale.h +44 -0
  86. data/ext/nokogiri/include/libxslt/xsltutils.h +343 -0
  87. data/ext/nokogiri/libxml2_polyfill.c +114 -0
  88. data/ext/nokogiri/nokogiri.c +294 -0
  89. data/ext/nokogiri/nokogiri.h +238 -0
  90. data/ext/nokogiri/test_global_handlers.c +40 -0
  91. data/ext/nokogiri/xml_attr.c +103 -0
  92. data/ext/nokogiri/xml_attribute_decl.c +70 -0
  93. data/ext/nokogiri/xml_cdata.c +62 -0
  94. data/ext/nokogiri/xml_comment.c +57 -0
  95. data/ext/nokogiri/xml_document.c +784 -0
  96. data/ext/nokogiri/xml_document_fragment.c +29 -0
  97. data/ext/nokogiri/xml_dtd.c +208 -0
  98. data/ext/nokogiri/xml_element_content.c +131 -0
  99. data/ext/nokogiri/xml_element_decl.c +69 -0
  100. data/ext/nokogiri/xml_encoding_handler.c +112 -0
  101. data/ext/nokogiri/xml_entity_decl.c +112 -0
  102. data/ext/nokogiri/xml_entity_reference.c +50 -0
  103. data/ext/nokogiri/xml_namespace.c +181 -0
  104. data/ext/nokogiri/xml_node.c +2459 -0
  105. data/ext/nokogiri/xml_node_set.c +518 -0
  106. data/ext/nokogiri/xml_processing_instruction.c +54 -0
  107. data/ext/nokogiri/xml_reader.c +777 -0
  108. data/ext/nokogiri/xml_relax_ng.c +149 -0
  109. data/ext/nokogiri/xml_sax_parser.c +403 -0
  110. data/ext/nokogiri/xml_sax_parser_context.c +390 -0
  111. data/ext/nokogiri/xml_sax_push_parser.c +206 -0
  112. data/ext/nokogiri/xml_schema.c +226 -0
  113. data/ext/nokogiri/xml_syntax_error.c +93 -0
  114. data/ext/nokogiri/xml_text.c +59 -0
  115. data/ext/nokogiri/xml_xpath_context.c +486 -0
  116. data/ext/nokogiri/xslt_stylesheet.c +421 -0
  117. data/gumbo-parser/CHANGES.md +63 -0
  118. data/gumbo-parser/Makefile +129 -0
  119. data/gumbo-parser/THANKS +27 -0
  120. data/lib/nokogiri/3.1/nokogiri.so +0 -0
  121. data/lib/nokogiri/3.2/nokogiri.so +0 -0
  122. data/lib/nokogiri/3.3/nokogiri.so +0 -0
  123. data/lib/nokogiri/3.4/nokogiri.so +0 -0
  124. data/lib/nokogiri/class_resolver.rb +67 -0
  125. data/lib/nokogiri/css/node.rb +58 -0
  126. data/lib/nokogiri/css/parser.rb +772 -0
  127. data/lib/nokogiri/css/parser.y +277 -0
  128. data/lib/nokogiri/css/parser_extras.rb +36 -0
  129. data/lib/nokogiri/css/selector_cache.rb +38 -0
  130. data/lib/nokogiri/css/syntax_error.rb +9 -0
  131. data/lib/nokogiri/css/tokenizer.rb +155 -0
  132. data/lib/nokogiri/css/tokenizer.rex +57 -0
  133. data/lib/nokogiri/css/xpath_visitor.rb +375 -0
  134. data/lib/nokogiri/css.rb +132 -0
  135. data/lib/nokogiri/decorators/slop.rb +42 -0
  136. data/lib/nokogiri/encoding_handler.rb +57 -0
  137. data/lib/nokogiri/extension.rb +32 -0
  138. data/lib/nokogiri/gumbo.rb +15 -0
  139. data/lib/nokogiri/html.rb +48 -0
  140. data/lib/nokogiri/html4/builder.rb +37 -0
  141. data/lib/nokogiri/html4/document.rb +235 -0
  142. data/lib/nokogiri/html4/document_fragment.rb +166 -0
  143. data/lib/nokogiri/html4/element_description.rb +25 -0
  144. data/lib/nokogiri/html4/element_description_defaults.rb +2040 -0
  145. data/lib/nokogiri/html4/encoding_reader.rb +121 -0
  146. data/lib/nokogiri/html4/entity_lookup.rb +15 -0
  147. data/lib/nokogiri/html4/sax/parser.rb +48 -0
  148. data/lib/nokogiri/html4/sax/parser_context.rb +15 -0
  149. data/lib/nokogiri/html4/sax/push_parser.rb +37 -0
  150. data/lib/nokogiri/html4.rb +42 -0
  151. data/lib/nokogiri/html5/builder.rb +40 -0
  152. data/lib/nokogiri/html5/document.rb +199 -0
  153. data/lib/nokogiri/html5/document_fragment.rb +200 -0
  154. data/lib/nokogiri/html5/node.rb +103 -0
  155. data/lib/nokogiri/html5.rb +368 -0
  156. data/lib/nokogiri/jruby/dependencies.rb +3 -0
  157. data/lib/nokogiri/jruby/nokogiri_jars.rb +43 -0
  158. data/lib/nokogiri/syntax_error.rb +6 -0
  159. data/lib/nokogiri/version/constant.rb +6 -0
  160. data/lib/nokogiri/version/info.rb +224 -0
  161. data/lib/nokogiri/version.rb +4 -0
  162. data/lib/nokogiri/xml/attr.rb +66 -0
  163. data/lib/nokogiri/xml/attribute_decl.rb +22 -0
  164. data/lib/nokogiri/xml/builder.rb +494 -0
  165. data/lib/nokogiri/xml/cdata.rb +13 -0
  166. data/lib/nokogiri/xml/character_data.rb +9 -0
  167. data/lib/nokogiri/xml/document.rb +514 -0
  168. data/lib/nokogiri/xml/document_fragment.rb +276 -0
  169. data/lib/nokogiri/xml/dtd.rb +34 -0
  170. data/lib/nokogiri/xml/element_content.rb +46 -0
  171. data/lib/nokogiri/xml/element_decl.rb +17 -0
  172. data/lib/nokogiri/xml/entity_decl.rb +23 -0
  173. data/lib/nokogiri/xml/entity_reference.rb +20 -0
  174. data/lib/nokogiri/xml/namespace.rb +57 -0
  175. data/lib/nokogiri/xml/node/save_options.rb +76 -0
  176. data/lib/nokogiri/xml/node.rb +1650 -0
  177. data/lib/nokogiri/xml/node_set.rb +449 -0
  178. data/lib/nokogiri/xml/notation.rb +19 -0
  179. data/lib/nokogiri/xml/parse_options.rb +213 -0
  180. data/lib/nokogiri/xml/pp/character_data.rb +21 -0
  181. data/lib/nokogiri/xml/pp/node.rb +73 -0
  182. data/lib/nokogiri/xml/pp.rb +4 -0
  183. data/lib/nokogiri/xml/processing_instruction.rb +11 -0
  184. data/lib/nokogiri/xml/reader.rb +139 -0
  185. data/lib/nokogiri/xml/relax_ng.rb +75 -0
  186. data/lib/nokogiri/xml/sax/document.rb +258 -0
  187. data/lib/nokogiri/xml/sax/parser.rb +199 -0
  188. data/lib/nokogiri/xml/sax/parser_context.rb +129 -0
  189. data/lib/nokogiri/xml/sax/push_parser.rb +64 -0
  190. data/lib/nokogiri/xml/sax.rb +54 -0
  191. data/lib/nokogiri/xml/schema.rb +140 -0
  192. data/lib/nokogiri/xml/searchable.rb +274 -0
  193. data/lib/nokogiri/xml/syntax_error.rb +94 -0
  194. data/lib/nokogiri/xml/text.rb +11 -0
  195. data/lib/nokogiri/xml/xpath/syntax_error.rb +13 -0
  196. data/lib/nokogiri/xml/xpath.rb +21 -0
  197. data/lib/nokogiri/xml/xpath_context.rb +27 -0
  198. data/lib/nokogiri/xml.rb +65 -0
  199. data/lib/nokogiri/xslt/stylesheet.rb +49 -0
  200. data/lib/nokogiri/xslt.rb +129 -0
  201. data/lib/nokogiri.rb +128 -0
  202. data/lib/xsd/xmlparser/nokogiri.rb +105 -0
  203. metadata +321 -0
@@ -0,0 +1,226 @@
1
+ #include <nokogiri.h>
2
+
3
+ VALUE cNokogiriXmlSchema;
4
+
5
+ static void
6
+ xml_schema_deallocate(void *data)
7
+ {
8
+ xmlSchemaPtr schema = data;
9
+ xmlSchemaFree(schema);
10
+ }
11
+
12
+ static const rb_data_type_t xml_schema_type = {
13
+ .wrap_struct_name = "xmlSchema",
14
+ .function = {
15
+ .dfree = xml_schema_deallocate,
16
+ },
17
+ .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
18
+ };
19
+
20
+ static VALUE
21
+ noko_xml_schema__validate_document(VALUE self, VALUE document)
22
+ {
23
+ xmlDocPtr doc;
24
+ xmlSchemaPtr schema;
25
+ xmlSchemaValidCtxtPtr valid_ctxt;
26
+ VALUE errors;
27
+
28
+ TypedData_Get_Struct(self, xmlSchema, &xml_schema_type, schema);
29
+ doc = noko_xml_document_unwrap(document);
30
+
31
+ errors = rb_ary_new();
32
+
33
+ valid_ctxt = xmlSchemaNewValidCtxt(schema);
34
+
35
+ if (NULL == valid_ctxt) {
36
+ /* we have a problem */
37
+ rb_raise(rb_eRuntimeError, "Could not create a validation context");
38
+ }
39
+
40
+ xmlSchemaSetValidStructuredErrors(
41
+ valid_ctxt,
42
+ noko__error_array_pusher,
43
+ (void *)errors
44
+ );
45
+
46
+ int status = xmlSchemaValidateDoc(valid_ctxt, doc);
47
+
48
+ xmlSchemaFreeValidCtxt(valid_ctxt);
49
+
50
+ if (status != 0) {
51
+ if (RARRAY_LEN(errors) == 0) {
52
+ rb_ary_push(errors, rb_str_new2("Could not validate document"));
53
+ }
54
+ }
55
+
56
+ return errors;
57
+ }
58
+
59
+ static VALUE
60
+ noko_xml_schema__validate_file(VALUE self, VALUE rb_filename)
61
+ {
62
+ xmlSchemaPtr schema;
63
+ xmlSchemaValidCtxtPtr valid_ctxt;
64
+ const char *filename ;
65
+ VALUE errors;
66
+
67
+ TypedData_Get_Struct(self, xmlSchema, &xml_schema_type, schema);
68
+ filename = (const char *)StringValueCStr(rb_filename) ;
69
+
70
+ errors = rb_ary_new();
71
+
72
+ valid_ctxt = xmlSchemaNewValidCtxt(schema);
73
+
74
+ if (NULL == valid_ctxt) {
75
+ /* we have a problem */
76
+ rb_raise(rb_eRuntimeError, "Could not create a validation context");
77
+ }
78
+
79
+ xmlSchemaSetValidStructuredErrors(
80
+ valid_ctxt,
81
+ noko__error_array_pusher,
82
+ (void *)errors
83
+ );
84
+
85
+ int status = xmlSchemaValidateFile(valid_ctxt, filename, 0);
86
+
87
+ xmlSchemaFreeValidCtxt(valid_ctxt);
88
+
89
+ if (status != 0) {
90
+ if (RARRAY_LEN(errors) == 0) {
91
+ rb_ary_push(errors, rb_str_new2("Could not validate file."));
92
+ }
93
+ }
94
+
95
+ return errors;
96
+ }
97
+
98
+ static VALUE
99
+ xml_schema_parse_schema(
100
+ VALUE rb_class,
101
+ xmlSchemaParserCtxtPtr c_parser_context,
102
+ VALUE rb_parse_options
103
+ )
104
+ {
105
+ xmlExternalEntityLoader saved_loader = 0;
106
+ libxmlStructuredErrorHandlerState handler_state;
107
+
108
+ if (NIL_P(rb_parse_options)) {
109
+ rb_parse_options = rb_const_get_at(
110
+ rb_const_get_at(mNokogiriXml, rb_intern("ParseOptions")),
111
+ rb_intern("DEFAULT_SCHEMA")
112
+ );
113
+ }
114
+ int c_parse_options = (int)NUM2INT(rb_funcall(rb_parse_options, rb_intern("to_i"), 0));
115
+
116
+ VALUE rb_errors = rb_ary_new();
117
+ noko__structured_error_func_save_and_set(&handler_state, (void *)rb_errors, noko__error_array_pusher);
118
+
119
+ xmlSchemaSetParserStructuredErrors(
120
+ c_parser_context,
121
+ noko__error_array_pusher,
122
+ (void *)rb_errors
123
+ );
124
+
125
+ if (c_parse_options & XML_PARSE_NONET) {
126
+ saved_loader = xmlGetExternalEntityLoader();
127
+ xmlSetExternalEntityLoader(xmlNoNetExternalEntityLoader);
128
+ }
129
+
130
+ xmlSchemaPtr c_schema = xmlSchemaParse(c_parser_context);
131
+
132
+ if (saved_loader) {
133
+ xmlSetExternalEntityLoader(saved_loader);
134
+ }
135
+
136
+ xmlSchemaFreeParserCtxt(c_parser_context);
137
+ noko__structured_error_func_restore(&handler_state);
138
+
139
+ if (NULL == c_schema) {
140
+ VALUE exception = rb_funcall(cNokogiriXmlSyntaxError, rb_intern("aggregate"), 1, rb_errors);
141
+ if (RB_TEST(exception)) {
142
+ rb_exc_raise(exception);
143
+ } else {
144
+ rb_raise(rb_eRuntimeError, "Could not parse document");
145
+ }
146
+ }
147
+
148
+ VALUE rb_schema = TypedData_Wrap_Struct(rb_class, &xml_schema_type, c_schema);
149
+ rb_iv_set(rb_schema, "@errors", rb_errors);
150
+ rb_iv_set(rb_schema, "@parse_options", rb_parse_options);
151
+
152
+ return rb_schema;
153
+ }
154
+
155
+ /*
156
+ * :call-seq:
157
+ * from_document(input) → Nokogiri::XML::Schema
158
+ * from_document(input, parse_options) → Nokogiri::XML::Schema
159
+ *
160
+ * Parse an \XSD schema definition from a Document to create a new Nokogiri::XML::Schema
161
+ *
162
+ * [Parameters]
163
+ * - +input+ (XML::Document) A document containing the \XSD schema definition
164
+ * - +parse_options+ (Nokogiri::XML::ParseOptions)
165
+ * Defaults to Nokogiri::XML::ParseOptions::DEFAULT_SCHEMA
166
+ *
167
+ * [Returns] Nokogiri::XML::Schema
168
+ */
169
+ static VALUE
170
+ noko_xml_schema_s_from_document(int argc, VALUE *argv, VALUE rb_class)
171
+ {
172
+ /* TODO: deprecate this method and put file-or-string logic into .new so that becomes the
173
+ * preferred entry point, and this can become a private method */
174
+ VALUE rb_document;
175
+ VALUE rb_parse_options;
176
+ VALUE rb_schema;
177
+ xmlDocPtr c_document;
178
+ xmlSchemaParserCtxtPtr c_parser_context;
179
+ int defensive_copy_p = 0;
180
+
181
+ rb_scan_args(argc, argv, "11", &rb_document, &rb_parse_options);
182
+
183
+ if (!rb_obj_is_kind_of(rb_document, cNokogiriXmlNode)) {
184
+ rb_raise(rb_eTypeError,
185
+ "expected parameter to be a Nokogiri::XML::Document, received %"PRIsVALUE,
186
+ rb_obj_class(rb_document));
187
+ }
188
+
189
+ if (!rb_obj_is_kind_of(rb_document, cNokogiriXmlDocument)) {
190
+ xmlNodePtr deprecated_node_type_arg;
191
+ NOKO_WARN_DEPRECATION("Passing a Node as the first parameter to Schema.from_document is deprecated. Please pass a Document instead. This will become an error in Nokogiri v1.17.0."); // TODO: deprecated in v1.15.3, remove in v1.17.0
192
+ Noko_Node_Get_Struct(rb_document, xmlNode, deprecated_node_type_arg);
193
+ c_document = deprecated_node_type_arg->doc;
194
+ } else {
195
+ c_document = noko_xml_document_unwrap(rb_document);
196
+ }
197
+
198
+ if (noko_xml_document_has_wrapped_blank_nodes_p(c_document)) {
199
+ // see https://github.com/sparklemotion/nokogiri/pull/2001
200
+ c_document = xmlCopyDoc(c_document, 1);
201
+ defensive_copy_p = 1;
202
+ }
203
+
204
+ c_parser_context = xmlSchemaNewDocParserCtxt(c_document);
205
+ rb_schema = xml_schema_parse_schema(rb_class, c_parser_context, rb_parse_options);
206
+
207
+ if (defensive_copy_p) {
208
+ xmlFreeDoc(c_document);
209
+ c_document = NULL;
210
+ }
211
+
212
+ return rb_schema;
213
+ }
214
+
215
+ void
216
+ noko_init_xml_schema(void)
217
+ {
218
+ cNokogiriXmlSchema = rb_define_class_under(mNokogiriXml, "Schema", rb_cObject);
219
+
220
+ rb_undef_alloc_func(cNokogiriXmlSchema);
221
+
222
+ rb_define_singleton_method(cNokogiriXmlSchema, "from_document", noko_xml_schema_s_from_document, -1);
223
+
224
+ rb_define_private_method(cNokogiriXmlSchema, "validate_document", noko_xml_schema__validate_document, 1);
225
+ rb_define_private_method(cNokogiriXmlSchema, "validate_file", noko_xml_schema__validate_file, 1);
226
+ }
@@ -0,0 +1,93 @@
1
+ #include <nokogiri.h>
2
+
3
+ VALUE cNokogiriXmlSyntaxError;
4
+
5
+ void
6
+ noko__structured_error_func_save(libxmlStructuredErrorHandlerState *handler_state)
7
+ {
8
+ /* this method is tightly coupled to the implementation of xmlSetStructuredErrorFunc */
9
+ handler_state->user_data = xmlStructuredErrorContext;
10
+ handler_state->handler = xmlStructuredError;
11
+ }
12
+
13
+ void
14
+ noko__structured_error_func_save_and_set(
15
+ libxmlStructuredErrorHandlerState *handler_state,
16
+ void *user_data,
17
+ xmlStructuredErrorFunc handler
18
+ )
19
+ {
20
+ noko__structured_error_func_save(handler_state);
21
+ xmlSetStructuredErrorFunc(user_data, handler);
22
+ }
23
+
24
+ void
25
+ noko__structured_error_func_restore(libxmlStructuredErrorHandlerState *handler_state)
26
+ {
27
+ xmlSetStructuredErrorFunc(handler_state->user_data, handler_state->handler);
28
+ }
29
+
30
+ void
31
+ noko__error_array_pusher(void *ctx, xmlErrorConstPtr error)
32
+ {
33
+ VALUE list = (VALUE)ctx;
34
+ Check_Type(list, T_ARRAY);
35
+ rb_ary_push(list, noko_xml_syntax_error__wrap(error));
36
+ }
37
+
38
+ void
39
+ noko__error_raise(void *ctx, xmlErrorConstPtr error)
40
+ {
41
+ rb_exc_raise(noko_xml_syntax_error__wrap(error));
42
+ }
43
+
44
+ VALUE
45
+ noko_xml_syntax_error__wrap(xmlErrorConstPtr error)
46
+ {
47
+ xmlChar *c_path ;
48
+ VALUE msg, e, klass;
49
+
50
+ klass = cNokogiriXmlSyntaxError;
51
+
52
+ if (error && error->domain == XML_FROM_XPATH) {
53
+ klass = cNokogiriXmlXpathSyntaxError;
54
+ }
55
+
56
+ msg = (error && error->message) ? NOKOGIRI_STR_NEW2(error->message) : Qnil;
57
+
58
+ e = rb_class_new_instance(
59
+ 1,
60
+ &msg,
61
+ klass
62
+ );
63
+
64
+ if (error) {
65
+ c_path = xmlGetNodePath(error->node);
66
+
67
+ rb_iv_set(e, "@domain", INT2NUM(error->domain));
68
+ rb_iv_set(e, "@code", INT2NUM(error->code));
69
+ rb_iv_set(e, "@level", INT2NUM((short)error->level));
70
+ rb_iv_set(e, "@file", RBSTR_OR_QNIL(error->file));
71
+ rb_iv_set(e, "@line", INT2NUM(error->line));
72
+ rb_iv_set(e, "@path", RBSTR_OR_QNIL(c_path));
73
+ rb_iv_set(e, "@str1", RBSTR_OR_QNIL(error->str1));
74
+ rb_iv_set(e, "@str2", RBSTR_OR_QNIL(error->str2));
75
+ rb_iv_set(e, "@str3", RBSTR_OR_QNIL(error->str3));
76
+ rb_iv_set(e, "@int1", INT2NUM(error->int1));
77
+ rb_iv_set(e, "@column", INT2NUM(error->int2));
78
+
79
+ xmlFree(c_path);
80
+ }
81
+
82
+ return e;
83
+ }
84
+
85
+ void
86
+ noko_init_xml_syntax_error(void)
87
+ {
88
+ assert(cNokogiriSyntaxError);
89
+ /*
90
+ * The XML::SyntaxError is raised on parse errors
91
+ */
92
+ cNokogiriXmlSyntaxError = rb_define_class_under(mNokogiriXml, "SyntaxError", cNokogiriSyntaxError);
93
+ }
@@ -0,0 +1,59 @@
1
+ #include <nokogiri.h>
2
+
3
+ VALUE cNokogiriXmlText ;
4
+
5
+ /*
6
+ * call-seq:
7
+ * new(content, document)
8
+ *
9
+ * Create a new Text element on the +document+ with +content+
10
+ */
11
+ static VALUE
12
+ rb_xml_text_s_new(int argc, VALUE *argv, VALUE klass)
13
+ {
14
+ xmlDocPtr c_document;
15
+ xmlNodePtr c_node;
16
+ VALUE rb_string;
17
+ VALUE rb_document;
18
+ VALUE rb_rest;
19
+ VALUE rb_node;
20
+
21
+ rb_scan_args(argc, argv, "2*", &rb_string, &rb_document, &rb_rest);
22
+
23
+ Check_Type(rb_string, T_STRING);
24
+ if (!rb_obj_is_kind_of(rb_document, cNokogiriXmlNode)) {
25
+ rb_raise(rb_eTypeError,
26
+ "expected second parameter to be a Nokogiri::XML::Document, received %"PRIsVALUE,
27
+ rb_obj_class(rb_document));
28
+ }
29
+
30
+ if (!rb_obj_is_kind_of(rb_document, cNokogiriXmlDocument)) {
31
+ xmlNodePtr deprecated_node_type_arg;
32
+ NOKO_WARN_DEPRECATION("Passing a Node as the second parameter to Text.new is deprecated. Please pass a Document instead. This will become an error in Nokogiri v1.17.0."); // TODO: deprecated in v1.15.3, remove in v1.17.0
33
+ Noko_Node_Get_Struct(rb_document, xmlNode, deprecated_node_type_arg);
34
+ c_document = deprecated_node_type_arg->doc;
35
+ } else {
36
+ c_document = noko_xml_document_unwrap(rb_document);
37
+ }
38
+
39
+ c_node = xmlNewDocText(c_document, (xmlChar *)StringValueCStr(rb_string));
40
+ noko_xml_document_pin_node(c_node);
41
+ rb_node = noko_xml_node_wrap(klass, c_node) ;
42
+ rb_obj_call_init(rb_node, argc, argv);
43
+
44
+ if (rb_block_given_p()) { rb_yield(rb_node); }
45
+
46
+ return rb_node;
47
+ }
48
+
49
+ void
50
+ noko_init_xml_text(void)
51
+ {
52
+ assert(cNokogiriXmlCharacterData);
53
+ /*
54
+ * Wraps Text nodes.
55
+ */
56
+ cNokogiriXmlText = rb_define_class_under(mNokogiriXml, "Text", cNokogiriXmlCharacterData);
57
+
58
+ rb_define_singleton_method(cNokogiriXmlText, "new", rb_xml_text_s_new, -1);
59
+ }