nokogiri 1.11.0.rc2-x86-linux → 1.11.2-x86-linux

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 (175) 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 +171 -94
  6. data/ext/nokogiri/depend +37 -358
  7. data/ext/nokogiri/extconf.rb +581 -374
  8. data/ext/nokogiri/html_document.c +78 -82
  9. data/ext/nokogiri/html_element_description.c +84 -71
  10. data/ext/nokogiri/html_entity_lookup.c +21 -16
  11. data/ext/nokogiri/html_sax_parser_context.c +69 -66
  12. data/ext/nokogiri/html_sax_push_parser.c +42 -34
  13. data/ext/nokogiri/include/libexslt/exslt.h +102 -0
  14. data/ext/nokogiri/include/libexslt/exsltconfig.h +70 -0
  15. data/ext/nokogiri/include/libexslt/exsltexports.h +140 -0
  16. data/ext/nokogiri/include/libxml2/libxml/DOCBparser.h +96 -0
  17. data/ext/nokogiri/include/libxml2/libxml/HTMLparser.h +306 -0
  18. data/ext/nokogiri/include/libxml2/libxml/HTMLtree.h +147 -0
  19. data/ext/nokogiri/include/libxml2/libxml/SAX.h +173 -0
  20. data/ext/nokogiri/include/libxml2/libxml/SAX2.h +178 -0
  21. data/ext/nokogiri/include/libxml2/libxml/c14n.h +126 -0
  22. data/ext/nokogiri/include/libxml2/libxml/catalog.h +182 -0
  23. data/ext/nokogiri/include/libxml2/libxml/chvalid.h +230 -0
  24. data/ext/nokogiri/include/libxml2/libxml/debugXML.h +217 -0
  25. data/ext/nokogiri/include/libxml2/libxml/dict.h +79 -0
  26. data/ext/nokogiri/include/libxml2/libxml/encoding.h +245 -0
  27. data/ext/nokogiri/include/libxml2/libxml/entities.h +151 -0
  28. data/ext/nokogiri/include/libxml2/libxml/globals.h +508 -0
  29. data/ext/nokogiri/include/libxml2/libxml/hash.h +236 -0
  30. data/ext/nokogiri/include/libxml2/libxml/list.h +137 -0
  31. data/ext/nokogiri/include/libxml2/libxml/nanoftp.h +163 -0
  32. data/ext/nokogiri/include/libxml2/libxml/nanohttp.h +81 -0
  33. data/ext/nokogiri/include/libxml2/libxml/parser.h +1241 -0
  34. data/ext/nokogiri/include/libxml2/libxml/parserInternals.h +644 -0
  35. data/ext/nokogiri/include/libxml2/libxml/pattern.h +100 -0
  36. data/ext/nokogiri/include/libxml2/libxml/relaxng.h +217 -0
  37. data/ext/nokogiri/include/libxml2/libxml/schemasInternals.h +958 -0
  38. data/ext/nokogiri/include/libxml2/libxml/schematron.h +142 -0
  39. data/ext/nokogiri/include/libxml2/libxml/threads.h +89 -0
  40. data/ext/nokogiri/include/libxml2/libxml/tree.h +1311 -0
  41. data/ext/nokogiri/include/libxml2/libxml/uri.h +94 -0
  42. data/ext/nokogiri/include/libxml2/libxml/valid.h +458 -0
  43. data/ext/nokogiri/include/libxml2/libxml/xinclude.h +129 -0
  44. data/ext/nokogiri/include/libxml2/libxml/xlink.h +189 -0
  45. data/ext/nokogiri/include/libxml2/libxml/xmlIO.h +366 -0
  46. data/ext/nokogiri/include/libxml2/libxml/xmlautomata.h +146 -0
  47. data/ext/nokogiri/include/libxml2/libxml/xmlerror.h +945 -0
  48. data/ext/nokogiri/include/libxml2/libxml/xmlexports.h +153 -0
  49. data/ext/nokogiri/include/libxml2/libxml/xmlmemory.h +224 -0
  50. data/ext/nokogiri/include/libxml2/libxml/xmlmodule.h +57 -0
  51. data/ext/nokogiri/include/libxml2/libxml/xmlreader.h +428 -0
  52. data/ext/nokogiri/include/libxml2/libxml/xmlregexp.h +222 -0
  53. data/ext/nokogiri/include/libxml2/libxml/xmlsave.h +88 -0
  54. data/ext/nokogiri/include/libxml2/libxml/xmlschemas.h +246 -0
  55. data/ext/nokogiri/include/libxml2/libxml/xmlschemastypes.h +151 -0
  56. data/ext/nokogiri/include/libxml2/libxml/xmlstring.h +140 -0
  57. data/ext/nokogiri/include/libxml2/libxml/xmlunicode.h +202 -0
  58. data/ext/nokogiri/include/libxml2/libxml/xmlversion.h +485 -0
  59. data/ext/nokogiri/include/libxml2/libxml/xmlwriter.h +488 -0
  60. data/ext/nokogiri/include/libxml2/libxml/xpath.h +566 -0
  61. data/ext/nokogiri/include/libxml2/libxml/xpathInternals.h +632 -0
  62. data/ext/nokogiri/include/libxml2/libxml/xpointer.h +114 -0
  63. data/ext/nokogiri/include/libxslt/attributes.h +38 -0
  64. data/ext/nokogiri/include/libxslt/documents.h +93 -0
  65. data/ext/nokogiri/include/libxslt/extensions.h +262 -0
  66. data/ext/nokogiri/include/libxslt/extra.h +72 -0
  67. data/ext/nokogiri/include/libxslt/functions.h +78 -0
  68. data/ext/nokogiri/include/libxslt/imports.h +75 -0
  69. data/ext/nokogiri/include/libxslt/keys.h +53 -0
  70. data/ext/nokogiri/include/libxslt/namespaces.h +68 -0
  71. data/ext/nokogiri/include/libxslt/numbersInternals.h +73 -0
  72. data/ext/nokogiri/include/libxslt/pattern.h +84 -0
  73. data/ext/nokogiri/include/libxslt/preproc.h +43 -0
  74. data/ext/nokogiri/include/libxslt/security.h +104 -0
  75. data/ext/nokogiri/include/libxslt/templates.h +77 -0
  76. data/ext/nokogiri/include/libxslt/transform.h +207 -0
  77. data/ext/nokogiri/include/libxslt/variables.h +118 -0
  78. data/ext/nokogiri/include/libxslt/xslt.h +110 -0
  79. data/ext/nokogiri/include/libxslt/xsltInternals.h +1978 -0
  80. data/ext/nokogiri/include/libxslt/xsltconfig.h +180 -0
  81. data/ext/nokogiri/include/libxslt/xsltexports.h +142 -0
  82. data/ext/nokogiri/include/libxslt/xsltlocale.h +76 -0
  83. data/ext/nokogiri/include/libxslt/xsltutils.h +313 -0
  84. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  85. data/ext/nokogiri/nokogiri.c +192 -93
  86. data/ext/nokogiri/nokogiri.h +177 -98
  87. data/ext/nokogiri/test_global_handlers.c +40 -0
  88. data/ext/nokogiri/xml_attr.c +15 -15
  89. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  90. data/ext/nokogiri/xml_cdata.c +13 -18
  91. data/ext/nokogiri/xml_comment.c +19 -26
  92. data/ext/nokogiri/xml_document.c +225 -163
  93. data/ext/nokogiri/xml_document_fragment.c +13 -15
  94. data/ext/nokogiri/xml_dtd.c +54 -48
  95. data/ext/nokogiri/xml_element_content.c +30 -27
  96. data/ext/nokogiri/xml_element_decl.c +22 -22
  97. data/ext/nokogiri/xml_encoding_handler.c +17 -11
  98. data/ext/nokogiri/xml_entity_decl.c +32 -30
  99. data/ext/nokogiri/xml_entity_reference.c +16 -18
  100. data/ext/nokogiri/xml_namespace.c +56 -49
  101. data/ext/nokogiri/xml_node.c +338 -286
  102. data/ext/nokogiri/xml_node_set.c +168 -156
  103. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  104. data/ext/nokogiri/xml_reader.c +191 -157
  105. data/ext/nokogiri/xml_relax_ng.c +52 -28
  106. data/ext/nokogiri/xml_sax_parser.c +118 -118
  107. data/ext/nokogiri/xml_sax_parser_context.c +103 -86
  108. data/ext/nokogiri/xml_sax_push_parser.c +36 -27
  109. data/ext/nokogiri/xml_schema.c +95 -47
  110. data/ext/nokogiri/xml_syntax_error.c +42 -21
  111. data/ext/nokogiri/xml_text.c +13 -17
  112. data/ext/nokogiri/xml_xpath_context.c +206 -123
  113. data/ext/nokogiri/xslt_stylesheet.c +158 -161
  114. data/lib/nokogiri.rb +4 -8
  115. data/lib/nokogiri/2.5/nokogiri.so +0 -0
  116. data/lib/nokogiri/2.6/nokogiri.so +0 -0
  117. data/lib/nokogiri/2.7/nokogiri.so +0 -0
  118. data/lib/nokogiri/3.0/nokogiri.so +0 -0
  119. data/lib/nokogiri/css/parser.rb +62 -62
  120. data/lib/nokogiri/css/parser.y +2 -2
  121. data/lib/nokogiri/css/xpath_visitor.rb +70 -42
  122. data/lib/nokogiri/extension.rb +26 -0
  123. data/lib/nokogiri/html/document.rb +12 -26
  124. data/lib/nokogiri/html/document_fragment.rb +15 -15
  125. data/lib/nokogiri/version.rb +2 -148
  126. data/lib/nokogiri/version/constant.rb +5 -0
  127. data/lib/nokogiri/version/info.rb +205 -0
  128. data/lib/nokogiri/xml/builder.rb +2 -2
  129. data/lib/nokogiri/xml/document.rb +48 -18
  130. data/lib/nokogiri/xml/document_fragment.rb +4 -6
  131. data/lib/nokogiri/xml/node.rb +88 -69
  132. data/lib/nokogiri/xml/parse_options.rb +6 -0
  133. data/lib/nokogiri/xml/reader.rb +2 -9
  134. data/lib/nokogiri/xml/relax_ng.rb +6 -2
  135. data/lib/nokogiri/xml/schema.rb +12 -4
  136. data/lib/nokogiri/xml/searchable.rb +3 -1
  137. data/lib/nokogiri/xml/xpath.rb +1 -3
  138. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  139. metadata +151 -158
  140. data/ext/nokogiri/html_document.h +0 -10
  141. data/ext/nokogiri/html_element_description.h +0 -10
  142. data/ext/nokogiri/html_entity_lookup.h +0 -8
  143. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  144. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  145. data/ext/nokogiri/xml_attr.h +0 -9
  146. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  147. data/ext/nokogiri/xml_cdata.h +0 -9
  148. data/ext/nokogiri/xml_comment.h +0 -9
  149. data/ext/nokogiri/xml_document.h +0 -23
  150. data/ext/nokogiri/xml_document_fragment.h +0 -10
  151. data/ext/nokogiri/xml_dtd.h +0 -10
  152. data/ext/nokogiri/xml_element_content.h +0 -10
  153. data/ext/nokogiri/xml_element_decl.h +0 -9
  154. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  155. data/ext/nokogiri/xml_entity_decl.h +0 -10
  156. data/ext/nokogiri/xml_entity_reference.h +0 -9
  157. data/ext/nokogiri/xml_io.c +0 -61
  158. data/ext/nokogiri/xml_io.h +0 -11
  159. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  160. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  161. data/ext/nokogiri/xml_namespace.h +0 -14
  162. data/ext/nokogiri/xml_node.h +0 -13
  163. data/ext/nokogiri/xml_node_set.h +0 -12
  164. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  165. data/ext/nokogiri/xml_reader.h +0 -10
  166. data/ext/nokogiri/xml_relax_ng.h +0 -9
  167. data/ext/nokogiri/xml_sax_parser.h +0 -39
  168. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  169. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  170. data/ext/nokogiri/xml_schema.h +0 -9
  171. data/ext/nokogiri/xml_syntax_error.h +0 -13
  172. data/ext/nokogiri/xml_text.h +0 -9
  173. data/ext/nokogiri/xml_xpath_context.h +0 -10
  174. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  175. data/lib/nokogiri/2.4/nokogiri.so +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,20 +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)
