nokogiri 1.11.0.rc4-java → 1.11.5-java

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 (144) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/LICENSE-DEPENDENCIES.md +12 -12
  4. data/LICENSE.md +1 -1
  5. data/README.md +168 -91
  6. data/dependencies.yml +12 -12
  7. data/ext/java/nokogiri/EncodingHandler.java +76 -89
  8. data/ext/java/nokogiri/HtmlDocument.java +135 -144
  9. data/ext/java/nokogiri/HtmlElementDescription.java +102 -117
  10. data/ext/java/nokogiri/HtmlEntityLookup.java +33 -60
  11. data/ext/java/nokogiri/HtmlSaxParserContext.java +218 -222
  12. data/ext/java/nokogiri/HtmlSaxPushParser.java +162 -169
  13. data/ext/java/nokogiri/NokogiriService.java +595 -556
  14. data/ext/java/nokogiri/XmlAttr.java +118 -126
  15. data/ext/java/nokogiri/XmlAttributeDecl.java +95 -106
  16. data/ext/java/nokogiri/XmlCdata.java +35 -58
  17. data/ext/java/nokogiri/XmlComment.java +46 -67
  18. data/ext/java/nokogiri/XmlDocument.java +645 -572
  19. data/ext/java/nokogiri/XmlDocumentFragment.java +125 -137
  20. data/ext/java/nokogiri/XmlDtd.java +448 -414
  21. data/ext/java/nokogiri/XmlElement.java +23 -48
  22. data/ext/java/nokogiri/XmlElementContent.java +343 -316
  23. data/ext/java/nokogiri/XmlElementDecl.java +124 -125
  24. data/ext/java/nokogiri/XmlEntityDecl.java +119 -127
  25. data/ext/java/nokogiri/XmlEntityReference.java +49 -72
  26. data/ext/java/nokogiri/XmlNamespace.java +175 -175
  27. data/ext/java/nokogiri/XmlNode.java +1843 -1620
  28. data/ext/java/nokogiri/XmlNodeSet.java +361 -331
  29. data/ext/java/nokogiri/XmlProcessingInstruction.java +47 -69
  30. data/ext/java/nokogiri/XmlReader.java +513 -450
  31. data/ext/java/nokogiri/XmlRelaxng.java +85 -104
  32. data/ext/java/nokogiri/XmlSaxParserContext.java +328 -315
  33. data/ext/java/nokogiri/XmlSaxPushParser.java +227 -220
  34. data/ext/java/nokogiri/XmlSchema.java +328 -295
  35. data/ext/java/nokogiri/XmlSyntaxError.java +113 -115
  36. data/ext/java/nokogiri/XmlText.java +55 -76
  37. data/ext/java/nokogiri/XmlXpathContext.java +240 -238
  38. data/ext/java/nokogiri/XsltStylesheet.java +280 -269
  39. data/ext/java/nokogiri/internals/ClosedStreamException.java +5 -2
  40. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +201 -202
  41. data/ext/java/nokogiri/internals/IgnoreSchemaErrorsErrorHandler.java +17 -10
  42. data/ext/java/nokogiri/internals/NokogiriBlockingQueueInputStream.java +43 -16
  43. data/ext/java/nokogiri/internals/NokogiriDomParser.java +63 -80
  44. data/ext/java/nokogiri/internals/NokogiriEntityResolver.java +107 -88
  45. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +27 -52
  46. data/ext/java/nokogiri/internals/NokogiriHandler.java +316 -286
  47. data/ext/java/nokogiri/internals/NokogiriHelpers.java +736 -652
  48. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +184 -173
  49. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +81 -98
  50. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +64 -79
  51. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +84 -99
  52. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +48 -65
  53. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +116 -131
  54. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +34 -56
  55. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +23 -46
  56. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +55 -72
  57. data/ext/java/nokogiri/internals/ParserContext.java +206 -211
  58. data/ext/java/nokogiri/internals/ReaderNode.java +478 -403
  59. data/ext/java/nokogiri/internals/SaveContextVisitor.java +822 -739
  60. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +31 -54
  61. data/ext/java/nokogiri/internals/XalanDTMManagerPatch.java +129 -123
  62. data/ext/java/nokogiri/internals/XmlDeclHandler.java +3 -34
  63. data/ext/java/nokogiri/internals/XmlDomParserContext.java +206 -207
  64. data/ext/java/nokogiri/internals/XmlSaxParser.java +22 -47
  65. data/ext/java/nokogiri/internals/c14n/AttrCompare.java +71 -68
  66. data/ext/java/nokogiri/internals/c14n/C14nHelper.java +137 -118
  67. data/ext/java/nokogiri/internals/c14n/CanonicalFilter.java +27 -21
  68. data/ext/java/nokogiri/internals/c14n/CanonicalizationException.java +74 -61
  69. data/ext/java/nokogiri/internals/c14n/Canonicalizer.java +230 -205
  70. data/ext/java/nokogiri/internals/c14n/Canonicalizer11.java +572 -547
  71. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_OmitComments.java +17 -10
  72. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_WithComments.java +17 -10
  73. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315.java +323 -302
  74. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315Excl.java +232 -219
  75. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclOmitComments.java +22 -15
  76. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclWithComments.java +23 -16
  77. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315OmitComments.java +23 -16
  78. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315WithComments.java +22 -15
  79. data/ext/java/nokogiri/internals/c14n/CanonicalizerBase.java +575 -545
  80. data/ext/java/nokogiri/internals/c14n/CanonicalizerPhysical.java +141 -120
  81. data/ext/java/nokogiri/internals/c14n/CanonicalizerSpi.java +39 -38
  82. data/ext/java/nokogiri/internals/c14n/Constants.java +13 -10
  83. data/ext/java/nokogiri/internals/c14n/ElementProxy.java +279 -247
  84. data/ext/java/nokogiri/internals/c14n/HelperNodeList.java +66 -53
  85. data/ext/java/nokogiri/internals/c14n/IgnoreAllErrorHandler.java +44 -37
  86. data/ext/java/nokogiri/internals/c14n/InclusiveNamespaces.java +135 -120
  87. data/ext/java/nokogiri/internals/c14n/InvalidCanonicalizerException.java +59 -48
  88. data/ext/java/nokogiri/internals/c14n/NameSpaceSymbTable.java +384 -334
  89. data/ext/java/nokogiri/internals/c14n/NodeFilter.java +25 -24
  90. data/ext/java/nokogiri/internals/c14n/UtfHelpper.java +151 -140
  91. data/ext/java/nokogiri/internals/c14n/XMLUtils.java +456 -423
  92. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTM.java +1466 -1500
  93. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTMdefaultNamespaceDeclarationNode.java +626 -574
  94. data/ext/nokogiri/depend +34 -474
  95. data/ext/nokogiri/extconf.rb +270 -183
  96. data/ext/nokogiri/html_document.c +10 -15
  97. data/ext/nokogiri/html_element_description.c +84 -71
  98. data/ext/nokogiri/html_entity_lookup.c +21 -16
  99. data/ext/nokogiri/html_sax_parser_context.c +67 -64
  100. data/ext/nokogiri/html_sax_push_parser.c +42 -34
  101. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  102. data/ext/nokogiri/nokogiri.c +190 -60
  103. data/ext/nokogiri/test_global_handlers.c +40 -0
  104. data/ext/nokogiri/xml_attr.c +15 -15
  105. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  106. data/ext/nokogiri/xml_cdata.c +13 -18
  107. data/ext/nokogiri/xml_comment.c +19 -26
  108. data/ext/nokogiri/xml_document.c +246 -188
  109. data/ext/nokogiri/xml_document_fragment.c +13 -15
  110. data/ext/nokogiri/xml_dtd.c +54 -48
  111. data/ext/nokogiri/xml_element_content.c +30 -27
  112. data/ext/nokogiri/xml_element_decl.c +22 -22
  113. data/ext/nokogiri/xml_encoding_handler.c +17 -11
  114. data/ext/nokogiri/xml_entity_decl.c +32 -30
  115. data/ext/nokogiri/xml_entity_reference.c +16 -18
  116. data/ext/nokogiri/xml_namespace.c +56 -49
  117. data/ext/nokogiri/xml_node.c +371 -320
  118. data/ext/nokogiri/xml_node_set.c +168 -156
  119. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  120. data/ext/nokogiri/xml_reader.c +191 -157
  121. data/ext/nokogiri/xml_relax_ng.c +29 -23
  122. data/ext/nokogiri/xml_sax_parser.c +117 -112
  123. data/ext/nokogiri/xml_sax_parser_context.c +101 -84
  124. data/ext/nokogiri/xml_sax_push_parser.c +36 -27
  125. data/ext/nokogiri/xml_schema.c +48 -42
  126. data/ext/nokogiri/xml_syntax_error.c +42 -21
  127. data/ext/nokogiri/xml_text.c +13 -17
  128. data/ext/nokogiri/xml_xpath_context.c +134 -127
  129. data/ext/nokogiri/xslt_stylesheet.c +157 -157
  130. data/lib/nokogiri.rb +2 -6
  131. data/lib/nokogiri/css/parser.rb +1 -1
  132. data/lib/nokogiri/extension.rb +26 -0
  133. data/lib/nokogiri/html/document_fragment.rb +15 -15
  134. data/lib/nokogiri/nokogiri.jar +0 -0
  135. data/lib/nokogiri/version/constant.rb +1 -1
  136. data/lib/nokogiri/version/info.rb +32 -8
  137. data/lib/nokogiri/xml/document.rb +74 -28
  138. data/lib/nokogiri/xml/node.rb +39 -42
  139. data/lib/nokogiri/xml/reader.rb +2 -9
  140. data/lib/nokogiri/xml/xpath.rb +1 -3
  141. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  142. metadata +62 -127
  143. data/ext/nokogiri/xml_io.c +0 -63
  144. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
