nokogiri 1.11.1 → 1.12.0.rc1

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 (179) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE-DEPENDENCIES.md +232 -11
  3. data/LICENSE.md +1 -1
  4. data/README.md +27 -21
  5. data/dependencies.yml +12 -12
  6. data/ext/nokogiri/depend +35 -474
  7. data/ext/nokogiri/extconf.rb +391 -243
  8. data/ext/nokogiri/gumbo.c +611 -0
  9. data/ext/nokogiri/{html_document.c → html4_document.c} +18 -23
  10. data/ext/nokogiri/html4_element_description.c +294 -0
  11. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  12. data/ext/nokogiri/html4_sax_parser_context.c +119 -0
  13. data/ext/nokogiri/{html_sax_push_parser.c → html4_sax_push_parser.c} +29 -27
  14. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  15. data/ext/nokogiri/nokogiri.c +206 -66
  16. data/ext/nokogiri/nokogiri.h +166 -76
  17. data/ext/nokogiri/test_global_handlers.c +3 -4
  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 +258 -200
  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 +31 -26
  26. data/ext/nokogiri/xml_element_decl.c +22 -22
  27. data/ext/nokogiri/xml_encoding_handler.c +28 -17
  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 +58 -49
  31. data/ext/nokogiri/xml_node.c +473 -414
  32. data/ext/nokogiri/xml_node_set.c +174 -162
  33. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  34. data/ext/nokogiri/xml_reader.c +193 -157
  35. data/ext/nokogiri/xml_relax_ng.c +29 -23
  36. data/ext/nokogiri/xml_sax_parser.c +111 -106
  37. data/ext/nokogiri/xml_sax_parser_context.c +102 -85
  38. data/ext/nokogiri/xml_sax_push_parser.c +34 -27
  39. data/ext/nokogiri/xml_schema.c +49 -41
  40. data/ext/nokogiri/xml_syntax_error.c +21 -23
  41. data/ext/nokogiri/xml_text.c +13 -17
  42. data/ext/nokogiri/xml_xpath_context.c +86 -77
  43. data/ext/nokogiri/xslt_stylesheet.c +157 -156
  44. data/gumbo-parser/CHANGES.md +63 -0
  45. data/gumbo-parser/Makefile +101 -0
  46. data/gumbo-parser/THANKS +27 -0
  47. data/gumbo-parser/src/Makefile +17 -0
  48. data/gumbo-parser/src/README.md +41 -0
  49. data/gumbo-parser/src/ascii.c +75 -0
  50. data/gumbo-parser/src/ascii.h +115 -0
  51. data/gumbo-parser/src/attribute.c +42 -0
  52. data/gumbo-parser/src/attribute.h +17 -0
  53. data/gumbo-parser/src/char_ref.c +22225 -0
  54. data/gumbo-parser/src/char_ref.h +29 -0
  55. data/gumbo-parser/src/char_ref.rl +2154 -0
  56. data/gumbo-parser/src/error.c +626 -0
  57. data/gumbo-parser/src/error.h +148 -0
  58. data/gumbo-parser/src/foreign_attrs.c +104 -0
  59. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  60. data/gumbo-parser/src/gumbo.h +943 -0
  61. data/gumbo-parser/src/insertion_mode.h +33 -0
  62. data/gumbo-parser/src/macros.h +91 -0
  63. data/gumbo-parser/src/parser.c +4886 -0
  64. data/gumbo-parser/src/parser.h +41 -0
  65. data/gumbo-parser/src/replacement.h +33 -0
  66. data/gumbo-parser/src/string_buffer.c +103 -0
  67. data/gumbo-parser/src/string_buffer.h +68 -0
  68. data/gumbo-parser/src/string_piece.c +48 -0
  69. data/gumbo-parser/src/svg_attrs.c +174 -0
  70. data/gumbo-parser/src/svg_attrs.gperf +77 -0
  71. data/gumbo-parser/src/svg_tags.c +137 -0
  72. data/gumbo-parser/src/svg_tags.gperf +55 -0
  73. data/gumbo-parser/src/tag.c +222 -0
  74. data/gumbo-parser/src/tag_lookup.c +382 -0
  75. data/gumbo-parser/src/tag_lookup.gperf +169 -0
  76. data/gumbo-parser/src/tag_lookup.h +13 -0
  77. data/gumbo-parser/src/token_buffer.c +79 -0
  78. data/gumbo-parser/src/token_buffer.h +71 -0
  79. data/gumbo-parser/src/token_type.h +17 -0
  80. data/gumbo-parser/src/tokenizer.c +3463 -0
  81. data/gumbo-parser/src/tokenizer.h +112 -0
  82. data/gumbo-parser/src/tokenizer_states.h +339 -0
  83. data/gumbo-parser/src/utf8.c +245 -0
  84. data/gumbo-parser/src/utf8.h +164 -0
  85. data/gumbo-parser/src/util.c +68 -0
  86. data/gumbo-parser/src/util.h +30 -0
  87. data/gumbo-parser/src/vector.c +111 -0
  88. data/gumbo-parser/src/vector.h +45 -0
  89. data/lib/nokogiri.rb +31 -50
  90. data/lib/nokogiri/css.rb +14 -14
  91. data/lib/nokogiri/css/parser.rb +2 -2
  92. data/lib/nokogiri/css/parser.y +1 -1
  93. data/lib/nokogiri/css/syntax_error.rb +1 -1
  94. data/lib/nokogiri/extension.rb +26 -0
  95. data/lib/nokogiri/gumbo.rb +14 -0
  96. data/lib/nokogiri/html.rb +31 -27
  97. data/lib/nokogiri/html4.rb +40 -0
  98. data/lib/nokogiri/{html → html4}/builder.rb +2 -2
  99. data/lib/nokogiri/{html → html4}/document.rb +4 -4
  100. data/lib/nokogiri/{html → html4}/document_fragment.rb +17 -17
  101. data/lib/nokogiri/{html → html4}/element_description.rb +1 -1
  102. data/lib/nokogiri/{html → html4}/element_description_defaults.rb +1 -1
  103. data/lib/nokogiri/{html → html4}/entity_lookup.rb +1 -1
  104. data/lib/nokogiri/{html → html4}/sax/parser.rb +11 -14
  105. data/lib/nokogiri/html4/sax/parser_context.rb +19 -0
  106. data/lib/nokogiri/{html → html4}/sax/push_parser.rb +5 -5
  107. data/lib/nokogiri/html5.rb +473 -0
  108. data/lib/nokogiri/html5/document.rb +74 -0
  109. data/lib/nokogiri/html5/document_fragment.rb +80 -0
  110. data/lib/nokogiri/html5/node.rb +93 -0
  111. data/lib/nokogiri/version/constant.rb +1 -1
  112. data/lib/nokogiri/version/info.rb +42 -9
  113. data/lib/nokogiri/xml.rb +35 -36
  114. data/lib/nokogiri/xml/document.rb +74 -28
  115. data/lib/nokogiri/xml/node.rb +45 -47
  116. data/lib/nokogiri/xml/parse_options.rb +2 -0
  117. data/lib/nokogiri/xml/pp.rb +2 -2
  118. data/lib/nokogiri/xml/reader.rb +2 -9
  119. data/lib/nokogiri/xml/sax.rb +4 -4
  120. data/lib/nokogiri/xml/sax/document.rb +24 -30
  121. data/lib/nokogiri/xml/xpath.rb +3 -5
  122. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  123. data/lib/nokogiri/xslt.rb +16 -16
  124. data/lib/nokogiri/xslt/stylesheet.rb +1 -1
  125. data/patches/libxml2/{0002-Remove-script-macro-support.patch → 0001-Remove-script-macro-support.patch} +0 -0
  126. data/patches/libxml2/{0003-Update-entities-to-remove-handling-of-ssi.patch → 0002-Update-entities-to-remove-handling-of-ssi.patch} +0 -0
  127. data/patches/libxml2/{0004-libxml2.la-is-in-top_builddir.patch → 0003-libxml2.la-is-in-top_builddir.patch} +1 -1
  128. data/patches/libxml2/{0008-use-glibc-strlen.patch → 0004-use-glibc-strlen.patch} +0 -0
  129. data/patches/libxml2/{0009-avoid-isnan-isinf.patch → 0005-avoid-isnan-isinf.patch} +4 -4
  130. data/patches/libxml2/0006-update-automake-files-for-arm64.patch +2511 -0
  131. data/patches/libxml2/0007-Fix-XPath-recursion-limit.patch +31 -0
  132. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +2511 -0
  133. data/patches/libxslt/0002-Fix-xml2-config-check-in-configure-script.patch +19 -0
  134. data/ports/archives/libxml2-2.9.12.tar.gz +0 -0
  135. metadata +117 -109
  136. data/ext/nokogiri/html_document.h +0 -10
  137. data/ext/nokogiri/html_element_description.c +0 -279
  138. data/ext/nokogiri/html_element_description.h +0 -10
  139. data/ext/nokogiri/html_entity_lookup.c +0 -32
  140. data/ext/nokogiri/html_entity_lookup.h +0 -8
  141. data/ext/nokogiri/html_sax_parser_context.c +0 -118
  142. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  143. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  144. data/ext/nokogiri/xml_attr.h +0 -9
  145. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  146. data/ext/nokogiri/xml_cdata.h +0 -9
  147. data/ext/nokogiri/xml_comment.h +0 -9
  148. data/ext/nokogiri/xml_document.h +0 -23
  149. data/ext/nokogiri/xml_document_fragment.h +0 -10
  150. data/ext/nokogiri/xml_dtd.h +0 -10
  151. data/ext/nokogiri/xml_element_content.h +0 -10
  152. data/ext/nokogiri/xml_element_decl.h +0 -9
  153. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  154. data/ext/nokogiri/xml_entity_decl.h +0 -10
  155. data/ext/nokogiri/xml_entity_reference.h +0 -9
  156. data/ext/nokogiri/xml_io.c +0 -63
  157. data/ext/nokogiri/xml_io.h +0 -11
  158. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  159. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  160. data/ext/nokogiri/xml_namespace.h +0 -14
  161. data/ext/nokogiri/xml_node.h +0 -13
  162. data/ext/nokogiri/xml_node_set.h +0 -12
  163. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  164. data/ext/nokogiri/xml_reader.h +0 -10
  165. data/ext/nokogiri/xml_relax_ng.h +0 -9
  166. data/ext/nokogiri/xml_sax_parser.h +0 -39
  167. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  168. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  169. data/ext/nokogiri/xml_schema.h +0 -9
  170. data/ext/nokogiri/xml_syntax_error.h +0 -25
  171. data/ext/nokogiri/xml_text.h +0 -9
  172. data/ext/nokogiri/xml_xpath_context.h +0 -10
  173. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  174. data/lib/nokogiri/html/sax/parser_context.rb +0 -17
  175. data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
  176. data/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch +0 -32
  177. data/patches/libxml2/0006-htmlParseComment-treat-as-if-it-closed-the-comment.patch +0 -73
  178. data/patches/libxml2/0007-use-new-htmlParseLookupCommentEnd-to-find-comment-en.patch +0 -103
  179. data/ports/archives/libxml2-2.9.10.tar.gz +0 -0