93
+ static VALUE
94
+ serialize(VALUE self, VALUE xmlobj)
97
95
  {
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 ;
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 ;
110
108
  }
111
109
 
112
110
  /*
@@ -124,109 +122,114 @@ static VALUE serialize(VALUE self, VALUE xmlobj)
124
122
  * puts xslt.transform(doc, ['key', 'value'])
125
123
  *
126
124
  */
127
- static VALUE transform(int argc, VALUE* argv, VALUE self)
125
+ static VALUE
126
+ transform(int argc, VALUE *argv, VALUE self)
128
127
  {
129
- VALUE xmldoc, paramobj, errstr, exception ;
130
- xmlDocPtr xml ;
131
- xmlDocPtr result ;
132
- nokogiriXsltStylesheetTuple *wrapper;
133
- const char** params ;
134
- long param_len, j ;
135
- int parse_error_occurred ;
136
-
137
- rb_scan_args(argc, argv, "11", &xmldoc, &paramobj);
138
- if (NIL_P(paramobj)) { paramobj = rb_ary_new2(0L) ; }
139
- if (!rb_obj_is_kind_of(xmldoc, cNokogiriXmlDocument))
140
- rb_raise(rb_eArgError, "argument must be a Nokogiri::XML::Document");
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 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) ;
180
180
  }
