nokogiri 1.11.0.rc3-x86-linux → 1.11.3-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.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/LICENSE-DEPENDENCIES.md +1015 -947
- data/LICENSE.md +1 -1
- data/README.md +168 -91
- data/ext/nokogiri/depend +37 -358
- data/ext/nokogiri/extconf.rb +581 -374
- data/ext/nokogiri/html_document.c +78 -82
- data/ext/nokogiri/html_element_description.c +84 -71
- data/ext/nokogiri/html_entity_lookup.c +21 -16
- data/ext/nokogiri/html_sax_parser_context.c +69 -66
- data/ext/nokogiri/html_sax_push_parser.c +42 -34
- data/ext/nokogiri/include/libexslt/exslt.h +102 -0
- data/ext/nokogiri/include/libexslt/exsltconfig.h +70 -0
- data/ext/nokogiri/include/libexslt/exsltexports.h +140 -0
- data/ext/nokogiri/include/libxml2/libxml/DOCBparser.h +96 -0
- data/ext/nokogiri/include/libxml2/libxml/HTMLparser.h +306 -0
- data/ext/nokogiri/include/libxml2/libxml/HTMLtree.h +147 -0
- data/ext/nokogiri/include/libxml2/libxml/SAX.h +173 -0
- data/ext/nokogiri/include/libxml2/libxml/SAX2.h +178 -0
- data/ext/nokogiri/include/libxml2/libxml/c14n.h +126 -0
- data/ext/nokogiri/include/libxml2/libxml/catalog.h +182 -0
- data/ext/nokogiri/include/libxml2/libxml/chvalid.h +230 -0
- data/ext/nokogiri/include/libxml2/libxml/debugXML.h +217 -0
- data/ext/nokogiri/include/libxml2/libxml/dict.h +79 -0
- data/ext/nokogiri/include/libxml2/libxml/encoding.h +245 -0
- data/ext/nokogiri/include/libxml2/libxml/entities.h +151 -0
- data/ext/nokogiri/include/libxml2/libxml/globals.h +508 -0
- data/ext/nokogiri/include/libxml2/libxml/hash.h +236 -0
- data/ext/nokogiri/include/libxml2/libxml/list.h +137 -0
- data/ext/nokogiri/include/libxml2/libxml/nanoftp.h +163 -0
- data/ext/nokogiri/include/libxml2/libxml/nanohttp.h +81 -0
- data/ext/nokogiri/include/libxml2/libxml/parser.h +1241 -0
- data/ext/nokogiri/include/libxml2/libxml/parserInternals.h +644 -0
- data/ext/nokogiri/include/libxml2/libxml/pattern.h +100 -0
- data/ext/nokogiri/include/libxml2/libxml/relaxng.h +217 -0
- data/ext/nokogiri/include/libxml2/libxml/schemasInternals.h +958 -0
- data/ext/nokogiri/include/libxml2/libxml/schematron.h +142 -0
- data/ext/nokogiri/include/libxml2/libxml/threads.h +89 -0
- data/ext/nokogiri/include/libxml2/libxml/tree.h +1311 -0
- data/ext/nokogiri/include/libxml2/libxml/uri.h +94 -0
- data/ext/nokogiri/include/libxml2/libxml/valid.h +458 -0
- data/ext/nokogiri/include/libxml2/libxml/xinclude.h +129 -0
- data/ext/nokogiri/include/libxml2/libxml/xlink.h +189 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlIO.h +366 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlautomata.h +146 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlerror.h +945 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlexports.h +153 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlmemory.h +224 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlmodule.h +57 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlreader.h +428 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlregexp.h +222 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlsave.h +88 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlschemas.h +246 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlschemastypes.h +151 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlstring.h +140 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlunicode.h +202 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlversion.h +485 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlwriter.h +488 -0
- data/ext/nokogiri/include/libxml2/libxml/xpath.h +566 -0
- data/ext/nokogiri/include/libxml2/libxml/xpathInternals.h +632 -0
- data/ext/nokogiri/include/libxml2/libxml/xpointer.h +114 -0
- data/ext/nokogiri/include/libxslt/attributes.h +38 -0
- data/ext/nokogiri/include/libxslt/documents.h +93 -0
- data/ext/nokogiri/include/libxslt/extensions.h +262 -0
- data/ext/nokogiri/include/libxslt/extra.h +72 -0
- data/ext/nokogiri/include/libxslt/functions.h +78 -0
- data/ext/nokogiri/include/libxslt/imports.h +75 -0
- data/ext/nokogiri/include/libxslt/keys.h +53 -0
- data/ext/nokogiri/include/libxslt/namespaces.h +68 -0
- data/ext/nokogiri/include/libxslt/numbersInternals.h +73 -0
- data/ext/nokogiri/include/libxslt/pattern.h +84 -0
- data/ext/nokogiri/include/libxslt/preproc.h +43 -0
- data/ext/nokogiri/include/libxslt/security.h +104 -0
- data/ext/nokogiri/include/libxslt/templates.h +77 -0
- data/ext/nokogiri/include/libxslt/transform.h +207 -0
- data/ext/nokogiri/include/libxslt/variables.h +118 -0
- data/ext/nokogiri/include/libxslt/xslt.h +110 -0
- data/ext/nokogiri/include/libxslt/xsltInternals.h +1978 -0
- data/ext/nokogiri/include/libxslt/xsltconfig.h +180 -0
- data/ext/nokogiri/include/libxslt/xsltexports.h +142 -0
- data/ext/nokogiri/include/libxslt/xsltlocale.h +76 -0
- data/ext/nokogiri/include/libxslt/xsltutils.h +313 -0
- data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
- data/ext/nokogiri/nokogiri.c +192 -93
- data/ext/nokogiri/nokogiri.h +177 -98
- data/ext/nokogiri/test_global_handlers.c +40 -0
- data/ext/nokogiri/xml_attr.c +15 -15
- data/ext/nokogiri/xml_attribute_decl.c +18 -18
- data/ext/nokogiri/xml_cdata.c +13 -18
- data/ext/nokogiri/xml_comment.c +19 -26
- data/ext/nokogiri/xml_document.c +246 -188
- data/ext/nokogiri/xml_document_fragment.c +13 -15
- data/ext/nokogiri/xml_dtd.c +54 -48
- data/ext/nokogiri/xml_element_content.c +30 -27
- data/ext/nokogiri/xml_element_decl.c +22 -22
- data/ext/nokogiri/xml_encoding_handler.c +17 -11
- data/ext/nokogiri/xml_entity_decl.c +32 -30
- data/ext/nokogiri/xml_entity_reference.c +16 -18
- data/ext/nokogiri/xml_namespace.c +56 -49
- data/ext/nokogiri/xml_node.c +371 -320
- data/ext/nokogiri/xml_node_set.c +168 -156
- data/ext/nokogiri/xml_processing_instruction.c +17 -19
- data/ext/nokogiri/xml_reader.c +191 -157
- data/ext/nokogiri/xml_relax_ng.c +52 -28
- data/ext/nokogiri/xml_sax_parser.c +118 -118
- data/ext/nokogiri/xml_sax_parser_context.c +103 -86
- data/ext/nokogiri/xml_sax_push_parser.c +36 -27
- data/ext/nokogiri/xml_schema.c +95 -47
- data/ext/nokogiri/xml_syntax_error.c +42 -21
- data/ext/nokogiri/xml_text.c +13 -17
- data/ext/nokogiri/xml_xpath_context.c +206 -123
- data/ext/nokogiri/xslt_stylesheet.c +158 -161
- data/lib/nokogiri.rb +3 -7
- data/lib/nokogiri/2.5/nokogiri.so +0 -0
- data/lib/nokogiri/2.6/nokogiri.so +0 -0
- data/lib/nokogiri/2.7/nokogiri.so +0 -0
- data/lib/nokogiri/3.0/nokogiri.so +0 -0
- data/lib/nokogiri/css/parser.rb +3 -3
- data/lib/nokogiri/css/parser.y +2 -2
- data/lib/nokogiri/css/xpath_visitor.rb +70 -42
- data/lib/nokogiri/extension.rb +26 -0
- data/lib/nokogiri/html/document.rb +12 -26
- data/lib/nokogiri/html/document_fragment.rb +15 -15
- data/lib/nokogiri/version.rb +2 -149
- data/lib/nokogiri/version/constant.rb +5 -0
- data/lib/nokogiri/version/info.rb +205 -0
- data/lib/nokogiri/xml/document.rb +91 -35
- data/lib/nokogiri/xml/document_fragment.rb +4 -6
- data/lib/nokogiri/xml/node.rb +89 -69
- data/lib/nokogiri/xml/parse_options.rb +6 -0
- data/lib/nokogiri/xml/reader.rb +2 -9
- data/lib/nokogiri/xml/relax_ng.rb +6 -2
- data/lib/nokogiri/xml/schema.rb +12 -4
- data/lib/nokogiri/xml/searchable.rb +3 -1
- data/lib/nokogiri/xml/xpath.rb +1 -3
- data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
- metadata +150 -171
- data/ext/nokogiri/html_document.h +0 -10
- data/ext/nokogiri/html_element_description.h +0 -10
- data/ext/nokogiri/html_entity_lookup.h +0 -8
- data/ext/nokogiri/html_sax_parser_context.h +0 -11
- data/ext/nokogiri/html_sax_push_parser.h +0 -9
- data/ext/nokogiri/xml_attr.h +0 -9
- data/ext/nokogiri/xml_attribute_decl.h +0 -9
- data/ext/nokogiri/xml_cdata.h +0 -9
- data/ext/nokogiri/xml_comment.h +0 -9
- data/ext/nokogiri/xml_document.h +0 -23
- data/ext/nokogiri/xml_document_fragment.h +0 -10
- data/ext/nokogiri/xml_dtd.h +0 -10
- data/ext/nokogiri/xml_element_content.h +0 -10
- data/ext/nokogiri/xml_element_decl.h +0 -9
- data/ext/nokogiri/xml_encoding_handler.h +0 -8
- data/ext/nokogiri/xml_entity_decl.h +0 -10
- data/ext/nokogiri/xml_entity_reference.h +0 -9
- data/ext/nokogiri/xml_io.c +0 -63
- data/ext/nokogiri/xml_io.h +0 -11
- data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
- data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
- data/ext/nokogiri/xml_namespace.h +0 -14
- data/ext/nokogiri/xml_node.h +0 -13
- data/ext/nokogiri/xml_node_set.h +0 -12
- data/ext/nokogiri/xml_processing_instruction.h +0 -9
- data/ext/nokogiri/xml_reader.h +0 -10
- data/ext/nokogiri/xml_relax_ng.h +0 -9
- data/ext/nokogiri/xml_sax_parser.h +0 -39
- data/ext/nokogiri/xml_sax_parser_context.h +0 -10
- data/ext/nokogiri/xml_sax_push_parser.h +0 -9
- data/ext/nokogiri/xml_schema.h +0 -9
- data/ext/nokogiri/xml_syntax_error.h +0 -13
- data/ext/nokogiri/xml_text.h +0 -9
- data/ext/nokogiri/xml_xpath_context.h +0 -10
- data/ext/nokogiri/xslt_stylesheet.h +0 -14
- data/lib/nokogiri/2.4/nokogiri.so +0 -0
@@ -1,34 +1,29 @@
|
|
1
|
-
#include <
|
1
|
+
#include <nokogiri.h>
|
2
2
|
|
3
|
-
|
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
|
5
|
+
static void
|
6
|
+
mark(nokogiriXsltStylesheetTuple *wrapper)
|
14
7
|
{
|
15
8
|
rb_gc_mark(wrapper->func_instances);
|
16
9
|
}
|
17
10
|
|
18
|
-
static void
|
11
|
+
static void
|
12
|
+
dealloc(nokogiriXsltStylesheetTuple *wrapper)
|
19
13
|
{
|
20
|
-
|
14
|
+
xsltStylesheetPtr doc = wrapper->ss;
|
21
15
|
|
22
|
-
|
23
|
-
|
24
|
-
|
16
|
+
NOKOGIRI_DEBUG_START(doc);
|
17
|
+
xsltFreeStylesheet(doc); /* commented out for now. */
|
18
|
+
NOKOGIRI_DEBUG_END(doc);
|
25
19
|
|
26
|
-
|
20
|
+
free(wrapper);
|
27
21
|
}
|
28
22
|
|
29
|
-
static void
|
23
|
+
static void
|
24
|
+
xslt_generic_error_handler(void *ctx, const char *msg, ...)
|
30
25
|
{
|
31
|
-
char *
|
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
|
-
|
35
|
+
free(message);
|
41
36
|
}
|
42
37
|
|
43
|
-
VALUE
|
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
|
60
|
+
static VALUE
|
61
|
+
parse_stylesheet_doc(VALUE klass, VALUE xmldocobj)
|
65
62
|
{
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
63
|
+
xmlDocPtr xml, xml_cpy;
|
64
|
+
VALUE errstr, exception;
|
65
|
+
xsltStylesheetPtr ss ;
|
66
|
+
Data_Get_Struct(xmldocobj, xmlDoc, xml);
|
67
|
+
exsltRegisterAll();
|
71
68
|
|
72
|
-
|
73
|
-
|
69
|
+
errstr = rb_str_new(0, 0);
|
70
|
+
xsltSetGenericErrorFunc((void *)errstr, xslt_generic_error_handler);
|
74
71
|
|
75
|
-
|
76
|
-
|
72
|
+
xml_cpy = xmlCopyDoc(xml, 1); /* 1 => recursive */
|
73
|
+
ss = xsltParseStylesheetDoc(xml_cpy);
|
77
74
|
|
78
|
-
|
75
|
+
xsltSetGenericErrorFunc(NULL, NULL);
|
79
76
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
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
|
-
|
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
|
93
|
+
static VALUE
|
94
|
+
serialize(VALUE self, VALUE xmlobj)
|
97
95
|
{
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
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
|
125
|
+
static VALUE
|
126
|
+
transform(int argc, VALUE *argv, VALUE self)
|
128
127
|
{
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
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, ¶mobj);
|
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
|
182
|
+
static void
|
183
|
+
method_caller(xmlXPathParserContextPtr ctxt, int nargs)
|
183
184
|
{
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
185
|
+
VALUE handler;
|
186
|
+
const char *function_name;
|
187
|
+
xsltTransformContextPtr transform;
|
188
|
+
const xmlChar *functionURI;
|
188
189
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
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
|
-
|
195
|
+
Nokogiri_marshal_xpath_funcall_and_return_values(ctxt, nargs, handler, (const char *)function_name);
|
195
196
|
}
|
196
197
|
|
197
|
-
static void *
|
198
|
+
static void *
|
199
|
+
initFunc(xsltTransformContextPtr ctxt, const xmlChar *uri)
|
198
200
|
{
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
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
|
222
|
-
|
223
|
+
static void
|
224
|
+
shutdownFunc(xsltTransformContextPtr ctxt,
|
225
|
+
const xmlChar *uri, void *data)
|
223
226
|
{
|
224
|
-
|
227
|
+
nokogiriXsltStylesheetTuple *wrapper;
|
225
228
|
|
226
|
-
|
227
|
-
|
229
|
+
Data_Get_Struct((VALUE)ctxt->style->_private, nokogiriXsltStylesheetTuple,
|
230
|
+
wrapper);
|
228
231
|
|
229
|
-
|
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
|
241
|
+
static VALUE
|
242
|
+
registr(VALUE self, VALUE uri, VALUE obj)
|
239
243
|
{
|
240
|
-
|
241
|
-
|
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
|
-
|
244
|
-
|
245
|
-
|
247
|
+
rb_hash_aset(modules, uri, obj);
|
248
|
+
xsltRegisterExtModule((unsigned char *)StringValueCStr(uri), initFunc, shutdownFunc);
|
249
|
+
return self;
|
246
250
|
}
|
247
251
|
|
248
|
-
|
249
|
-
|
252
|
+
void
|
253
|
+
noko_init_xslt_stylesheet()
|
250
254
|
{
|
251
|
-
|
252
|
-
|
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 =
|
258
|
+
cNokogiriXsltStylesheet = rb_define_class_under(mNokogiriXslt, "Stylesheet", rb_cObject);
|
261
259
|
|
262
|
-
rb_define_singleton_method(
|
263
|
-
|
264
|
-
rb_define_method(
|
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
|
-
|
12
|
-
|
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'
|
@@ -113,7 +109,7 @@ module Nokogiri
|
|
113
109
|
end
|
114
110
|
|
115
111
|
###
|
116
|
-
#
|
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
|
data/lib/nokogiri/css/parser.rb
CHANGED
@@ -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.
|
4
|
+
# This file is automatically generated by Racc 1.5.2
|
5
5
|
# from Racc grammar file "".
|
6
6
|
#
|
7
7
|
|
@@ -476,7 +476,7 @@ def _reduce_26(val, _values, result)
|
|
476
476
|
end
|
477
477
|
|
478
478
|
def _reduce_27(val, _values, result)
|
479
|
-
#
|
479
|
+
# non-standard, from hpricot
|
480
480
|
result = Node.new(:PSEUDO_CLASS,
|
481
481
|
[Node.new(:FUNCTION, ['nth-child(', val[1]])]
|
482
482
|
)
|
@@ -558,7 +558,7 @@ def _reduce_40(val, _values, result)
|
|
558
558
|
when 'n'
|
559
559
|
result = Node.new(:NTH, ['1','n','+','0'])
|
560
560
|
else
|
561
|
-
#
|
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)'))
|