nokogiri 1.10.4 → 1.11.2

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 (157) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/LICENSE-DEPENDENCIES.md +1015 -947
  4. data/LICENSE.md +1 -1
  5. data/README.md +173 -94
  6. data/dependencies.yml +28 -26
  7. data/ext/nokogiri/depend +37 -358
  8. data/ext/nokogiri/extconf.rb +611 -391
  9. data/ext/nokogiri/html_document.c +78 -82
  10. data/ext/nokogiri/html_element_description.c +84 -71
  11. data/ext/nokogiri/html_entity_lookup.c +21 -16
  12. data/ext/nokogiri/html_sax_parser_context.c +69 -66
  13. data/ext/nokogiri/html_sax_push_parser.c +42 -34
  14. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  15. data/ext/nokogiri/nokogiri.c +192 -87
  16. data/ext/nokogiri/nokogiri.h +181 -89
  17. data/ext/nokogiri/test_global_handlers.c +40 -0
  18. data/ext/nokogiri/xml_attr.c +15 -15
  19. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  20. data/ext/nokogiri/xml_cdata.c +13 -18
  21. data/ext/nokogiri/xml_comment.c +19 -26
  22. data/ext/nokogiri/xml_document.c +230 -159
  23. data/ext/nokogiri/xml_document_fragment.c +13 -15
  24. data/ext/nokogiri/xml_dtd.c +54 -48
  25. data/ext/nokogiri/xml_element_content.c +30 -27
  26. data/ext/nokogiri/xml_element_decl.c +22 -22
  27. data/ext/nokogiri/xml_encoding_handler.c +17 -11
  28. data/ext/nokogiri/xml_entity_decl.c +32 -30
  29. data/ext/nokogiri/xml_entity_reference.c +16 -18
  30. data/ext/nokogiri/xml_namespace.c +56 -49
  31. data/ext/nokogiri/xml_node.c +354 -282
  32. data/ext/nokogiri/xml_node_set.c +168 -156
  33. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  34. data/ext/nokogiri/xml_reader.c +195 -172
  35. data/ext/nokogiri/xml_relax_ng.c +52 -28
  36. data/ext/nokogiri/xml_sax_parser.c +118 -118
  37. data/ext/nokogiri/xml_sax_parser_context.c +103 -86
  38. data/ext/nokogiri/xml_sax_push_parser.c +36 -27
  39. data/ext/nokogiri/xml_schema.c +111 -34
  40. data/ext/nokogiri/xml_syntax_error.c +42 -21
  41. data/ext/nokogiri/xml_text.c +13 -17
  42. data/ext/nokogiri/xml_xpath_context.c +206 -123
  43. data/ext/nokogiri/xslt_stylesheet.c +158 -165
  44. data/lib/nokogiri.rb +6 -27
  45. data/lib/nokogiri/css.rb +1 -0
  46. data/lib/nokogiri/css/node.rb +1 -0
  47. data/lib/nokogiri/css/parser.rb +63 -62
  48. data/lib/nokogiri/css/parser.y +2 -2
  49. data/lib/nokogiri/css/parser_extras.rb +39 -36
  50. data/lib/nokogiri/css/syntax_error.rb +1 -0
  51. data/lib/nokogiri/css/tokenizer.rb +1 -0
  52. data/lib/nokogiri/css/xpath_visitor.rb +73 -43
  53. data/lib/nokogiri/decorators/slop.rb +1 -0
  54. data/lib/nokogiri/extension.rb +26 -0
  55. data/lib/nokogiri/html.rb +1 -0
  56. data/lib/nokogiri/html/builder.rb +1 -0
  57. data/lib/nokogiri/html/document.rb +13 -26
  58. data/lib/nokogiri/html/document_fragment.rb +16 -15
  59. data/lib/nokogiri/html/element_description.rb +1 -0
  60. data/lib/nokogiri/html/element_description_defaults.rb +1 -0
  61. data/lib/nokogiri/html/entity_lookup.rb +1 -0
  62. data/lib/nokogiri/html/sax/parser.rb +1 -0
  63. data/lib/nokogiri/html/sax/parser_context.rb +1 -0
  64. data/lib/nokogiri/html/sax/push_parser.rb +1 -0
  65. data/lib/nokogiri/jruby/dependencies.rb +20 -0
  66. data/lib/nokogiri/syntax_error.rb +1 -0
  67. data/lib/nokogiri/version.rb +3 -109
  68. data/lib/nokogiri/version/constant.rb +5 -0
  69. data/lib/nokogiri/version/info.rb +205 -0
  70. data/lib/nokogiri/xml.rb +1 -0
  71. data/lib/nokogiri/xml/attr.rb +1 -0
  72. data/lib/nokogiri/xml/attribute_decl.rb +1 -0
  73. data/lib/nokogiri/xml/builder.rb +3 -2
  74. data/lib/nokogiri/xml/cdata.rb +1 -0
  75. data/lib/nokogiri/xml/character_data.rb +1 -0
  76. data/lib/nokogiri/xml/document.rb +49 -24
  77. data/lib/nokogiri/xml/document_fragment.rb +5 -6
  78. data/lib/nokogiri/xml/dtd.rb +1 -0
  79. data/lib/nokogiri/xml/element_content.rb +1 -0
  80. data/lib/nokogiri/xml/element_decl.rb +1 -0
  81. data/lib/nokogiri/xml/entity_decl.rb +1 -0
  82. data/lib/nokogiri/xml/entity_reference.rb +1 -0
  83. data/lib/nokogiri/xml/namespace.rb +1 -0
  84. data/lib/nokogiri/xml/node.rb +624 -290
  85. data/lib/nokogiri/xml/node/save_options.rb +1 -0
  86. data/lib/nokogiri/xml/node_set.rb +1 -0
  87. data/lib/nokogiri/xml/notation.rb +1 -0
  88. data/lib/nokogiri/xml/parse_options.rb +10 -3
  89. data/lib/nokogiri/xml/pp.rb +1 -0
  90. data/lib/nokogiri/xml/pp/character_data.rb +1 -0
  91. data/lib/nokogiri/xml/pp/node.rb +1 -0
  92. data/lib/nokogiri/xml/processing_instruction.rb +1 -0
  93. data/lib/nokogiri/xml/reader.rb +9 -12
  94. data/lib/nokogiri/xml/relax_ng.rb +7 -2
  95. data/lib/nokogiri/xml/sax.rb +1 -0
  96. data/lib/nokogiri/xml/sax/document.rb +1 -0
  97. data/lib/nokogiri/xml/sax/parser.rb +1 -0
  98. data/lib/nokogiri/xml/sax/parser_context.rb +1 -0
  99. data/lib/nokogiri/xml/sax/push_parser.rb +1 -0
  100. data/lib/nokogiri/xml/schema.rb +13 -4
  101. data/lib/nokogiri/xml/searchable.rb +25 -16
  102. data/lib/nokogiri/xml/syntax_error.rb +1 -0
  103. data/lib/nokogiri/xml/text.rb +1 -0
  104. data/lib/nokogiri/xml/xpath.rb +2 -3
  105. data/lib/nokogiri/xml/xpath/syntax_error.rb +2 -1
  106. data/lib/nokogiri/xml/xpath_context.rb +1 -0
  107. data/lib/nokogiri/xslt.rb +1 -0
  108. data/lib/nokogiri/xslt/stylesheet.rb +1 -0
  109. data/lib/xsd/xmlparser/nokogiri.rb +1 -0
  110. data/patches/libxml2/0004-libxml2.la-is-in-top_builddir.patch +25 -0
  111. data/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch +32 -0
  112. data/patches/libxml2/0006-htmlParseComment-treat-as-if-it-closed-the-comment.patch +73 -0
  113. data/patches/libxml2/0007-use-new-htmlParseLookupCommentEnd-to-find-comment-en.patch +103 -0
  114. data/patches/libxml2/0008-use-glibc-strlen.patch +53 -0
  115. data/patches/libxml2/0009-avoid-isnan-isinf.patch +81 -0
  116. data/patches/libxml2/0010-parser.c-shrink-the-input-buffer-when-appropriate.patch +70 -0
  117. data/ports/archives/libxml2-2.9.10.tar.gz +0 -0
  118. data/ports/archives/libxslt-1.1.34.tar.gz +0 -0
  119. metadata +97 -154
  120. data/ext/nokogiri/html_document.h +0 -10
  121. data/ext/nokogiri/html_element_description.h +0 -10
  122. data/ext/nokogiri/html_entity_lookup.h +0 -8
  123. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  124. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  125. data/ext/nokogiri/xml_attr.h +0 -9
  126. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  127. data/ext/nokogiri/xml_cdata.h +0 -9
  128. data/ext/nokogiri/xml_comment.h +0 -9
  129. data/ext/nokogiri/xml_document.h +0 -23
  130. data/ext/nokogiri/xml_document_fragment.h +0 -10
  131. data/ext/nokogiri/xml_dtd.h +0 -10
  132. data/ext/nokogiri/xml_element_content.h +0 -10
  133. data/ext/nokogiri/xml_element_decl.h +0 -9
  134. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  135. data/ext/nokogiri/xml_entity_decl.h +0 -10
  136. data/ext/nokogiri/xml_entity_reference.h +0 -9
  137. data/ext/nokogiri/xml_io.c +0 -61
  138. data/ext/nokogiri/xml_io.h +0 -11
  139. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  140. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  141. data/ext/nokogiri/xml_namespace.h +0 -14
  142. data/ext/nokogiri/xml_node.h +0 -13
  143. data/ext/nokogiri/xml_node_set.h +0 -12
  144. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  145. data/ext/nokogiri/xml_reader.h +0 -10
  146. data/ext/nokogiri/xml_relax_ng.h +0 -9
  147. data/ext/nokogiri/xml_sax_parser.h +0 -39
  148. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  149. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  150. data/ext/nokogiri/xml_schema.h +0 -9
  151. data/ext/nokogiri/xml_syntax_error.h +0 -13
  152. data/ext/nokogiri/xml_text.h +0 -9
  153. data/ext/nokogiri/xml_xpath_context.h +0 -10
  154. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  155. data/patches/libxslt/0001-Fix-security-framework-bypass.patch +0 -120
  156. data/ports/archives/libxml2-2.9.9.tar.gz +0 -0
  157. data/ports/archives/libxslt-1.1.33.tar.gz +0 -0