181
181
 
182
- static void method_caller(xmlXPathParserContextPtr ctxt, int nargs)
182
+ static void
183
+ method_caller(xmlXPathParserContextPtr ctxt, int nargs)
183
184
  {
184
- VALUE handler;
185
- const char *function_name;
186
- xsltTransformContextPtr transform;
187
- const xmlChar *functionURI;
185
+ VALUE handler;
186
+ const char *function_name;
187
+ xsltTransformContextPtr transform;
188
+ const xmlChar *functionURI;
188
189
 
189
- transform = xsltXPathGetTransformContext(ctxt);
190
- functionURI = ctxt->context->functionURI;
191
- handler = (VALUE)xsltGetExtData(transform, functionURI);
192
- 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);
193
194
 
194
- 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);
195
196
  }
196
197
 
197
- static void * initFunc(xsltTransformContextPtr ctxt, const xmlChar *uri)
198
+ static void *
199
+ initFunc(xsltTransformContextPtr ctxt, const xmlChar *uri)
198
200
  {
199
- VALUE modules = rb_iv_get(xslt, "@modules");
200
- VALUE obj = rb_hash_aref(modules, rb_str_new2((const char *)uri));
201
- VALUE args = { Qfalse };
202
- VALUE methods = rb_funcall(obj, rb_intern("instance_methods"), 1, args);
203
- VALUE inst;
204
- nokogiriXsltStylesheetTuple *wrapper;
205
- int i;
206
-
207
- for(i = 0; i < RARRAY_LEN(methods); i++) {
208
- VALUE method_name = rb_obj_as_string(rb_ary_entry(methods, i));
209
- xsltRegisterExtFunction(ctxt,
210
- (unsigned char *)StringValueCStr(method_name), uri, method_caller);
211
- }
212
-
213
- Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
214
- wrapper);
215
- inst = rb_class_new_instance(0, NULL, obj);
216
- rb_ary_push(wrapper->func_instances, inst);
217
-
218
- 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;
219
221
  }