@@ -1,31 +1,29 @@
1
- #include <xslt_stylesheet.h>
1
+ #include <nokogiri.h>
2
2
 
3
- #include <libxslt/xsltInternals.h>
4
- #include <libxslt/xsltutils.h>
5
- #include <libxslt/transform.h>
6
- #include <libexslt/exslt.h>
7
-
8
- VALUE xslt;
3
+ VALUE cNokogiriXsltStylesheet ;
9
4
 
10
- static void mark(nokogiriXsltStylesheetTuple *wrapper)
5
+ static void
6
+ mark(nokogiriXsltStylesheetTuple *wrapper)
11
7
  {
12
8
  rb_gc_mark(wrapper->func_instances);
13
9
  }
14
10
 
15
- static void dealloc(nokogiriXsltStylesheetTuple *wrapper)
11
+ static void
12
+ dealloc(nokogiriXsltStylesheetTuple *wrapper)
16
13
  {
17
- xsltStylesheetPtr doc = wrapper->ss;
14
+ xsltStylesheetPtr doc = wrapper->ss;
18
15
 
19
- NOKOGIRI_DEBUG_START(doc);
20
- xsltFreeStylesheet(doc); /* commented out for now. */
21
- NOKOGIRI_DEBUG_END(doc);
16
+ NOKOGIRI_DEBUG_START(doc);
17
+ xsltFreeStylesheet(doc); /* commented out for now. */
18
+ NOKOGIRI_DEBUG_END(doc);
22
19
 
23
- free(wrapper);
20
+ free(wrapper);
24
21
  }