@@ -1,34 +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;
9
-
10
- int vasprintf (char **strp, const char *fmt, va_list ap);
11
- void vasprintf_free (void *p);
3
+ VALUE cNokogiriXsltStylesheet ;
12
4
 
13
- static void mark(nokogiriXsltStylesheetTuple *wrapper)
5
+ static void
6
+ mark(nokogiriXsltStylesheetTuple *wrapper)
14
7
  {
15
8
  rb_gc_mark(wrapper->func_instances);
16
9
  }
17
10
 
18
- static void dealloc(nokogiriXsltStylesheetTuple *wrapper)
11
+ static void
12
+ dealloc(nokogiriXsltStylesheetTuple *wrapper)
19
13
  {
20
- xsltStylesheetPtr doc = wrapper->ss;
14
+ xsltStylesheetPtr doc = wrapper->ss;
21
15
 
22
- NOKOGIRI_DEBUG_START(doc);
23
- xsltFreeStylesheet(doc); /* commented out for now. */
24
- NOKOGIRI_DEBUG_END(doc);
16
+ NOKOGIRI_DEBUG_START(doc);
17
+ xsltFreeStylesheet(doc); /* commented out for now. */
18
+ NOKOGIRI_DEBUG_END(doc);
25
19
 
26
- free(wrapper);
20
+ free(wrapper);
27
21
  }