220
222
 
221
- static void shutdownFunc(xsltTransformContextPtr ctxt,
222
- const xmlChar *uri, void *data)
223
+ static void
224
+ shutdownFunc(xsltTransformContextPtr ctxt,
225
+ const xmlChar *uri, void *data)
223
226
  {
224
- nokogiriXsltStylesheetTuple *wrapper;
227
+ nokogiriXsltStylesheetTuple *wrapper;
225
228
 
226
- Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
227
- wrapper);
229
+ Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
230
+ wrapper);
228
231
 
229
- rb_ary_clear(wrapper->func_instances);
232
+ rb_ary_clear(wrapper->func_instances);
230
233
  }
231
234
 
232
235
  /*
@@ -235,32 +238,26 @@ static void shutdownFunc(xsltTransformContextPtr ctxt,
235
238
  *
236
239
  * Register a class that implements custom XSLT transformation functions.
237
240
  */
238
- static VALUE registr(VALUE self, VALUE uri, VALUE obj)
241
+ static VALUE
242
+ registr(VALUE self, VALUE uri, VALUE obj)
239
243
  {
240
- VALUE modules = rb_iv_get(self, "@modules");
241
- 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"); }
242
246
 
243
- rb_hash_aset(modules, uri, obj);
244
- xsltRegisterExtModule((unsigned char *)StringValueCStr(uri), initFunc, shutdownFunc);
245
- return self;
247
+ rb_hash_aset(modules, uri, obj);
248
+ xsltRegisterExtModule((unsigned char *)StringValueCStr(uri), initFunc, shutdownFunc);
249
+ return self;
246
250
  }