25
22
 
26
- static void xslt_generic_error_handler(void * ctx, const char *msg, ...)
23
+ static void
24
+ xslt_generic_error_handler(void *ctx, const char *msg, ...)
27
25
  {
28
- char * message;
26
+ char *message;
29
27
 
30
28
  va_list args;
31
29
  va_start(args, msg);
@@ -37,7 +35,8 @@ static void xslt_generic_error_handler(void * ctx, const char *msg, ...)
37
35
  free(message);
38
36
  }
39
37
 
40
- VALUE Nokogiri_wrap_xslt_stylesheet(xsltStylesheetPtr ss)
38
+ VALUE
39
+ Nokogiri_wrap_xslt_stylesheet(xsltStylesheetPtr ss)
41
40
  {
42
41
  VALUE self;
43
42
  nokogiriXsltStylesheetTuple *wrapper;
@@ -58,29 +57,30 @@ VALUE Nokogiri_wrap_xslt_stylesheet(xsltStylesheetPtr ss)
58
57
  *
59
58
  * Parse a stylesheet from +document+.
60
59
  */
61
- static VALUE parse_stylesheet_doc(VALUE klass, VALUE xmldocobj)
60
+ static VALUE
61
+ parse_stylesheet_doc(VALUE klass, VALUE xmldocobj)
62
62
  {
63
- xmlDocPtr xml, xml_cpy;
64
- VALUE errstr, exception;
65
- xsltStylesheetPtr ss ;
66
- Data_Get_Struct(xmldocobj, xmlDoc, xml);
67
- exsltRegisterAll();
63
+ xmlDocPtr xml, xml_cpy;
64
+ VALUE errstr, exception;
65
+ xsltStylesheetPtr ss ;
66
+ Data_Get_Struct(xmldocobj, xmlDoc, xml);
67
+ exsltRegisterAll();
68
68
 
69
- errstr = rb_str_new(0, 0);
70
- xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
69
+ errstr = rb_str_new(0, 0);
70
+ xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
71
71
 
72
- xml_cpy = xmlCopyDoc(xml, 1); /* 1 => recursive */
73
- ss = xsltParseStylesheetDoc(xml_cpy);
72
+ xml_cpy = xmlCopyDoc(xml, 1); /* 1 => recursive */
73
+ ss = xsltParseStylesheetDoc(xml_cpy);
74
74
 
75
- xsltSetGenericErrorFunc(NULL, NULL);
75
+ xsltSetGenericErrorFunc(NULL, NULL);
76
76
 
77
- if (!ss) {
78
- xmlFreeDoc(xml_cpy);
79
- exception = rb_exc_new3(rb_eRuntimeError, errstr);
80
- rb_exc_raise(exception);
81
- }
77
+ if (!ss) {
78
+ xmlFreeDoc(xml_cpy);
79
+ exception = rb_exc_new3(rb_eRuntimeError, errstr);
80
+ rb_exc_raise(exception);
81
+ }
82
82
 
83
- return Nokogiri_wrap_xslt_stylesheet(ss);
83
+ return Nokogiri_wrap_xslt_stylesheet(ss);
84
84
  }
85
85
 
86
86
 
@@ -90,20 +90,21 @@ static VALUE parse_stylesheet_doc(VALUE klass, VALUE xmldocobj)
90
90
  *
91
91
  * Serialize +document+ to an xml string.
92
92
  */
93
- static VALUE serialize(VALUE self, VALUE xmlobj)
93
+ static VALUE
94
+ serialize(VALUE self, VALUE xmlobj)
94
95
  {
95
- xmlDocPtr xml ;
96
- nokogiriXsltStylesheetTuple *wrapper;
97
- xmlChar* doc_ptr ;
98
- int doc_len ;
99
- VALUE rval ;
100
-
101
- Data_Get_Struct(xmlobj, xmlDoc, xml);
102
- Data_Get_Struct(self, nokogiriXsltStylesheetTuple, wrapper);
103
- xsltSaveResultToString(&doc_ptr, &doc_len, xml, wrapper->ss);
104
- rval = NOKOGIRI_STR_NEW(doc_ptr, doc_len);
105
- xmlFree(doc_ptr);
106
- return rval ;
96
+ xmlDocPtr xml ;
97
+ nokogiriXsltStylesheetTuple *wrapper;
98
+ xmlChar *doc_ptr ;
99
+ int doc_len ;
100
+ VALUE rval ;
101
+
102
+ Data_Get_Struct(xmlobj, xmlDoc, xml);
103
+ Data_Get_Struct(self, nokogiriXsltStylesheetTuple, wrapper);
104
+ xsltSaveResultToString(&doc_ptr, &doc_len, xml, wrapper->ss);
105
+ rval = NOKOGIRI_STR_NEW(doc_ptr, doc_len);
106
+ xmlFree(doc_ptr);
107
+ return rval ;
107
108
  }
108
109
 
109
110
  /*
@@ -121,109 +122,114 @@ static VALUE serialize(VALUE self, VALUE xmlobj)
121
122
  * puts xslt.transform(doc, ['key', 'value'])
122
123
  *
123
124
  */
124
- static VALUE transform(int argc, VALUE* argv, VALUE self)
125
+ static VALUE
126
+ transform(int argc, VALUE *argv, VALUE self)
125
127
  {
126
- VALUE xmldoc, paramobj, errstr, exception ;
127
- xmlDocPtr xml ;
128
- xmlDocPtr result ;
129
- nokogiriXsltStylesheetTuple *wrapper;
130
- const char** params ;
131
- long param_len, j ;
132
- int parse_error_occurred ;
133
-
134
- rb_scan_args(argc, argv, "11", &xmldoc, &paramobj);
135
- if (NIL_P(paramobj)) { paramobj = rb_ary_new2(0L) ; }
136
- if (!rb_obj_is_kind_of(xmldoc, cNokogiriXmlDocument))
137
- rb_raise(rb_eArgError, "argument must be a Nokogiri::XML::Document");
138
-
139
- /* handle hashes as arguments. */
140
- if(T_HASH == TYPE(paramobj)) {
141
- paramobj = rb_funcall(paramobj, rb_intern("to_a"), 0);
142
- paramobj = rb_funcall(paramobj, rb_intern("flatten"), 0);
143
- }
144
-
145
- Check_Type(paramobj, T_ARRAY);
146
-
147
- Data_Get_Struct(xmldoc, xmlDoc, xml);
148
- Data_Get_Struct(self, nokogiriXsltStylesheetTuple, wrapper);
149
-
150
- param_len = RARRAY_LEN(paramobj);
151
- params = calloc((size_t)param_len+1, sizeof(char*));
152
- for (j = 0 ; j < param_len ; j++) {
153
- VALUE entry = rb_ary_entry(paramobj, j);
154
- const char * ptr = StringValueCStr(entry);
155
- params[j] = ptr;
156
- }
157
- params[param_len] = 0 ;
158
-
159
- errstr = rb_str_new(0, 0);
160
- xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
161
- xmlSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
162
-
163
- result = xsltApplyStylesheet(wrapper->ss, xml, params);
164
- free(params);
165
-
166
- xsltSetGenericErrorFunc(NULL, NULL);
167
- xmlSetGenericErrorFunc(NULL, NULL);
168
-
169
- parse_error_occurred = (Qfalse == rb_funcall(errstr, rb_intern("empty?"), 0));
170
-
171
- if (parse_error_occurred) {
172
- exception = rb_exc_new3(rb_eRuntimeError, errstr);
173
- rb_exc_raise(exception);
174
- }
175
-
176
- return Nokogiri_wrap_xml_document((VALUE)0, result) ;
128
+ VALUE xmldoc, paramobj, errstr, exception ;
129
+ xmlDocPtr xml ;
130
+ xmlDocPtr result ;
131
+ nokogiriXsltStylesheetTuple *wrapper;
132
+ const char **params ;
133
+ long param_len, j ;
134
+ int parse_error_occurred ;
135
+
136
+ rb_scan_args(argc, argv, "11", &xmldoc, &paramobj);
137
+ if (NIL_P(paramobj)) { paramobj = rb_ary_new2(0L) ; }
138
+ if (!rb_obj_is_kind_of(xmldoc, cNokogiriXmlDocument)) {
139
+ rb_raise(rb_eArgError, "argument must be a Nokogiri::XML::Document");
140
+ }
141
+
142
+ /* handle hashes as arguments. */
143
+ if (T_HASH == TYPE(paramobj)) {
144
+ paramobj = rb_funcall(paramobj, rb_intern("to_a"), 0);
145
+ paramobj = rb_funcall(paramobj, rb_intern("flatten"), 0);
146
+ }
147
+
148
+ Check_Type(paramobj, T_ARRAY);
149
+
150
+ Data_Get_Struct(xmldoc, xmlDoc, xml);
151
+ Data_Get_Struct(self, nokogiriXsltStylesheetTuple, wrapper);
152
+
153
+ param_len = RARRAY_LEN(paramobj);
154
+ params = calloc((size_t)param_len + 1, sizeof(char *));
155
+ for (j = 0 ; j < param_len ; j++) {
156
+ VALUE entry = rb_ary_entry(paramobj, j);
157
+ const char *ptr = StringValueCStr(entry);
158
+ params[j] = ptr;
159
+ }
160
+ params[param_len] = 0 ;
161
+
162
+ errstr = rb_str_new(0, 0);
163
+ xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
164
+ xmlSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
165
+
166
+ result = xsltApplyStylesheet(wrapper->ss, xml, params);
167
+ free(params);
168
+
169
+ xsltSetGenericErrorFunc(NULL, NULL);
170
+ xmlSetGenericErrorFunc(NULL, NULL);
171
+
172
+ parse_error_occurred = (Qfalse == rb_funcall(errstr, rb_intern("empty?"), 0));
173
+
174
+ if (parse_error_occurred) {
175
+ exception = rb_exc_new3(rb_eRuntimeError, errstr);
176
+ rb_exc_raise(exception);
177
+ }
178
+
179
+ return noko_xml_document_wrap((VALUE)0, result) ;
177
180
  }
178
181
 
179
- static void method_caller(xmlXPathParserContextPtr ctxt, int nargs)
182
+ static void
183
+ method_caller(xmlXPathParserContextPtr ctxt, int nargs)
180
184
  {
181
- VALUE handler;
182
- const char *function_name;
183
- xsltTransformContextPtr transform;
184
- const xmlChar *functionURI;
185
+ VALUE handler;
186
+ const char *function_name;
187
+ xsltTransformContextPtr transform;
188
+ const xmlChar *functionURI;
185
189
 
186
- transform = xsltXPathGetTransformContext(ctxt);
187
- functionURI = ctxt->context->functionURI;
188
- handler = (VALUE)xsltGetExtData(transform, functionURI);
189
- function_name = (const char*)(ctxt->context->function);
190
+ transform = xsltXPathGetTransformContext(ctxt);
191
+ functionURI = ctxt->context->functionURI;
192
+ handler = (VALUE)xsltGetExtData(transform, functionURI);
193
+ function_name = (const char *)(ctxt->context->function);
190
194
 
191
- Nokogiri_marshal_xpath_funcall_and_return_values(ctxt, nargs, handler, (const char*)function_name);
195
+ Nokogiri_marshal_xpath_funcall_and_return_values(ctxt, nargs, handler, (const char *)function_name);
192
196
  }
193
197
 
194
- static void * initFunc(xsltTransformContextPtr ctxt, const xmlChar *uri)
198
+ static void *
199
+ initFunc(xsltTransformContextPtr ctxt, const xmlChar *uri)
195
200
  {
196
- VALUE modules = rb_iv_get(xslt, "@modules");
197
- VALUE obj = rb_hash_aref(modules, rb_str_new2((const char *)uri));
198
- VALUE args = { Qfalse };
199
- VALUE methods = rb_funcall(obj, rb_intern("instance_methods"), 1, args);
200
- VALUE inst;
201
- nokogiriXsltStylesheetTuple *wrapper;
202
- int i;
203
-
204
- for(i = 0; i < RARRAY_LEN(methods); i++) {
205
- VALUE method_name = rb_obj_as_string(rb_ary_entry(methods, i));
206
- xsltRegisterExtFunction(ctxt,
207
- (unsigned char *)StringValueCStr(method_name), uri, method_caller);
208
- }
209
-
210
- Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
211
- wrapper);
212
- inst = rb_class_new_instance(0, NULL, obj);
213
- rb_ary_push(wrapper->func_instances, inst);
214
-
215
- return (void *)inst;
201
+ VALUE modules = rb_iv_get(mNokogiriXslt, "@modules");
202
+ VALUE obj = rb_hash_aref(modules, rb_str_new2((const char *)uri));
203
+ VALUE args = { Qfalse };
204
+ VALUE methods = rb_funcall(obj, rb_intern("instance_methods"), 1, args);
205
+ VALUE inst;
206
+ nokogiriXsltStylesheetTuple *wrapper;
207
+ int i;
208
+
209
+ for (i = 0; i < RARRAY_LEN(methods); i++) {
210
+ VALUE method_name = rb_obj_as_string(rb_ary_entry(methods, i));
211
+ xsltRegisterExtFunction(ctxt,
212
+ (unsigned char *)StringValueCStr(method_name), uri, method_caller);
213
+ }
214
+
215
+ Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
216
+ wrapper);
217
+ inst = rb_class_new_instance(0, NULL, obj);
218
+ rb_ary_push(wrapper->func_instances, inst);
219
+
220
+ return (void *)inst;
216
221
  }
