nokogiri 1.6.0 → 1.13.2

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 (340) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -19
  3. data/LICENSE-DEPENDENCIES.md +1903 -0
  4. data/LICENSE.md +9 -0
  5. data/README.md +280 -0
  6. data/bin/nokogiri +84 -31
  7. data/dependencies.yml +23 -4
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +952 -132
  10. data/ext/nokogiri/gumbo.c +584 -0
  11. data/ext/nokogiri/html4_document.c +166 -0
  12. data/ext/nokogiri/html4_element_description.c +294 -0
  13. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  14. data/ext/nokogiri/html4_sax_parser_context.c +120 -0
  15. data/ext/nokogiri/html4_sax_push_parser.c +95 -0
  16. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  17. data/ext/nokogiri/nokogiri.c +231 -96
  18. data/ext/nokogiri/nokogiri.h +188 -129
  19. data/ext/nokogiri/test_global_handlers.c +40 -0
  20. data/ext/nokogiri/xml_attr.c +49 -40
  21. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  22. data/ext/nokogiri/xml_cdata.c +24 -23
  23. data/ext/nokogiri/xml_comment.c +29 -21
  24. data/ext/nokogiri/xml_document.c +327 -223
  25. data/ext/nokogiri/xml_document_fragment.c +12 -16
  26. data/ext/nokogiri/xml_dtd.c +56 -50
  27. data/ext/nokogiri/xml_element_content.c +31 -26
  28. data/ext/nokogiri/xml_element_decl.c +22 -22
  29. data/ext/nokogiri/xml_encoding_handler.c +45 -20
  30. data/ext/nokogiri/xml_entity_decl.c +32 -30
  31. data/ext/nokogiri/xml_entity_reference.c +16 -18
  32. data/ext/nokogiri/xml_namespace.c +74 -32
  33. data/ext/nokogiri/xml_node.c +1290 -680
  34. data/ext/nokogiri/xml_node_set.c +239 -208
  35. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  36. data/ext/nokogiri/xml_reader.c +227 -189
  37. data/ext/nokogiri/xml_relax_ng.c +52 -28
  38. data/ext/nokogiri/xml_sax_parser.c +123 -125
  39. data/ext/nokogiri/xml_sax_parser_context.c +138 -79
  40. data/ext/nokogiri/xml_sax_push_parser.c +88 -35
  41. data/ext/nokogiri/xml_schema.c +112 -33
  42. data/ext/nokogiri/xml_syntax_error.c +50 -23
  43. data/ext/nokogiri/xml_text.c +14 -18
  44. data/ext/nokogiri/xml_xpath_context.c +227 -140
  45. data/ext/nokogiri/xslt_stylesheet.c +269 -177
  46. data/gumbo-parser/CHANGES.md +63 -0
  47. data/gumbo-parser/Makefile +101 -0
  48. data/gumbo-parser/THANKS +27 -0
  49. data/gumbo-parser/src/Makefile +34 -0
  50. data/gumbo-parser/src/README.md +41 -0
  51. data/gumbo-parser/src/ascii.c +75 -0
  52. data/gumbo-parser/src/ascii.h +115 -0
  53. data/gumbo-parser/src/attribute.c +42 -0
  54. data/gumbo-parser/src/attribute.h +17 -0
  55. data/gumbo-parser/src/char_ref.c +22225 -0
  56. data/gumbo-parser/src/char_ref.h +29 -0
  57. data/gumbo-parser/src/char_ref.rl +2154 -0
  58. data/gumbo-parser/src/error.c +626 -0
  59. data/gumbo-parser/src/error.h +148 -0
  60. data/gumbo-parser/src/foreign_attrs.c +104 -0
  61. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  62. data/gumbo-parser/src/gumbo.h +943 -0
  63. data/gumbo-parser/src/insertion_mode.h +33 -0
  64. data/gumbo-parser/src/macros.h +91 -0
  65. data/gumbo-parser/src/parser.c +4875 -0
  66. data/gumbo-parser/src/parser.h +41 -0
  67. data/gumbo-parser/src/replacement.h +33 -0
  68. data/gumbo-parser/src/string_buffer.c +103 -0
  69. data/gumbo-parser/src/string_buffer.h +68 -0
  70. data/gumbo-parser/src/string_piece.c +48 -0
  71. data/gumbo-parser/src/svg_attrs.c +174 -0
  72. data/gumbo-parser/src/svg_attrs.gperf +77 -0
  73. data/gumbo-parser/src/svg_tags.c +137 -0
  74. data/gumbo-parser/src/svg_tags.gperf +55 -0
  75. data/gumbo-parser/src/tag.c +222 -0
  76. data/gumbo-parser/src/tag_lookup.c +382 -0
  77. data/gumbo-parser/src/tag_lookup.gperf +169 -0
  78. data/gumbo-parser/src/tag_lookup.h +13 -0
  79. data/gumbo-parser/src/token_buffer.c +79 -0
  80. data/gumbo-parser/src/token_buffer.h +71 -0
  81. data/gumbo-parser/src/token_type.h +17 -0
  82. data/gumbo-parser/src/tokenizer.c +3463 -0
  83. data/gumbo-parser/src/tokenizer.h +112 -0
  84. data/gumbo-parser/src/tokenizer_states.h +339 -0
  85. data/gumbo-parser/src/utf8.c +245 -0
  86. data/gumbo-parser/src/utf8.h +164 -0
  87. data/gumbo-parser/src/util.c +68 -0
  88. data/gumbo-parser/src/util.h +30 -0
  89. data/gumbo-parser/src/vector.c +111 -0
  90. data/gumbo-parser/src/vector.h +45 -0
  91. data/lib/nokogiri/class_resolver.rb +67 -0
  92. data/lib/nokogiri/css/node.rb +10 -58
  93. data/lib/nokogiri/css/parser.rb +407 -357
  94. data/lib/nokogiri/css/parser.y +265 -246
  95. data/lib/nokogiri/css/parser_extras.rb +52 -49
  96. data/lib/nokogiri/css/syntax_error.rb +3 -1
  97. data/lib/nokogiri/css/tokenizer.rb +107 -104
  98. data/lib/nokogiri/css/tokenizer.rex +8 -7
  99. data/lib/nokogiri/css/xpath_visitor.rb +266 -80
  100. data/lib/nokogiri/css.rb +50 -17
  101. data/lib/nokogiri/decorators/slop.rb +17 -8
  102. data/lib/nokogiri/extension.rb +31 -0
  103. data/lib/nokogiri/gumbo.rb +15 -0
  104. data/lib/nokogiri/html.rb +38 -27
  105. data/lib/nokogiri/{html → html4}/builder.rb +4 -2
  106. data/lib/nokogiri/html4/document.rb +331 -0
  107. data/lib/nokogiri/html4/document_fragment.rb +54 -0
  108. data/lib/nokogiri/{html → html4}/element_description.rb +3 -1
  109. data/lib/nokogiri/html4/element_description_defaults.rb +578 -0
  110. data/lib/nokogiri/{html → html4}/entity_lookup.rb +4 -2
  111. data/lib/nokogiri/{html → html4}/sax/parser.rb +24 -15
  112. data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
  113. data/lib/nokogiri/html4/sax/push_parser.rb +37 -0
  114. data/lib/nokogiri/html4.rb +46 -0
  115. data/lib/nokogiri/html5/document.rb +88 -0
  116. data/lib/nokogiri/html5/document_fragment.rb +83 -0
  117. data/lib/nokogiri/html5/node.rb +96 -0
  118. data/lib/nokogiri/html5.rb +477 -0
  119. data/lib/nokogiri/jruby/dependencies.rb +21 -0
  120. data/lib/nokogiri/syntax_error.rb +2 -0
  121. data/lib/nokogiri/version/constant.rb +6 -0
  122. data/lib/nokogiri/version/info.rb +221 -0
  123. data/lib/nokogiri/version.rb +3 -105
  124. data/lib/nokogiri/xml/attr.rb +6 -3
  125. data/lib/nokogiri/xml/attribute_decl.rb +3 -1
  126. data/lib/nokogiri/xml/builder.rb +96 -54
  127. data/lib/nokogiri/xml/cdata.rb +3 -1
  128. data/lib/nokogiri/xml/character_data.rb +2 -0
  129. data/lib/nokogiri/xml/document.rb +234 -95
  130. data/lib/nokogiri/xml/document_fragment.rb +86 -36
  131. data/lib/nokogiri/xml/dtd.rb +16 -4
  132. data/lib/nokogiri/xml/element_content.rb +2 -0
  133. data/lib/nokogiri/xml/element_decl.rb +3 -1
  134. data/lib/nokogiri/xml/entity_decl.rb +4 -2
  135. data/lib/nokogiri/xml/entity_reference.rb +20 -0
  136. data/lib/nokogiri/xml/namespace.rb +3 -0
  137. data/lib/nokogiri/xml/node/save_options.rb +8 -4
  138. data/lib/nokogiri/xml/node.rb +947 -502
  139. data/lib/nokogiri/xml/node_set.rb +168 -159
  140. data/lib/nokogiri/xml/notation.rb +13 -0
  141. data/lib/nokogiri/xml/parse_options.rb +40 -5
  142. data/lib/nokogiri/xml/pp/character_data.rb +9 -6
  143. data/lib/nokogiri/xml/pp/node.rb +25 -26
  144. data/lib/nokogiri/xml/pp.rb +4 -2
  145. data/lib/nokogiri/xml/processing_instruction.rb +3 -1
  146. data/lib/nokogiri/xml/reader.rb +23 -28
  147. data/lib/nokogiri/xml/relax_ng.rb +8 -2
  148. data/lib/nokogiri/xml/sax/document.rb +45 -49
  149. data/lib/nokogiri/xml/sax/parser.rb +43 -41
  150. data/lib/nokogiri/xml/sax/parser_context.rb +8 -3
  151. data/lib/nokogiri/xml/sax/push_parser.rb +6 -5
  152. data/lib/nokogiri/xml/sax.rb +6 -4
  153. data/lib/nokogiri/xml/schema.rb +19 -9
  154. data/lib/nokogiri/xml/searchable.rb +270 -0
  155. data/lib/nokogiri/xml/syntax_error.rb +25 -1
  156. data/lib/nokogiri/xml/text.rb +2 -0
  157. data/lib/nokogiri/xml/xpath/syntax_error.rb +4 -2
  158. data/lib/nokogiri/xml/xpath.rb +15 -4
  159. data/lib/nokogiri/xml/xpath_context.rb +3 -3
  160. data/lib/nokogiri/xml.rb +38 -36
  161. data/lib/nokogiri/xslt/stylesheet.rb +3 -1
  162. data/lib/nokogiri/xslt.rb +29 -20
  163. data/lib/nokogiri.rb +69 -69
  164. data/lib/xsd/xmlparser/nokogiri.rb +26 -24
  165. data/patches/libxml2/0001-Remove-script-macro-support.patch +40 -0
  166. data/patches/libxml2/0002-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  167. data/patches/libxml2/0003-libxml2.la-is-in-top_builddir.patch +25 -0
  168. data/patches/libxml2/0004-use-glibc-strlen.patch +53 -0
  169. data/patches/libxml2/0005-avoid-isnan-isinf.patch +81 -0
  170. data/patches/libxml2/0006-update-automake-files-for-arm64.patch +3040 -0
  171. data/patches/libxml2/0008-htmlParseComment-handle-abruptly-closed-comments.patch +61 -0
  172. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  173. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +3037 -0
  174. data/ports/archives/libxml2-2.9.13.tar.xz +0 -0
  175. data/ports/archives/libxslt-1.1.35.tar.xz +0 -0
  176. metadata +278 -362
  177. data/.autotest +0 -26
  178. data/.gemtest +0 -0
  179. data/.travis.yml +0 -27
  180. data/CHANGELOG.ja.rdoc +0 -819
  181. data/CHANGELOG.rdoc +0 -819
  182. data/C_CODING_STYLE.rdoc +0 -33
  183. data/Manifest.txt +0 -315
  184. data/README.ja.rdoc +0 -106
  185. data/README.rdoc +0 -175
  186. data/ROADMAP.md +0 -90
  187. data/Rakefile +0 -246
  188. data/STANDARD_RESPONSES.md +0 -47
  189. data/Y_U_NO_GEMSPEC.md +0 -155
  190. data/build_all +0 -105
  191. data/ext/nokogiri/html_document.c +0 -170
  192. data/ext/nokogiri/html_document.h +0 -10
  193. data/ext/nokogiri/html_element_description.c +0 -279
  194. data/ext/nokogiri/html_element_description.h +0 -10
  195. data/ext/nokogiri/html_entity_lookup.c +0 -32
  196. data/ext/nokogiri/html_entity_lookup.h +0 -8
  197. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  198. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  199. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  200. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  201. data/ext/nokogiri/xml_attr.h +0 -9
  202. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  203. data/ext/nokogiri/xml_cdata.h +0 -9
  204. data/ext/nokogiri/xml_comment.h +0 -9
  205. data/ext/nokogiri/xml_document.h +0 -23
  206. data/ext/nokogiri/xml_document_fragment.h +0 -10
  207. data/ext/nokogiri/xml_dtd.h +0 -10
  208. data/ext/nokogiri/xml_element_content.h +0 -10
  209. data/ext/nokogiri/xml_element_decl.h +0 -9
  210. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  211. data/ext/nokogiri/xml_entity_decl.h +0 -10
  212. data/ext/nokogiri/xml_entity_reference.h +0 -9
  213. data/ext/nokogiri/xml_io.c +0 -56
  214. data/ext/nokogiri/xml_io.h +0 -11
  215. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  216. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  217. data/ext/nokogiri/xml_namespace.h +0 -13
  218. data/ext/nokogiri/xml_node.h +0 -13
  219. data/ext/nokogiri/xml_node_set.h +0 -14
  220. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  221. data/ext/nokogiri/xml_reader.h +0 -10
  222. data/ext/nokogiri/xml_relax_ng.h +0 -9
  223. data/ext/nokogiri/xml_sax_parser.h +0 -39
  224. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  225. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  226. data/ext/nokogiri/xml_schema.h +0 -9
  227. data/ext/nokogiri/xml_syntax_error.h +0 -13
  228. data/ext/nokogiri/xml_text.h +0 -9
  229. data/ext/nokogiri/xml_xpath_context.h +0 -10
  230. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  231. data/lib/nokogiri/html/document.rb +0 -254
  232. data/lib/nokogiri/html/document_fragment.rb +0 -41
  233. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  234. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  235. data/lib/nokogiri/html/sax/push_parser.rb +0 -16
  236. data/ports/archives/libxml2-2.8.0.tar.gz +0 -0
  237. data/ports/archives/libxslt-1.1.26.tar.gz +0 -0
  238. data/tasks/cross_compile.rb +0 -132
  239. data/tasks/nokogiri.org.rb +0 -24
  240. data/tasks/test.rb +0 -95
  241. data/test/css/test_nthiness.rb +0 -159
  242. data/test/css/test_parser.rb +0 -341
  243. data/test/css/test_tokenizer.rb +0 -198
  244. data/test/css/test_xpath_visitor.rb +0 -91
  245. data/test/decorators/test_slop.rb +0 -16
  246. data/test/files/2ch.html +0 -108
  247. data/test/files/address_book.rlx +0 -12
  248. data/test/files/address_book.xml +0 -10
  249. data/test/files/bar/bar.xsd +0 -4
  250. data/test/files/bogus.xml +0 -0
  251. data/test/files/dont_hurt_em_why.xml +0 -422
  252. data/test/files/encoding.html +0 -82
  253. data/test/files/encoding.xhtml +0 -84
  254. data/test/files/exslt.xml +0 -8
  255. data/test/files/exslt.xslt +0 -35
  256. data/test/files/foo/foo.xsd +0 -4
  257. data/test/files/metacharset.html +0 -10
  258. data/test/files/noencoding.html +0 -47
  259. data/test/files/po.xml +0 -32
  260. data/test/files/po.xsd +0 -66
  261. data/test/files/saml/saml20assertion_schema.xsd +0 -283
  262. data/test/files/saml/saml20protocol_schema.xsd +0 -302
  263. data/test/files/saml/xenc_schema.xsd +0 -146
  264. data/test/files/saml/xmldsig_schema.xsd +0 -318
  265. data/test/files/shift_jis.html +0 -10
  266. data/test/files/shift_jis.xml +0 -5
  267. data/test/files/snuggles.xml +0 -3
  268. data/test/files/staff.dtd +0 -10
  269. data/test/files/staff.xml +0 -59
  270. data/test/files/staff.xslt +0 -32
  271. data/test/files/test_document_url/bar.xml +0 -2
  272. data/test/files/test_document_url/document.dtd +0 -4
  273. data/test/files/test_document_url/document.xml +0 -6
  274. data/test/files/tlm.html +0 -850
  275. data/test/files/to_be_xincluded.xml +0 -2
  276. data/test/files/valid_bar.xml +0 -2
  277. data/test/files/xinclude.xml +0 -4
  278. data/test/helper.rb +0 -154
  279. data/test/html/sax/test_parser.rb +0 -141
  280. data/test/html/sax/test_parser_context.rb +0 -46
  281. data/test/html/test_builder.rb +0 -164
  282. data/test/html/test_document.rb +0 -552
  283. data/test/html/test_document_encoding.rb +0 -138
  284. data/test/html/test_document_fragment.rb +0 -261
  285. data/test/html/test_element_description.rb +0 -105
  286. data/test/html/test_named_characters.rb +0 -14
  287. data/test/html/test_node.rb +0 -196
  288. data/test/html/test_node_encoding.rb +0 -27
  289. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  290. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  291. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  292. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -66
  293. data/test/test_convert_xpath.rb +0 -135
  294. data/test/test_css_cache.rb +0 -45
  295. data/test/test_encoding_handler.rb +0 -46
  296. data/test/test_memory_leak.rb +0 -156
  297. data/test/test_nokogiri.rb +0 -132
  298. data/test/test_reader.rb +0 -555
  299. data/test/test_soap4r_sax.rb +0 -52
  300. data/test/test_xslt_transforms.rb +0 -254
  301. data/test/xml/node/test_save_options.rb +0 -28
  302. data/test/xml/node/test_subclass.rb +0 -44
  303. data/test/xml/sax/test_parser.rb +0 -366
  304. data/test/xml/sax/test_parser_context.rb +0 -106
  305. data/test/xml/sax/test_push_parser.rb +0 -157
  306. data/test/xml/test_attr.rb +0 -64
  307. data/test/xml/test_attribute_decl.rb +0 -86
  308. data/test/xml/test_builder.rb +0 -306
  309. data/test/xml/test_c14n.rb +0 -151
  310. data/test/xml/test_cdata.rb +0 -48
  311. data/test/xml/test_comment.rb +0 -29
  312. data/test/xml/test_document.rb +0 -828
  313. data/test/xml/test_document_encoding.rb +0 -28
  314. data/test/xml/test_document_fragment.rb +0 -223
  315. data/test/xml/test_dtd.rb +0 -103
  316. data/test/xml/test_dtd_encoding.rb +0 -33
  317. data/test/xml/test_element_content.rb +0 -56
  318. data/test/xml/test_element_decl.rb +0 -73
  319. data/test/xml/test_entity_decl.rb +0 -122
  320. data/test/xml/test_entity_reference.rb +0 -245
  321. data/test/xml/test_namespace.rb +0 -95
  322. data/test/xml/test_node.rb +0 -1137
  323. data/test/xml/test_node_attributes.rb +0 -96
  324. data/test/xml/test_node_encoding.rb +0 -107
  325. data/test/xml/test_node_inheritance.rb +0 -32
  326. data/test/xml/test_node_reparenting.rb +0 -374
  327. data/test/xml/test_node_set.rb +0 -755
  328. data/test/xml/test_parse_options.rb +0 -64
  329. data/test/xml/test_processing_instruction.rb +0 -30
  330. data/test/xml/test_reader_encoding.rb +0 -142
  331. data/test/xml/test_relax_ng.rb +0 -60
  332. data/test/xml/test_schema.rb +0 -103
  333. data/test/xml/test_syntax_error.rb +0 -12
  334. data/test/xml/test_text.rb +0 -45
  335. data/test/xml/test_unparented_node.rb +0 -422
  336. data/test/xml/test_xinclude.rb +0 -83
  337. data/test/xml/test_xpath.rb +0 -295
  338. data/test/xslt/test_custom_functions.rb +0 -133
  339. data/test/xslt/test_exception_handling.rb +0 -37
  340. data/test_all +0 -81