247
251
 
248
- VALUE cNokogiriXsltStylesheet ;
249
- void init_xslt_stylesheet()
252
+ void
253
+ noko_init_xslt_stylesheet()
250
254
  {
251
- VALUE nokogiri;
252
- VALUE klass;
253
-
254
- nokogiri = rb_define_module("Nokogiri");
255
- xslt = rb_define_module_under(nokogiri, "XSLT");
256
- klass = rb_define_class_under(xslt, "Stylesheet", rb_cObject);
257
-
258
- 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());
259
257
 
260
- cNokogiriXsltStylesheet = klass;
258
+ cNokogiriXsltStylesheet = rb_define_class_under(mNokogiriXslt, "Stylesheet", rb_cObject);
261
259
 
262
- rb_define_singleton_method(klass, "parse_stylesheet_doc", parse_stylesheet_doc, 1);
263
- rb_define_singleton_method(xslt, "register", registr, 2);
264
- rb_define_method(klass, "serialize", serialize, 1);
265
- 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);
266
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'
@@ -37,7 +33,7 @@ require 'nokogiri/html/builder'
37
33
  #
38
34
  # # Get a Nokogiri::HTML:Document for the page we’re interested in...
39
35
  #
40
- # doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))
36
+ # doc = Nokogiri::HTML(URI.open('http://www.google.com/search?q=tenderlove'))
41
37
  #
42
38
  # # Do funky things with it using Nokogiri::XML::Node methods...
43
39
  #
@@ -113,7 +109,7 @@ module Nokogiri
113
109
  end
114
110
 
115
111
  ###
116
- # 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
117
113
  # type of document you are attempting to parse. For more information, see
118
114
  # Nokogiri.parse
119
115
  #
Binary file
Binary file
Binary file
Binary file
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  #
3
3
  # DO NOT MODIFY!!!!
4
- # This file is automatically generated by Racc 1.4.14
5
- # from Racc grammer file "".
4
+ # This file is automatically generated by Racc 1.5.2
5
+ # from Racc grammar file "".
6
6
  #
7
7
 
8
8
  require 'racc/parser.rb'
@@ -334,42 +334,42 @@ Racc_debug_parser = false
334
334
 
335
335
  def _reduce_1(val, _values, result)
336
336
  result = [val.first, val.last].flatten
337
-
337
+
338
338
  result
339
339
  end
340
340
 
341
341
  def _reduce_2(val, _values, result)
342
- result = val.flatten
342
+ result = val.flatten
343
343
  result
344
344
  end
345
345
 
346
346
  def _reduce_3(val, _values, result)
347
- result = [val.last].flatten
347
+ result = [val.last].flatten
348
348
  result
349
349
  end
350
350
 
351
351
  def _reduce_4(val, _values, result)
352
- result = :DIRECT_ADJACENT_SELECTOR
352
+ result = :DIRECT_ADJACENT_SELECTOR
353
353
  result
