nokogiri-maglev- 1.5.0.1

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 (225) hide show
  1. data/.autotest +26 -0
  2. data/.gemtest +0 -0
  3. data/CHANGELOG.ja.rdoc +544 -0
  4. data/CHANGELOG.rdoc +532 -0
  5. data/Manifest.txt +283 -0
  6. data/README.ja.rdoc +106 -0
  7. data/README.rdoc +174 -0
  8. data/Rakefile +171 -0
  9. data/bin/nokogiri +53 -0
  10. data/ext/nokogiri/depend +358 -0
  11. data/ext/nokogiri/extconf.rb +124 -0
  12. data/ext/nokogiri/html_document.c +154 -0
  13. data/ext/nokogiri/html_document.h +10 -0
  14. data/ext/nokogiri/html_element_description.c +276 -0
  15. data/ext/nokogiri/html_element_description.h +10 -0
  16. data/ext/nokogiri/html_entity_lookup.c +32 -0
  17. data/ext/nokogiri/html_entity_lookup.h +8 -0
  18. data/ext/nokogiri/html_sax_parser_context.c +94 -0
  19. data/ext/nokogiri/html_sax_parser_context.h +11 -0
  20. data/ext/nokogiri/nokogiri.c +115 -0
  21. data/ext/nokogiri/nokogiri.h +160 -0
  22. data/ext/nokogiri/st.c +576 -0
  23. data/ext/nokogiri/xml_attr.c +94 -0
  24. data/ext/nokogiri/xml_attr.h +9 -0
  25. data/ext/nokogiri/xml_attribute_decl.c +70 -0
  26. data/ext/nokogiri/xml_attribute_decl.h +9 -0
  27. data/ext/nokogiri/xml_cdata.c +56 -0
  28. data/ext/nokogiri/xml_cdata.h +9 -0
  29. data/ext/nokogiri/xml_comment.c +54 -0
  30. data/ext/nokogiri/xml_comment.h +9 -0
  31. data/ext/nokogiri/xml_document.c +478 -0
  32. data/ext/nokogiri/xml_document.h +23 -0
  33. data/ext/nokogiri/xml_document_fragment.c +48 -0
  34. data/ext/nokogiri/xml_document_fragment.h +10 -0
  35. data/ext/nokogiri/xml_dtd.c +202 -0
  36. data/ext/nokogiri/xml_dtd.h +10 -0
  37. data/ext/nokogiri/xml_element_content.c +123 -0
  38. data/ext/nokogiri/xml_element_content.h +10 -0
  39. data/ext/nokogiri/xml_element_decl.c +69 -0
  40. data/ext/nokogiri/xml_element_decl.h +9 -0
  41. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  42. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  43. data/ext/nokogiri/xml_entity_decl.c +110 -0
  44. data/ext/nokogiri/xml_entity_decl.h +10 -0
  45. data/ext/nokogiri/xml_entity_reference.c +52 -0
  46. data/ext/nokogiri/xml_entity_reference.h +9 -0
  47. data/ext/nokogiri/xml_io.c +56 -0
  48. data/ext/nokogiri/xml_io.h +11 -0
  49. data/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  50. data/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  51. data/ext/nokogiri/xml_namespace.c +84 -0
  52. data/ext/nokogiri/xml_namespace.h +13 -0
  53. data/ext/nokogiri/xml_node.c +1397 -0
  54. data/ext/nokogiri/xml_node.h +13 -0
  55. data/ext/nokogiri/xml_node_set.c +418 -0
  56. data/ext/nokogiri/xml_node_set.h +9 -0
  57. data/ext/nokogiri/xml_processing_instruction.c +56 -0
  58. data/ext/nokogiri/xml_processing_instruction.h +9 -0
  59. data/ext/nokogiri/xml_reader.c +684 -0
  60. data/ext/nokogiri/xml_reader.h +10 -0
  61. data/ext/nokogiri/xml_relax_ng.c +162 -0
  62. data/ext/nokogiri/xml_relax_ng.h +9 -0
  63. data/ext/nokogiri/xml_sax_parser.c +293 -0
  64. data/ext/nokogiri/xml_sax_parser.h +39 -0
  65. data/ext/nokogiri/xml_sax_parser_context.c +199 -0
  66. data/ext/nokogiri/xml_sax_parser_context.h +10 -0
  67. data/ext/nokogiri/xml_sax_push_parser.c +115 -0
  68. data/ext/nokogiri/xml_sax_push_parser.h +9 -0
  69. data/ext/nokogiri/xml_schema.c +205 -0
  70. data/ext/nokogiri/xml_schema.h +9 -0
  71. data/ext/nokogiri/xml_syntax_error.c +58 -0
  72. data/ext/nokogiri/xml_syntax_error.h +13 -0
  73. data/ext/nokogiri/xml_text.c +50 -0
  74. data/ext/nokogiri/xml_text.h +9 -0
  75. data/ext/nokogiri/xml_xpath_context.c +315 -0
  76. data/ext/nokogiri/xml_xpath_context.h +9 -0
  77. data/ext/nokogiri/xslt_stylesheet.c +265 -0
  78. data/ext/nokogiri/xslt_stylesheet.h +9 -0
  79. data/lib/nokogiri.rb +127 -0
  80. data/lib/nokogiri/css.rb +27 -0
  81. data/lib/nokogiri/css/node.rb +99 -0
  82. data/lib/nokogiri/css/parser.rb +677 -0
  83. data/lib/nokogiri/css/parser.y +237 -0
  84. data/lib/nokogiri/css/parser_extras.rb +91 -0
  85. data/lib/nokogiri/css/syntax_error.rb +7 -0
  86. data/lib/nokogiri/css/tokenizer.rb +152 -0
  87. data/lib/nokogiri/css/tokenizer.rex +55 -0
  88. data/lib/nokogiri/css/xpath_visitor.rb +171 -0
  89. data/lib/nokogiri/decorators/slop.rb +35 -0
  90. data/lib/nokogiri/html.rb +36 -0
  91. data/lib/nokogiri/html/builder.rb +35 -0
  92. data/lib/nokogiri/html/document.rb +213 -0
  93. data/lib/nokogiri/html/document_fragment.rb +41 -0
  94. data/lib/nokogiri/html/element_description.rb +23 -0
  95. data/lib/nokogiri/html/element_description_defaults.rb +671 -0
  96. data/lib/nokogiri/html/entity_lookup.rb +13 -0
  97. data/lib/nokogiri/html/sax/parser.rb +52 -0
  98. data/lib/nokogiri/html/sax/parser_context.rb +16 -0
  99. data/lib/nokogiri/syntax_error.rb +4 -0
  100. data/lib/nokogiri/version.rb +88 -0
  101. data/lib/nokogiri/xml.rb +67 -0
  102. data/lib/nokogiri/xml/attr.rb +14 -0
  103. data/lib/nokogiri/xml/attribute_decl.rb +18 -0
  104. data/lib/nokogiri/xml/builder.rb +426 -0
  105. data/lib/nokogiri/xml/cdata.rb +11 -0
  106. data/lib/nokogiri/xml/character_data.rb +7 -0
  107. data/lib/nokogiri/xml/document.rb +234 -0
  108. data/lib/nokogiri/xml/document_fragment.rb +98 -0
  109. data/lib/nokogiri/xml/dtd.rb +22 -0
  110. data/lib/nokogiri/xml/element_content.rb +36 -0
  111. data/lib/nokogiri/xml/element_decl.rb +13 -0
  112. data/lib/nokogiri/xml/entity_decl.rb +19 -0
  113. data/lib/nokogiri/xml/namespace.rb +13 -0
  114. data/lib/nokogiri/xml/node.rb +915 -0
  115. data/lib/nokogiri/xml/node/save_options.rb +61 -0
  116. data/lib/nokogiri/xml/node_set.rb +357 -0
  117. data/lib/nokogiri/xml/notation.rb +6 -0
  118. data/lib/nokogiri/xml/parse_options.rb +93 -0
  119. data/lib/nokogiri/xml/pp.rb +2 -0
  120. data/lib/nokogiri/xml/pp/character_data.rb +18 -0
  121. data/lib/nokogiri/xml/pp/node.rb +56 -0
  122. data/lib/nokogiri/xml/processing_instruction.rb +8 -0
  123. data/lib/nokogiri/xml/reader.rb +112 -0
  124. data/lib/nokogiri/xml/relax_ng.rb +32 -0
  125. data/lib/nokogiri/xml/sax.rb +4 -0
  126. data/lib/nokogiri/xml/sax/document.rb +164 -0
  127. data/lib/nokogiri/xml/sax/parser.rb +115 -0
  128. data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  129. data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  130. data/lib/nokogiri/xml/schema.rb +63 -0
  131. data/lib/nokogiri/xml/syntax_error.rb +47 -0
  132. data/lib/nokogiri/xml/text.rb +9 -0
  133. data/lib/nokogiri/xml/xpath.rb +10 -0
  134. data/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
  135. data/lib/nokogiri/xml/xpath_context.rb +16 -0
  136. data/lib/nokogiri/xslt.rb +52 -0
  137. data/lib/nokogiri/xslt/stylesheet.rb +25 -0
  138. data/lib/xsd/xmlparser/nokogiri.rb +90 -0
  139. data/nokogiri_help_responses.md +40 -0
  140. data/tasks/cross_compile.rb +152 -0
  141. data/tasks/nokogiri.org.rb +18 -0
  142. data/tasks/test.rb +94 -0
  143. data/test/css/test_nthiness.rb +159 -0
  144. data/test/css/test_parser.rb +303 -0
  145. data/test/css/test_tokenizer.rb +198 -0
  146. data/test/css/test_xpath_visitor.rb +85 -0
  147. data/test/decorators/test_slop.rb +16 -0
  148. data/test/files/2ch.html +108 -0
  149. data/test/files/address_book.rlx +12 -0
  150. data/test/files/address_book.xml +10 -0
  151. data/test/files/bar/bar.xsd +4 -0
  152. data/test/files/dont_hurt_em_why.xml +422 -0
  153. data/test/files/encoding.html +82 -0
  154. data/test/files/encoding.xhtml +84 -0
  155. data/test/files/exslt.xml +8 -0
  156. data/test/files/exslt.xslt +35 -0
  157. data/test/files/foo/foo.xsd +4 -0
  158. data/test/files/metacharset.html +10 -0
  159. data/test/files/noencoding.html +47 -0
  160. data/test/files/po.xml +32 -0
  161. data/test/files/po.xsd +66 -0
  162. data/test/files/shift_jis.html +10 -0
  163. data/test/files/shift_jis.xml +5 -0
  164. data/test/files/snuggles.xml +3 -0
  165. data/test/files/staff.dtd +10 -0
  166. data/test/files/staff.xml +59 -0
  167. data/test/files/staff.xslt +32 -0
  168. data/test/files/tlm.html +850 -0
  169. data/test/files/valid_bar.xml +2 -0
  170. data/test/helper.rb +173 -0
  171. data/test/html/sax/test_parser.rb +139 -0
  172. data/test/html/sax/test_parser_context.rb +48 -0
  173. data/test/html/test_builder.rb +165 -0
  174. data/test/html/test_document.rb +472 -0
  175. data/test/html/test_document_encoding.rb +138 -0
  176. data/test/html/test_document_fragment.rb +255 -0
  177. data/test/html/test_element_description.rb +101 -0
  178. data/test/html/test_named_characters.rb +14 -0
  179. data/test/html/test_node.rb +193 -0
  180. data/test/html/test_node_encoding.rb +27 -0
  181. data/test/test_convert_xpath.rb +135 -0
  182. data/test/test_css_cache.rb +45 -0
  183. data/test/test_encoding_handler.rb +46 -0
  184. data/test/test_memory_leak.rb +72 -0
  185. data/test/test_nokogiri.rb +133 -0
  186. data/test/test_reader.rb +425 -0
  187. data/test/test_soap4r_sax.rb +52 -0
  188. data/test/test_xslt_transforms.rb +193 -0
  189. data/test/xml/node/test_save_options.rb +28 -0
  190. data/test/xml/node/test_subclass.rb +44 -0
  191. data/test/xml/sax/test_parser.rb +338 -0
  192. data/test/xml/sax/test_parser_context.rb +113 -0
  193. data/test/xml/sax/test_push_parser.rb +156 -0
  194. data/test/xml/test_attr.rb +65 -0
  195. data/test/xml/test_attribute_decl.rb +86 -0
  196. data/test/xml/test_builder.rb +227 -0
  197. data/test/xml/test_cdata.rb +50 -0
  198. data/test/xml/test_comment.rb +29 -0
  199. data/test/xml/test_document.rb +697 -0
  200. data/test/xml/test_document_encoding.rb +26 -0
  201. data/test/xml/test_document_fragment.rb +192 -0
  202. data/test/xml/test_dtd.rb +107 -0
  203. data/test/xml/test_dtd_encoding.rb +33 -0
  204. data/test/xml/test_element_content.rb +56 -0
  205. data/test/xml/test_element_decl.rb +73 -0
  206. data/test/xml/test_entity_decl.rb +122 -0
  207. data/test/xml/test_entity_reference.rb +21 -0
  208. data/test/xml/test_namespace.rb +70 -0
  209. data/test/xml/test_node.rb +917 -0
  210. data/test/xml/test_node_attributes.rb +34 -0
  211. data/test/xml/test_node_encoding.rb +107 -0
  212. data/test/xml/test_node_reparenting.rb +334 -0
  213. data/test/xml/test_node_set.rb +742 -0
  214. data/test/xml/test_parse_options.rb +52 -0
  215. data/test/xml/test_processing_instruction.rb +30 -0
  216. data/test/xml/test_reader_encoding.rb +126 -0
  217. data/test/xml/test_relax_ng.rb +60 -0
  218. data/test/xml/test_schema.rb +94 -0
  219. data/test/xml/test_syntax_error.rb +12 -0
  220. data/test/xml/test_text.rb +47 -0
  221. data/test/xml/test_unparented_node.rb +381 -0
  222. data/test/xml/test_xpath.rb +237 -0
  223. data/test/xslt/test_custom_functions.rb +94 -0
  224. data/test/xslt/test_exception_handling.rb +37 -0
  225. metadata +548 -0