28
22
 
29
- static void xslt_generic_error_handler(void * ctx, const char *msg, ...)
23
+ static void
24
+ xslt_generic_error_handler(void *ctx, const char *msg, ...)
30
25
  {
31
- char * message;
26
+ char *message;
32
27
 
33
28
  va_list args;
34
29
  va_start(args, msg);
@@ -37,10 +32,11 @@ static void xslt_generic_error_handler(void * ctx, const char *msg, ...)
37
32
 
38
33
  rb_str_cat2((VALUE)ctx, message);
39
34
 
40
- vasprintf_free(message);
35
+ free(message);
41
36
  }
42
37
 
43
- VALUE Nokogiri_wrap_xslt_stylesheet(xsltStylesheetPtr ss)
38
+ VALUE
39
+ Nokogiri_wrap_xslt_stylesheet(xsltStylesheetPtr ss)
44
40
  {
45
41
  VALUE self;
46
42
  nokogiriXsltStylesheetTuple *wrapper;
@@ -61,29 +57,30 @@ VALUE Nokogiri_wrap_xslt_stylesheet(xsltStylesheetPtr ss)
61
57
  *
62
58
  * Parse a stylesheet from +document+.
63
59
  */
64
- static VALUE parse_stylesheet_doc(VALUE klass, VALUE xmldocobj)
60
+ static VALUE
61
+ parse_stylesheet_doc(VALUE klass, VALUE xmldocobj)
65
62
  {
66
- xmlDocPtr xml, xml_cpy;
67
- VALUE errstr, exception;
68
- xsltStylesheetPtr ss ;
69
- Data_Get_Struct(xmldocobj, xmlDoc, xml);
70
- exsltRegisterAll();
63
+ xmlDocPtr xml, xml_cpy;
64
+ VALUE errstr, exception;
65
+ xsltStylesheetPtr ss ;
66
+ Data_Get_Struct(xmldocobj, xmlDoc, xml);
67
+ exsltRegisterAll();
71
68
 
72
- errstr = rb_str_new(0, 0);
73
- xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
69
+ errstr = rb_str_new(0, 0);
70
+ xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
74
71
 
75
- xml_cpy = xmlCopyDoc(xml, 1); /* 1 => recursive */
76
- ss = xsltParseStylesheetDoc(xml_cpy);
72
+ xml_cpy = xmlCopyDoc(xml, 1); /* 1 => recursive */
73
+ ss = xsltParseStylesheetDoc(xml_cpy);
77
74
 
78
- xsltSetGenericErrorFunc(NULL, NULL);
75
+ xsltSetGenericErrorFunc(NULL, NULL);
79
76
 
80
- if (!ss) {
81
- xmlFreeDoc(xml_cpy);
82
- exception = rb_exc_new3(rb_eRuntimeError, errstr);
83
- rb_exc_raise(exception);
84
- }
77
+ if (!ss) {
78
+ xmlFreeDoc(xml_cpy);
79
+ exception = rb_exc_new3(rb_eRuntimeError, errstr);
80
+ rb_exc_raise(exception);
81
+ }
85
82
 
86
- return Nokogiri_wrap_xslt_stylesheet(ss);
83
+ return Nokogiri_wrap_xslt_stylesheet(ss);
87
84
  }
88
85
 
89
86
 
@@ -93,24 +90,21 @@ static VALUE parse_stylesheet_doc(VALUE klass, VALUE xmldocobj)
93
90
  *
94
91
  * Serialize +document+ to an xml string.
95
92
  */
96
- static VALUE serialize(VALUE self, VALUE xmlobj)
97
- {
98
- xmlDocPtr xml ;
99
- nokogiriXsltStylesheetTuple *wrapper;
100
- xmlChar* doc_ptr ;
101
- int doc_len ;
102
- VALUE rval ;
103
-
104
- Data_Get_Struct(xmlobj, xmlDoc, xml);
105
- Data_Get_Struct(self, nokogiriXsltStylesheetTuple, wrapper);
106
- xsltSaveResultToString(&doc_ptr, &doc_len, xml, wrapper->ss);
107
- rval = NOKOGIRI_STR_NEW(doc_ptr, doc_len);
108
- xmlFree(doc_ptr);
109
- return rval ;
110
- }
111
-
112
- static void swallow_superfluous_xml_errors(void * userdata, xmlErrorPtr error, ...)
93
+ static VALUE
94
+ serialize(VALUE self, VALUE xmlobj)
113
95
  {
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 ;
114
108
  }
115
109
 
116
110
  /*
@@ -128,109 +122,114 @@ static void swallow_superfluous_xml_errors(void * userdata, xmlErrorPtr error, .
128
122
  * puts xslt.transform(doc, ['key', 'value'])
129
123
  *
130
124
  */
131
- static VALUE transform(int argc, VALUE* argv, VALUE self)
125
+ static VALUE
126
+ transform(int argc, VALUE *argv, VALUE self)
132
127
  {
133
- VALUE xmldoc, paramobj, errstr, exception ;
134
- xmlDocPtr xml ;
135
- xmlDocPtr result ;
136
- nokogiriXsltStylesheetTuple *wrapper;
137
- const char** params ;
138
- long param_len, j ;
139
- int parse_error_occurred ;
140
-
141
- rb_scan_args(argc, argv, "11", &xmldoc, &paramobj);
142
- if (NIL_P(paramobj)) { paramobj = rb_ary_new2(0L) ; }
143
- if (!rb_obj_is_kind_of(xmldoc, cNokogiriXmlDocument))
144
- rb_raise(rb_eArgError, "argument must be a Nokogiri::XML::Document");
145
-
146
- /* handle hashes as arguments. */
147
- if(T_HASH == TYPE(paramobj)) {
148
- paramobj = rb_funcall(paramobj, rb_intern("to_a"), 0);
149
- paramobj = rb_funcall(paramobj, rb_intern("flatten"), 0);
150
- }
151
-
152
- Check_Type(paramobj, T_ARRAY);
153
-
154
- Data_Get_Struct(xmldoc, xmlDoc, xml);
155
- Data_Get_Struct(self, nokogiriXsltStylesheetTuple, wrapper);
156
-
157
- param_len = RARRAY_LEN(paramobj);
158
- params = calloc((size_t)param_len+1, sizeof(char*));
159
- for (j = 0 ; j < param_len ; j++) {
160
- VALUE entry = rb_ary_entry(paramobj, j);
161
- const char * ptr = StringValueCStr(entry);
162
- params[j] = ptr;
163
- }
164
- params[param_len] = 0 ;
165
-
166
- errstr = rb_str_new(0, 0);
167
- xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
168
- xmlSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
169
-
170
- result = xsltApplyStylesheet(wrapper->ss, xml, params);
171
- free(params);
172
-
173
- xsltSetGenericErrorFunc(NULL, NULL);
174
- xmlSetGenericErrorFunc(NULL, NULL);
175
-
176
- parse_error_occurred = (Qfalse == rb_funcall(errstr, rb_intern("empty?"), 0));
177
-
178
- if (parse_error_occurred) {
179
- exception = rb_exc_new3(rb_eRuntimeError, errstr);
180
- rb_exc_raise(exception);
181
- }
182
-
183
- 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) ;
184
180
  }