217
222
 
218
- static void shutdownFunc(xsltTransformContextPtr ctxt,
219
- const xmlChar *uri, void *data)
223
+ static void
224
+ shutdownFunc(xsltTransformContextPtr ctxt,
225
+ const xmlChar *uri, void *data)
220
226
  {
221
- nokogiriXsltStylesheetTuple *wrapper;
227
+ nokogiriXsltStylesheetTuple *wrapper;
222
228
 
223
- Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
224
- wrapper);
229
+ Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
230
+ wrapper);
225
231
 
226
- rb_ary_clear(wrapper->func_instances);
232
+ rb_ary_clear(wrapper->func_instances);
227
233
  }
228
234
 
229
235
  /*
@@ -232,32 +238,26 @@ static void shutdownFunc(xsltTransformContextPtr ctxt,
232
238
  *
233
239
  * Register a class that implements custom XSLT transformation functions.
234
240
  */
235
- static VALUE registr(VALUE self, VALUE uri, VALUE obj)
241
+ static VALUE
242
+ registr(VALUE self, VALUE uri, VALUE obj)
236
243
  {
237
- VALUE modules = rb_iv_get(self, "@modules");
238
- if(NIL_P(modules)) rb_raise(rb_eRuntimeError, "wtf! @modules isn't set");
244
+ VALUE modules = rb_iv_get(self, "@modules");
245
+ if (NIL_P(modules)) { rb_raise(rb_eRuntimeError, "wtf! @modules isn't set"); }
239
246
 
240
- rb_hash_aset(modules, uri, obj);
241
- xsltRegisterExtModule((unsigned char *)StringValueCStr(uri), initFunc, shutdownFunc);
242
- return self;
247
+ rb_hash_aset(modules, uri, obj);
248
+ xsltRegisterExtModule((unsigned char *)StringValueCStr(uri), initFunc, shutdownFunc);
249
+ return self;
243
250
  }