354
354
  end
355
355
 
356
356
  def _reduce_5(val, _values, result)
357
- result = :CHILD_SELECTOR
357
+ result = :CHILD_SELECTOR
358
358
  result
359
359
  end
360
360
 
361
361
  def _reduce_6(val, _values, result)
362
- result = :FOLLOWING_SELECTOR
362
+ result = :FOLLOWING_SELECTOR
363
363
  result
364
364
  end
365
365
 
366
366
  def _reduce_7(val, _values, result)
367
- result = :DESCENDANT_SELECTOR
367
+ result = :DESCENDANT_SELECTOR
368
368
  result
369
369
  end
370
370
 
371
371
  def _reduce_8(val, _values, result)
372
- result = :CHILD_SELECTOR
372
+ result = :CHILD_SELECTOR
373
373
  result
374
374
  end
375
375
 
@@ -379,7 +379,7 @@ def _reduce_9(val, _values, result)
379
379
  else
380
380
  Node.new(:CONDITIONAL_SELECTOR, [val.first, val[1]])
381
381
  end
382
-
382
+
383
383
  result
384
384
  end
385
385
 
@@ -387,13 +387,13 @@ end
387
387
 
388
388
  def _reduce_11(val, _values, result)
389
389
  result = Node.new(:CONDITIONAL_SELECTOR, val)
390
-
390
+
391
391
  result
392
392
  end
393
393
 
394
394
  def _reduce_12(val, _values, result)
395
395
  result = Node.new(:CONDITIONAL_SELECTOR, val)
396
-
396
+
397
397
  result
398
398
  end
399
399
 
@@ -401,39 +401,39 @@ def _reduce_13(val, _values, result)
401
401
  result = Node.new(:CONDITIONAL_SELECTOR,
402
402
  [Node.new(:ELEMENT_NAME, ['*']), val.first]
403
403
  )
404
-
404
+
405
405
  result
406
406
  end
407
407
 
408
408
  def _reduce_14(val, _values, result)
409
409
  result = Node.new(val.first, [nil, val.last])
410
-
410
+
411
411
  result
412
412
  end
413
413
 
414
414
  def _reduce_15(val, _values, result)
415
415
  result = Node.new(val[1], [val.first, val.last])
416
-
416
+
417
417
  result
418
418
  end
419
419
 
420
420
  def _reduce_16(val, _values, result)
421
421
  result = Node.new(:DESCENDANT_SELECTOR, [val.first, val.last])
422
-
422
+
423
423
  result
424
424
  end
425
425
 
426
426
  # reduce 17 omitted
427
427
 
428
428
  def _reduce_18(val, _values, result)
429
- result = Node.new(:CLASS_CONDITION, [unescape_css_identifier(val[1])])
429
+ result = Node.new(:CLASS_CONDITION, [unescape_css_identifier(val[1])])
430
430
  result
431
431
  end
432
432
 
433
433
  # reduce 19 omitted
434
434
 
435
435
  def _reduce_20(val, _values, result)
436
- result = Node.new(:ELEMENT_NAME, val)
436
+ result = Node.new(:ELEMENT_NAME, val)
437
437
  result
438
438
  end
439
439
 
@@ -441,19 +441,19 @@ def _reduce_21(val, _values, result)
441
441
  result = Node.new(:ELEMENT_NAME,
442
442
  [[val.first, val.last].compact.join(':')]
443
443
  )
444
-
444
+
445
445
  result
446
446
  end
447
447
 
448
448
  def _reduce_22(val, _values, result)
449
449
  name = @namespaces.key?('xmlns') ? "xmlns:#{val.first}" : val.first
450
450
  result = Node.new(:ELEMENT_NAME, [name])
451
-
451
+
452
452
  result
453
453
  end
454
454
 
455
455
  def _reduce_23(val, _values, result)
456
- result = val[0]
456
+ result = val[0]
457
457
  result
458
458
  end
459
459
 
@@ -463,7 +463,7 @@ def _reduce_25(val, _values, result)
463
463
  result = Node.new(:ATTRIBUTE_CONDITION,
464
464
  [val[1]] + (val[2] || [])
465
465
  )