185
181
 
186
- static void method_caller(xmlXPathParserContextPtr ctxt, int nargs)
182
+ static void
183
+ method_caller(xmlXPathParserContextPtr ctxt, int nargs)
187
184
  {
188
- VALUE handler;
189
- const char *function_name;
190
- xsltTransformContextPtr transform;
191
- const xmlChar *functionURI;
185
+ VALUE handler;
186
+ const char *function_name;
187
+ xsltTransformContextPtr transform;
188
+ const xmlChar *functionURI;
192
189
 
193
- transform = xsltXPathGetTransformContext(ctxt);
194
- functionURI = ctxt->context->functionURI;
195
- handler = (VALUE)xsltGetExtData(transform, functionURI);
196
- 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);
197
194
 
198
- 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);
199
196
  }
200
197
 
201
- static void * initFunc(xsltTransformContextPtr ctxt, const xmlChar *uri)
198
+ static void *
199
+ initFunc(xsltTransformContextPtr ctxt, const xmlChar *uri)
202
200
  {
203
- VALUE modules = rb_iv_get(xslt, "@modules");
204
- VALUE obj = rb_hash_aref(modules, rb_str_new2((const char *)uri));
205
- VALUE args = { Qfalse };
206
- VALUE methods = rb_funcall(obj, rb_intern("instance_methods"), 1, args);
207
- VALUE inst;
208
- nokogiriXsltStylesheetTuple *wrapper;
209
- int i;
210
-
211
- for(i = 0; i < RARRAY_LEN(methods); i++) {
212
- VALUE method_name = rb_obj_as_string(rb_ary_entry(methods, i));
213
- xsltRegisterExtFunction(ctxt,
214
- (unsigned char *)StringValueCStr(method_name), uri, method_caller);
215
- }
216
-
217
- Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
218
- wrapper);
219
- inst = rb_class_new_instance(0, NULL, obj);
220
- rb_ary_push(wrapper->func_instances, inst);
221
-
222
- 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;
223
221
  }