244
251
 
245
- VALUE cNokogiriXsltStylesheet ;
246
- void init_xslt_stylesheet()
252
+ void
253
+ noko_init_xslt_stylesheet()
247
254
  {
248
- VALUE nokogiri;
249
- VALUE klass;
250
-
251
- nokogiri = rb_define_module("Nokogiri");
252
- xslt = rb_define_module_under(nokogiri, "XSLT");
253
- klass = rb_define_class_under(xslt, "Stylesheet", rb_cObject);
254
-
255
- rb_iv_set(xslt, "@modules", rb_hash_new());
255
+ rb_define_singleton_method(mNokogiriXslt, "register", registr, 2);
256
+ rb_iv_set(mNokogiriXslt, "@modules", rb_hash_new());
256
257
 
257
- cNokogiriXsltStylesheet = klass;
258
+ cNokogiriXsltStylesheet = rb_define_class_under(mNokogiriXslt, "Stylesheet", rb_cObject);
258
259
 
259
- rb_define_singleton_method(klass, "parse_stylesheet_doc", parse_stylesheet_doc, 1);
260
- rb_define_singleton_method(xslt, "register", registr, 2);
261
- rb_define_method(klass, "serialize", serialize, 1);
262
- rb_define_method(klass, "transform", transform, -1);
260
+ rb_define_singleton_method(cNokogiriXsltStylesheet, "parse_stylesheet_doc", parse_stylesheet_doc, 1);
261
+ rb_define_method(cNokogiriXsltStylesheet, "serialize", serialize, 1);
262
+ rb_define_method(cNokogiriXsltStylesheet, "transform", transform, -1);
263
263
  }
