rubyjedi-nokogiri_java 1.4.0.20100513161003-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. data/.autotest +26 -0
  2. data/CHANGELOG.ja.rdoc +330 -0
  3. data/CHANGELOG.rdoc +341 -0
  4. data/Manifest.txt +277 -0
  5. data/README.ja.rdoc +105 -0
  6. data/README.rdoc +125 -0
  7. data/Rakefile +307 -0
  8. data/bin/nokogiri +49 -0
  9. data/deps.rip +5 -0
  10. data/ext/nokogiri/extconf.rb +149 -0
  11. data/ext/nokogiri/html_document.c +145 -0
  12. data/ext/nokogiri/html_document.h +10 -0
  13. data/ext/nokogiri/html_element_description.c +272 -0
  14. data/ext/nokogiri/html_element_description.h +10 -0
  15. data/ext/nokogiri/html_entity_lookup.c +32 -0
  16. data/ext/nokogiri/html_entity_lookup.h +8 -0
  17. data/ext/nokogiri/html_sax_parser_context.c +92 -0
  18. data/ext/nokogiri/html_sax_parser_context.h +11 -0
  19. data/ext/nokogiri/nokogiri.c +96 -0
  20. data/ext/nokogiri/nokogiri.h +148 -0
  21. data/ext/nokogiri/xml_attr.c +92 -0
  22. data/ext/nokogiri/xml_attr.h +9 -0
  23. data/ext/nokogiri/xml_attribute_decl.c +67 -0
  24. data/ext/nokogiri/xml_attribute_decl.h +9 -0
  25. data/ext/nokogiri/xml_cdata.c +54 -0
  26. data/ext/nokogiri/xml_cdata.h +9 -0
  27. data/ext/nokogiri/xml_comment.c +52 -0
  28. data/ext/nokogiri/xml_comment.h +9 -0
  29. data/ext/nokogiri/xml_document.c +386 -0
  30. data/ext/nokogiri/xml_document.h +24 -0
  31. data/ext/nokogiri/xml_document_fragment.c +46 -0
  32. data/ext/nokogiri/xml_document_fragment.h +10 -0
  33. data/ext/nokogiri/xml_dtd.c +192 -0
  34. data/ext/nokogiri/xml_dtd.h +10 -0
  35. data/ext/nokogiri/xml_element_content.c +123 -0
  36. data/ext/nokogiri/xml_element_content.h +10 -0
  37. data/ext/nokogiri/xml_element_decl.c +69 -0
  38. data/ext/nokogiri/xml_element_decl.h +9 -0
  39. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  40. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  41. data/ext/nokogiri/xml_entity_decl.c +97 -0
  42. data/ext/nokogiri/xml_entity_decl.h +10 -0
  43. data/ext/nokogiri/xml_entity_reference.c +50 -0
  44. data/ext/nokogiri/xml_entity_reference.h +9 -0
  45. data/ext/nokogiri/xml_io.c +31 -0
  46. data/ext/nokogiri/xml_io.h +11 -0
  47. data/ext/nokogiri/xml_namespace.c +82 -0
  48. data/ext/nokogiri/xml_namespace.h +13 -0
  49. data/ext/nokogiri/xml_node.c +1080 -0
  50. data/ext/nokogiri/xml_node.h +13 -0
  51. data/ext/nokogiri/xml_node_set.c +405 -0
  52. data/ext/nokogiri/xml_node_set.h +9 -0
  53. data/ext/nokogiri/xml_processing_instruction.c +54 -0
  54. data/ext/nokogiri/xml_processing_instruction.h +9 -0
  55. data/ext/nokogiri/xml_reader.c +593 -0
  56. data/ext/nokogiri/xml_reader.h +10 -0
  57. data/ext/nokogiri/xml_relax_ng.c +159 -0
  58. data/ext/nokogiri/xml_relax_ng.h +9 -0
  59. data/ext/nokogiri/xml_sax_parser.c +283 -0
  60. data/ext/nokogiri/xml_sax_parser.h +43 -0
  61. data/ext/nokogiri/xml_sax_parser_context.c +157 -0
  62. data/ext/nokogiri/xml_sax_parser_context.h +10 -0
  63. data/ext/nokogiri/xml_sax_push_parser.c +114 -0
  64. data/ext/nokogiri/xml_sax_push_parser.h +9 -0
  65. data/ext/nokogiri/xml_schema.c +156 -0
  66. data/ext/nokogiri/xml_schema.h +9 -0
  67. data/ext/nokogiri/xml_syntax_error.c +52 -0
  68. data/ext/nokogiri/xml_syntax_error.h +13 -0
  69. data/ext/nokogiri/xml_text.c +48 -0
  70. data/ext/nokogiri/xml_text.h +9 -0
  71. data/ext/nokogiri/xml_xpath.c +53 -0
  72. data/ext/nokogiri/xml_xpath.h +11 -0
  73. data/ext/nokogiri/xml_xpath_context.c +239 -0
  74. data/ext/nokogiri/xml_xpath_context.h +9 -0
  75. data/ext/nokogiri/xslt_stylesheet.c +131 -0
  76. data/ext/nokogiri/xslt_stylesheet.h +9 -0
  77. data/lib/isorelax.jar +0 -0
  78. data/lib/jing.jar +0 -0
  79. data/lib/nekodtd.jar +0 -0
  80. data/lib/nekohtml.jar +0 -0
  81. data/lib/nokogiri.rb +123 -0
  82. data/lib/nokogiri/css.rb +25 -0
  83. data/lib/nokogiri/css/generated_parser.rb +659 -0
  84. data/lib/nokogiri/css/generated_tokenizer.rb +145 -0
  85. data/lib/nokogiri/css/node.rb +99 -0
  86. data/lib/nokogiri/css/parser.rb +82 -0
  87. data/lib/nokogiri/css/parser.y +230 -0
  88. data/lib/nokogiri/css/syntax_error.rb +7 -0
  89. data/lib/nokogiri/css/tokenizer.rb +7 -0
  90. data/lib/nokogiri/css/tokenizer.rex +55 -0
  91. data/lib/nokogiri/css/xpath_visitor.rb +164 -0
  92. data/lib/nokogiri/decorators/slop.rb +33 -0
  93. data/lib/nokogiri/ffi/encoding_handler.rb +42 -0
  94. data/lib/nokogiri/ffi/html/document.rb +28 -0
  95. data/lib/nokogiri/ffi/html/element_description.rb +81 -0
  96. data/lib/nokogiri/ffi/html/entity_lookup.rb +16 -0
  97. data/lib/nokogiri/ffi/html/sax/parser_context.rb +38 -0
  98. data/lib/nokogiri/ffi/io_callbacks.rb +42 -0
  99. data/lib/nokogiri/ffi/libxml.rb +372 -0
  100. data/lib/nokogiri/ffi/structs/common_node.rb +26 -0
  101. data/lib/nokogiri/ffi/structs/html_elem_desc.rb +24 -0
  102. data/lib/nokogiri/ffi/structs/html_entity_desc.rb +13 -0
  103. data/lib/nokogiri/ffi/structs/xml_alloc.rb +16 -0
  104. data/lib/nokogiri/ffi/structs/xml_attr.rb +19 -0
  105. data/lib/nokogiri/ffi/structs/xml_attribute.rb +27 -0
  106. data/lib/nokogiri/ffi/structs/xml_buffer.rb +16 -0
  107. data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +11 -0
  108. data/lib/nokogiri/ffi/structs/xml_document.rb +108 -0
  109. data/lib/nokogiri/ffi/structs/xml_dtd.rb +28 -0
  110. data/lib/nokogiri/ffi/structs/xml_element.rb +26 -0
  111. data/lib/nokogiri/ffi/structs/xml_element_content.rb +17 -0
  112. data/lib/nokogiri/ffi/structs/xml_entity.rb +32 -0
  113. data/lib/nokogiri/ffi/structs/xml_enumeration.rb +12 -0
  114. data/lib/nokogiri/ffi/structs/xml_node.rb +28 -0
  115. data/lib/nokogiri/ffi/structs/xml_node_set.rb +53 -0
  116. data/lib/nokogiri/ffi/structs/xml_notation.rb +11 -0
  117. data/lib/nokogiri/ffi/structs/xml_ns.rb +15 -0
  118. data/lib/nokogiri/ffi/structs/xml_parser_context.rb +19 -0
  119. data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +14 -0
  120. data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +51 -0
  121. data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +124 -0
  122. data/lib/nokogiri/ffi/structs/xml_schema.rb +13 -0
  123. data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +31 -0
  124. data/lib/nokogiri/ffi/structs/xml_text_reader.rb +12 -0
  125. data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +37 -0
  126. data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +35 -0
  127. data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +20 -0
  128. data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +13 -0
  129. data/lib/nokogiri/ffi/xml/attr.rb +41 -0
  130. data/lib/nokogiri/ffi/xml/attribute_decl.rb +27 -0
  131. data/lib/nokogiri/ffi/xml/cdata.rb +19 -0
  132. data/lib/nokogiri/ffi/xml/comment.rb +18 -0
  133. data/lib/nokogiri/ffi/xml/document.rb +135 -0
  134. data/lib/nokogiri/ffi/xml/document_fragment.rb +21 -0
  135. data/lib/nokogiri/ffi/xml/dtd.rb +67 -0
  136. data/lib/nokogiri/ffi/xml/element_content.rb +43 -0
  137. data/lib/nokogiri/ffi/xml/element_decl.rb +19 -0
  138. data/lib/nokogiri/ffi/xml/entity_decl.rb +27 -0
  139. data/lib/nokogiri/ffi/xml/entity_reference.rb +19 -0
  140. data/lib/nokogiri/ffi/xml/namespace.rb +44 -0
  141. data/lib/nokogiri/ffi/xml/node.rb +465 -0
  142. data/lib/nokogiri/ffi/xml/node_set.rb +146 -0
  143. data/lib/nokogiri/ffi/xml/processing_instruction.rb +20 -0
  144. data/lib/nokogiri/ffi/xml/reader.rb +227 -0
  145. data/lib/nokogiri/ffi/xml/relax_ng.rb +85 -0
  146. data/lib/nokogiri/ffi/xml/sax/parser.rb +135 -0
  147. data/lib/nokogiri/ffi/xml/sax/parser_context.rb +67 -0
  148. data/lib/nokogiri/ffi/xml/sax/push_parser.rb +55 -0
  149. data/lib/nokogiri/ffi/xml/schema.rb +92 -0
  150. data/lib/nokogiri/ffi/xml/syntax_error.rb +98 -0
  151. data/lib/nokogiri/ffi/xml/text.rb +18 -0
  152. data/lib/nokogiri/ffi/xml/xpath.rb +19 -0
  153. data/lib/nokogiri/ffi/xml/xpath_context.rb +135 -0
  154. data/lib/nokogiri/ffi/xslt/stylesheet.rb +50 -0
  155. data/lib/nokogiri/html.rb +36 -0
  156. data/lib/nokogiri/html/builder.rb +35 -0
  157. data/lib/nokogiri/html/document.rb +88 -0
  158. data/lib/nokogiri/html/document_fragment.rb +15 -0
  159. data/lib/nokogiri/html/element_description.rb +23 -0
  160. data/lib/nokogiri/html/element_description_defaults.rb +671 -0
  161. data/lib/nokogiri/html/entity_lookup.rb +13 -0
  162. data/lib/nokogiri/html/sax/parser.rb +48 -0
  163. data/lib/nokogiri/html/sax/parser_context.rb +16 -0
  164. data/lib/nokogiri/nokogiri.jar +0 -0
  165. data/lib/nokogiri/syntax_error.rb +4 -0
  166. data/lib/nokogiri/version.rb +33 -0
  167. data/lib/nokogiri/version_warning.rb +11 -0
  168. data/lib/nokogiri/xml.rb +67 -0
  169. data/lib/nokogiri/xml/attr.rb +14 -0
  170. data/lib/nokogiri/xml/attribute_decl.rb +18 -0
  171. data/lib/nokogiri/xml/builder.rb +405 -0
  172. data/lib/nokogiri/xml/cdata.rb +11 -0
  173. data/lib/nokogiri/xml/character_data.rb +7 -0
  174. data/lib/nokogiri/xml/document.rb +163 -0
  175. data/lib/nokogiri/xml/document_fragment.rb +73 -0
  176. data/lib/nokogiri/xml/dtd.rb +11 -0
  177. data/lib/nokogiri/xml/element_content.rb +36 -0
  178. data/lib/nokogiri/xml/element_decl.rb +13 -0
  179. data/lib/nokogiri/xml/entity_decl.rb +15 -0
  180. data/lib/nokogiri/xml/fragment_handler.rb +73 -0
  181. data/lib/nokogiri/xml/namespace.rb +13 -0
  182. data/lib/nokogiri/xml/node.rb +730 -0
  183. data/lib/nokogiri/xml/node/save_options.rb +42 -0
  184. data/lib/nokogiri/xml/node_set.rb +318 -0
  185. data/lib/nokogiri/xml/notation.rb +6 -0
  186. data/lib/nokogiri/xml/parse_options.rb +85 -0
  187. data/lib/nokogiri/xml/pp.rb +2 -0
  188. data/lib/nokogiri/xml/pp/character_data.rb +18 -0
  189. data/lib/nokogiri/xml/pp/node.rb +56 -0
  190. data/lib/nokogiri/xml/processing_instruction.rb +8 -0
  191. data/lib/nokogiri/xml/reader.rb +74 -0
  192. data/lib/nokogiri/xml/relax_ng.rb +32 -0
  193. data/lib/nokogiri/xml/sax.rb +4 -0
  194. data/lib/nokogiri/xml/sax/document.rb +160 -0
  195. data/lib/nokogiri/xml/sax/parser.rb +115 -0
  196. data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  197. data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  198. data/lib/nokogiri/xml/schema.rb +61 -0
  199. data/lib/nokogiri/xml/syntax_error.rb +43 -0
  200. data/lib/nokogiri/xml/xpath.rb +10 -0
  201. data/lib/nokogiri/xml/xpath/syntax_error.rb +8 -0
  202. data/lib/nokogiri/xml/xpath_context.rb +16 -0
  203. data/lib/nokogiri/xslt.rb +48 -0
  204. data/lib/nokogiri/xslt/stylesheet.rb +25 -0
  205. data/lib/xercesImpl.jar +0 -0
  206. data/lib/xsd/xmlparser/nokogiri.rb +90 -0
  207. data/tasks/test.rb +100 -0
  208. data/test/css/test_nthiness.rb +159 -0
  209. data/test/css/test_parser.rb +282 -0
  210. data/test/css/test_tokenizer.rb +190 -0
  211. data/test/css/test_xpath_visitor.rb +76 -0
  212. data/test/ffi/test_document.rb +35 -0
  213. data/test/files/2ch.html +108 -0
  214. data/test/files/address_book.rlx +12 -0
  215. data/test/files/address_book.xml +10 -0
  216. data/test/files/bar/bar.xsd +4 -0
  217. data/test/files/dont_hurt_em_why.xml +422 -0
  218. data/test/files/exslt.xml +8 -0
  219. data/test/files/exslt.xslt +35 -0
  220. data/test/files/foo/foo.xsd +4 -0
  221. data/test/files/po.xml +32 -0
  222. data/test/files/po.xsd +66 -0
  223. data/test/files/shift_jis.html +10 -0
  224. data/test/files/shift_jis.xml +5 -0
  225. data/test/files/snuggles.xml +3 -0
  226. data/test/files/staff.dtd +10 -0
  227. data/test/files/staff.xml +59 -0
  228. data/test/files/staff.xslt +32 -0
  229. data/test/files/tlm.html +850 -0
  230. data/test/files/valid_bar.xml +2 -0
  231. data/test/helper.rb +137 -0
  232. data/test/html/sax/test_parser.rb +83 -0
  233. data/test/html/sax/test_parser_context.rb +48 -0
  234. data/test/html/test_builder.rb +164 -0
  235. data/test/html/test_document.rb +385 -0
  236. data/test/html/test_document_encoding.rb +77 -0
  237. data/test/html/test_document_fragment.rb +157 -0
  238. data/test/html/test_element_description.rb +98 -0
  239. data/test/html/test_named_characters.rb +14 -0
  240. data/test/html/test_node.rb +242 -0
  241. data/test/html/test_node_encoding.rb +27 -0
  242. data/test/test_convert_xpath.rb +135 -0
  243. data/test/test_css_cache.rb +45 -0
  244. data/test/test_encoding_handler.rb +46 -0
  245. data/test/test_jruby.rb +40 -0
  246. data/test/test_memory_leak.rb +87 -0
  247. data/test/test_nokogiri.rb +140 -0
  248. data/test/test_reader.rb +358 -0
  249. data/test/test_soap4r_sax.rb +52 -0
  250. data/test/test_xslt_transforms.rb +150 -0
  251. data/test/xml/node/test_save_options.rb +20 -0
  252. data/test/xml/node/test_subclass.rb +44 -0
  253. data/test/xml/sax/test_parser.rb +314 -0
  254. data/test/xml/sax/test_parser_context.rb +63 -0
  255. data/test/xml/sax/test_push_parser.rb +135 -0
  256. data/test/xml/test_attr.rb +38 -0
  257. data/test/xml/test_attribute_decl.rb +90 -0
  258. data/test/xml/test_builder.rb +167 -0
  259. data/test/xml/test_cdata.rb +38 -0
  260. data/test/xml/test_comment.rb +29 -0
  261. data/test/xml/test_document.rb +638 -0
  262. data/test/xml/test_document_encoding.rb +26 -0
  263. data/test/xml/test_document_fragment.rb +149 -0
  264. data/test/xml/test_dtd.rb +92 -0
  265. data/test/xml/test_dtd_encoding.rb +33 -0
  266. data/test/xml/test_element_content.rb +56 -0
  267. data/test/xml/test_element_decl.rb +73 -0
  268. data/test/xml/test_entity_decl.rb +83 -0
  269. data/test/xml/test_entity_reference.rb +21 -0
  270. data/test/xml/test_namespace.rb +70 -0
  271. data/test/xml/test_node.rb +740 -0
  272. data/test/xml/test_node_attributes.rb +34 -0
  273. data/test/xml/test_node_encoding.rb +107 -0
  274. data/test/xml/test_node_reparenting.rb +279 -0
  275. data/test/xml/test_node_set.rb +577 -0
  276. data/test/xml/test_parse_options.rb +52 -0
  277. data/test/xml/test_processing_instruction.rb +30 -0
  278. data/test/xml/test_reader_encoding.rb +126 -0
  279. data/test/xml/test_relax_ng.rb +60 -0
  280. data/test/xml/test_schema.rb +89 -0
  281. data/test/xml/test_syntax_error.rb +12 -0
  282. data/test/xml/test_text.rb +30 -0
  283. data/test/xml/test_unparented_node.rb +381 -0
  284. data/test/xml/test_xpath.rb +169 -0
  285. metadata +477 -0