224
222
 
225
- static void shutdownFunc(xsltTransformContextPtr ctxt,
226
- const xmlChar *uri, void *data)
223
+ static void
224
+ shutdownFunc(xsltTransformContextPtr ctxt,
225
+ const xmlChar *uri, void *data)
227
226
  {
228
- nokogiriXsltStylesheetTuple *wrapper;
227
+ nokogiriXsltStylesheetTuple *wrapper;
229
228
 
230
- Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
231
- wrapper);
229
+ Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
230
+ wrapper);
232
231
 
233
- rb_ary_clear(wrapper->func_instances);
232
+ rb_ary_clear(wrapper->func_instances);
234
233
  }
235
234
 
236
235
  /*
@@ -239,32 +238,26 @@ static void shutdownFunc(xsltTransformContextPtr ctxt,
239
238
  *
240
239
  * Register a class that implements custom XSLT transformation functions.
241
240
  */
242
- static VALUE registr(VALUE self, VALUE uri, VALUE obj)
241
+ static VALUE
242
+ registr(VALUE self, VALUE uri, VALUE obj)
243
243
  {
244
- VALUE modules = rb_iv_get(self, "@modules");
245
- 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"); }
246
246
 
247
- rb_hash_aset(modules, uri, obj);
248
- xsltRegisterExtModule((unsigned char *)StringValueCStr(uri), initFunc, shutdownFunc);
249
- return self;
247
+ rb_hash_aset(modules, uri, obj);
248
+ xsltRegisterExtModule((unsigned char *)StringValueCStr(uri), initFunc, shutdownFunc);
249
+ return self;
250
250
  }