@@ -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,29 @@ 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);
68
67
 
69
- errstr = rb_str_new(0, 0);
70
- xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
68
+ errstr = rb_str_new(0, 0);
69
+ xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
71
70
 
72
- xml_cpy = xmlCopyDoc(xml, 1); /* 1 => recursive */
73
- ss = xsltParseStylesheetDoc(xml_cpy);
71
+ xml_cpy = xmlCopyDoc(xml, 1); /* 1 => recursive */
72
+ ss = xsltParseStylesheetDoc(xml_cpy);
74
73
 
75
- xsltSetGenericErrorFunc(NULL, NULL);
74
+ xsltSetGenericErrorFunc(NULL, NULL);
76
75
 
77
- if (!ss) {
78
- xmlFreeDoc(xml_cpy);
79
- exception = rb_exc_new3(rb_eRuntimeError, errstr);
80
- rb_exc_raise(exception);
81
- }
76
+ if (!ss) {
77
+ xmlFreeDoc(xml_cpy);
78
+ exception = rb_exc_new3(rb_eRuntimeError, errstr);
79
+ rb_exc_raise(exception);
80
+ }
82
81
 
83
- return Nokogiri_wrap_xslt_stylesheet(ss);
82
+ return Nokogiri_wrap_xslt_stylesheet(ss);
84
83
  }