data/CHANGELOG.rdoc ADDED
@@ -0,0 +1,532 @@
1
+ == 1.5.0 / 2011-07-01
2
+
3
+ * Notes
4
+
5
+ * See changelog from 1.4.7
6
+
7
+ * Features
8
+
9
+ * extracted sets of Node::SaveOptions into Node::SaveOptions::DEFAULT_{X,H,XH}TML (refactor)
10
+
11
+ * Bugfixes
12
+
13
+ * default output of XML on JRuby is no longer formatted due to
14
+ inconsistent whitespace handling. #415
15
+ * (JRuby) making empty NodeSets with null `nodes` member safe to operate on. #443
16
+ * Fix a bug in advanced encoding detection that leads to partially
17
+ duplicated document when parsing an HTML file with unknown
18
+ encoding.
19
+ * Add support for <meta charset="...">.
20
+
21
+ == 1.5.0 beta3 / 2010/12/02
22
+
23
+ * Notes
24
+
25
+ * JRuby performance tuning
26
+ * See changelog from 1.4.4
27
+
28
+ * Bugfixes
29
+
30
+ * Node#inner_text no longer returns nil. (JRuby) #264
31
+
32
+ == 1.5.0 beta2 / 2010/07/30
33
+
34
+ * Notes
35
+
36
+ * See changelog from 1.4.3
37
+
38
+ == 1.5.0 beta1 / 2010/05/22
39
+
40
+ * Notes
41
+
42
+ * JRuby support is provided by a new pure-java backend.
43
+
44
+ * Deprecations
45
+
46
+ * Ruby 1.8.6 is deprecated. Nokogiri will install, but official support is ended.
47
+ * LibXML 2.6.16 and earlier are deprecated. Nokogiri will refuse to install.
48
+ * FFI support is removed.
49
+
50
+ === 1.4.7 / 2011-07-01
51
+
52
+ * Bugfixes
53
+
54
+ * Fix a bug in advanced encoding detection that leads to partially
55
+ duplicated document when parsing an HTML file with unknown
56
+ encoding. Thanks, Timothy Elliott (@ender672)! #478
57
+
58
+ === 1.4.6 / 2011-06-19
59
+
60
+ * Notes
61
+
62
+ * This version is functionally identical to 1.4.5.
63
+ * Ruby 1.8.6 support has been restored.
64
+
65
+ === 1.4.5 / 2011-05-19
66
+
67
+ * New Features
68
+
69
+ * Nokogiri::HTML::Document#title accessor gets and sets the document title.
70
+ * extracted sets of Node::SaveOptions into Node::SaveOptions::DEFAULT_{X,H,XH}TML (refactor)
71
+ * Raise an exception if a string is passed to Nokogiri::XML::Schema#validate. #406
72
+
73
+ * Bugfixes
74
+
75
+ * Node#serialize-and-friends now accepts a SaveOption object as the, erm, save object.
76
+ * Nokogiri::CSS::Parser has-a Nokogiri::CSS::Tokenizer
77
+ * [JRUBY+FFI only] Weak references are now threadsafe. #355
78
+ * Make direct start_element() callback (currently used for
79
+ HTML::SAX::Parser) pass attributes in assoc array, just as
80
+ emulated start_element() callback does. rel. #356
81
+ * HTML::SAX::Parser should call back a block given to parse*() if any, just as XML::SAX::Parser does.
82
+ * Add further encoding detection to HTML parser that libxml2 does not do.
83
+ * Document#remove_namespaces! now handles attributes with namespaces. #396
84
+ * XSLT::Stylesheet#transform no longer segfaults when handed a non-XML::Document. #452
85
+ * XML::Reader no longer segfaults when under GC pressure. #439
86
+
87
+ === 1.4.4 / 2010-11-15
88
+
89
+ * New Features
90
+
91
+ * XML::Node#children= sets the node's inner html (much like #inner_html=), but returns the reparent node(s).
92
+ * XSLT supports function extensions. #336
93
+ * XPath bind parameter substitution. #329
94
+ * XML::Reader node type constants. #369
95
+ * SAX Parser context provides line and column information
96
+
97
+ * Bugfixes
98
+
99
+ * XML::DTD#attributes returns an empty hash instead of nil when there are no attributes.
100
+ * XML::DTD#{keys,each} now work as expected. #324
101
+ * {XML,HTML}::DocumentFragment.{new,parse} no longer strip leading and trailing whitespace. #319
102
+ * XML::Node#{add_child,add_previous_sibling,add_next_sibling,replace} return a NodeSet when passed a string.
103
+ * Unclosed tags parsed more robustly in fragments. #315
104
+ * XML::Node#{replace,add_previous_sibling,add_next_sibling} edge cases fixed related to libxml's text node merging. #308
105
+ * Fixed a segfault when GC occurs during xpath handler argument marshalling. #345
106
+ * Added hack to Slop decorator to work with previously defined methods. #330
107
+ * Fix a memory leak when duplicating child nodes. #353
108
+ * Fixed off-by-one bug with nth-last-{child,of-type} CSS selectors when NOT using an+b notation. #354
109
+ * Fixed passing of non-namespace attributes to SAX::Document#start_element. #356
110
+ * Workaround for libxml2 in-context parsing bug. #362
111
+ * Fixed NodeSet#wrap on nodes within a fragment. #331
112
+
113
+ === 1.4.3 / 2010/07/28
114
+
115
+ * New Features
116
+
117
+ * XML::Reader#empty_element? returns true for empty elements. #262
118
+ * Node#remove_namespaces! now removes namespace *declarations* as well. #294
119
+ * NodeSet#at_xpath, NodeSet#at_css and NodeSet#> do what the corresponding
120
+ methods of Node do.
121
+
122
+ * Bugfixes
123
+
124
+ * XML::NodeSet#{include?,delete,push} accept an XML::Namespace
125
+ * XML::Document#parse added for parsing in the context of a document
126
+ * XML::DocumentFragment#inner_html= works with contextual parsing! #298, #281
127
+ * lib/nokogiri/css/parser.y Combined CSS functions + pseudo selectors fixed
128
+ * Reparenting text nodes is safe, even when the operation frees adjacent merged nodes. #283
129
+ * Fixed libxml2 versionitis issue with xmlFirstElementChild et al. #303
130
+ * XML::Attr#add_namespace now works as expected. #252
131
+ * HTML::DocumentFragment uses the string's encoding. #305
132
+ * Fix the CSS3 selector translation rule for the general sibling combinator
133
+ (a.k.a. preceding selector) that incorrectly converted "E ~ F G" to
134
+ "//F//G[preceding-sibling::E]".
135
+
136
+ === 1.4.2 / 2010/05/22
137
+
138
+ * New Features
139
+
140
+ * XML::Node#parse will parse XML or HTML fragments with respect to the
141
+ context node.
142
+ * XML::Node#namespaces returns all namespaces defined in the node and all
143
+ ancestor nodes
144
+ (previously did not return ancestors' namespace definitions).
145
+ * Added Enumerable to XML::Node
146
+ * Nokogiri::XML::Schema#validate now uses xmlSchemaValidateFile if a
147
+ filename is passed, which is faster and more memory-efficient. GH #219
148
+ * XML::Document#create_entity will create new EntityDecl objects. GH #174
149
+ * JRuby FFI implementation no longer uses ObjectSpace._id2ref,
150
+ instead using Charles Nutter's rocking Weakling gem.
151
+ * Nokogiri::XML::Node#first_element_child fetch the first child node that is
152
+ an ELEMENT node.
153
+ * Nokogiri::XML::Node#last_element_child fetch the last child node that is
154
+ an ELEMENT node.
155
+ * Nokogiri::XML::Node#elements fetch all children nodes that are ELEMENT
156
+ nodes.
157
+ * Nokogiri::XML::Node#add_child, #add_previous_sibling, #before,
158
+ #add_next_sibling, #after, #inner_html, #swap and #replace all now
159
+ accept a Node, DocumentFragment, NodeSet, or a string containing
160
+ markup.
161
+ * Node#fragment? indicates whether a node is a DocumentFragment.
162
+
163
+ * Bugfixes
164
+
165
+ * XML::NodeSet is now always decorated (if the document has decorators).
166
+ GH #198
167
+ * XML::NodeSet#slice gracefully handles offset+length larger than the set
168
+ length. GH #200
169
+ * XML::Node#content= safely unlinks previous content. GH #203
170
+ * XML::Node#namespace= takes nil as a parameter
171
+ * XML::Node#xpath returns things other than NodeSet objects. GH #208
172
+ * XSLT::StyleSheet#transform accepts hashes for parameters. GH #223
173
+ * Psuedo selectors inside not() work. GH #205
174
+ * XML::Builder doesn't break when nodes are unlinked.
175
+ Thanks to vihai! GH #228
176
+ * Encoding can be forced on the SAX parser. Thanks Eugene Pimenov! GH #204
177
+ * XML::DocumentFragment uses XML::Node#parse to determine children.
178
+ * Fixed a memory leak in xml reader. Thanks sdor! GH #244
179
+ * Node#replace returns the new child node as claimed in the
180
+ RDoc. Previously returned +self+.
181
+
182
+ * Notes
183
+
184
+ * The Windows gems now bundle DLLs for libxml 2.7.6 and libxslt
185
+ 1.1.26. Prior to this release, libxml 2.7.3 and libxslt 1.1.24
186
+ were bundled.
187
+
188
+ === 1.4.1 / 2009/12/10
189
+
190
+ * New Features
191
+
192
+ * Added Nokogiri::LIBXML_ICONV_ENABLED
193
+ * Alias Node#[] to Node#attr
194
+ * XML::Node#next_element added
195
+ * XML::Node#> added for searching a nodes immediate children
196
+ * XML::NodeSet#reverse added
197
+ * Added fragment support to Node#add_child, Node#add_next_sibling,
198
+ Node#add_previous_sibling, and Node#replace.
199
+ * XML::Node#previous_element implemented
200
+ * Rubinius support
201
+ * Ths CSS selector engine now supports :has()
202
+ * XML::NodeSet#filter() was added
203
+ * XML::Node.next= and .previous= are aliases for add_next_sibling and add_previous_sibling. GH #183
204
+
205
+ * Bugfixes
206
+
207
+ * XML fragments with namespaces do not raise an exception (regression in 1.4.0)
208
+ * Node#matches? works in nodes contained by a DocumentFragment. GH #158
209
+ * Document should not define add_namespace() method. GH #169
210
+ * XPath queries returning namespace declarations do not segfault.
211
+ * Node#replace works with nodes from different documents. GH #162
212
+ * Adding XML::Document#collect_namespaces
213
+ * Fixed bugs in the SOAP4R adapter
214
+ * Fixed bug in XML::Node#next_element for certain edge cases
215
+ * Fixed load path issue with JRuby under Windows. GH #160.
216
+ * XSLT#apply_to will honor the "output method". Thanks richardlehane!
217
+ * Fragments containing leading text nodes with newlines now parse properly. GH #178.
218
+
219
+ === 1.4.0 / 2009/10/30
220
+
221
+ * Happy Birthday!
222
+
223
+ * New Features
224
+
225
+ * Node#at_xpath returns the first element of the NodeSet matching the XPath
226
+ expression.
227
+ * Node#at_css returns the first element of the NodeSet matching the CSS
228
+ selector.
229
+ * NodeSet#| for unions GH #119 (Thanks Serabe!)
230
+ * NodeSet#inspect makes prettier output
231
+ * Node#inspect implemented for more rubyish document inspecting
232
+ * Added XML::DTD#external_id
233
+ * Added XML::DTD#system_id
234
+ * Added XML::ElementContent for DTD Element content validity
235
+ * Better namespace declaration support in Nokogiri::XML::Builder
236
+ * Added XML::Node#external_subset
237
+ * Added XML::Node#create_external_subset
238
+ * Added XML::Node#create_internal_subset
239
+ * XML Builder can append raw strings (GH #141, patch from dudleyf)
240
+ * XML::SAX::ParserContext added
241
+ * XML::Document#remove_namespaces! for the namespace-impaired
242
+
243
+ * Bugfixes
244
+
245
+ * returns nil when HTML documents do not declare a meta encoding tag. GH #115
246
+ * Uses RbConfig::CONFIG['host_os'] to adjust ENV['PATH'] GH #113
247
+ * NodeSet#search is more efficient GH #119 (Thanks Serabe!)
248
+ * NodeSet#xpath handles custom xpath functions
249
+ * Fixing a SEGV when XML::Reader gets attributes for current node
250
+ * Node#inner_html takes the same arguments as Node#to_html GH #117
251
+ * DocumentFragment#css delegates to it's child nodes GH #123
252
+ * NodeSet#[] works with slices larger than NodeSet#length GH #131
253
+ * Reparented nodes maintain their namespace. GH #134
254
+ * Fixed SEGV when adding an XML::Document to NodeSet
255
+ * XML::SyntaxError can be duplicated. GH #148
256
+
257
+ * Deprecations
258
+
259
+ * Hpricot compatibility layer removed
260
+
261
+ === 1.3.3 / 2009/07/26
262
+
263
+ * New Features
264
+
265
+ * NodeSet#children returns all children of all nodes
266
+
267
+ * Bugfixes
268
+
269
+ * Override libxml-ruby's global error handler
270
+ * ParseOption#strict fixed
271
+ * Fixed a segfault when sending an empty string to Node#inner_html= GH #88
272
+ * String encoding is now set to UTF-8 in Ruby 1.9
273
+ * Fixed a segfault when moving root nodes between documents. GH #91
274
+ * Fixed an O(n) penalty on node creation. GH #101
275
+ * Allowing XML documents to be output as HTML documents
276
+
277
+ * Deprecations
278
+
279
+ * Hpricot compatibility layer will be removed in 1.4.0
280
+
281
+ === 1.3.2 / 2009-06-22
282
+
283
+ * New Features
284
+
285
+ * Nokogiri::XML::DTD#validate will validate your document
286
+
287
+ * Bugfixes
288
+
289
+ * Nokogiri::XML::NodeSet#search will search top level nodes. GH #73
290
+ * Removed namespace related methods from Nokogiri::XML::Document
291
+ * Fixed a segfault when a namespace was added twice
292
+ * Made nokogiri work with Snow Leopard GH #79
293
+ * Mailing list has moved to: http://groups.google.com/group/nokogiri-talk
294
+ * HTML fragments now correctly handle comments and CDATA blocks. GH #78
295
+ * Nokogiri::XML::Document#clone is now an alias of dup
296
+
297
+ * Deprecations
298
+
299
+ * Nokogiri::XML::SAX::Document#start_element_ns is deprecated, please switch
300
+ to Nokogiri::XML::SAX::Document#start_element_namespace
301
+ * Nokogiri::XML::SAX::Document#end_element_ns is deprecated, please switch
302
+ to Nokogiri::XML::SAX::Document#end_element_namespace
303
+
304
+ === 1.3.1 / 2009-06-07
305
+
306
+ * Bugfixes
307
+
308
+ * extconf.rb checks for optional RelaxNG and Schema functions
309
+ * Namespace nodes are added to the Document node cache
310
+
311
+ === 1.3.0 / 2009-05-30
312
+
313
+ * New Features
314
+
315
+ * Builder changes scope based on block arity
316
+ * Builder supports methods ending in underscore similar to tagz
317
+ * Nokogiri::XML::Node#<=> compares nodes based on Document position
318
+ * Nokogiri::XML::Node#matches? returns true if Node can be found with
319
+ given selector.
320
+ * Nokogiri::XML::Node#ancestors now returns an Nokogiri::XML::NodeSet
321
+ * Nokogiri::XML::Node#ancestors will match parents against optional selector
322
+ * Nokogiri::HTML::Document#meta_encoding for getting the meta encoding
323
+ * Nokogiri::HTML::Document#meta_encoding= for setting the meta encoding
324
+ * Nokogiri::XML::Document#encoding= to set the document encoding
325
+ * Nokogiri::XML::Schema for validating documents against XSD schema
326
+ * Nokogiri::XML::RelaxNG for validating documents against RelaxNG schema
327
+ * Nokogiri::HTML::ElementDescription for fetching HTML element descriptions
328
+ * Nokogiri::XML::Node#description to fetch the node description
329
+ * Nokogiri::XML::Node#accept implements Visitor pattern
330
+ * bin/nokogiri for easily examining documents (Thanks Yutaka HARA!)
331
+ * Nokogiri::XML::NodeSet now supports more Array and Enumerable operators:
332
+ index, delete, slice, - (difference), + (concatenation), & (intersection),
333
+ push, pop, shift, ==
334
+ * Nokogiri.XML, Nokogiri.HTML take blocks that receive
335
+ Nokogiri::XML::ParseOptions objects
336
+ * Nokogiri::XML::Node#namespace returns a Nokogiri::XML::Namespace
337
+ * Nokogiri::XML::Node#namespace= for setting a node's namespace
338
+ * Nokogiri::XML::DocumentFragment and Nokogiri::HTML::DocumentFragment
339
+ have a sensible API and a more robust implementation.
340
+ * JRuby 1.3.0 support via FFI.
341
+
342
+ * Bugfixes
343
+
344
+ * Fixed a problem with nil passed to CDATA constructor
345
+ * Fragment method deals with regular expression characters
346
+ (Thanks Joel!) LH #73
347
+ * Fixing builder scope issues LH #61, LH #74, LH #70
348
+ * Fixed a problem when adding a child could remove the child namespace LH#78
349
+ * Fixed bug with unlinking a node then reparenting it. (GH#22)
350
+ * Fixed failure to catch errors during XSLT parsing (GH#32)
351
+ * Fixed a bug with attribute conditions in CSS selectors (GH#36)
352
+ * Fixed intolerance of HTML attributes without values in Node#before/after/inner_html=. (GH#35)
353
+
354
+ === 1.2.3 / 2009-03-22
355
+
356
+ * Bugfixes
357
+
358
+ * Fixing bug where a node is passed in to Node#new
359
+ * Namespace should be assigned on DocumentFragment creation. LH #66
360
+ * Nokogiri::XML::NodeSet#dup works GH #10
361
+ * Nokogiri::HTML returns an empty Document when given a blank string GH#11
362
+ * Adding a child will remove duplicate namespace declarations LH #67
363
+ * Builder methods take a hash as a second argument
364
+
365
+ === 1.2.2 / 2009-03-14
366
+
367
+ * New features
368
+
369
+ * Nokogiri may be used with soap4r. See XSD::XMLParser::Nokogiri
370
+ * Nokogiri::XML::Node#inner_html= to set the inner html for a node
371
+ * Nokogiri builder interface improvements
372
+ * Nokogiri::XML::Node#swap swaps html for current node (LH #50)
373
+
374
+ * Bugfixes
375
+
376
+ * Fixed a tag nesting problem in the Builder API (LH #41)
377
+ * Nokogiri::HTML.fragment will properly handle text only nodes (LH #43)
378
+ * Nokogiri::XML::Node#before will prepend text nodes (LH #44)
379
+ * Nokogiri::XML::Node#after will append text nodes
380
+ * Nokogiri::XML::Node#search automatically registers root namepsaces (LH #42)
381
+ * Nokogiri::XML::NodeSet#search automatically registers namespaces
382
+ * Nokogiri::HTML::NamedCharacters delegates to libxml2
383
+ * Nokogiri::XML::Node#[] can take a symbol (LH #48)
384
+ * vasprintf for windows updated. Thanks Geoffroy Couprie!
385
+ * Nokogiri::XML::Node#[]= should not encode entities (LH #55)
386
+ * Namespaces should be copied to reparented nodes (LH #56)
387
+ * Nokogiri uses encoding set on the string for default in Ruby 1.9
388
+ * Document#dup should create a new document of the same type (LH #59)
389
+ * Document should not have a parent method (LH #64)
390
+
391
+ === 1.2.1 / 2009-02-23
392
+
393
+ * Bugfixes
394
+
395
+ * Fixed a CSS selector space bug
396
+ * Fixed Ruby 1.9 String Encoding (Thanks 角谷さん!)
397
+
398
+ === 1.2.0 / 2009-02-22
399
+
400
+ * New features
401
+
402
+ * CSS search now supports CSS3 namespace queries
403
+ * Namespaces on the root node are automatically registered
404
+ * CSS queries use the default namespace
405
+ * Nokogiri::XML::Document#encoding get encoding used for this document
406
+ * Nokogiri::XML::Document#url get the document url
407
+ * Nokogiri::XML::Node#add_namespace add a namespace to the node LH#38
408
+ * Nokogiri::XML::Node#each iterate over attribute name, value pairs
409
+ * Nokogiri::XML::Node#keys get all attribute names
410
+ * Nokogiri::XML::Node#line get the line number for a node (Thanks Dirkjan Bussink!)
411
+ * Nokogiri::XML::Node#serialize now takes an optional encoding parameter
412
+ * Nokogiri::XML::Node#to_html, to_xml, and to_xhtml take an optional encoding
413
+ * Nokogiri::XML::Node#to_str
414
+ * Nokogiri::XML::Node#to_xhtml to produce XHTML documents
415
+ * Nokogiri::XML::Node#values get all attribute values
416
+ * Nokogiri::XML::Node#write_to writes the node to an IO object with optional encoding
417
+ * Nokogiri::XML::ProcessingInstrunction.new
418
+ * Nokogiri::XML::SAX::PushParser for all your push parsing needs.
419
+
420
+ * Bugfixes
421
+
422
+ * Fixed Nokogiri::XML::Document#dup
423
+ * Fixed header detection. Thanks rubikitch!
424
+ * Fixed a problem where invalid CSS would cause the parser to hang
425
+
426
+ * Deprecations
427
+
428
+ * Nokogiri::XML::Node.new_from_str will be deprecated in 1.3.0
429
+
430
+ * API Changes
431
+
432
+ * Nokogiri::HTML.fragment now returns an XML::DocumentFragment (LH #32)
433
+
434
+ === 1.1.1
435
+
436
+ * New features
437
+
438
+ * Added XML::Node#elem?
439
+ * Added XML::Node#attribute_nodes
440
+ * Added XML::Attr
441
+ * XML::Node#delete added.
442
+ * XML::NodeSet#inner_html added.
443
+
444
+ * Bugfixes
445
+
446
+ * Not including an HTML entity for \r for HTML nodes.
447
+ * Removed CSS::SelectorHandler and XML::XPathHandler
448
+ * XML::Node#attributes returns an Attr node for the value.
449
+ * XML::NodeSet implements to_xml
450
+
451
+ === 1.1.0
452
+
453
+ * New Features
454
+
455
+ * Custom XPath functions are now supported. See Nokogiri::XML::Node#xpath
456
+ * Custom CSS pseudo classes are now supported. See Nokogiri::XML::Node#css
457
+ * Nokogiri::XML::Node#<< will add a child to the current node
458
+
459
+ * Bugfixes
460
+
461
+ * Mutex lock on CSS cache access
462
+ * Fixed build problems with GCC 3.3.5
463
+ * XML::Node#to_xml now takes an indentation argument
464
+ * XML::Node#dup takes an optional depth argument
465
+ * XML::Node#add_previous_sibling returns new sibling node.
466
+
467
+ === 1.0.7
468
+
469
+ * Bugfixes
470
+
471
+ * Fixed memory leak when using Dike
472
+ * SAX parser now parses IO streams
473
+ * Comment nodes have their own class
474
+ * Nokogiri() should delegate to Nokogiri.parse()
475
+ * Prepending rather than appending to ENV['PATH'] on windows
476
+ * Fixed a bug in complex CSS negation selectors
477
+
478
+ === 1.0.6
479
+
480
+ * 5 Bugfixes
481
+
482
+ * XPath Parser raises a SyntaxError on parse failure
483
+ * CSS Parser raises a SyntaxError on parse failure
484
+ * filter() and not() hpricot compatibility added
485
+ * CSS searches via Node#search are now always relative
486
+ * CSS to XPath conversion is now cached
487
+
488
+ === 1.0.5
489
+
490
+ * Bugfixes
491
+
492
+ * Added mailing list and ticket tracking information to the README.txt
493
+ * Sets ENV['PATH'] on windows if it doesn't exist
494
+ * Caching results of NodeSet#[] on Document
495
+
496
+ === 1.0.4
497
+
498
+ * Bugfixes
499
+
500
+ * Changed memory mangement from weak refs to document refs
501
+ * Plugged some memory leaks
502
+ * Builder blocks can call methods from surrounding contexts
503
+
504
+ === 1.0.3
505
+
506
+ * 5 Bugfixes
507
+
508
+ * NodeSet now implements to_ary
509
+ * XML::Document should not implement parent
510
+ * More GC Bugs fixed. (Mike is AWESOME!)
511
+ * Removed RARRAY_LEN for 1.8.5 compatibility. Thanks Shane Hanna.
512
+ * inner_html fixed. (Thanks Yehuda!)
513
+
514
+ === 1.0.2
515
+
516
+ * 1 Bugfix
517
+
518
+ * extconf.rb should not check for frex and racc
519
+
520
+ === 1.0.1
521
+
522
+ * 1 Bugfix
523
+
524
+ * Made sure extconf.rb searched libdir and prefix so that ports libxml/ruby
525
+ will link properly. Thanks lucsky!
526
+
527
+ === 1.0.0 / 2008-07-13
528
+
529
+ * 1 major enhancement
530
+
531
+ * Birthday!
532
+