466
-
466
+
467
467
  result
468
468
  end
469
469
 
@@ -471,16 +471,16 @@ def _reduce_26(val, _values, result)
471
471
  result = Node.new(:ATTRIBUTE_CONDITION,
472
472
  [val[1]] + (val[2] || [])
473
473
  )
474
-
474
+
475
475
  result
476
476
  end
477
477
 
478
478
  def _reduce_27(val, _values, result)
479
- # Non standard, but hpricot supports it.
479
+ # non-standard, from hpricot
480
480
  result = Node.new(:PSEUDO_CLASS,
481
481
  [Node.new(:FUNCTION, ['nth-child(', val[1]])]
482
482
  )
483
-
483
+
484
484
  result
485
485
  end
486
486
 
@@ -488,7 +488,7 @@ def _reduce_28(val, _values, result)
488
488
  result = Node.new(:ELEMENT_NAME,
489
489
  [[val.first, val.last].compact.join(':')]
490
490
  )
491
-
491
+
492
492
  result
493
493
  end
494
494
 
@@ -496,52 +496,52 @@ def _reduce_29(val, _values, result)
496
496
  # Default namespace is not applied to attributes.
497
497
  # So we don't add prefix "xmlns:" as in namespaced_ident.
498
498
  result = Node.new(:ELEMENT_NAME, [val.first])
499
-
499
+
500
500
  result
501
501
  end
502
502
 
503
503
  def _reduce_30(val, _values, result)
504
504
  result = Node.new(:FUNCTION, [val.first.strip])
505
-
505
+
506
506
  result
507
507
  end
508
508
 
509
509
  def _reduce_31(val, _values, result)
510
510
  result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
511
-
511
+
512
512
  result
513
513
  end
514
514
 
515
515
  def _reduce_32(val, _values, result)
516
516
  result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
517
-
517
+
518
518
  result
519
519
  end
520
520
 
521
521
  def _reduce_33(val, _values, result)
522
522
  result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
523
-
523
+
524
524
  result
525
525
  end
526
526
 
527
527
  def _reduce_34(val, _values, result)
528
528
  result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten)
529
-
529
+
530
530
  result
531
531
  end
532
532
 
533
533
  def _reduce_35(val, _values, result)
534
- result = [val.first, val.last]
534
+ result = [val.first, val.last]
535
535
  result
536
536
  end
537
537
 
538
538
  def _reduce_36(val, _values, result)
539
- result = [val.first, val.last]
539
+ result = [val.first, val.last]
540
540
  result
541
541
  end
542
542
 
543
543
  def _reduce_37(val, _values, result)
544
- result = [val.first, val.last]
544
+ result = [val.first, val.last]
545
545
  result
546
546
  end
547
547
 
@@ -558,13 +558,13 @@ def _reduce_40(val, _values, result)
558
558
  when 'n'
559
559
  result = Node.new(:NTH, ['1','n','+','0'])
560
560
  else
561
- # This is not CSS standard. It allows us to support this:
561
+ # non-standard to support custom functions:
562
562
  # assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)'))
563
563
  # assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)'))
564
564
  # assert_xpath("//a[foo(., a, 10)]", @parser.parse('a:foo(a, 10)'))
565
565
  result = val
566
566
  end
567
-
567
+
568
568
  result
569
569
  end
570
570
 
@@ -574,7 +574,7 @@ def _reduce_41(val, _values, result)
574
574
  else
575
575
  raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
576
576
  end
577
-
577
+
578
578
  result
579
579
  end
580
580
 
@@ -590,7 +590,7 @@ def _reduce_42(val, _values, result)
590
590
  else
591
591
  raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
592
592
  end
593
-
593
+
594
594
  result
595
595
  end
596
596
 
@@ -610,18 +610,18 @@ def _reduce_43(val, _values, result)
610
610
  else
611
611
  raise Racc::ParseError, "parse error on IDENT '#{val[1]}'"
612
612
  end
613
-
613
+
614
614
  result
615
615
  end