data/lib/nokogiri.rb CHANGED
@@ -8,12 +8,8 @@ if defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
8
8
  require 'nokogiri/jruby/dependencies'
9
9
  end
10
10
 
11
- begin
12
- RUBY_VERSION =~ /(\d+\.\d+)/
13
- require "nokogiri/#{$1}/nokogiri"
14
- rescue LoadError
15
- require 'nokogiri/nokogiri'
16
- end
11
+ require 'nokogiri/extension'
12
+
17
13
  require 'nokogiri/version'
18
14
  require 'nokogiri/syntax_error'
19
15
  require 'nokogiri/xml'
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  #
3
3
  # DO NOT MODIFY!!!!
4
- # This file is automatically generated by Racc 1.5.1
4
+ # This file is automatically generated by Racc 1.5.2
5
5
  # from Racc grammar file "".
6
6
  #
7
7
 
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ # load the C or Java extension
4
+ begin
5
+ ::RUBY_VERSION =~ /(\d+\.\d+)/
6
+ require "nokogiri/#{Regexp.last_match(1)}/nokogiri"
7
+ rescue LoadError => e
8
+ if e.message =~ /GLIBC/
9
+ warn(<<~EOM)
10
+
11
+ ERROR: It looks like you're trying to use Nokogiri as a precompiled native gem on a system with glibc < 2.17:
12
+
13
+ #{e.message}
14
+
15
+ If that's the case, then please install Nokogiri via the `ruby` platform gem:
16
+ gem install nokogiri --platform=ruby
17
+ or:
18
+ bundle config set force_ruby_platform true
19
+
20
+ Please visit https://nokogiri.org/tutorials/installing_nokogiri.html for more help.
21
+
22
+ EOM
23
+ raise e
24
+ end
25
+ require 'nokogiri/nokogiri'
26
+ end
@@ -4,26 +4,26 @@ module Nokogiri
4
4
  class DocumentFragment < Nokogiri::XML::DocumentFragment