85
84
 
86
85
 
@@ -90,20 +89,21 @@ static VALUE parse_stylesheet_doc(VALUE klass, VALUE xmldocobj)
90
89
  *
91
90
  * Serialize +document+ to an xml string.
92
91
  */
93
- static VALUE serialize(VALUE self, VALUE xmlobj)
92
+ static VALUE
93
+ serialize(VALUE self, VALUE xmlobj)
94
94
  {
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 ;
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 ;
107
107
  }
108
108
 
109
109
  /*
@@ -121,109 +121,114 @@ static VALUE serialize(VALUE self, VALUE xmlobj)
121
121
  * puts xslt.transform(doc, ['key', 'value'])
122
122
  *
123
123
  */
124
- static VALUE transform(int argc, VALUE* argv, VALUE self)
124
+ static VALUE
125
+ transform(int argc, VALUE *argv, VALUE self)
125
126
  {
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) ;
127
+ VALUE xmldoc, paramobj, errstr, exception ;
128
+ xmlDocPtr xml ;
129
+ xmlDocPtr result ;
130
+ nokogiriXsltStylesheetTuple *wrapper;
131
+ const char **params ;
132
+ long param_len, j ;
133
+ int parse_error_occurred ;
134
+
135
+ rb_scan_args(argc, argv, "11", &xmldoc, &paramobj);
136
+ if (NIL_P(paramobj)) { paramobj = rb_ary_new2(0L) ; }
137
+ if (!rb_obj_is_kind_of(xmldoc, cNokogiriXmlDocument)) {
138
+ rb_raise(rb_eArgError, "argument must be a Nokogiri::XML::Document");
139
+ }
140
+
141
+ /* handle hashes as arguments. */
142
+ if (T_HASH == TYPE(paramobj)) {
143
+ paramobj = rb_funcall(paramobj, rb_intern("to_a"), 0);
144
+ paramobj = rb_funcall(paramobj, rb_intern("flatten"), 0);
145
+ }
146
+
147
+ Check_Type(paramobj, T_ARRAY);
148
+
149
+ Data_Get_Struct(xmldoc, xmlDoc, xml);
150
+ Data_Get_Struct(self, nokogiriXsltStylesheetTuple, wrapper);
151
+
152
+ param_len = RARRAY_LEN(paramobj);
153
+ params = calloc((size_t)param_len + 1, sizeof(char *));
154
+ for (j = 0 ; j < param_len ; j++) {
155
+ VALUE entry = rb_ary_entry(paramobj, j);
156
+ const char *ptr = StringValueCStr(entry);
157
+ params[j] = ptr;
158
+ }
159
+ params[param_len] = 0 ;
160
+
161
+ errstr = rb_str_new(0, 0);
162
+ xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
163
+ xmlSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
164
+
165
+ result = xsltApplyStylesheet(wrapper->ss, xml, params);
166
+ free(params);
167
+
168
+ xsltSetGenericErrorFunc(NULL, NULL);
169
+ xmlSetGenericErrorFunc(NULL, NULL);
170
+
171
+ parse_error_occurred = (Qfalse == rb_funcall(errstr, rb_intern("empty?"), 0));
172
+
173
+ if (parse_error_occurred) {
174
+ exception = rb_exc_new3(rb_eRuntimeError, errstr);
175
+ rb_exc_raise(exception);
176
+ }
177
+
178
+ return noko_xml_document_wrap((VALUE)0, result) ;
177
179
  }