616
616
 
617
617
  def _reduce_44(val, _values, result)
618
618
  result = Node.new(:PSEUDO_CLASS, [val[1]])
619
-
619
+
620
620
  result
621
621
  end
622
622
 
623
623
  def _reduce_45(val, _values, result)
624
- result = Node.new(:PSEUDO_CLASS, [val[1]])
624
+ result = Node.new(:PSEUDO_CLASS, [val[1]])
625
625
  result
626
626
  end
627
627
 
@@ -631,31 +631,31 @@ end
631
631
 
632
632
  def _reduce_48(val, _values, result)
633
633
  result = Node.new(:COMBINATOR, val)
634
-
634
+
635
635
  result
636
636
  end
637
637
 
638
638
  def _reduce_49(val, _values, result)
639
639
  result = Node.new(:COMBINATOR, val)
640
-
640
+
641
641
  result
642
642
  end
643
643
 
644
644
  def _reduce_50(val, _values, result)
645
645
  result = Node.new(:COMBINATOR, val)
646
-
646
+
647
647
  result
648
648
  end
649
649
 
650
650
  def _reduce_51(val, _values, result)
651
651
  result = Node.new(:COMBINATOR, val)
652
-
652
+
653
653
  result
654
654
  end
655
655
 
656
656
  def _reduce_52(val, _values, result)
657
657
  result = Node.new(:COMBINATOR, val)
658
-
658
+
659
659
  result
660
660
  end
661
661
 
@@ -670,65 +670,65 @@ end
670
670
  # reduce 57 omitted
671
671
 
672
672
  def _reduce_58(val, _values, result)
673
- result = Node.new(:ID, [unescape_css_identifier(val.first)])
673
+ result = Node.new(:ID, [unescape_css_identifier(val.first)])
674
674
  result
675
675
  end
676
676
 
677
677
  def _reduce_59(val, _values, result)
678
- result = [val.first, unescape_css_identifier(val[1])]
678
+ result = [val.first, unescape_css_identifier(val[1])]
679
679
  result
680
680
  end
681
681
 
682
682
  def _reduce_60(val, _values, result)
683
- result = [val.first, unescape_css_string(val[1])]
683
+ result = [val.first, unescape_css_string(val[1])]
684
684
  result
685
685
  end
686
686
 
687
687
  def _reduce_61(val, _values, result)
688
- result = [val.first, val[1]]
688
+ result = [val.first, val[1]]
689
689
  result
690
690
  end
691
691
 
692
692
  # reduce 62 omitted
693
693
 
694
694
  def _reduce_63(val, _values, result)
695
- result = :equal
695
+ result = :equal
696
696
  result
697
697
  end
698
698
 
699
699
  def _reduce_64(val, _values, result)
700
- result = :prefix_match
700
+ result = :prefix_match
701
701
  result
702
702
  end
703
703
 
704
704
  def _reduce_65(val, _values, result)
705
- result = :suffix_match
705
+ result = :suffix_match
706
706
  result
707
707
  end
708
708
 
709
709
  def _reduce_66(val, _values, result)
710
- result = :substring_match
710
+ result = :substring_match
711
711
  result
712
712
  end
713
713
 
714
714
  def _reduce_67(val, _values, result)
715
- result = :not_equal
715
+ result = :not_equal
716
716
  result
717
717
  end
718
718
 
719
719
  def _reduce_68(val, _values, result)
720
- result = :includes
720
+ result = :includes
721
721
  result
722
722
  end
723
723
 
724
724
  def _reduce_69(val, _values, result)
725
- result = :dash_match
725
+ result = :dash_match
726
726
  result
727
727
  end
728
728
 
729
729
  def _reduce_70(val, _values, result)
730
730
  result = Node.new(:NOT, [val[1]])
731
-
731
+
732
732
  result
733
733
  end
734
734
 
@@ -747,5 +747,5 @@ def _reduce_none(val, _values, result)
747
747
  end
748
748
 
749
749
  end # class Parser
750
- end # module CSS
751
- end # module Nokogiri
750
+ end # module CSS
751
+ end # module Nokogiri