@@ -1,4 +1,6 @@
1
- #include <xml_document_fragment.h>
1
+ #include <nokogiri.h>
2
+
3
+ VALUE cNokogiriXmlDocumentFragment;
2
4
 
3
5
  /*
4
6
  * call-seq:
@@ -6,7 +8,8 @@
6
8
  *
7
9
  * Create a new DocumentFragment element on the +document+
8
10
  */
9
- static VALUE new(int argc, VALUE *argv, VALUE klass)
11
+ static VALUE
12
+ new (int argc, VALUE *argv, VALUE klass)
10
13
  {
11
14
  xmlDocPtr xml_doc;
12
15
  xmlNodePtr node;
@@ -20,29 +23,22 @@ static VALUE new(int argc, VALUE *argv, VALUE klass)
20
23
 
21
24
  node = xmlNewDocFragment(xml_doc->doc);
22
25
 
23
- nokogiri_root_node(node);
26
+ noko_xml_document_pin_node(node);
24
27
 
25
- rb_node = Nokogiri_wrap_xml_node(klass, node);
28
+ rb_node = noko_xml_node_wrap(klass, node);
26
29
  rb_obj_call_init(rb_node, argc, argv);
27
30
 
28
- if(rb_block_given_p()) rb_yield(rb_node);
29
-
30
31
  return rb_node;
31
32
  }