178
180
 
179
- static void method_caller(xmlXPathParserContextPtr ctxt, int nargs)
181
+ static void
182
+ method_caller(xmlXPathParserContextPtr ctxt, int nargs)
180
183
  {
181
- VALUE handler;
182
- const char *function_name;
183
- xsltTransformContextPtr transform;
184
- const xmlChar *functionURI;
184
+ VALUE handler;
185
+ const char *function_name;
186
+ xsltTransformContextPtr transform;
187
+ const xmlChar *functionURI;
185
188
 
186
- transform = xsltXPathGetTransformContext(ctxt);
187
- functionURI = ctxt->context->functionURI;
188
- handler = (VALUE)xsltGetExtData(transform, functionURI);
189
- function_name = (const char*)(ctxt->context->function);
189
+ transform = xsltXPathGetTransformContext(ctxt);
190
+ functionURI = ctxt->context->functionURI;
191
+ handler = (VALUE)xsltGetExtData(transform, functionURI);
192
+ function_name = (const char *)(ctxt->context->function);
190
193
 
191
- Nokogiri_marshal_xpath_funcall_and_return_values(ctxt, nargs, handler, (const char*)function_name);
194
+ Nokogiri_marshal_xpath_funcall_and_return_values(ctxt, nargs, handler, (const char *)function_name);
192
195
  }
