nokogiri 1.3.0-x86-mswin32
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.
- data/.autotest +27 -0
- data/CHANGELOG.ja.rdoc +233 -0
- data/CHANGELOG.rdoc +222 -0
- data/Manifest.txt +247 -0
- data/README.ja.rdoc +103 -0
- data/README.rdoc +117 -0
- data/Rakefile +205 -0
- data/bin/nokogiri +47 -0
- data/ext/nokogiri/extconf.rb +89 -0
- data/ext/nokogiri/html_document.c +183 -0
- data/ext/nokogiri/html_document.h +10 -0
- data/ext/nokogiri/html_element_description.c +272 -0
- data/ext/nokogiri/html_element_description.h +10 -0
- data/ext/nokogiri/html_entity_lookup.c +30 -0
- data/ext/nokogiri/html_entity_lookup.h +8 -0
- data/ext/nokogiri/html_sax_parser.c +57 -0
- data/ext/nokogiri/html_sax_parser.h +11 -0
- data/ext/nokogiri/iconv.dll +0 -0
- data/ext/nokogiri/libexslt.dll +0 -0
- data/ext/nokogiri/libxml2.dll +0 -0
- data/ext/nokogiri/libxslt.dll +0 -0
- data/ext/nokogiri/nokogiri.c +81 -0
- data/ext/nokogiri/nokogiri.h +149 -0
- data/ext/nokogiri/xml_attr.c +92 -0
- data/ext/nokogiri/xml_attr.h +9 -0
- data/ext/nokogiri/xml_cdata.c +53 -0
- data/ext/nokogiri/xml_cdata.h +9 -0
- data/ext/nokogiri/xml_comment.c +51 -0
- data/ext/nokogiri/xml_comment.h +9 -0
- data/ext/nokogiri/xml_document.c +308 -0
- data/ext/nokogiri/xml_document.h +21 -0
- data/ext/nokogiri/xml_document_fragment.c +48 -0
- data/ext/nokogiri/xml_document_fragment.h +10 -0
- data/ext/nokogiri/xml_dtd.c +102 -0
- data/ext/nokogiri/xml_dtd.h +8 -0
- data/ext/nokogiri/xml_entity_reference.c +50 -0
- data/ext/nokogiri/xml_entity_reference.h +9 -0
- data/ext/nokogiri/xml_io.c +24 -0
- data/ext/nokogiri/xml_io.h +10 -0
- data/ext/nokogiri/xml_namespace.c +69 -0
- data/ext/nokogiri/xml_namespace.h +12 -0
- data/ext/nokogiri/xml_node.c +928 -0
- data/ext/nokogiri/xml_node.h +14 -0
- data/ext/nokogiri/xml_node_set.c +386 -0
- data/ext/nokogiri/xml_node_set.h +9 -0
- data/ext/nokogiri/xml_processing_instruction.c +54 -0
- data/ext/nokogiri/xml_processing_instruction.h +9 -0
- data/ext/nokogiri/xml_reader.c +572 -0
- data/ext/nokogiri/xml_reader.h +10 -0
- data/ext/nokogiri/xml_relax_ng.c +106 -0
- data/ext/nokogiri/xml_relax_ng.h +9 -0
- data/ext/nokogiri/xml_sax_parser.c +336 -0
- data/ext/nokogiri/xml_sax_parser.h +10 -0
- data/ext/nokogiri/xml_sax_push_parser.c +86 -0
- data/ext/nokogiri/xml_sax_push_parser.h +9 -0
- data/ext/nokogiri/xml_schema.c +107 -0
- data/ext/nokogiri/xml_schema.h +9 -0
- data/ext/nokogiri/xml_syntax_error.c +203 -0
- data/ext/nokogiri/xml_syntax_error.h +12 -0
- data/ext/nokogiri/xml_text.c +47 -0
- data/ext/nokogiri/xml_text.h +9 -0
- data/ext/nokogiri/xml_xpath.c +53 -0
- data/ext/nokogiri/xml_xpath.h +11 -0
- data/ext/nokogiri/xml_xpath_context.c +252 -0
- data/ext/nokogiri/xml_xpath_context.h +9 -0
- data/ext/nokogiri/xslt_stylesheet.c +131 -0
- data/ext/nokogiri/xslt_stylesheet.h +9 -0
- data/ext/nokogiri/zlib1.dll +0 -0
- data/lib/action-nokogiri.rb +36 -0
- data/lib/nokogiri.rb +110 -0
- data/lib/nokogiri/1.8/nokogiri.so +0 -0
- data/lib/nokogiri/1.9/nokogiri.so +0 -0
- data/lib/nokogiri/css.rb +25 -0
- data/lib/nokogiri/css/generated_parser.rb +748 -0
- data/lib/nokogiri/css/generated_tokenizer.rb +144 -0
- data/lib/nokogiri/css/node.rb +107 -0
- data/lib/nokogiri/css/parser.rb +82 -0
- data/lib/nokogiri/css/parser.y +227 -0
- data/lib/nokogiri/css/syntax_error.rb +7 -0
- data/lib/nokogiri/css/tokenizer.rb +11 -0
- data/lib/nokogiri/css/tokenizer.rex +54 -0
- data/lib/nokogiri/css/xpath_visitor.rb +172 -0
- data/lib/nokogiri/decorators.rb +2 -0
- data/lib/nokogiri/decorators/hpricot.rb +3 -0
- data/lib/nokogiri/decorators/hpricot/node.rb +56 -0
- data/lib/nokogiri/decorators/hpricot/node_set.rb +54 -0
- data/lib/nokogiri/decorators/hpricot/xpath_visitor.rb +30 -0
- data/lib/nokogiri/decorators/slop.rb +33 -0
- data/lib/nokogiri/ffi/html/document.rb +37 -0
- data/lib/nokogiri/ffi/html/element_description.rb +85 -0
- data/lib/nokogiri/ffi/html/entity_lookup.rb +16 -0
- data/lib/nokogiri/ffi/html/sax/parser.rb +21 -0
- data/lib/nokogiri/ffi/io_callbacks.rb +32 -0
- data/lib/nokogiri/ffi/libxml.rb +314 -0
- data/lib/nokogiri/ffi/structs/common_node.rb +26 -0
- data/lib/nokogiri/ffi/structs/html_elem_desc.rb +24 -0
- data/lib/nokogiri/ffi/structs/html_entity_desc.rb +13 -0
- data/lib/nokogiri/ffi/structs/xml_alloc.rb +16 -0
- data/lib/nokogiri/ffi/structs/xml_attr.rb +19 -0
- data/lib/nokogiri/ffi/structs/xml_buffer.rb +16 -0
- data/lib/nokogiri/ffi/structs/xml_document.rb +108 -0
- data/lib/nokogiri/ffi/structs/xml_dtd.rb +26 -0
- data/lib/nokogiri/ffi/structs/xml_node.rb +28 -0
- data/lib/nokogiri/ffi/structs/xml_node_set.rb +53 -0
- data/lib/nokogiri/ffi/structs/xml_notation.rb +11 -0
- data/lib/nokogiri/ffi/structs/xml_ns.rb +15 -0
- data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +14 -0
- data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +51 -0
- data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +14 -0
- data/lib/nokogiri/ffi/structs/xml_schema.rb +13 -0
- data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +31 -0
- data/lib/nokogiri/ffi/structs/xml_text_reader.rb +12 -0
- data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +37 -0
- data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +35 -0
- data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +20 -0
- data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +13 -0
- data/lib/nokogiri/ffi/xml/attr.rb +41 -0
- data/lib/nokogiri/ffi/xml/cdata.rb +19 -0
- data/lib/nokogiri/ffi/xml/comment.rb +18 -0
- data/lib/nokogiri/ffi/xml/document.rb +107 -0
- data/lib/nokogiri/ffi/xml/document_fragment.rb +26 -0
- data/lib/nokogiri/ffi/xml/dtd.rb +42 -0
- data/lib/nokogiri/ffi/xml/entity_reference.rb +19 -0
- data/lib/nokogiri/ffi/xml/namespace.rb +38 -0
- data/lib/nokogiri/ffi/xml/node.rb +380 -0
- data/lib/nokogiri/ffi/xml/node_set.rb +130 -0
- data/lib/nokogiri/ffi/xml/processing_instruction.rb +20 -0
- data/lib/nokogiri/ffi/xml/reader.rb +217 -0
- data/lib/nokogiri/ffi/xml/relax_ng.rb +51 -0
- data/lib/nokogiri/ffi/xml/sax/parser.rb +148 -0
- data/lib/nokogiri/ffi/xml/sax/push_parser.rb +38 -0
- data/lib/nokogiri/ffi/xml/schema.rb +55 -0
- data/lib/nokogiri/ffi/xml/syntax_error.rb +76 -0
- data/lib/nokogiri/ffi/xml/text.rb +18 -0
- data/lib/nokogiri/ffi/xml/xpath.rb +19 -0
- data/lib/nokogiri/ffi/xml/xpath_context.rb +135 -0
- data/lib/nokogiri/ffi/xslt/stylesheet.rb +47 -0
- data/lib/nokogiri/hpricot.rb +62 -0
- data/lib/nokogiri/html.rb +34 -0
- data/lib/nokogiri/html/builder.rb +35 -0
- data/lib/nokogiri/html/document.rb +71 -0
- data/lib/nokogiri/html/document_fragment.rb +15 -0
- data/lib/nokogiri/html/element_description.rb +23 -0
- data/lib/nokogiri/html/entity_lookup.rb +13 -0
- data/lib/nokogiri/html/sax/parser.rb +47 -0
- data/lib/nokogiri/nokogiri.rb +1 -0
- data/lib/nokogiri/syntax_error.rb +4 -0
- data/lib/nokogiri/version.rb +29 -0
- data/lib/nokogiri/version_warning.rb +11 -0
- data/lib/nokogiri/xml.rb +62 -0
- data/lib/nokogiri/xml/attr.rb +9 -0
- data/lib/nokogiri/xml/builder.rb +254 -0
- data/lib/nokogiri/xml/cdata.rb +11 -0
- data/lib/nokogiri/xml/document.rb +100 -0
- data/lib/nokogiri/xml/document_fragment.rb +49 -0
- data/lib/nokogiri/xml/dtd.rb +11 -0
- data/lib/nokogiri/xml/entity_declaration.rb +11 -0
- data/lib/nokogiri/xml/fragment_handler.rb +55 -0
- data/lib/nokogiri/xml/namespace.rb +7 -0
- data/lib/nokogiri/xml/node.rb +745 -0
- data/lib/nokogiri/xml/node/save_options.rb +42 -0
- data/lib/nokogiri/xml/node_set.rb +238 -0
- data/lib/nokogiri/xml/notation.rb +6 -0
- data/lib/nokogiri/xml/parse_options.rb +80 -0
- data/lib/nokogiri/xml/processing_instruction.rb +8 -0
- data/lib/nokogiri/xml/reader.rb +66 -0
- data/lib/nokogiri/xml/relax_ng.rb +32 -0
- data/lib/nokogiri/xml/sax.rb +3 -0
- data/lib/nokogiri/xml/sax/document.rb +143 -0
- data/lib/nokogiri/xml/sax/parser.rb +101 -0
- data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
- data/lib/nokogiri/xml/schema.rb +65 -0
- data/lib/nokogiri/xml/syntax_error.rb +34 -0
- data/lib/nokogiri/xml/xpath.rb +10 -0
- data/lib/nokogiri/xml/xpath/syntax_error.rb +8 -0
- data/lib/nokogiri/xml/xpath_context.rb +16 -0
- data/lib/nokogiri/xslt.rb +48 -0
- data/lib/nokogiri/xslt/stylesheet.rb +25 -0
- data/lib/xsd/xmlparser/nokogiri.rb +64 -0
- data/tasks/test.rb +161 -0
- data/test/css/test_nthiness.rb +160 -0
- data/test/css/test_parser.rb +277 -0
- data/test/css/test_tokenizer.rb +176 -0
- data/test/css/test_xpath_visitor.rb +76 -0
- data/test/ffi/test_document.rb +35 -0
- data/test/files/address_book.rlx +12 -0
- data/test/files/address_book.xml +10 -0
- data/test/files/dont_hurt_em_why.xml +422 -0
- data/test/files/exslt.xml +8 -0
- data/test/files/exslt.xslt +35 -0
- data/test/files/po.xml +32 -0
- data/test/files/po.xsd +66 -0
- data/test/files/staff.xml +59 -0
- data/test/files/staff.xslt +32 -0
- data/test/files/tlm.html +850 -0
- data/test/helper.rb +123 -0
- data/test/hpricot/files/basic.xhtml +17 -0
- data/test/hpricot/files/boingboing.html +2266 -0
- data/test/hpricot/files/cy0.html +3653 -0
- data/test/hpricot/files/immob.html +400 -0
- data/test/hpricot/files/pace_application.html +1320 -0
- data/test/hpricot/files/tenderlove.html +16 -0
- data/test/hpricot/files/uswebgen.html +220 -0
- data/test/hpricot/files/utf8.html +1054 -0
- data/test/hpricot/files/week9.html +1723 -0
- data/test/hpricot/files/why.xml +19 -0
- data/test/hpricot/load_files.rb +11 -0
- data/test/hpricot/test_alter.rb +68 -0
- data/test/hpricot/test_builder.rb +20 -0
- data/test/hpricot/test_parser.rb +426 -0
- data/test/hpricot/test_paths.rb +15 -0
- data/test/hpricot/test_preserved.rb +77 -0
- data/test/hpricot/test_xml.rb +30 -0
- data/test/html/sax/test_parser.rb +52 -0
- data/test/html/test_builder.rb +156 -0
- data/test/html/test_document.rb +361 -0
- data/test/html/test_document_encoding.rb +46 -0
- data/test/html/test_document_fragment.rb +97 -0
- data/test/html/test_element_description.rb +95 -0
- data/test/html/test_named_characters.rb +14 -0
- data/test/html/test_node.rb +165 -0
- data/test/test_convert_xpath.rb +186 -0
- data/test/test_css_cache.rb +56 -0
- data/test/test_gc.rb +15 -0
- data/test/test_memory_leak.rb +77 -0
- data/test/test_nokogiri.rb +127 -0
- data/test/test_reader.rb +316 -0
- data/test/test_xslt_transforms.rb +131 -0
- data/test/xml/node/test_save_options.rb +20 -0
- data/test/xml/node/test_subclass.rb +44 -0
- data/test/xml/sax/test_parser.rb +169 -0
- data/test/xml/sax/test_push_parser.rb +92 -0
- data/test/xml/test_attr.rb +38 -0
- data/test/xml/test_builder.rb +73 -0
- data/test/xml/test_cdata.rb +38 -0
- data/test/xml/test_comment.rb +23 -0
- data/test/xml/test_document.rb +397 -0
- data/test/xml/test_document_encoding.rb +26 -0
- data/test/xml/test_document_fragment.rb +76 -0
- data/test/xml/test_dtd.rb +42 -0
- data/test/xml/test_dtd_encoding.rb +31 -0
- data/test/xml/test_entity_reference.rb +21 -0
- data/test/xml/test_namespace.rb +43 -0
- data/test/xml/test_node.rb +808 -0
- data/test/xml/test_node_attributes.rb +34 -0
- data/test/xml/test_node_encoding.rb +84 -0
- data/test/xml/test_node_set.rb +368 -0
- data/test/xml/test_parse_options.rb +52 -0
- data/test/xml/test_processing_instruction.rb +30 -0
- data/test/xml/test_reader_encoding.rb +126 -0
- data/test/xml/test_relax_ng.rb +60 -0
- data/test/xml/test_schema.rb +65 -0
- data/test/xml/test_text.rb +18 -0
- data/test/xml/test_unparented_node.rb +381 -0
- data/test/xml/test_xpath.rb +106 -0
- metadata +409 -0
@@ -0,0 +1,86 @@
|
|
1
|
+
#include <xml_sax_push_parser.h>
|
2
|
+
|
3
|
+
static void deallocate(xmlParserCtxtPtr ctx)
|
4
|
+
{
|
5
|
+
NOKOGIRI_DEBUG_START(ctx);
|
6
|
+
if(ctx != NULL) xmlFreeParserCtxt(ctx);
|
7
|
+
NOKOGIRI_DEBUG_END(ctx);
|
8
|
+
}
|
9
|
+
|
10
|
+
static VALUE allocate(VALUE klass)
|
11
|
+
{
|
12
|
+
return Data_Wrap_Struct(klass, NULL, deallocate, NULL);
|
13
|
+
}
|
14
|
+
|
15
|
+
/*
|
16
|
+
* call-seq:
|
17
|
+
* native_write(chunk, last_chunk)
|
18
|
+
*
|
19
|
+
* Write +chunk+ to PushParser. +last_chunk+ triggers the end_document handle
|
20
|
+
*/
|
21
|
+
static VALUE native_write(VALUE self, VALUE _chunk, VALUE _last_chunk)
|
22
|
+
{
|
23
|
+
xmlParserCtxtPtr ctx;
|
24
|
+
Data_Get_Struct(self, xmlParserCtxt, ctx);
|
25
|
+
|
26
|
+
const char * chunk = NULL;
|
27
|
+
int last_chunk = 0;
|
28
|
+
int size = 0;
|
29
|
+
|
30
|
+
if(Qnil != _chunk) {
|
31
|
+
chunk = StringValuePtr(_chunk);
|
32
|
+
size = RSTRING_LEN(_chunk);
|
33
|
+
}
|
34
|
+
if(Qtrue == _last_chunk) last_chunk = 1;
|
35
|
+
|
36
|
+
if(xmlParseChunk(ctx, chunk, size, last_chunk))
|
37
|
+
rb_raise(rb_eRuntimeError, "Couldn't parse chunk");
|
38
|
+
|
39
|
+
return self;
|
40
|
+
}
|
41
|
+
|
42
|
+
/*
|
43
|
+
* call-seq:
|
44
|
+
* initialize_native(xml_sax, filename)
|
45
|
+
*
|
46
|
+
* Initialize the push parser with +xml_sax+ using +filename+
|
47
|
+
*/
|
48
|
+
static VALUE initialize_native(VALUE self, VALUE _xml_sax, VALUE _filename)
|
49
|
+
{
|
50
|
+
xmlSAXHandlerPtr sax;
|
51
|
+
|
52
|
+
Data_Get_Struct(_xml_sax, xmlSAXHandler, sax);
|
53
|
+
|
54
|
+
const char * filename = NULL;
|
55
|
+
|
56
|
+
if(_filename != Qnil) filename = StringValuePtr(_filename);
|
57
|
+
|
58
|
+
xmlParserCtxtPtr ctx = xmlCreatePushParserCtxt(
|
59
|
+
sax,
|
60
|
+
(void *)self,
|
61
|
+
NULL,
|
62
|
+
0,
|
63
|
+
filename
|
64
|
+
);
|
65
|
+
if(ctx == NULL)
|
66
|
+
rb_raise(rb_eRuntimeError, "Could not create a parser context");
|
67
|
+
|
68
|
+
ctx->sax2 = 1;
|
69
|
+
DATA_PTR(self) = ctx;
|
70
|
+
return self;
|
71
|
+
}
|
72
|
+
|
73
|
+
VALUE cNokogiriXmlSaxPushParser ;
|
74
|
+
void init_xml_sax_push_parser()
|
75
|
+
{
|
76
|
+
VALUE nokogiri = rb_define_module("Nokogiri");
|
77
|
+
VALUE xml = rb_define_module_under(nokogiri, "XML");
|
78
|
+
VALUE sax = rb_define_module_under(xml, "SAX");
|
79
|
+
VALUE klass = rb_define_class_under(sax, "PushParser", rb_cObject);
|
80
|
+
|
81
|
+
cNokogiriXmlSaxPushParser = klass;
|
82
|
+
|
83
|
+
rb_define_alloc_func(klass, allocate);
|
84
|
+
rb_define_private_method(klass, "initialize_native", initialize_native, 2);
|
85
|
+
rb_define_private_method(klass, "native_write", native_write, 2);
|
86
|
+
}
|
@@ -0,0 +1,107 @@
|
|
1
|
+
#include <xml_schema.h>
|
2
|
+
|
3
|
+
static void dealloc(xmlSchemaPtr schema)
|
4
|
+
{
|
5
|
+
NOKOGIRI_DEBUG_START(schema);
|
6
|
+
xmlSchemaFree(schema);
|
7
|
+
NOKOGIRI_DEBUG_END(schema);
|
8
|
+
}
|
9
|
+
|
10
|
+
/*
|
11
|
+
* call-seq:
|
12
|
+
* validate_document(document)
|
13
|
+
*
|
14
|
+
* Validate a Nokogiri::XML::Document against this Schema.
|
15
|
+
*/
|
16
|
+
static VALUE validate_document(VALUE self, VALUE document)
|
17
|
+
{
|
18
|
+
xmlDocPtr doc;
|
19
|
+
xmlSchemaPtr schema;
|
20
|
+
|
21
|
+
Data_Get_Struct(self, xmlSchema, schema);
|
22
|
+
Data_Get_Struct(document, xmlDoc, doc);
|
23
|
+
|
24
|
+
VALUE errors = rb_ary_new();
|
25
|
+
|
26
|
+
xmlSchemaValidCtxtPtr valid_ctxt = xmlSchemaNewValidCtxt(schema);
|
27
|
+
|
28
|
+
if(NULL == valid_ctxt) {
|
29
|
+
// we have a problem
|
30
|
+
rb_raise(rb_eRuntimeError, "Could not create a validation context");
|
31
|
+
}
|
32
|
+
|
33
|
+
if (! is_2_6_16()) {
|
34
|
+
xmlSchemaSetValidStructuredErrors(
|
35
|
+
valid_ctxt,
|
36
|
+
Nokogiri_error_array_pusher,
|
37
|
+
(void *)errors
|
38
|
+
);
|
39
|
+
}
|
40
|
+
|
41
|
+
xmlSchemaValidateDoc(valid_ctxt, doc);
|
42
|
+
|
43
|
+
xmlSchemaFreeValidCtxt(valid_ctxt);
|
44
|
+
|
45
|
+
return errors;
|
46
|
+
}
|
47
|
+
|
48
|
+
/*
|
49
|
+
* call-seq:
|
50
|
+
* read_memory(string)
|
51
|
+
*
|
52
|
+
* Create a new Schema from the contents of +string+
|
53
|
+
*/
|
54
|
+
static VALUE read_memory(VALUE klass, VALUE content)
|
55
|
+
{
|
56
|
+
|
57
|
+
xmlSchemaParserCtxtPtr ctx = xmlSchemaNewMemParserCtxt(
|
58
|
+
(const char *)StringValuePtr(content),
|
59
|
+
RSTRING_LEN(content)
|
60
|
+
);
|
61
|
+
|
62
|
+
VALUE errors = rb_ary_new();
|
63
|
+
xmlSetStructuredErrorFunc((void *)errors, Nokogiri_error_array_pusher);
|
64
|
+
|
65
|
+
if (! is_2_6_16()) {
|
66
|
+
xmlSchemaSetParserStructuredErrors(
|
67
|
+
ctx,
|
68
|
+
Nokogiri_error_array_pusher,
|
69
|
+
(void *)errors
|
70
|
+
);
|
71
|
+
}
|
72
|
+
|
73
|
+
xmlSchemaPtr schema = xmlSchemaParse(ctx);
|
74
|
+
|
75
|
+
xmlSetStructuredErrorFunc(NULL, NULL);
|
76
|
+
xmlSchemaFreeParserCtxt(ctx);
|
77
|
+
|
78
|
+
if(NULL == schema) {
|
79
|
+
xmlErrorPtr error = xmlGetLastError();
|
80
|
+
if(error)
|
81
|
+
rb_funcall(rb_mKernel, rb_intern("raise"), 1,
|
82
|
+
Nokogiri_wrap_xml_syntax_error((VALUE)NULL, error)
|
83
|
+
);
|
84
|
+
else
|
85
|
+
rb_raise(rb_eRuntimeError, "Could not parse document");
|
86
|
+
|
87
|
+
return Qnil;
|
88
|
+
}
|
89
|
+
|
90
|
+
VALUE rb_schema = Data_Wrap_Struct(klass, 0, dealloc, schema);
|
91
|
+
rb_iv_set(rb_schema, "@errors", errors);
|
92
|
+
|
93
|
+
return rb_schema;
|
94
|
+
}
|
95
|
+
|
96
|
+
VALUE cNokogiriXmlSchema;
|
97
|
+
void init_xml_schema()
|
98
|
+
{
|
99
|
+
VALUE nokogiri = rb_define_module("Nokogiri");
|
100
|
+
VALUE xml = rb_define_module_under(nokogiri, "XML");
|
101
|
+
VALUE klass = rb_define_class_under(xml, "Schema", rb_cObject);
|
102
|
+
|
103
|
+
cNokogiriXmlSchema = klass;
|
104
|
+
|
105
|
+
rb_define_singleton_method(klass, "read_memory", read_memory, 1);
|
106
|
+
rb_define_private_method(klass, "validate_document", validate_document, 1);
|
107
|
+
}
|
@@ -0,0 +1,203 @@
|
|
1
|
+
#include <xml_syntax_error.h>
|
2
|
+
|
3
|
+
static void dealloc(xmlErrorPtr ptr)
|
4
|
+
{
|
5
|
+
NOKOGIRI_DEBUG_START(ptr);
|
6
|
+
xmlResetError(ptr);
|
7
|
+
xmlFree(ptr);
|
8
|
+
NOKOGIRI_DEBUG_END(ptr);
|
9
|
+
}
|
10
|
+
|
11
|
+
/*
|
12
|
+
* call-seq:
|
13
|
+
* column
|
14
|
+
*
|
15
|
+
* Column number or 0 if not available
|
16
|
+
*/
|
17
|
+
static VALUE column(VALUE self)
|
18
|
+
{
|
19
|
+
xmlErrorPtr error;
|
20
|
+
Data_Get_Struct(self, xmlError, error);
|
21
|
+
return INT2NUM(error->int2);
|
22
|
+
}
|
23
|
+
|
24
|
+
/*
|
25
|
+
* call-seq:
|
26
|
+
* int1
|
27
|
+
*
|
28
|
+
* Extra number information
|
29
|
+
*/
|
30
|
+
static VALUE int1(VALUE self)
|
31
|
+
{
|
32
|
+
xmlErrorPtr error;
|
33
|
+
Data_Get_Struct(self, xmlError, error);
|
34
|
+
return INT2NUM(error->int1);
|
35
|
+
}
|
36
|
+
|
37
|
+
/*
|
38
|
+
* call-seq:
|
39
|
+
* str3
|
40
|
+
*
|
41
|
+
* Extra string information
|
42
|
+
*/
|
43
|
+
static VALUE str3(VALUE self)
|
44
|
+
{
|
45
|
+
xmlErrorPtr error;
|
46
|
+
Data_Get_Struct(self, xmlError, error);
|
47
|
+
if(error->str3)
|
48
|
+
return NOKOGIRI_STR_NEW2(error->str3, "UTF-8");
|
49
|
+
return Qnil;
|
50
|
+
}
|
51
|
+
|
52
|
+
/*
|
53
|
+
* call-seq:
|
54
|
+
* str2
|
55
|
+
*
|
56
|
+
* Extra string information
|
57
|
+
*/
|
58
|
+
static VALUE str2(VALUE self)
|
59
|
+
{
|
60
|
+
xmlErrorPtr error;
|
61
|
+
Data_Get_Struct(self, xmlError, error);
|
62
|
+
if(error->str2)
|
63
|
+
return NOKOGIRI_STR_NEW2(error->str2, "UTF-8");
|
64
|
+
return Qnil;
|
65
|
+
}
|
66
|
+
|
67
|
+
/*
|
68
|
+
* call-seq:
|
69
|
+
* str1
|
70
|
+
*
|
71
|
+
* Extra string information
|
72
|
+
*/
|
73
|
+
static VALUE str1(VALUE self)
|
74
|
+
{
|
75
|
+
xmlErrorPtr error;
|
76
|
+
Data_Get_Struct(self, xmlError, error);
|
77
|
+
if(error->str1)
|
78
|
+
return NOKOGIRI_STR_NEW2(error->str1, "UTF-8");
|
79
|
+
return Qnil;
|
80
|
+
}
|
81
|
+
|
82
|
+
/*
|
83
|
+
* call-seq:
|
84
|
+
* line
|
85
|
+
*
|
86
|
+
* Get the line number of the error
|
87
|
+
*/
|
88
|
+
static VALUE line(VALUE self)
|
89
|
+
{
|
90
|
+
xmlErrorPtr error;
|
91
|
+
Data_Get_Struct(self, xmlError, error);
|
92
|
+
return INT2NUM(error->line);
|
93
|
+
}
|
94
|
+
|
95
|
+
/*
|
96
|
+
* call-seq:
|
97
|
+
* file
|
98
|
+
*
|
99
|
+
* Get the filename for the error
|
100
|
+
*/
|
101
|
+
static VALUE file(VALUE self)
|
102
|
+
{
|
103
|
+
xmlErrorPtr error;
|
104
|
+
Data_Get_Struct(self, xmlError, error);
|
105
|
+
if(error->file)
|
106
|
+
return NOKOGIRI_STR_NEW2(error->file, "UTF-8");
|
107
|
+
|
108
|
+
return Qnil;
|
109
|
+
}
|
110
|
+
|
111
|
+
/*
|
112
|
+
* call-seq:
|
113
|
+
* level
|
114
|
+
*
|
115
|
+
* Get the error level
|
116
|
+
*/
|
117
|
+
static VALUE level(VALUE self)
|
118
|
+
{
|
119
|
+
xmlErrorPtr error;
|
120
|
+
Data_Get_Struct(self, xmlError, error);
|
121
|
+
return INT2NUM((short)error->level);
|
122
|
+
}
|
123
|
+
|
124
|
+
/*
|
125
|
+
* call-seq:
|
126
|
+
* code
|
127
|
+
*
|
128
|
+
* Get the error code
|
129
|
+
*/
|
130
|
+
static VALUE code(VALUE self)
|
131
|
+
{
|
132
|
+
xmlErrorPtr error;
|
133
|
+
Data_Get_Struct(self, xmlError, error);
|
134
|
+
return INT2NUM(error->code);
|
135
|
+
}
|
136
|
+
|
137
|
+
/*
|
138
|
+
* call-seq:
|
139
|
+
* domain
|
140
|
+
*
|
141
|
+
* Get the part of the library that raised this exception
|
142
|
+
*/
|
143
|
+
static VALUE domain(VALUE self)
|
144
|
+
{
|
145
|
+
xmlErrorPtr error;
|
146
|
+
Data_Get_Struct(self, xmlError, error);
|
147
|
+
return INT2NUM(error->domain);
|
148
|
+
}
|
149
|
+
|
150
|
+
/*
|
151
|
+
* call-seq:
|
152
|
+
* message
|
153
|
+
*
|
154
|
+
* Get the human readable message.
|
155
|
+
*/
|
156
|
+
static VALUE message(VALUE self)
|
157
|
+
{
|
158
|
+
xmlErrorPtr error;
|
159
|
+
Data_Get_Struct(self, xmlError, error);
|
160
|
+
return NOKOGIRI_STR_NEW2(error->message, "UTF-8");
|
161
|
+
}
|
162
|
+
|
163
|
+
void Nokogiri_error_array_pusher(void * ctx, xmlErrorPtr error)
|
164
|
+
{
|
165
|
+
VALUE list = (VALUE)ctx;
|
166
|
+
rb_ary_push(list, Nokogiri_wrap_xml_syntax_error((VALUE)NULL, error));
|
167
|
+
}
|
168
|
+
|
169
|
+
VALUE Nokogiri_wrap_xml_syntax_error(VALUE klass, xmlErrorPtr error)
|
170
|
+
{
|
171
|
+
if(!klass) klass = cNokogiriXmlSyntaxError;
|
172
|
+
|
173
|
+
xmlErrorPtr ptr = calloc(1, sizeof(xmlError));
|
174
|
+
xmlCopyError(error, ptr);
|
175
|
+
|
176
|
+
return Data_Wrap_Struct(klass, NULL, dealloc, ptr);
|
177
|
+
}
|
178
|
+
|
179
|
+
VALUE cNokogiriXmlSyntaxError;
|
180
|
+
void init_xml_syntax_error()
|
181
|
+
{
|
182
|
+
VALUE nokogiri = rb_define_module("Nokogiri");
|
183
|
+
VALUE xml = rb_define_module_under(nokogiri, "XML");
|
184
|
+
|
185
|
+
/*
|
186
|
+
* The XML::SyntaxError is raised on parse errors
|
187
|
+
*/
|
188
|
+
VALUE syntax_error_mommy = rb_define_class_under(nokogiri, "SyntaxError", rb_eStandardError);
|
189
|
+
VALUE klass = rb_define_class_under(xml, "SyntaxError", syntax_error_mommy);
|
190
|
+
cNokogiriXmlSyntaxError = klass;
|
191
|
+
|
192
|
+
rb_define_method(klass, "message", message, 0);
|
193
|
+
rb_define_method(klass, "domain", domain, 0);
|
194
|
+
rb_define_method(klass, "code", code, 0);
|
195
|
+
rb_define_method(klass, "level", level, 0);
|
196
|
+
rb_define_method(klass, "file", file, 0);
|
197
|
+
rb_define_method(klass, "line", line, 0);
|
198
|
+
rb_define_method(klass, "str1", str1, 0);
|
199
|
+
rb_define_method(klass, "str2", str2, 0);
|
200
|
+
rb_define_method(klass, "str3", str3, 0);
|
201
|
+
rb_define_method(klass, "int1", int1, 0);
|
202
|
+
rb_define_method(klass, "column", column, 0);
|
203
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#ifndef NOKOGIRI_XML_SYNTAX_ERROR
|
2
|
+
#define NOKOGIRI_XML_SYNTAX_ERROR
|
3
|
+
|
4
|
+
#include <nokogiri.h>
|
5
|
+
|
6
|
+
void init_xml_syntax_error();
|
7
|
+
VALUE Nokogiri_wrap_xml_syntax_error(VALUE klass, xmlErrorPtr error);
|
8
|
+
void Nokogiri_error_array_pusher(void * ctx, xmlErrorPtr error);
|
9
|
+
|
10
|
+
extern VALUE cNokogiriXmlSyntaxError;
|
11
|
+
#endif
|
12
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#include <xml_text.h>
|
2
|
+
|
3
|
+
/*
|
4
|
+
* call-seq:
|
5
|
+
* new(content, document)
|
6
|
+
*
|
7
|
+
* Create a new Text element on the +document+ with +content+
|
8
|
+
*/
|
9
|
+
static VALUE new(int argc, VALUE *argv, VALUE klass)
|
10
|
+
{
|
11
|
+
xmlDocPtr doc;
|
12
|
+
VALUE string;
|
13
|
+
VALUE document;
|
14
|
+
VALUE rest;
|
15
|
+
|
16
|
+
rb_scan_args(argc, argv, "2*", &string, &document, &rest);
|
17
|
+
|
18
|
+
Data_Get_Struct(document, xmlDoc, doc);
|
19
|
+
|
20
|
+
xmlNodePtr node = xmlNewText((xmlChar *)StringValuePtr(string));
|
21
|
+
node->doc = doc;
|
22
|
+
|
23
|
+
VALUE rb_node = Nokogiri_wrap_xml_node(klass, node) ;
|
24
|
+
rb_funcall2(rb_node, rb_intern("initialize"), argc, argv);
|
25
|
+
|
26
|
+
if(rb_block_given_p()) rb_yield(rb_node);
|
27
|
+
|
28
|
+
return rb_node;
|
29
|
+
}
|
30
|
+
|
31
|
+
VALUE cNokogiriXmlText ;
|
32
|
+
void init_xml_text()
|
33
|
+
{
|
34
|
+
VALUE nokogiri = rb_define_module("Nokogiri");
|
35
|
+
VALUE xml = rb_define_module_under(nokogiri, "XML");
|
36
|
+
/* */
|
37
|
+
VALUE node = rb_define_class_under(xml, "Node", rb_cObject);
|
38
|
+
|
39
|
+
/*
|
40
|
+
* Wraps Text nodes.
|
41
|
+
*/
|
42
|
+
VALUE klass = rb_define_class_under(xml, "Text", node);
|
43
|
+
|
44
|
+
cNokogiriXmlText = klass;
|
45
|
+
|
46
|
+
rb_define_singleton_method(klass, "new", new, -1);
|
47
|
+
}
|