32
33
 
33
- VALUE cNokogiriXmlDocumentFragment;
34
- void init_xml_document_fragment()
34
+ void
35
+ noko_init_xml_document_fragment()
35
36
  {
36
- VALUE nokogiri = rb_define_module("Nokogiri");
37
- VALUE xml = rb_define_module_under(nokogiri, "XML");
38
- VALUE node = rb_define_class_under(xml, "Node", rb_cObject);
39
-
37
+ assert(cNokogiriXmlNode);
40
38
  /*
41
39
  * DocumentFragment represents a DocumentFragment node in an xml document.
42
40
  */
43
- VALUE klass = rb_define_class_under(xml, "DocumentFragment", node);
44
-
45
- cNokogiriXmlDocumentFragment = klass;
41
+ cNokogiriXmlDocumentFragment = rb_define_class_under(mNokogiriXml, "DocumentFragment", cNokogiriXmlNode);
46
42
 
47
- rb_define_singleton_method(klass, "new", new, -1);
43
+ rb_define_singleton_method(cNokogiriXmlDocumentFragment, "new", new, -1);
48
44
  }
@@ -1,30 +1,35 @@
1
- #include <xml_dtd.h>
1
+ #include <nokogiri.h>
2
2
 
3
- static void notation_copier(void *payload, void *data, xmlChar *name)
3
+ VALUE cNokogiriXmlDtd;
4
+
5
+ static void
6
+ notation_copier(void *c_notation_ptr, void *rb_hash_ptr, const xmlChar *name)
4
7
  {
5
- VALUE hash = (VALUE)data;
6
- VALUE klass = rb_const_get(mNokogiriXml, rb_intern("Notation"));
8
+ VALUE rb_hash = (VALUE)rb_hash_ptr;
9
+ xmlNotationPtr c_notation = (xmlNotationPtr)c_notation_ptr;
10
+ VALUE rb_notation;
11
+ VALUE cNokogiriXmlNotation;
12
+ VALUE rb_constructor_args[3];
7
13
 
8
- xmlNotationPtr c_notation = (xmlNotationPtr)payload;
9
- VALUE notation;
10
- VALUE argv[3];
11
- argv[0] = (c_notation->name ? NOKOGIRI_STR_NEW2(c_notation->name) : Qnil);
12
- argv[1] = (c_notation->PublicID ? NOKOGIRI_STR_NEW2(c_notation->PublicID) : Qnil);
13
- argv[2] = (c_notation->SystemID ? NOKOGIRI_STR_NEW2(c_notation->SystemID) : Qnil);
14
+ rb_constructor_args[0] = (c_notation->name ? NOKOGIRI_STR_NEW2(c_notation->name) : Qnil);
15
+ rb_constructor_args[1] = (c_notation->PublicID ? NOKOGIRI_STR_NEW2(c_notation->PublicID) : Qnil);
16
+ rb_constructor_args[2] = (c_notation->SystemID ? NOKOGIRI_STR_NEW2(c_notation->SystemID) : Qnil);
14
17
 
15
- notation = rb_class_new_instance(3, argv, klass);
18
+ cNokogiriXmlNotation = rb_const_get_at(mNokogiriXml, rb_intern("Notation"));
19
+ rb_notation = rb_class_new_instance(3, rb_constructor_args, cNokogiriXmlNotation);
16
20
 
17
- rb_hash_aset(hash, NOKOGIRI_STR_NEW2(name),notation);
21
+ rb_hash_aset(rb_hash, NOKOGIRI_STR_NEW2(name), rb_notation);
18
22
  }