193
196
 
194
- static void * initFunc(xsltTransformContextPtr ctxt, const xmlChar *uri)
197
+ static void *
198
+ initFunc(xsltTransformContextPtr ctxt, const xmlChar *uri)
195
199
  {
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;
200
+ VALUE modules = rb_iv_get(mNokogiriXslt, "@modules");
201
+ VALUE obj = rb_hash_aref(modules, rb_str_new2((const char *)uri));
202
+ VALUE args = { Qfalse };
203
+ VALUE methods = rb_funcall(obj, rb_intern("instance_methods"), 1, args);
204
+ VALUE inst;
205
+ nokogiriXsltStylesheetTuple *wrapper;
206
+ int i;
207
+
208
+ for (i = 0; i < RARRAY_LEN(methods); i++) {
209
+ VALUE method_name = rb_obj_as_string(rb_ary_entry(methods, i));
210
+ xsltRegisterExtFunction(ctxt,
211
+ (unsigned char *)StringValueCStr(method_name), uri, method_caller);
212
+ }
213
+
214
+ Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
215
+ wrapper);
216
+ inst = rb_class_new_instance(0, NULL, obj);
217
+ rb_ary_push(wrapper->func_instances, inst);
218
+
219
+ return (void *)inst;
216
220
  }
217
221
 
218
- static void shutdownFunc(xsltTransformContextPtr ctxt,
219
- const xmlChar *uri, void *data)
222
+ static void
223
+ shutdownFunc(xsltTransformContextPtr ctxt,
224
+ const xmlChar *uri, void *data)
220
225
  {
221
- nokogiriXsltStylesheetTuple *wrapper;
226
+ nokogiriXsltStylesheetTuple *wrapper;
222
227
 
223
- Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
224
- wrapper);
228
+ Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
229
+ wrapper);
225
230
 
226
- rb_ary_clear(wrapper->func_instances);
231
+ rb_ary_clear(wrapper->func_instances);
227
232
  }
228
233
 
229
234
  /*
@@ -232,32 +237,28 @@ static void shutdownFunc(xsltTransformContextPtr ctxt,
232
237
  *
233
238
  * Register a class that implements custom XSLT transformation functions.
234
239
  */
235
- static VALUE registr(VALUE self, VALUE uri, VALUE obj)
240
+ static VALUE
241
+ registr(VALUE self, VALUE uri, VALUE obj)
236
242
  {
237
- VALUE modules = rb_iv_get(self, "@modules");
238
- if(NIL_P(modules)) rb_raise(rb_eRuntimeError, "wtf! @modules isn't set");
243
+ VALUE modules = rb_iv_get(self, "@modules");
244
+ if (NIL_P(modules)) { rb_raise(rb_eRuntimeError, "wtf! @modules isn't set"); }
239
245
 
240
- rb_hash_aset(modules, uri, obj);
241
- xsltRegisterExtModule((unsigned char *)StringValueCStr(uri), initFunc, shutdownFunc);
242
- return self;
246
+ rb_hash_aset(modules, uri, obj);
247
+ xsltRegisterExtModule((unsigned char *)StringValueCStr(uri), initFunc, shutdownFunc);
248
+ return self;
243
249
  }
244
250
 