251
251
 
252
- VALUE cNokogiriXsltStylesheet ;
253
- void init_xslt_stylesheet()
252
+ void
253
+ noko_init_xslt_stylesheet()
254
254
  {
255
- VALUE nokogiri;
256
- VALUE klass;
257
-
258
- nokogiri = rb_define_module("Nokogiri");
259
- xslt = rb_define_module_under(nokogiri, "XSLT");
260
- klass = rb_define_class_under(xslt, "Stylesheet", rb_cObject);
261
-
262
- 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());
263
257
 
264
- cNokogiriXsltStylesheet = klass;
258
+ cNokogiriXsltStylesheet = rb_define_class_under(mNokogiriXslt, "Stylesheet", rb_cObject);
265
259
 
266
- rb_define_singleton_method(klass, "parse_stylesheet_doc", parse_stylesheet_doc, 1);
267
- rb_define_singleton_method(xslt, "register", registr, 2);
268
- rb_define_method(klass, "serialize", serialize, 1);
269
- 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);
270
263
  }
data/lib/nokogiri.rb CHANGED
@@ -1,36 +1,15 @@
1
1
  # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
2
3
  # Modify the PATH on windows so that the external DLLs will get loaded.
3
4
 
4
5
  require 'rbconfig'
5
6
 
6
7
  if defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
7
- # The line below caused a problem on non-GAE rack environment.
8
- # unless defined?(JRuby::Rack::VERSION) || defined?(AppEngine::ApiProxy)
9
- #
10
- # However, simply cutting defined?(JRuby::Rack::VERSION) off resulted in
11
- # an unable-to-load-nokogiri problem. Thus, now, Nokogiri checks the presense
12
- # of appengine-rack.jar in $LOAD_PATH. If Nokogiri is on GAE, Nokogiri
13
- # should skip loading xml jars. This is because those are in WEB-INF/lib and
14
- # already set in the classpath.
15
- unless $LOAD_PATH.to_s.include?("appengine-rack")
16
- require 'stringio'
17
- require 'isorelax.jar'
18
- require 'jing.jar'
19
- require 'nekohtml.jar'
20
- require 'nekodtd.jar'
21
- require 'xercesImpl.jar'
22
- require 'serializer.jar'
23
- require 'xalan.jar'
24
- require 'xml-apis.jar'
25
- end
8
+ require 'nokogiri/jruby/dependencies'
26
9
  end
27
10
 
28
- begin
29
- RUBY_VERSION =~ /(\d+\.\d+)/
30
- require "nokogiri/#{$1}/nokogiri"
31
- rescue LoadError
32
- require 'nokogiri/nokogiri'
33
- end
11
+ require 'nokogiri/extension'
12
+
34
13
  require 'nokogiri/version'
35
14
  require 'nokogiri/syntax_error'
36
15
  require 'nokogiri/xml'
@@ -54,7 +33,7 @@ require 'nokogiri/html/builder'
54
33
  #
55
34
  # # Get a Nokogiri::HTML:Document for the page we’re interested in...
56
35
  #
57
- # doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))
36
+ # doc = Nokogiri::HTML(URI.open('http://www.google.com/search?q=tenderlove'))
58
37
  #
59
38
  # # Do funky things with it using Nokogiri::XML::Node methods...
60
39
  #
@@ -130,7 +109,7 @@ module Nokogiri
130
109
  end
131
110
 
132
111
  ###
133
- # Parser a document contained in +args+. Nokogiri will try to guess what
112
+ # Parse a document contained in +args+. Nokogiri will try to guess what
134
113
  # type of document you are attempting to parse. For more information, see
135
114
  # Nokogiri.parse
136
115
  #