5
5
  ####
6
6
  # Create a Nokogiri::XML::DocumentFragment from +tags+, using +encoding+
7
- def self.parse tags, encoding = nil
7
+ def self.parse(tags, encoding = nil)
8
8
  doc = HTML::Document.new
9
9
 
10
10
  encoding ||= if tags.respond_to?(:encoding)
11
- encoding = tags.encoding
12
- if encoding == ::Encoding::ASCII_8BIT
13
- 'UTF-8'
14
- else
15
- encoding.name
16
- end
17
- else
18
- 'UTF-8'
19
- end
11
+ encoding = tags.encoding
12
+ if encoding == ::Encoding::ASCII_8BIT
13
+ 'UTF-8'
14
+ else
15
+ encoding.name
16
+ end
17
+ else
18
+ 'UTF-8'
19
+ end
20
20
 
21
21
  doc.encoding = encoding
22
22
 
23
23
  new(doc, tags)
24
24
  end
25
25
 
26
- def initialize document, tags = nil, ctx = nil
26
+ def initialize(document, tags = nil, ctx = nil)
27
27
  return self unless tags
28
28
 
29
29
  if ctx
@@ -33,13 +33,13 @@ module Nokogiri
33
33
  self.errors = document.errors - preexisting_errors
34
34
  else
35
35
  # This is a horrible hack, but I don't care
36
- if tags.strip =~ /^<body/i
37
- path = "/html/body"
36
+ path = if /^\s*?<body/i.match?(tags)
37
+ "/html/body"
38
38
  else
39
- path = "/html/body/node()"
39
+ "/html/body/node()"
40
40
  end
41
41
 
42
- temp_doc = HTML::Document.parse "<html><body>#{tags}", nil, document.encoding
42
+ temp_doc = HTML::Document.parse("<html><body>#{tags}", nil, document.encoding)
43
43
  temp_doc.xpath(path).each { |child| child.parent = self }
44
44
  self.errors = temp_doc.errors
45
45
  end