245
- VALUE cNokogiriXsltStylesheet ;
246
- void init_xslt_stylesheet()
251
+ void
252
+ noko_init_xslt_stylesheet()
247
253
  {
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
+ rb_define_singleton_method(mNokogiriXslt, "register", registr, 2);
255
+ rb_iv_set(mNokogiriXslt, "@modules", rb_hash_new());
254
256
 
255
- rb_iv_set(xslt, "@modules", rb_hash_new());
257
+ cNokogiriXsltStylesheet = rb_define_class_under(mNokogiriXslt, "Stylesheet", rb_cObject);
256
258
 
257
- cNokogiriXsltStylesheet = klass;
259
+ rb_undef_alloc_func(cNokogiriXsltStylesheet);
258
260
 
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);
261
+ rb_define_singleton_method(cNokogiriXsltStylesheet, "parse_stylesheet_doc", parse_stylesheet_doc, 1);
262
+ rb_define_method(cNokogiriXsltStylesheet, "serialize", serialize, 1);
263
+ rb_define_method(cNokogiriXsltStylesheet, "transform", transform, -1);
263
264
  }
@@ -0,0 +1,63 @@
1
+ ## Gumbo 0.10.1 (2015-04-30)
2
+
3
+ Same as 0.10.0, but with the version number bumped because the last version-number commit to v0.9.4 makes GitHub think that v0.9.4 is the latest version and so it's not highlighted on the webpage.
4
+
5
+ ## Gumbo 0.10.0 (2015-04-30)
6
+
7
+ * Full support for `<template>` tag (kevinhendricks, nostrademons).
8
+ * Some fixes for `<rtc>`/`<rt>` handling (kevinhendricks, vmg).
9
+ * All html5lib-trunk tests pass now! (kevinhendricks, vmg, nostrademons)
10
+ * Support for fragment parsing (vmg)
11
+ * A couple additional example programs (kevinhendricks)
12
+ * Performance improvements totaling an estimated 30-40% total improvement (vmg, nostrademons).
13
+
14
+ ## Gumbo 0.9.4 (2015-04-30)
15
+
16
+ * Additional Visual Studio fixes (lowjoel, nostrademons)
17
+ * Fixed some unused variable warnings.
18
+ * Fix for glibtoolize vs. libtoolize build errors on Mac.
19
+ * Fixed `CDATA` end tag handling.
20
+
21
+ ## Gumbo 0.9.3 (2015-02-17)
22
+
23
+ * Bugfix for `&AElig;` entities (rgrove)
24
+ * Fix `CDATA` handling; `CDATA` sections now generate a `GUMBO_NODE_CDATA` node rather
25
+ than plain text.
26
+ * Fix `get_title example` to handle whitespace nodes (gsnedders)
27
+ * Visual Studio compilation fixes (fishioon)
28
+ * Take the namespace into account when determining whether a node matches a
29
+ certain tag (aroben)
30
+ * Replace the varargs tag functions with a tagset bytevector, for a 20-30%
31
+ speedup in overall parse time (kevinhendricks, vmg)
32
+ * Add MacOS X support to Travis CI, and fix the deployment/DLL issues this
33
+ uncovered (nostrademons, kevinhendricks, vmg)
34
+
35
+ ## Gumbo 0.9.2 (2014-09-21)
36
+
37
+ * Performance improvements: Ragel-based char ref decoder and DFA-based UTF8
38
+ decoder, totaling speedups of up to 300%.
39
+ * Added benchmarking program and some sample data.
40
+ * Fixed a compiler error under Visual Studio.
41
+ * Fix an error in the ctypes bindings that could lead to memory corruption in
42
+ the Python bindings.
43
+ * Fix duplicate attributes when parsing `<isindex>` tags.
44
+ * Don't leave semicolons behind when consuming entity references (rgrove)
45
+ * Internally rename some functions in preparation for an amalgamation file
46
+ (jdeng)
47
+ * Add proper cflags for gyp builds (skabbes)
48
+
49
+ ## Gumbo 0.9.1 (2014-08-07)
50
+
51
+ * First version listed on PyPi.
52
+ * Autotools files excluded from GitHub and generated via autogen.sh. (endgame)
53
+ * Numerous compiler warnings fixed. (bnoordhuis, craigbarnes)
54
+ * Google security audit passed.
55
+ * Gyp support (tfarina)
56
+ * Naming convention for structs changed to avoid C reserved words.
57
+ * Fix several integer and buffer overflows (Maxime2)
58
+ * Some Visual Studio compiler support (bugparty)
59
+ * Python3 compatibility for the ctypes bindings.
60
+
61
+ ## Gumbo 0.9.0 (2013-08-13)
62
+
63
+ * Initial release open-sourced by Google.