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.

Files changed (256) hide show
  1. data/.autotest +27 -0
  2. data/CHANGELOG.ja.rdoc +233 -0
  3. data/CHANGELOG.rdoc +222 -0
  4. data/Manifest.txt +247 -0
  5. data/README.ja.rdoc +103 -0
  6. data/README.rdoc +117 -0
  7. data/Rakefile +205 -0
  8. data/bin/nokogiri +47 -0
  9. data/ext/nokogiri/extconf.rb +89 -0
  10. data/ext/nokogiri/html_document.c +183 -0
  11. data/ext/nokogiri/html_document.h +10 -0
  12. data/ext/nokogiri/html_element_description.c +272 -0
  13. data/ext/nokogiri/html_element_description.h +10 -0
  14. data/ext/nokogiri/html_entity_lookup.c +30 -0
  15. data/ext/nokogiri/html_entity_lookup.h +8 -0
  16. data/ext/nokogiri/html_sax_parser.c +57 -0
  17. data/ext/nokogiri/html_sax_parser.h +11 -0
  18. data/ext/nokogiri/iconv.dll +0 -0
  19. data/ext/nokogiri/libexslt.dll +0 -0
  20. data/ext/nokogiri/libxml2.dll +0 -0
  21. data/ext/nokogiri/libxslt.dll +0 -0
  22. data/ext/nokogiri/nokogiri.c +81 -0
  23. data/ext/nokogiri/nokogiri.h +149 -0
  24. data/ext/nokogiri/xml_attr.c +92 -0
  25. data/ext/nokogiri/xml_attr.h +9 -0
  26. data/ext/nokogiri/xml_cdata.c +53 -0
  27. data/ext/nokogiri/xml_cdata.h +9 -0
  28. data/ext/nokogiri/xml_comment.c +51 -0
  29. data/ext/nokogiri/xml_comment.h +9 -0
  30. data/ext/nokogiri/xml_document.c +308 -0
  31. data/ext/nokogiri/xml_document.h +21 -0
  32. data/ext/nokogiri/xml_document_fragment.c +48 -0
  33. data/ext/nokogiri/xml_document_fragment.h +10 -0
  34. data/ext/nokogiri/xml_dtd.c +102 -0
  35. data/ext/nokogiri/xml_dtd.h +8 -0
  36. data/ext/nokogiri/xml_entity_reference.c +50 -0
  37. data/ext/nokogiri/xml_entity_reference.h +9 -0
  38. data/ext/nokogiri/xml_io.c +24 -0
  39. data/ext/nokogiri/xml_io.h +10 -0
  40. data/ext/nokogiri/xml_namespace.c +69 -0
  41. data/ext/nokogiri/xml_namespace.h +12 -0
  42. data/ext/nokogiri/xml_node.c +928 -0
  43. data/ext/nokogiri/xml_node.h +14 -0
  44. data/ext/nokogiri/xml_node_set.c +386 -0
  45. data/ext/nokogiri/xml_node_set.h +9 -0
  46. data/ext/nokogiri/xml_processing_instruction.c +54 -0
  47. data/ext/nokogiri/xml_processing_instruction.h +9 -0
  48. data/ext/nokogiri/xml_reader.c +572 -0
  49. data/ext/nokogiri/xml_reader.h +10 -0
  50. data/ext/nokogiri/xml_relax_ng.c +106 -0
  51. data/ext/nokogiri/xml_relax_ng.h +9 -0
  52. data/ext/nokogiri/xml_sax_parser.c +336 -0
  53. data/ext/nokogiri/xml_sax_parser.h +10 -0
  54. data/ext/nokogiri/xml_sax_push_parser.c +86 -0
  55. data/ext/nokogiri/xml_sax_push_parser.h +9 -0
  56. data/ext/nokogiri/xml_schema.c +107 -0
  57. data/ext/nokogiri/xml_schema.h +9 -0
  58. data/ext/nokogiri/xml_syntax_error.c +203 -0
  59. data/ext/nokogiri/xml_syntax_error.h +12 -0
  60. data/ext/nokogiri/xml_text.c +47 -0
  61. data/ext/nokogiri/xml_text.h +9 -0
  62. data/ext/nokogiri/xml_xpath.c +53 -0
  63. data/ext/nokogiri/xml_xpath.h +11 -0
  64. data/ext/nokogiri/xml_xpath_context.c +252 -0
  65. data/ext/nokogiri/xml_xpath_context.h +9 -0
  66. data/ext/nokogiri/xslt_stylesheet.c +131 -0
  67. data/ext/nokogiri/xslt_stylesheet.h +9 -0
  68. data/ext/nokogiri/zlib1.dll +0 -0
  69. data/lib/action-nokogiri.rb +36 -0
  70. data/lib/nokogiri.rb +110 -0
  71. data/lib/nokogiri/1.8/nokogiri.so +0 -0
  72. data/lib/nokogiri/1.9/nokogiri.so +0 -0
  73. data/lib/nokogiri/css.rb +25 -0
  74. data/lib/nokogiri/css/generated_parser.rb +748 -0
  75. data/lib/nokogiri/css/generated_tokenizer.rb +144 -0
  76. data/lib/nokogiri/css/node.rb +107 -0
  77. data/lib/nokogiri/css/parser.rb +82 -0
  78. data/lib/nokogiri/css/parser.y +227 -0
  79. data/lib/nokogiri/css/syntax_error.rb +7 -0
  80. data/lib/nokogiri/css/tokenizer.rb +11 -0
  81. data/lib/nokogiri/css/tokenizer.rex +54 -0
  82. data/lib/nokogiri/css/xpath_visitor.rb +172 -0
  83. data/lib/nokogiri/decorators.rb +2 -0
  84. data/lib/nokogiri/decorators/hpricot.rb +3 -0
  85. data/lib/nokogiri/decorators/hpricot/node.rb +56 -0
  86. data/lib/nokogiri/decorators/hpricot/node_set.rb +54 -0
  87. data/lib/nokogiri/decorators/hpricot/xpath_visitor.rb +30 -0
  88. data/lib/nokogiri/decorators/slop.rb +33 -0
  89. data/lib/nokogiri/ffi/html/document.rb +37 -0
  90. data/lib/nokogiri/ffi/html/element_description.rb +85 -0
  91. data/lib/nokogiri/ffi/html/entity_lookup.rb +16 -0
  92. data/lib/nokogiri/ffi/html/sax/parser.rb +21 -0
  93. data/lib/nokogiri/ffi/io_callbacks.rb +32 -0
  94. data/lib/nokogiri/ffi/libxml.rb +314 -0
  95. data/lib/nokogiri/ffi/structs/common_node.rb +26 -0
  96. data/lib/nokogiri/ffi/structs/html_elem_desc.rb +24 -0
  97. data/lib/nokogiri/ffi/structs/html_entity_desc.rb +13 -0
  98. data/lib/nokogiri/ffi/structs/xml_alloc.rb +16 -0
  99. data/lib/nokogiri/ffi/structs/xml_attr.rb +19 -0
  100. data/lib/nokogiri/ffi/structs/xml_buffer.rb +16 -0
  101. data/lib/nokogiri/ffi/structs/xml_document.rb +108 -0
  102. data/lib/nokogiri/ffi/structs/xml_dtd.rb +26 -0
  103. data/lib/nokogiri/ffi/structs/xml_node.rb +28 -0
  104. data/lib/nokogiri/ffi/structs/xml_node_set.rb +53 -0
  105. data/lib/nokogiri/ffi/structs/xml_notation.rb +11 -0
  106. data/lib/nokogiri/ffi/structs/xml_ns.rb +15 -0
  107. data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +14 -0
  108. data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +51 -0
  109. data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +14 -0
  110. data/lib/nokogiri/ffi/structs/xml_schema.rb +13 -0
  111. data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +31 -0
  112. data/lib/nokogiri/ffi/structs/xml_text_reader.rb +12 -0
  113. data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +37 -0
  114. data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +35 -0
  115. data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +20 -0
  116. data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +13 -0
  117. data/lib/nokogiri/ffi/xml/attr.rb +41 -0
  118. data/lib/nokogiri/ffi/xml/cdata.rb +19 -0
  119. data/lib/nokogiri/ffi/xml/comment.rb +18 -0
  120. data/lib/nokogiri/ffi/xml/document.rb +107 -0
  121. data/lib/nokogiri/ffi/xml/document_fragment.rb +26 -0
  122. data/lib/nokogiri/ffi/xml/dtd.rb +42 -0
  123. data/lib/nokogiri/ffi/xml/entity_reference.rb +19 -0
  124. data/lib/nokogiri/ffi/xml/namespace.rb +38 -0
  125. data/lib/nokogiri/ffi/xml/node.rb +380 -0
  126. data/lib/nokogiri/ffi/xml/node_set.rb +130 -0
  127. data/lib/nokogiri/ffi/xml/processing_instruction.rb +20 -0
  128. data/lib/nokogiri/ffi/xml/reader.rb +217 -0
  129. data/lib/nokogiri/ffi/xml/relax_ng.rb +51 -0
  130. data/lib/nokogiri/ffi/xml/sax/parser.rb +148 -0
  131. data/lib/nokogiri/ffi/xml/sax/push_parser.rb +38 -0
  132. data/lib/nokogiri/ffi/xml/schema.rb +55 -0
  133. data/lib/nokogiri/ffi/xml/syntax_error.rb +76 -0
  134. data/lib/nokogiri/ffi/xml/text.rb +18 -0
  135. data/lib/nokogiri/ffi/xml/xpath.rb +19 -0
  136. data/lib/nokogiri/ffi/xml/xpath_context.rb +135 -0
  137. data/lib/nokogiri/ffi/xslt/stylesheet.rb +47 -0
  138. data/lib/nokogiri/hpricot.rb +62 -0
  139. data/lib/nokogiri/html.rb +34 -0
  140. data/lib/nokogiri/html/builder.rb +35 -0
  141. data/lib/nokogiri/html/document.rb +71 -0
  142. data/lib/nokogiri/html/document_fragment.rb +15 -0
  143. data/lib/nokogiri/html/element_description.rb +23 -0
  144. data/lib/nokogiri/html/entity_lookup.rb +13 -0
  145. data/lib/nokogiri/html/sax/parser.rb +47 -0
  146. data/lib/nokogiri/nokogiri.rb +1 -0
  147. data/lib/nokogiri/syntax_error.rb +4 -0
  148. data/lib/nokogiri/version.rb +29 -0
  149. data/lib/nokogiri/version_warning.rb +11 -0
  150. data/lib/nokogiri/xml.rb +62 -0
  151. data/lib/nokogiri/xml/attr.rb +9 -0
  152. data/lib/nokogiri/xml/builder.rb +254 -0
  153. data/lib/nokogiri/xml/cdata.rb +11 -0
  154. data/lib/nokogiri/xml/document.rb +100 -0
  155. data/lib/nokogiri/xml/document_fragment.rb +49 -0
  156. data/lib/nokogiri/xml/dtd.rb +11 -0
  157. data/lib/nokogiri/xml/entity_declaration.rb +11 -0
  158. data/lib/nokogiri/xml/fragment_handler.rb +55 -0
  159. data/lib/nokogiri/xml/namespace.rb +7 -0
  160. data/lib/nokogiri/xml/node.rb +745 -0
  161. data/lib/nokogiri/xml/node/save_options.rb +42 -0
  162. data/lib/nokogiri/xml/node_set.rb +238 -0
  163. data/lib/nokogiri/xml/notation.rb +6 -0
  164. data/lib/nokogiri/xml/parse_options.rb +80 -0
  165. data/lib/nokogiri/xml/processing_instruction.rb +8 -0
  166. data/lib/nokogiri/xml/reader.rb +66 -0
  167. data/lib/nokogiri/xml/relax_ng.rb +32 -0
  168. data/lib/nokogiri/xml/sax.rb +3 -0
  169. data/lib/nokogiri/xml/sax/document.rb +143 -0
  170. data/lib/nokogiri/xml/sax/parser.rb +101 -0
  171. data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  172. data/lib/nokogiri/xml/schema.rb +65 -0
  173. data/lib/nokogiri/xml/syntax_error.rb +34 -0
  174. data/lib/nokogiri/xml/xpath.rb +10 -0
  175. data/lib/nokogiri/xml/xpath/syntax_error.rb +8 -0
  176. data/lib/nokogiri/xml/xpath_context.rb +16 -0
  177. data/lib/nokogiri/xslt.rb +48 -0
  178. data/lib/nokogiri/xslt/stylesheet.rb +25 -0
  179. data/lib/xsd/xmlparser/nokogiri.rb +64 -0
  180. data/tasks/test.rb +161 -0
  181. data/test/css/test_nthiness.rb +160 -0
  182. data/test/css/test_parser.rb +277 -0
  183. data/test/css/test_tokenizer.rb +176 -0
  184. data/test/css/test_xpath_visitor.rb +76 -0
  185. data/test/ffi/test_document.rb +35 -0
  186. data/test/files/address_book.rlx +12 -0
  187. data/test/files/address_book.xml +10 -0
  188. data/test/files/dont_hurt_em_why.xml +422 -0
  189. data/test/files/exslt.xml +8 -0
  190. data/test/files/exslt.xslt +35 -0
  191. data/test/files/po.xml +32 -0
  192. data/test/files/po.xsd +66 -0
  193. data/test/files/staff.xml +59 -0
  194. data/test/files/staff.xslt +32 -0
  195. data/test/files/tlm.html +850 -0
  196. data/test/helper.rb +123 -0
  197. data/test/hpricot/files/basic.xhtml +17 -0
  198. data/test/hpricot/files/boingboing.html +2266 -0
  199. data/test/hpricot/files/cy0.html +3653 -0
  200. data/test/hpricot/files/immob.html +400 -0
  201. data/test/hpricot/files/pace_application.html +1320 -0
  202. data/test/hpricot/files/tenderlove.html +16 -0
  203. data/test/hpricot/files/uswebgen.html +220 -0
  204. data/test/hpricot/files/utf8.html +1054 -0
  205. data/test/hpricot/files/week9.html +1723 -0
  206. data/test/hpricot/files/why.xml +19 -0
  207. data/test/hpricot/load_files.rb +11 -0
  208. data/test/hpricot/test_alter.rb +68 -0
  209. data/test/hpricot/test_builder.rb +20 -0
  210. data/test/hpricot/test_parser.rb +426 -0
  211. data/test/hpricot/test_paths.rb +15 -0
  212. data/test/hpricot/test_preserved.rb +77 -0
  213. data/test/hpricot/test_xml.rb +30 -0
  214. data/test/html/sax/test_parser.rb +52 -0
  215. data/test/html/test_builder.rb +156 -0
  216. data/test/html/test_document.rb +361 -0
  217. data/test/html/test_document_encoding.rb +46 -0
  218. data/test/html/test_document_fragment.rb +97 -0
  219. data/test/html/test_element_description.rb +95 -0
  220. data/test/html/test_named_characters.rb +14 -0
  221. data/test/html/test_node.rb +165 -0
  222. data/test/test_convert_xpath.rb +186 -0
  223. data/test/test_css_cache.rb +56 -0
  224. data/test/test_gc.rb +15 -0
  225. data/test/test_memory_leak.rb +77 -0
  226. data/test/test_nokogiri.rb +127 -0
  227. data/test/test_reader.rb +316 -0
  228. data/test/test_xslt_transforms.rb +131 -0
  229. data/test/xml/node/test_save_options.rb +20 -0
  230. data/test/xml/node/test_subclass.rb +44 -0
  231. data/test/xml/sax/test_parser.rb +169 -0
  232. data/test/xml/sax/test_push_parser.rb +92 -0
  233. data/test/xml/test_attr.rb +38 -0
  234. data/test/xml/test_builder.rb +73 -0
  235. data/test/xml/test_cdata.rb +38 -0
  236. data/test/xml/test_comment.rb +23 -0
  237. data/test/xml/test_document.rb +397 -0
  238. data/test/xml/test_document_encoding.rb +26 -0
  239. data/test/xml/test_document_fragment.rb +76 -0
  240. data/test/xml/test_dtd.rb +42 -0
  241. data/test/xml/test_dtd_encoding.rb +31 -0
  242. data/test/xml/test_entity_reference.rb +21 -0
  243. data/test/xml/test_namespace.rb +43 -0
  244. data/test/xml/test_node.rb +808 -0
  245. data/test/xml/test_node_attributes.rb +34 -0
  246. data/test/xml/test_node_encoding.rb +84 -0
  247. data/test/xml/test_node_set.rb +368 -0
  248. data/test/xml/test_parse_options.rb +52 -0
  249. data/test/xml/test_processing_instruction.rb +30 -0
  250. data/test/xml/test_reader_encoding.rb +126 -0
  251. data/test/xml/test_relax_ng.rb +60 -0
  252. data/test/xml/test_schema.rb +65 -0
  253. data/test/xml/test_text.rb +18 -0
  254. data/test/xml/test_unparented_node.rb +381 -0
  255. data/test/xml/test_xpath.rb +106 -0
  256. metadata +409 -0
@@ -0,0 +1,10 @@
1
+ #ifndef NOKOGIRI_XML_SAX_PARSER
2
+ #define NOKOGIRI_XML_SAX_PARSER
3
+
4
+ #include <nokogiri.h>
5
+
6
+ void init_xml_sax_parser();
7
+
8
+ extern VALUE cNokogiriXmlSaxParser ;
9
+ #endif
10
+
@@ -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,9 @@
1
+ #ifndef NOKOGIRI_XML_SAX_PUSH_PARSER
2
+ #define NOKOGIRI_XML_SAX_PUSH_PARSER
3
+
4
+ #include <nokogiri.h>
5
+
6
+ void init_xml_sax_push_parser();
7
+
8
+ extern VALUE cNokogiriXmlSaxPushParser ;
9
+ #endif
@@ -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,9 @@
1
+ #ifndef NOKOGIRI_XML_SCHEMA
2
+ #define NOKOGIRI_XML_SCHEMA
3
+
4
+ #include <nokogiri.h>
5
+
6
+ void init_xml_schema();
7
+
8
+ extern VALUE cNokogiriXmlSchema;
9
+ #endif
@@ -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
+ }