19
23
 
20
- static void element_copier(void *_payload, void *data, xmlChar *name)
24
+ static void
25
+ element_copier(void *c_node_ptr, void *rb_hash_ptr, const xmlChar *c_name)
21
26
  {
22
- VALUE hash = (VALUE)data;
23
- xmlNodePtr payload = (xmlNodePtr)_payload;
27
+ VALUE rb_hash = (VALUE)rb_hash_ptr;
28
+ xmlNodePtr c_node = (xmlNodePtr)c_node_ptr;
24
29
 
25
- VALUE element = Nokogiri_wrap_xml_node(Qnil, payload);
30
+ VALUE rb_node = noko_xml_node_wrap(Qnil, c_node);
26
31
 
27
- rb_hash_aset(hash, NOKOGIRI_STR_NEW2(name), element);
32
+ rb_hash_aset(rb_hash, NOKOGIRI_STR_NEW2(c_name), rb_node);
28
33
  }
29
34
 
30
35
  /*
@@ -33,14 +38,15 @@ static void element_copier(void *_payload, void *data, xmlChar *name)
33
38
  *
34
39
  * Get a hash of the elements for this DTD.
35
40
  */
36
- static VALUE entities(VALUE self)
41
+ static VALUE
42
+ entities(VALUE self)
37
43
  {
38
44
  xmlDtdPtr dtd;
39
45
  VALUE hash;
40
46
 
41
47
  Data_Get_Struct(self, xmlDtd, dtd);
42
48
 
43
- if(!dtd->entities) return Qnil;
49
+ if (!dtd->entities) { return Qnil; }
44
50
 
45
51
  hash = rb_hash_new();
46
52
 
@@ -51,18 +57,19 @@ static VALUE entities(VALUE self)
51
57
 
52
58
  /*
53
59
  * call-seq:
54
- * notations
60
+ * notations() → Hash<name(String)⇒Notation>
55
61
  *
56
- * Get a hash of the notations for this DTD.
62
+ * [Returns] All the notations for this DTD in a Hash of Notation +name+ to Notation.
57
63
  */
58
- static VALUE notations(VALUE self)
64
+ static VALUE
65
+ notations(VALUE self)
59
66
  {
60
67
  xmlDtdPtr dtd;
61
68
  VALUE hash;
62
69
 
63
70
  Data_Get_Struct(self, xmlDtd, dtd);
64
71
 
65
- if(!dtd->notations) return Qnil;
72
+ if (!dtd->notations) { return Qnil; }
66
73
 
67
74
  hash = rb_hash_new();
68
75
 
@@ -77,7 +84,8 @@ static VALUE notations(VALUE self)
77
84
  *
78
85
  * Get a hash of the attributes for this DTD.
79
86
  */
80
- static VALUE attributes(VALUE self)
87
+ static VALUE
88
+ attributes(VALUE self)
81
89
  {
82
90
  xmlDtdPtr dtd;
83
91
  VALUE hash;
@@ -86,7 +94,7 @@ static VALUE attributes(VALUE self)
86
94
 
87
95
  hash = rb_hash_new();
88
96
 
89
- if(!dtd->attributes) return hash;
97
+ if (!dtd->attributes) { return hash; }
90
98
 
91
99
  xmlHashScan((xmlHashTablePtr)dtd->attributes, element_copier, (void *)hash);
92
100
 
@@ -99,14 +107,15 @@ static VALUE attributes(VALUE self)
99
107
  *
100
108
  * Get a hash of the elements for this DTD.
101
109
  */
102
- static VALUE elements(VALUE self)
110
+ static VALUE
111
+ elements(VALUE self)
103
112
  {
104
113
  xmlDtdPtr dtd;
105
114
  VALUE hash;
106
115
 
107
116
  Data_Get_Struct(self, xmlDtd, dtd);
108
117
 
109
- if(!dtd->elements) return Qnil;
118
+ if (!dtd->elements) { return Qnil; }
110
119
 
111
120
  hash = rb_hash_new();
112
121
 
@@ -121,7 +130,8 @@ static VALUE elements(VALUE self)
121
130
  *
122
131
  * Validate +document+ returning a list of errors
123
132
  */
124
- static VALUE validate(VALUE self, VALUE document)
133
+ static VALUE
134
+ validate(VALUE self, VALUE document)
125
135
  {
126
136
  xmlDocPtr doc;
127
137
  xmlDtdPtr dtd;
@@ -151,12 +161,13 @@ static VALUE validate(VALUE self, VALUE document)
151
161
  *
152
162
  * Get the System ID for this DTD
153
163
  */
154
- static VALUE system_id(VALUE self)
164
+ static VALUE
165
+ system_id(VALUE self)
155
166
  {
156
167
  xmlDtdPtr dtd;
157
168
  Data_Get_Struct(self, xmlDtd, dtd);
158
169
 
159
- if(!dtd->SystemID) return Qnil;
170
+ if (!dtd->SystemID) { return Qnil; }
160
171
 
161
172
  return NOKOGIRI_STR_NEW2(dtd->SystemID);
162
173
  }
@@ -167,36 +178,31 @@ static VALUE system_id(VALUE self)
167
178
  *
168
179
  * Get the External ID for this DTD
169
180
  */
170
- static VALUE external_id(VALUE self)
181
+ static VALUE
182
+ external_id(VALUE self)
171
183
  {
172
184
  xmlDtdPtr dtd;
173
185
  Data_Get_Struct(self, xmlDtd, dtd);
174
186
 
175
- if(!dtd->ExternalID) return Qnil;
187
+ if (!dtd->ExternalID) { return Qnil; }
176
188
 
177
189
  return NOKOGIRI_STR_NEW2(dtd->ExternalID);
178
190
  }
179
191
 
180
- VALUE cNokogiriXmlDtd;
181
-
182
- void init_xml_dtd()
192
+ void
193
+ noko_init_xml_dtd()
183
194
  {
184
- VALUE nokogiri = rb_define_module("Nokogiri");
185
- VALUE xml = rb_define_module_under(nokogiri, "XML");
186
- VALUE node = rb_define_class_under(xml, "Node", rb_cObject);
187
-
195
+ assert(cNokogiriXmlNode);
188
196
  /*
189
197
  * Nokogiri::XML::DTD wraps DTD nodes in an XML document
190
198
  */
191
- VALUE klass = rb_define_class_under(xml, "DTD", node);
192
-
193
- cNokogiriXmlDtd = klass;
194
-
195
- rb_define_method(klass, "notations", notations, 0);
196
- rb_define_method(klass, "elements", elements, 0);
197
- rb_define_method(klass, "entities", entities, 0);
198
- rb_define_method(klass, "validate", validate, 1);
199
- rb_define_method(klass, "attributes", attributes, 0);
200
- rb_define_method(klass, "system_id", system_id, 0);
201
- rb_define_method(klass, "external_id", external_id, 0);
199
+ cNokogiriXmlDtd = rb_define_class_under(mNokogiriXml, "DTD", cNokogiriXmlNode);
200
+
201
+ rb_define_method(cNokogiriXmlDtd, "notations", notations, 0);
202
+ rb_define_method(cNokogiriXmlDtd, "elements", elements, 0);
203
+ rb_define_method(cNokogiriXmlDtd, "entities", entities, 0);
204
+ rb_define_method(cNokogiriXmlDtd, "validate", validate, 1);
205
+ rb_define_method(cNokogiriXmlDtd, "attributes", attributes, 0);
206
+ rb_define_method(cNokogiriXmlDtd, "system_id", system_id, 0);
207
+ rb_define_method(cNokogiriXmlDtd, "external_id", external_id, 0);
202
208
  }
@@ -1,4 +1,4 @@
1
- #include <xml_element_content.h>
1
+ #include <nokogiri.h>
2
2
 
3
3
  VALUE cNokogiriXmlElementContent;
4
4
 
@@ -8,12 +8,13 @@ VALUE cNokogiriXmlElementContent;
8
8
  *
9
9
  * Get the require element +name+
10
10
  */
11
- static VALUE get_name(VALUE self)
11
+ static VALUE
12
+ get_name(VALUE self)
12
13
  {
13
14
  xmlElementContentPtr elem;
14
15
  Data_Get_Struct(self, xmlElementContent, elem);
15
16
 
16
- if(!elem->name) return Qnil;
17
+ if (!elem->name) { return Qnil; }
17
18
  return NOKOGIRI_STR_NEW2(elem->name);
18
19
  }
19
20
 
@@ -24,7 +25,8 @@ static VALUE get_name(VALUE self)
24
25
  * Get the element content +type+. Possible values are PCDATA, ELEMENT, SEQ,
25
26
  * or OR.
26
27
  */
27
- static VALUE get_type(VALUE self)
28
+ static VALUE
29
+ get_type(VALUE self)
28
30
  {
29
31
  xmlElementContentPtr elem;
30
32
  Data_Get_Struct(self, xmlElementContent, elem);
@@ -38,13 +40,14 @@ static VALUE get_type(VALUE self)
38
40
  *
39
41
  * Get the first child.
40
42
  */
41
- static VALUE get_c1(VALUE self)
43
+ static VALUE
44
+ get_c1(VALUE self)
42
45
  {
43
46
  xmlElementContentPtr elem;
44
47
  Data_Get_Struct(self, xmlElementContent, elem);
45
48
 
46
- if(!elem->c1) return Qnil;
47
- return Nokogiri_wrap_element_content(rb_iv_get(self, "@document"), elem->c1);
49
+ if (!elem->c1) { return Qnil; }
50
+ return noko_xml_element_content_wrap(rb_iv_get(self, "@document"), elem->c1);
48
51
  }
49
52
 
50
53
  /*
@@ -53,13 +56,14 @@ static VALUE get_c1(VALUE self)
53
56
  *
54
57
  * Get the first child.
55
58
  */
56
- static VALUE get_c2(VALUE self)
59
+ static VALUE
60
+ get_c2(VALUE self)
57
61
  {
58
62
  xmlElementContentPtr elem;
59
63
  Data_Get_Struct(self, xmlElementContent, elem);
60
64
 
61
- if(!elem->c2) return Qnil;
62
- return Nokogiri_wrap_element_content(rb_iv_get(self, "@document"), elem->c2);
65
+ if (!elem->c2) { return Qnil; }
66
+ return noko_xml_element_content_wrap(rb_iv_get(self, "@document"), elem->c2);
63
67
  }
64
68
 
65
69
  /*
@@ -69,7 +73,8 @@ static VALUE get_c2(VALUE self)
69
73
  * Get the element content +occur+ flag. Possible values are ONCE, OPT, MULT
70
74
  * or PLUS.
71
75
  */
72
- static VALUE get_occur(VALUE self)
76
+ static VALUE
77
+ get_occur(VALUE self)
73
78
  {
74
79
  xmlElementContentPtr elem;
75
80
  Data_Get_Struct(self, xmlElementContent, elem);
@@ -83,17 +88,19 @@ static VALUE get_occur(VALUE self)
83
88
  *
84
89
  * Get the element content namespace +prefix+.
85
90
  */
86
- static VALUE get_prefix(VALUE self)
91
+ static VALUE
92
+ get_prefix(VALUE self)
87
93
  {
88
94
  xmlElementContentPtr elem;
89
95
  Data_Get_Struct(self, xmlElementContent, elem);
90
96
 
91
- if(!elem->prefix) return Qnil;
97
+ if (!elem->prefix) { return Qnil; }
92
98
 
93
99
  return NOKOGIRI_STR_NEW2(elem->prefix);
94
100
  }
95
101
 
96
- VALUE Nokogiri_wrap_element_content(VALUE doc, xmlElementContentPtr element)
102
+ VALUE
103
+ noko_xml_element_content_wrap(VALUE doc, xmlElementContentPtr element)
97
104
  {
98
105
  VALUE elem = Data_Wrap_Struct(cNokogiriXmlElementContent, 0, 0, element);
99
106
 
@@ -104,20 +111,18 @@ VALUE Nokogiri_wrap_element_content(VALUE doc, xmlElementContentPtr element)
104
111
  return elem;
105
112
  }
106
113
 
107
- void init_xml_element_content()
114
+ void
115
+ noko_init_xml_element_content()
108
116
  {
109
- VALUE nokogiri = rb_define_module("Nokogiri");
110
- VALUE xml = rb_define_module_under(nokogiri, "XML");
117
+ cNokogiriXmlElementContent = rb_define_class_under(mNokogiriXml, "ElementContent", rb_cObject);
111
118
 
112
- VALUE klass = rb_define_class_under(xml, "ElementContent", rb_cObject);
119
+ rb_undef_alloc_func(cNokogiriXmlElementContent);
113
120
 
114
- cNokogiriXmlElementContent = klass;
121
+ rb_define_method(cNokogiriXmlElementContent, "name", get_name, 0);
122
+ rb_define_method(cNokogiriXmlElementContent, "type", get_type, 0);
123
+ rb_define_method(cNokogiriXmlElementContent, "occur", get_occur, 0);
124
+ rb_define_method(cNokogiriXmlElementContent, "prefix", get_prefix, 0);
115
125
 
116
- rb_define_method(klass, "name", get_name, 0);
117
- rb_define_method(klass, "type", get_type, 0);
118
- rb_define_method(klass, "occur", get_occur, 0);
119
- rb_define_method(klass, "prefix", get_prefix, 0);
120
-
121
- rb_define_private_method(klass, "c1", get_c1, 0);
122
- rb_define_private_method(klass, "c2", get_c2, 0);
126
+ rb_define_private_method(cNokogiriXmlElementContent, "c1", get_c1, 0);
127
+ rb_define_private_method(cNokogiriXmlElementContent, "c2", get_c2, 0);
123
128
  }
@@ -1,4 +1,6 @@
1
- #include <xml_element_decl.h>
1
+ #include <nokogiri.h>
2
+
3
+ VALUE cNokogiriXmlElementDecl;
2
4
 
3
5
  static ID id_document;
4
6
 
@@ -8,7 +10,8 @@ static ID id_document;
8
10
  *
9
11
  * The element_type
10
12
  */
11
- static VALUE element_type(VALUE self)
13
+ static VALUE
14
+ element_type(VALUE self)
12
15
  {
13
16
  xmlElementPtr node;
14
17
  Data_Get_Struct(self, xmlElement, node);
@@ -21,17 +24,18 @@ static VALUE element_type(VALUE self)
21
24
  *
22
25
  * The allowed content for this ElementDecl
23
26
  */
24
- static VALUE content(VALUE self)
27
+ static VALUE
28
+ content(VALUE self)
25
29
  {
26
30
  xmlElementPtr node;
27
31
  Data_Get_Struct(self, xmlElement, node);
28
32
 
29
- if(!node->content) return Qnil;
33
+ if (!node->content) { return Qnil; }
30
34
 
31
- return Nokogiri_wrap_element_content(
32
- rb_funcall(self, id_document, 0),
33
- node->content
34
- );
35
+ return noko_xml_element_content_wrap(
36
+ rb_funcall(self, id_document, 0),
37
+ node->content
38
+ );
35
39
  }
36
40
 
37
41
  /*
@@ -40,30 +44,26 @@ static VALUE content(VALUE self)
40
44
  *
41
45
  * The namespace prefix for this ElementDecl
42
46
  */
43
- static VALUE prefix(VALUE self)
47
+ static VALUE
48
+ prefix(VALUE self)
44
49
  {
45
50
  xmlElementPtr node;
46
51
  Data_Get_Struct(self, xmlElement, node);
47
52
 
48
- if(!node->prefix) return Qnil;
53
+ if (!node->prefix) { return Qnil; }
49
54
 
50
55
  return NOKOGIRI_STR_NEW2(node->prefix);
51
56
  }
52
57
 
53
- VALUE cNokogiriXmlElementDecl;
54
-
55
- void init_xml_element_decl()
58
+ void
59
+ noko_init_xml_element_decl()
56
60
  {
57
- VALUE nokogiri = rb_define_module("Nokogiri");
58
- VALUE xml = rb_define_module_under(nokogiri, "XML");
59
- VALUE node = rb_define_class_under(xml, "Node", rb_cObject);
60
- VALUE klass = rb_define_class_under(xml, "ElementDecl", node);
61
-
62
- cNokogiriXmlElementDecl = klass;
61
+ assert(cNokogiriXmlNode);
62
+ cNokogiriXmlElementDecl = rb_define_class_under(mNokogiriXml, "ElementDecl", cNokogiriXmlNode);
63
63
 
64
- rb_define_method(klass, "element_type", element_type, 0);
65
- rb_define_method(klass, "content", content, 0);
66
- rb_define_method(klass, "prefix", prefix, 0);
64
+ rb_define_method(cNokogiriXmlElementDecl, "element_type", element_type, 0);
65
+ rb_define_method(cNokogiriXmlElementDecl, "content", content, 0);
66
+ rb_define_method(cNokogiriXmlElementDecl, "prefix", prefix, 0);
67
67
 
68
68
  id_document = rb_intern("document");
69
69
  }
@@ -1,63 +1,84 @@
1
- #include <xml_encoding_handler.h>
1
+ #include <nokogiri.h>
2
+
3
+ VALUE cNokogiriEncodingHandler;
4
+
5
+
6
+ static void
7
+ _xml_encoding_handler_dealloc(xmlCharEncodingHandlerPtr c_handler)
8
+ {
9
+ /* make sure iconv handlers are cleaned up and freed */
10
+ xmlCharEncCloseFunc(c_handler);
11
+ }
12
+
2
13
 
3
14
  /*
4
15
  * call-seq: Nokogiri::EncodingHandler.[](name)
5
16
  *
6
17
  * Get the encoding handler for +name+
7
18
  */
8
- static VALUE get(VALUE klass, VALUE key)
19
+ static VALUE
20
+ rb_xml_encoding_handler_s_get(VALUE klass, VALUE key)
9
21
  {
10
22
  xmlCharEncodingHandlerPtr handler;
11
23
 
12
- handler = xmlFindCharEncodingHandler(StringValuePtr(key));
13
- if(handler)
14
- return Data_Wrap_Struct(klass, NULL, NULL, handler);
24
+ handler = xmlFindCharEncodingHandler(StringValueCStr(key));
25
+ if (handler) {
26
+ return Data_Wrap_Struct(klass, NULL, _xml_encoding_handler_dealloc, handler);
27
+ }
15
28
 
16
29
  return Qnil;
17
30
  }
18
31
 
32
+
19
33
  /*
20
34
  * call-seq: Nokogiri::EncodingHandler.delete(name)
21
35
  *
22
36
  * Delete the encoding alias named +name+
23
37
  */
24
- static VALUE delete(VALUE klass, VALUE name)
38
+ static VALUE
39
+ rb_xml_encoding_handler_s_delete(VALUE klass, VALUE name)
25
40
  {
26
- if(xmlDelEncodingAlias(StringValuePtr(name))) return Qnil;
41
+ if (xmlDelEncodingAlias(StringValueCStr(name))) { return Qnil; }
27
42
 
28
43
  return Qtrue;
29
44
  }
30
45
 
46
+
31
47
  /*
32
48
  * call-seq: Nokogiri::EncodingHandler.alias(from, to)
33
49
  *
34
50
  * Alias encoding handler with name +from+ to name +to+
35
51
  */
36
- static VALUE alias(VALUE klass, VALUE from, VALUE to)
52
+ static VALUE
53
+ rb_xml_encoding_handler_s_alias(VALUE klass, VALUE from, VALUE to)
37
54
  {
38
- xmlAddEncodingAlias(StringValuePtr(from), StringValuePtr(to));
55
+ xmlAddEncodingAlias(StringValueCStr(from), StringValueCStr(to));
39
56
 
40
57
  return to;
41
58
  }
42
59
 
60
+
43
61
  /*
44
62
  * call-seq: Nokogiri::EncodingHandler.clear_aliases!
45
63
  *
46
64
  * Remove all encoding aliases.
47
65
  */
48
- static VALUE clear_aliases(VALUE klass)
66
+ static VALUE
67
+ rb_xml_encoding_handler_s_clear_aliases(VALUE klass)
49
68
  {
50
69
  xmlCleanupEncodingAliases();
51
70
 
52
71
  return klass;
53
72
  }
54
73
 
74
+
55
75
  /*
56
76
  * call-seq: name
57
77
  *
58
78
  * Get the name of this EncodingHandler
59
79
  */
60
- static VALUE name(VALUE self)
80
+ static VALUE
81
+ rb_xml_encoding_handler_name(VALUE self)
61
82
  {
62
83
  xmlCharEncodingHandlerPtr handler;
63
84
 
@@ -66,14 +87,18 @@ static VALUE name(VALUE self)
66
87
  return NOKOGIRI_STR_NEW2(handler->name);
67
88
  }
68
89
 
69
- void init_xml_encoding_handler()
90
+
91
+ void
92
+ noko_init_xml_encoding_handler()
70
93
  {
71
- VALUE nokogiri = rb_define_module("Nokogiri");
72
- VALUE klass = rb_define_class_under(nokogiri, "EncodingHandler", rb_cObject);
73
-
74
- rb_define_singleton_method(klass, "[]", get, 1);
75
- rb_define_singleton_method(klass, "delete", delete, 1);
76
- rb_define_singleton_method(klass, "alias", alias, 2);
77
- rb_define_singleton_method(klass, "clear_aliases!", clear_aliases, 0);
78
- rb_define_method(klass, "name", name, 0);
94
+ cNokogiriEncodingHandler = rb_define_class_under(mNokogiri, "EncodingHandler", rb_cObject);
95
+
96
+ rb_undef_alloc_func(cNokogiriEncodingHandler);
97
+
98
+ rb_define_singleton_method(cNokogiriEncodingHandler, "[]", rb_xml_encoding_handler_s_get, 1);
99
+ rb_define_singleton_method(cNokogiriEncodingHandler, "delete", rb_xml_encoding_handler_s_delete, 1);
100
+ rb_define_singleton_method(cNokogiriEncodingHandler, "alias", rb_xml_encoding_handler_s_alias, 2);
101
+ rb_define_singleton_method(cNokogiriEncodingHandler, "clear_aliases!", rb_xml_encoding_handler_s_clear_aliases, 0);
102
+
103
+ rb_define_method(cNokogiriEncodingHandler, "name", rb_xml_encoding_handler_name, 0);
79
104
  }