@@ -0,0 +1,8 @@
1
+ #ifndef NOKOGIRI_HTML_ENTITY_LOOKUP
2
+ #define NOKOGIRI_HTML_ENTITY_LOOKUP
3
+
4
+ #include <nokogiri.h>
5
+
6
+ void init_html_entity_lookup();
7
+
8
+ #endif
@@ -0,0 +1,92 @@
1
+ #include <html_sax_parser_context.h>
2
+
3
+ VALUE cNokogiriHtmlSaxParserContext ;
4
+
5
+ static void deallocate(xmlParserCtxtPtr ctxt)
6
+ {
7
+ NOKOGIRI_DEBUG_START(handler);
8
+
9
+ ctxt->sax = NULL;
10
+
11
+ htmlFreeParserCtxt(ctxt);
12
+
13
+ NOKOGIRI_DEBUG_END(handler);
14
+ }
15
+
16
+ static VALUE parse_memory(VALUE klass, VALUE data, VALUE encoding)
17
+ {
18
+ if(NIL_P(data)) rb_raise(rb_eArgError, "data cannot be nil");
19
+ if(!(int)RSTRING_LEN(data))
20
+ rb_raise(rb_eRuntimeError, "data cannot be empty");
21
+
22
+ htmlParserCtxtPtr ctxt = htmlCreateMemoryParserCtxt(
23
+ StringValuePtr(data),
24
+ (int)RSTRING_LEN(data)
25
+ );
26
+
27
+ if(RTEST(encoding)) {
28
+ xmlCharEncoding enc = xmlParseCharEncoding(StringValuePtr(encoding));
29
+ if(enc != XML_CHAR_ENCODING_ERROR) {
30
+ xmlSwitchEncoding(ctxt, enc);
31
+ if(ctxt->errNo == XML_ERR_UNSUPPORTED_ENCODING) {
32
+ rb_raise(rb_eRuntimeError, "Unsupported encoding %s",
33
+ StringValuePtr(encoding));
34
+ }
35
+ }
36
+ }
37
+
38
+ return Data_Wrap_Struct(klass, NULL, deallocate, ctxt);
39
+ }
40
+
41
+ static VALUE parse_file(VALUE klass, VALUE filename, VALUE encoding)
42
+ {
43
+ htmlParserCtxtPtr ctxt = htmlCreateFileParserCtxt(
44
+ StringValuePtr(filename),
45
+ StringValuePtr(encoding)
46
+ );
47
+ return Data_Wrap_Struct(klass, NULL, deallocate, ctxt);
48
+ }
49
+
50
+ static VALUE parse_with(VALUE self, VALUE sax_handler)
51
+ {
52
+ if(!rb_obj_is_kind_of(sax_handler, cNokogiriXmlSaxParser))
53
+ rb_raise(rb_eArgError, "argument must be a Nokogiri::XML::SAX::Parser");
54
+
55
+ htmlParserCtxtPtr ctxt;
56
+ Data_Get_Struct(self, htmlParserCtxt, ctxt);
57
+
58
+ htmlSAXHandlerPtr sax;
59
+ Data_Get_Struct(sax_handler, htmlSAXHandler, sax);
60
+
61
+ // Free the sax handler since we'll assign our own
62
+ if(ctxt->sax && ctxt->sax != (xmlSAXHandlerPtr)&xmlDefaultSAXHandler)
63
+ xmlFree(ctxt->sax);
64
+
65
+ ctxt->sax = sax;
66
+ ctxt->userData = (void *)NOKOGIRI_SAX_TUPLE_NEW(ctxt, sax_handler);
67
+
68
+ htmlParseDocument(ctxt);
69
+
70
+ if(NULL != ctxt->myDoc) xmlFreeDoc(ctxt->myDoc);
71
+
72
+ NOKOGIRI_SAX_TUPLE_DESTROY(ctxt->userData);
73
+ return self;
74
+ }
75
+
76
+ void init_html_sax_parser_context()
77
+ {
78
+ VALUE nokogiri = rb_define_module("Nokogiri");
79
+ VALUE xml = rb_define_module_under(nokogiri, "XML");
80
+ VALUE html = rb_define_module_under(nokogiri, "HTML");
81
+ VALUE sax = rb_define_module_under(xml, "SAX");
82
+ VALUE hsax = rb_define_module_under(html, "SAX");
83
+ VALUE pc = rb_define_class_under(sax, "ParserContext", rb_cObject);
84
+ VALUE klass = rb_define_class_under(hsax, "ParserContext", pc);
85
+
86
+ cNokogiriHtmlSaxParserContext = klass;
87
+
88
+ rb_define_singleton_method(klass, "memory", parse_memory, 2);
89
+ rb_define_singleton_method(klass, "file", parse_file, 2);
90
+
91
+ rb_define_method(klass, "parse_with", parse_with, 1);
92
+ }
@@ -0,0 +1,11 @@
1
+ #ifndef NOKOGIRI_HTML_SAX_PARSER_CONTEXT
2
+ #define NOKOGIRI_HTML_SAX_PARSER_CONTEXT
3
+
4
+ #include <nokogiri.h>
5
+
6
+ extern VALUE cNokogiriHtmlSaxParserContext;
7
+
8
+ void init_html_sax_parser_context();
9
+
10
+ #endif
11
+
@@ -0,0 +1,96 @@
1
+ #include <nokogiri.h>
2
+
3
+ VALUE mNokogiri ;
4
+ VALUE mNokogiriXml ;
5
+ VALUE mNokogiriHtml ;
6
+ VALUE mNokogiriXslt ;
7
+ VALUE mNokogiriXmlSax ;
8
+ VALUE mNokogiriHtmlSax ;
9
+
10
+ #ifdef USE_INCLUDED_VASPRINTF
11
+ /*
12
+ * I srsly hate windows. it doesn't have vasprintf.
13
+ * Thank you Geoffroy Couprie for this implementation of vasprintf!
14
+ */
15
+ int vasprintf (char **strp, const char *fmt, va_list ap)
16
+ {
17
+ int len = vsnprintf (NULL, 0, fmt, ap) + 1;
18
+ char *res = (char *)malloc((unsigned int)len);
19
+ if (res == NULL)
20
+ return -1;
21
+ *strp = res;
22
+ return vsnprintf(res, (unsigned int)len, fmt, ap);
23
+ }
24
+ #endif
25
+
26
+ int is_2_6_16(void)
27
+ {
28
+ return (strcmp(xmlParserVersion, "20616") <= 0) ? 1 : 0 ;
29
+ }
30
+
31
+ void Init_nokogiri()
32
+ {
33
+ xmlMemSetup(
34
+ (xmlFreeFunc)ruby_xfree,
35
+ (xmlMallocFunc)ruby_xmalloc,
36
+ (xmlReallocFunc)ruby_xrealloc,
37
+ strdup
38
+ );
39
+
40
+ mNokogiri = rb_define_module("Nokogiri");
41
+ mNokogiriXml = rb_define_module_under(mNokogiri, "XML");
42
+ mNokogiriHtml = rb_define_module_under(mNokogiri, "HTML");
43
+ mNokogiriXslt = rb_define_module_under(mNokogiri, "XSLT");
44
+ mNokogiriXmlSax = rb_define_module_under(mNokogiriXml, "SAX");
45
+ mNokogiriHtmlSax = rb_define_module_under(mNokogiriHtml, "SAX");
46
+
47
+ rb_const_set( mNokogiri,
48
+ rb_intern("LIBXML_VERSION"),
49
+ NOKOGIRI_STR_NEW2(LIBXML_DOTTED_VERSION)
50
+ );
51
+ rb_const_set( mNokogiri,
52
+ rb_intern("LIBXML_PARSER_VERSION"),
53
+ NOKOGIRI_STR_NEW2(xmlParserVersion)
54
+ );
55
+
56
+ #ifdef LIBXML_ICONV_ENABLED
57
+ rb_const_set(mNokogiri, rb_intern("LIBXML_ICONV_ENABLED"), Qtrue);
58
+ #else
59
+ rb_const_set(mNokogiri, rb_intern("LIBXML_ICONV_ENABLED"), Qfalse);
60
+ #endif
61
+
62
+ xmlInitParser();
63
+
64
+ init_xml_document();
65
+ init_html_document();
66
+ init_xml_node();
67
+ init_xml_document_fragment();
68
+ init_xml_text();
69
+ init_xml_cdata();
70
+ init_xml_processing_instruction();
71
+ init_xml_attr();
72
+ init_xml_entity_reference();
73
+ init_xml_comment();
74
+ init_xml_node_set();
75
+ init_xml_xpath_context();
76
+ init_xml_xpath();
77
+ init_xml_sax_parser_context();
78
+ init_xml_sax_parser();
79
+ init_xml_sax_push_parser();
80
+ init_xml_reader();
81
+ init_xml_dtd();
82
+ init_xml_element_content();
83
+ init_xml_attribute_decl();
84
+ init_xml_element_decl();
85
+ init_xml_entity_decl();
86
+ init_xml_namespace();
87
+ init_html_sax_parser_context();
88
+ init_xslt_stylesheet();
89
+ init_xml_syntax_error();
90
+ init_html_entity_lookup();
91
+ init_html_element_description();
92
+ init_xml_schema();
93
+ init_xml_relax_ng();
94
+ init_nokogiri_io();
95
+ init_xml_encoding_handler();
96
+ }
@@ -0,0 +1,148 @@
1
+ #ifndef NOKOGIRI_NATIVE
2
+ #define NOKOGIRI_NATIVE
3
+
4
+ #include <stdlib.h>
5
+ #include <assert.h>
6
+ #include <libxml/parser.h>
7
+ #include <libxml/parserInternals.h>
8
+ #include <libxml/xpath.h>
9
+ #include <libxml/xpathInternals.h>
10
+ #include <libxml/xmlreader.h>
11
+ #include <libxml/xmlsave.h>
12
+ #include <libxml/xmlschemas.h>
13
+ #include <libxml/HTMLparser.h>
14
+ #include <libxml/HTMLtree.h>
15
+ #include <libxml/relaxng.h>
16
+ #include <ruby.h>
17
+
18
+ #ifdef USE_INCLUDED_VASPRINTF
19
+ int vasprintf (char **strp, const char *fmt, va_list ap);
20
+ #else
21
+
22
+ #ifndef _GNU_SOURCE
23
+ #define _GNU_SOURCE
24
+ #endif
25
+
26
+ # include <stdio.h>
27
+
28
+ #endif
29
+
30
+ int is_2_6_16(void) ;
31
+
32
+ #ifndef UNUSED
33
+ # if defined(__GNUC__)
34
+ # define MAYBE_UNUSED(name) name __attribute__((unused))
35
+ # define UNUSED(name) MAYBE_UNUSED(UNUSED_ ## name)
36
+ # else
37
+ # define MAYBE_UNUSED(name) name
38
+ # define UNUSED(name) name
39
+ # endif
40
+ #endif
41
+
42
+ #ifdef HAVE_RUBY_ENCODING_H
43
+
44
+ #include <ruby/encoding.h>
45
+
46
+ #define NOKOGIRI_STR_NEW2(str) \
47
+ ({ \
48
+ VALUE _string = rb_str_new2((const char *)str); \
49
+ int _enc = rb_enc_find_index("UTF-8"); \
50
+ rb_enc_associate_index(_string, _enc); \
51
+ _string; \
52
+ })
53
+
54
+ #define NOKOGIRI_STR_NEW(str, len) \
55
+ ({ \
56
+ VALUE _string = rb_str_new((const char *)str, (long)len); \
57
+ int _enc = rb_enc_find_index("UTF-8"); \
58
+ rb_enc_associate_index(_string, _enc); \
59
+ _string; \
60
+ })
61
+
62
+ #else
63
+
64
+ #define NOKOGIRI_STR_NEW2(str) \
65
+ rb_str_new2((const char *)str)
66
+
67
+ #define NOKOGIRI_STR_NEW(str, len) \
68
+ rb_str_new((const char *)str, (long)len)
69
+ #endif
70
+
71
+ #define RBSTR_OR_QNIL(_str) \
72
+ (_str ? NOKOGIRI_STR_NEW2(_str) : Qnil)
73
+
74
+ #include <xml_io.h>
75
+ #include <xml_document.h>
76
+ #include <html_entity_lookup.h>
77
+ #include <html_document.h>
78
+ #include <xml_node.h>
79
+ #include <xml_text.h>
80
+ #include <xml_cdata.h>
81
+ #include <xml_attr.h>
82
+ #include <xml_processing_instruction.h>
83
+ #include <xml_entity_reference.h>
84
+ #include <xml_document_fragment.h>
85
+ #include <xml_comment.h>
86
+ #include <xml_node_set.h>
87
+ #include <xml_xpath.h>
88
+ #include <xml_dtd.h>
89
+ #include <xml_attribute_decl.h>
90
+ #include <xml_element_decl.h>
91
+ #include <xml_entity_decl.h>
92
+ #include <xml_xpath_context.h>
93
+ #include <xml_element_content.h>
94
+ #include <xml_sax_parser_context.h>
95
+ #include <xml_sax_parser.h>
96
+ #include <xml_sax_push_parser.h>
97
+ #include <xml_reader.h>
98
+ #include <html_sax_parser_context.h>
99
+ #include <xslt_stylesheet.h>
100
+ #include <xml_syntax_error.h>
101
+ #include <xml_schema.h>
102
+ #include <xml_relax_ng.h>
103
+ #include <html_element_description.h>
104
+ #include <xml_namespace.h>
105
+ #include <xml_encoding_handler.h>
106
+
107
+ extern VALUE mNokogiri ;
108
+ extern VALUE mNokogiriXml ;
109
+ extern VALUE mNokogiriXmlSax ;
110
+ extern VALUE mNokogiriHtml ;
111
+ extern VALUE mNokogiriHtmlSax ;
112
+ extern VALUE mNokogiriXslt ;
113
+
114
+ #define NOKOGIRI_ROOT_NODE(_node) \
115
+ ({ \
116
+ nokogiriTuplePtr tuple = (nokogiriTuplePtr)(_node->doc->_private); \
117
+ st_insert(tuple->unlinkedNodes, (st_data_t)_node, (st_data_t)_node); \
118
+ })
119
+
120
+ #ifdef DEBUG
121
+
122
+ #define NOKOGIRI_DEBUG_START(p) if (getenv("NOKOGIRI_NO_FREE")) return ; if (getenv("NOKOGIRI_DEBUG")) fprintf(stderr,"nokogiri: %s:%d %p start\n", __FILE__, __LINE__, p);
123
+ #define NOKOGIRI_DEBUG_END(p) if (getenv("NOKOGIRI_DEBUG")) fprintf(stderr,"nokogiri: %s:%d %p end\n", __FILE__, __LINE__, p);
124
+
125
+ #else
126
+
127
+ #define NOKOGIRI_DEBUG_START(p)
128
+ #define NOKOGIRI_DEBUG_END(p)
129
+
130
+ #ifndef RSTRING_PTR
131
+ #define RSTRING_PTR(s) (RSTRING(s)->ptr)
132
+ #endif
133
+
134
+ #ifndef RSTRING_LEN
135
+ #define RSTRING_LEN(s) (RSTRING(s)->len)
136
+ #endif
137
+
138
+ #ifndef RARRAY_PTR
139
+ #define RARRAY_PTR(a) RARRAY(a)->ptr
140
+ #endif
141
+
142
+ #ifndef RARRAY_LEN
143
+ #define RARRAY_LEN(a) RARRAY(a)->len
144
+ #endif
145
+
146
+ #endif
147
+
148
+ #endif
@@ -0,0 +1,92 @@
1
+ #include <xml_attr.h>
2
+
3
+ /*
4
+ * call-seq:
5
+ * value=(content)
6
+ *
7
+ * Set the value for this Attr to +content+
8
+ */
9
+ static VALUE set_value(VALUE self, VALUE content)
10
+ {
11
+ xmlAttrPtr attr;
12
+ Data_Get_Struct(self, xmlAttr, attr);
13
+
14
+ if(attr->children) xmlFreeNodeList(attr->children);
15
+
16
+ attr->children = attr->last = NULL;
17
+
18
+ if(content) {
19
+ xmlChar *buffer;
20
+ xmlNode *tmp;
21
+
22
+ // Encode our content
23
+ buffer = xmlEncodeEntitiesReentrant(attr->doc, (unsigned char *)StringValuePtr(content));
24
+
25
+ attr->children = xmlStringGetNodeList(attr->doc, buffer);
26
+ attr->last = NULL;
27
+ tmp = attr->children;
28
+
29
+ // Loop through the children
30
+ for(tmp = attr->children; tmp; tmp = tmp->next) {
31
+ tmp->parent = (xmlNode *)attr;
32
+ tmp->doc = attr->doc;
33
+ if(tmp->next == NULL) attr->last = tmp;
34
+ }
35
+
36
+ // Free up memory
37
+ xmlFree(buffer);
38
+ }
39
+
40
+ return content;
41
+ }
42
+
43
+ /*
44
+ * call-seq:
45
+ * new(document, name)
46
+ *
47
+ * Create a new Attr element on the +document+ with +name+
48
+ */
49
+ static VALUE new(int argc, VALUE *argv, VALUE klass)
50
+ {
51
+ xmlDocPtr xml_doc;
52
+ VALUE document;
53
+ VALUE name;
54
+ VALUE rest;
55
+
56
+ rb_scan_args(argc, argv, "2*", &document, &name, &rest);
57
+
58
+ Data_Get_Struct(document, xmlDoc, xml_doc);
59
+
60
+ xmlAttrPtr node = xmlNewDocProp(
61
+ xml_doc,
62
+ (const xmlChar *)StringValuePtr(name),
63
+ NULL
64
+ );
65
+
66
+ NOKOGIRI_ROOT_NODE((xmlNodePtr)node);
67
+
68
+ VALUE rb_node = Nokogiri_wrap_xml_node(klass, (xmlNodePtr)node);
69
+ rb_obj_call_init(rb_node, argc, argv);
70
+
71
+ if(rb_block_given_p()) rb_yield(rb_node);
72
+
73
+ return rb_node;
74
+ }
75
+
76
+ VALUE cNokogiriXmlAttr;
77
+ void init_xml_attr()
78
+ {
79
+ VALUE nokogiri = rb_define_module("Nokogiri");
80
+ VALUE xml = rb_define_module_under(nokogiri, "XML");
81
+ VALUE node = rb_define_class_under(xml, "Node", rb_cObject);
82
+
83
+ /*
84
+ * Attr represents a Attr node in an xml document.
85
+ */
86
+ VALUE klass = rb_define_class_under(xml, "Attr", node);
87
+
88
+ cNokogiriXmlAttr = klass;
89
+
90
+ rb_define_singleton_method(klass, "new", new, -1);
91
+ rb_define_method(klass, "value=", set_value, 1);
92
+ }