rfeedparser 0.9.940 → 0.9.950

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 (1468) hide show
  1. data/LICENSE +0 -0
  2. data/README +50 -27
  3. data/RUBY-TESTING +6 -3
  4. data/lib/rfeedparser.rb +93 -92
  5. data/lib/rfeedparser/better_sgmlparser.rb +1 -1
  6. data/lib/rfeedparser/encoding_helpers.rb +15 -9
  7. data/lib/rfeedparser/expat_parser.rb +159 -0
  8. data/lib/rfeedparser/libxml_parser.rb +76 -0
  9. data/lib/rfeedparser/loose_feed_parser.rb +75 -0
  10. data/lib/rfeedparser/markup_helpers.rb +1 -1
  11. data/lib/rfeedparser/monkey_patches.rb +10 -0
  12. data/lib/rfeedparser/parser_mixin.rb +41 -10
  13. data/lib/rfeedparser/time_helpers.rb +3 -3
  14. data/lib/rfeedparser/utilities.rb +1 -1
  15. data/tests/illformed/atom10/atom10_namespace.xml +0 -0
  16. data/tests/illformed/atom10/atom10_version.xml +0 -0
  17. data/tests/illformed/atom10/entry_author_email.xml +0 -0
  18. data/tests/illformed/atom10/entry_author_map_author.xml +0 -0
  19. data/tests/illformed/atom10/entry_author_map_author_2.xml +0 -0
  20. data/tests/illformed/atom10/entry_author_name.xml +0 -0
  21. data/tests/illformed/atom10/entry_author_uri.xml +0 -0
  22. data/tests/illformed/atom10/entry_author_url.xml +0 -0
  23. data/tests/illformed/atom10/entry_category_label.xml +0 -0
  24. data/tests/illformed/atom10/entry_category_scheme.xml +0 -0
  25. data/tests/illformed/atom10/entry_category_term.xml +0 -0
  26. data/tests/illformed/atom10/entry_content_application_xml.xml +0 -0
  27. data/tests/illformed/atom10/entry_content_base64.xml +0 -0
  28. data/tests/illformed/atom10/entry_content_base64_2.xml +0 -0
  29. data/tests/illformed/atom10/entry_content_escaped_markup.xml +0 -0
  30. data/tests/illformed/atom10/entry_content_inline_markup.xml +0 -0
  31. data/tests/illformed/atom10/entry_content_inline_markup_2.xml +0 -0
  32. data/tests/illformed/atom10/entry_content_src.xml +0 -0
  33. data/tests/illformed/atom10/entry_content_text_plain.xml +0 -0
  34. data/tests/illformed/atom10/entry_content_text_plain_brackets.xml +0 -0
  35. data/tests/illformed/atom10/entry_content_type.xml +0 -0
  36. data/tests/illformed/atom10/entry_content_type_text.xml +0 -0
  37. data/tests/illformed/atom10/entry_content_value.xml +0 -0
  38. data/tests/illformed/atom10/entry_contributor_email.xml +0 -0
  39. data/tests/illformed/atom10/entry_contributor_multiple.xml +0 -0
  40. data/tests/illformed/atom10/entry_contributor_name.xml +0 -0
  41. data/tests/illformed/atom10/entry_contributor_uri.xml +0 -0
  42. data/tests/illformed/atom10/entry_contributor_url.xml +0 -0
  43. data/tests/illformed/atom10/entry_id.xml +0 -0
  44. data/tests/illformed/atom10/entry_id_map_guid.xml +0 -0
  45. data/tests/illformed/atom10/entry_id_no_normalization_1.xml +0 -0
  46. data/tests/illformed/atom10/entry_id_no_normalization_2.xml +0 -0
  47. data/tests/illformed/atom10/entry_id_no_normalization_3.xml +0 -0
  48. data/tests/illformed/atom10/entry_id_no_normalization_4.xml +0 -0
  49. data/tests/illformed/atom10/entry_id_no_normalization_5.xml +0 -0
  50. data/tests/illformed/atom10/entry_id_no_normalization_6.xml +0 -0
  51. data/tests/illformed/atom10/entry_id_no_normalization_7.xml +0 -0
  52. data/tests/illformed/atom10/entry_link_alternate_map_link.xml +0 -0
  53. data/tests/illformed/atom10/entry_link_alternate_map_link_2.xml +0 -0
  54. data/tests/illformed/atom10/entry_link_alternate_map_link_3.xml +0 -0
  55. data/tests/illformed/atom10/entry_link_href.xml +0 -0
  56. data/tests/illformed/atom10/entry_link_hreflang.xml +0 -0
  57. data/tests/illformed/atom10/entry_link_length.xml +0 -0
  58. data/tests/illformed/atom10/entry_link_multiple.xml +0 -0
  59. data/tests/illformed/atom10/entry_link_no_rel.xml +0 -0
  60. data/tests/illformed/atom10/entry_link_rel.xml +0 -0
  61. data/tests/illformed/atom10/entry_link_rel_enclosure.xml +0 -0
  62. data/tests/illformed/atom10/entry_link_rel_enclosure_map_enclosure_length.xml +0 -0
  63. data/tests/illformed/atom10/entry_link_rel_enclosure_map_enclosure_type.xml +0 -0
  64. data/tests/illformed/atom10/entry_link_rel_enclosure_map_enclosure_url.xml +0 -0
  65. data/tests/illformed/atom10/entry_link_rel_other.xml +0 -0
  66. data/tests/illformed/atom10/entry_link_rel_related.xml +0 -0
  67. data/tests/illformed/atom10/entry_link_rel_self.xml +0 -0
  68. data/tests/illformed/atom10/entry_link_rel_via.xml +0 -0
  69. data/tests/illformed/atom10/entry_link_title.xml +0 -0
  70. data/tests/illformed/atom10/entry_link_type.xml +0 -0
  71. data/tests/illformed/atom10/entry_rights.xml +0 -0
  72. data/tests/illformed/atom10/entry_rights_content_value.xml +0 -0
  73. data/tests/illformed/atom10/entry_rights_escaped_markup.xml +0 -0
  74. data/tests/illformed/atom10/entry_rights_inline_markup.xml +0 -0
  75. data/tests/illformed/atom10/entry_rights_inline_markup_2.xml +0 -0
  76. data/tests/illformed/atom10/entry_rights_text_plain.xml +0 -0
  77. data/tests/illformed/atom10/entry_rights_text_plain_brackets.xml +0 -0
  78. data/tests/illformed/atom10/entry_rights_type_default.xml +0 -0
  79. data/tests/illformed/atom10/entry_rights_type_text.xml +0 -0
  80. data/tests/illformed/atom10/entry_source_author_email.xml +0 -0
  81. data/tests/illformed/atom10/entry_source_author_map_author.xml +0 -0
  82. data/tests/illformed/atom10/entry_source_author_map_author_2.xml +0 -0
  83. data/tests/illformed/atom10/entry_source_author_name.xml +0 -0
  84. data/tests/illformed/atom10/entry_source_author_uri.xml +0 -0
  85. data/tests/illformed/atom10/entry_source_category_label.xml +0 -0
  86. data/tests/illformed/atom10/entry_source_category_scheme.xml +0 -0
  87. data/tests/illformed/atom10/entry_source_category_term.xml +0 -0
  88. data/tests/illformed/atom10/entry_source_contributor_email.xml +0 -0
  89. data/tests/illformed/atom10/entry_source_contributor_multiple.xml +0 -0
  90. data/tests/illformed/atom10/entry_source_contributor_name.xml +0 -0
  91. data/tests/illformed/atom10/entry_source_contributor_uri.xml +0 -0
  92. data/tests/illformed/atom10/entry_source_generator.xml +0 -0
  93. data/tests/illformed/atom10/entry_source_generator_name.xml +0 -0
  94. data/tests/illformed/atom10/entry_source_generator_uri.xml +0 -0
  95. data/tests/illformed/atom10/entry_source_generator_version.xml +0 -0
  96. data/tests/illformed/atom10/entry_source_icon.xml +0 -0
  97. data/tests/illformed/atom10/entry_source_id.xml +0 -0
  98. data/tests/illformed/atom10/entry_source_link_alternate_map_link.xml +0 -0
  99. data/tests/illformed/atom10/entry_source_link_alternate_map_link_2.xml +0 -0
  100. data/tests/illformed/atom10/entry_source_link_href.xml +0 -0
  101. data/tests/illformed/atom10/entry_source_link_hreflang.xml +0 -0
  102. data/tests/illformed/atom10/entry_source_link_length.xml +0 -0
  103. data/tests/illformed/atom10/entry_source_link_multiple.xml +0 -0
  104. data/tests/illformed/atom10/entry_source_link_no_rel.xml +0 -0
  105. data/tests/illformed/atom10/entry_source_link_rel.xml +0 -0
  106. data/tests/illformed/atom10/entry_source_link_rel_other.xml +0 -0
  107. data/tests/illformed/atom10/entry_source_link_rel_related.xml +0 -0
  108. data/tests/illformed/atom10/entry_source_link_rel_self.xml +0 -0
  109. data/tests/illformed/atom10/entry_source_link_rel_via.xml +0 -0
  110. data/tests/illformed/atom10/entry_source_link_title.xml +0 -0
  111. data/tests/illformed/atom10/entry_source_link_type.xml +0 -0
  112. data/tests/illformed/atom10/entry_source_logo.xml +0 -0
  113. data/tests/illformed/atom10/entry_source_rights.xml +0 -0
  114. data/tests/illformed/atom10/entry_source_rights_base64.xml +0 -0
  115. data/tests/illformed/atom10/entry_source_rights_base64_2.xml +0 -0
  116. data/tests/illformed/atom10/entry_source_rights_content_type.xml +0 -0
  117. data/tests/illformed/atom10/entry_source_rights_content_type_text.xml +0 -0
  118. data/tests/illformed/atom10/entry_source_rights_content_value.xml +0 -0
  119. data/tests/illformed/atom10/entry_source_rights_escaped_markup.xml +0 -0
  120. data/tests/illformed/atom10/entry_source_rights_inline_markup.xml +0 -0
  121. data/tests/illformed/atom10/entry_source_rights_inline_markup_2.xml +0 -0
  122. data/tests/illformed/atom10/entry_source_rights_text_plain.xml +0 -0
  123. data/tests/illformed/atom10/entry_source_subittle_content_type_text.xml +0 -0
  124. data/tests/illformed/atom10/entry_source_subtitle.xml +0 -0
  125. data/tests/illformed/atom10/entry_source_subtitle_base64.xml +0 -0
  126. data/tests/illformed/atom10/entry_source_subtitle_base64_2.xml +0 -0
  127. data/tests/illformed/atom10/entry_source_subtitle_content_type.xml +0 -0
  128. data/tests/illformed/atom10/entry_source_subtitle_content_value.xml +0 -0
  129. data/tests/illformed/atom10/entry_source_subtitle_escaped_markup.xml +0 -0
  130. data/tests/illformed/atom10/entry_source_subtitle_inline_markup.xml +0 -0
  131. data/tests/illformed/atom10/entry_source_subtitle_inline_markup_2.xml +0 -0
  132. data/tests/illformed/atom10/entry_source_subtitle_text_plain.xml +0 -0
  133. data/tests/illformed/atom10/entry_source_title.xml +0 -0
  134. data/tests/illformed/atom10/entry_source_title_base64.xml +0 -0
  135. data/tests/illformed/atom10/entry_source_title_base64_2.xml +0 -0
  136. data/tests/illformed/atom10/entry_source_title_content_type.xml +0 -0
  137. data/tests/illformed/atom10/entry_source_title_content_type_text.xml +0 -0
  138. data/tests/illformed/atom10/entry_source_title_content_value.xml +0 -0
  139. data/tests/illformed/atom10/entry_source_title_escaped_markup.xml +0 -0
  140. data/tests/illformed/atom10/entry_source_title_inline_markup.xml +0 -0
  141. data/tests/illformed/atom10/entry_source_title_inline_markup_2.xml +0 -0
  142. data/tests/illformed/atom10/entry_source_title_text_plain.xml +0 -0
  143. data/tests/illformed/atom10/entry_summary.xml +0 -0
  144. data/tests/illformed/atom10/entry_summary_base64.xml +0 -0
  145. data/tests/illformed/atom10/entry_summary_base64_2.xml +0 -0
  146. data/tests/illformed/atom10/entry_summary_content_value.xml +0 -0
  147. data/tests/illformed/atom10/entry_summary_escaped_markup.xml +0 -0
  148. data/tests/illformed/atom10/entry_summary_inline_markup.xml +0 -0
  149. data/tests/illformed/atom10/entry_summary_inline_markup_2.xml +0 -0
  150. data/tests/illformed/atom10/entry_summary_text_plain.xml +0 -0
  151. data/tests/illformed/atom10/entry_summary_type_default.xml +0 -0
  152. data/tests/illformed/atom10/entry_summary_type_text.xml +0 -0
  153. data/tests/illformed/atom10/entry_title.xml +0 -0
  154. data/tests/illformed/atom10/entry_title_base64.xml +0 -0
  155. data/tests/illformed/atom10/entry_title_base64_2.xml +0 -0
  156. data/tests/illformed/atom10/entry_title_content_value.xml +0 -0
  157. data/tests/illformed/atom10/entry_title_escaped_markup.xml +0 -0
  158. data/tests/illformed/atom10/entry_title_inline_markup.xml +0 -0
  159. data/tests/illformed/atom10/entry_title_inline_markup_2.xml +0 -0
  160. data/tests/illformed/atom10/entry_title_text_plain.xml +0 -0
  161. data/tests/illformed/atom10/entry_title_text_plain_brackets.xml +0 -0
  162. data/tests/illformed/atom10/entry_title_type_default.xml +0 -0
  163. data/tests/illformed/atom10/entry_title_type_text.xml +0 -0
  164. data/tests/illformed/atom10/feed_author_email.xml +0 -0
  165. data/tests/illformed/atom10/feed_author_map_author.xml +0 -0
  166. data/tests/illformed/atom10/feed_author_map_author_2.xml +0 -0
  167. data/tests/illformed/atom10/feed_author_name.xml +0 -0
  168. data/tests/illformed/atom10/feed_author_uri.xml +0 -0
  169. data/tests/illformed/atom10/feed_author_url.xml +0 -0
  170. data/tests/illformed/atom10/feed_contributor_email.xml +0 -0
  171. data/tests/illformed/atom10/feed_contributor_multiple.xml +0 -0
  172. data/tests/illformed/atom10/feed_contributor_name.xml +0 -0
  173. data/tests/illformed/atom10/feed_contributor_uri.xml +0 -0
  174. data/tests/illformed/atom10/feed_contributor_url.xml +0 -0
  175. data/tests/illformed/atom10/feed_generator.xml +0 -0
  176. data/tests/illformed/atom10/feed_generator_name.xml +0 -0
  177. data/tests/illformed/atom10/feed_generator_url.xml +0 -0
  178. data/tests/illformed/atom10/feed_generator_version.xml +0 -0
  179. data/tests/illformed/atom10/feed_icon.xml +0 -0
  180. data/tests/illformed/atom10/feed_id.xml +0 -0
  181. data/tests/illformed/atom10/feed_id_map_guid.xml +0 -0
  182. data/tests/illformed/atom10/feed_link_alternate_map_link.xml +0 -0
  183. data/tests/illformed/atom10/feed_link_alternate_map_link_2.xml +0 -0
  184. data/tests/illformed/atom10/feed_link_href.xml +0 -0
  185. data/tests/illformed/atom10/feed_link_hreflang.xml +0 -0
  186. data/tests/illformed/atom10/feed_link_length.xml +0 -0
  187. data/tests/illformed/atom10/feed_link_multiple.xml +0 -0
  188. data/tests/illformed/atom10/feed_link_no_rel.xml +0 -0
  189. data/tests/illformed/atom10/feed_link_rel.xml +0 -0
  190. data/tests/illformed/atom10/feed_link_rel_other.xml +0 -0
  191. data/tests/illformed/atom10/feed_link_rel_related.xml +0 -0
  192. data/tests/illformed/atom10/feed_link_rel_self.xml +0 -0
  193. data/tests/illformed/atom10/feed_link_rel_via.xml +0 -0
  194. data/tests/illformed/atom10/feed_link_title.xml +0 -0
  195. data/tests/illformed/atom10/feed_link_type.xml +0 -0
  196. data/tests/illformed/atom10/feed_logo.xml +0 -0
  197. data/tests/illformed/atom10/feed_rights.xml +0 -0
  198. data/tests/illformed/atom10/feed_rights_base64.xml +0 -0
  199. data/tests/illformed/atom10/feed_rights_base64_2.xml +0 -0
  200. data/tests/illformed/atom10/feed_rights_content_type.xml +0 -0
  201. data/tests/illformed/atom10/feed_rights_content_type_text.xml +0 -0
  202. data/tests/illformed/atom10/feed_rights_content_value.xml +0 -0
  203. data/tests/illformed/atom10/feed_rights_escaped_markup.xml +0 -0
  204. data/tests/illformed/atom10/feed_rights_inline_markup.xml +0 -0
  205. data/tests/illformed/atom10/feed_rights_inline_markup_2.xml +0 -0
  206. data/tests/illformed/atom10/feed_rights_text_plain.xml +0 -0
  207. data/tests/illformed/atom10/feed_subtitle.xml +0 -0
  208. data/tests/illformed/atom10/feed_subtitle_base64.xml +0 -0
  209. data/tests/illformed/atom10/feed_subtitle_base64_2.xml +0 -0
  210. data/tests/illformed/atom10/feed_subtitle_content_type.xml +0 -0
  211. data/tests/illformed/atom10/feed_subtitle_content_type_text.xml +0 -0
  212. data/tests/illformed/atom10/feed_subtitle_content_value.xml +0 -0
  213. data/tests/illformed/atom10/feed_subtitle_escaped_markup.xml +0 -0
  214. data/tests/illformed/atom10/feed_subtitle_inline_markup.xml +0 -0
  215. data/tests/illformed/atom10/feed_subtitle_inline_markup_2.xml +0 -0
  216. data/tests/illformed/atom10/feed_subtitle_text_plain.xml +0 -0
  217. data/tests/illformed/atom10/feed_title.xml +0 -0
  218. data/tests/illformed/atom10/feed_title_base64.xml +0 -0
  219. data/tests/illformed/atom10/feed_title_base64_2.xml +0 -0
  220. data/tests/illformed/atom10/feed_title_content_type.xml +0 -0
  221. data/tests/illformed/atom10/feed_title_content_type_text.xml +0 -0
  222. data/tests/illformed/atom10/feed_title_content_value.xml +0 -0
  223. data/tests/illformed/atom10/feed_title_escaped_markup.xml +0 -0
  224. data/tests/illformed/atom10/feed_title_inline_markup.xml +0 -0
  225. data/tests/illformed/atom10/feed_title_inline_markup_2.xml +0 -0
  226. data/tests/illformed/atom10/feed_title_text_plain.xml +0 -0
  227. data/tests/illformed/atom10/relative_uri.xml +0 -0
  228. data/tests/illformed/atom10/relative_uri_inherit.xml +0 -0
  229. data/tests/illformed/atom10/relative_uri_inherit_2.xml +0 -0
  230. data/tests/illformed/base/entry_summary_xml_base.xml +0 -0
  231. data/tests/illformed/base/entry_summary_xml_base_inherit.xml +0 -0
  232. data/tests/illformed/base/entry_summary_xml_base_inherit_2.xml +0 -0
  233. data/tests/illformed/base/entry_summary_xml_base_inherit_3.xml +0 -0
  234. data/tests/illformed/base/entry_summary_xml_base_inherit_4.xml +0 -0
  235. data/tests/illformed/base/entry_title_xml_base.xml +0 -0
  236. data/tests/illformed/base/entry_title_xml_base_inherit.xml +0 -0
  237. data/tests/illformed/base/entry_title_xml_base_inherit_2.xml +0 -0
  238. data/tests/illformed/base/entry_title_xml_base_inherit_3.xml +0 -0
  239. data/tests/illformed/base/entry_title_xml_base_inherit_4.xml +0 -0
  240. data/tests/illformed/base/feed_copyright_xml_base.xml +0 -0
  241. data/tests/illformed/base/feed_copyright_xml_base_inherit.xml +0 -0
  242. data/tests/illformed/base/feed_copyright_xml_base_inherit_2.xml +0 -0
  243. data/tests/illformed/base/feed_copyright_xml_base_inherit_3.xml +0 -0
  244. data/tests/illformed/base/feed_copyright_xml_base_inherit_4.xml +0 -0
  245. data/tests/illformed/base/feed_info_xml_base.xml +0 -0
  246. data/tests/illformed/base/feed_info_xml_base_inherit.xml +0 -0
  247. data/tests/illformed/base/feed_info_xml_base_inherit_2.xml +0 -0
  248. data/tests/illformed/base/feed_info_xml_base_inherit_3.xml +0 -0
  249. data/tests/illformed/base/feed_info_xml_base_inherit_4.xml +0 -0
  250. data/tests/illformed/base/feed_tagline_xml_base.xml +0 -0
  251. data/tests/illformed/base/feed_tagline_xml_base_inherit.xml +0 -0
  252. data/tests/illformed/base/feed_tagline_xml_base_inherit_2.xml +0 -0
  253. data/tests/illformed/base/feed_tagline_xml_base_inherit_3.xml +0 -0
  254. data/tests/illformed/base/feed_tagline_xml_base_inherit_4.xml +0 -0
  255. data/tests/illformed/base/feed_title_xml_base.xml +0 -0
  256. data/tests/illformed/base/feed_title_xml_base_inherit.xml +0 -0
  257. data/tests/illformed/base/feed_title_xml_base_inherit_2.xml +0 -0
  258. data/tests/illformed/base/feed_title_xml_base_inherit_3.xml +0 -0
  259. data/tests/illformed/base/feed_title_xml_base_inherit_4.xml +0 -0
  260. data/tests/illformed/base/http_relative_xml_base.xml +0 -0
  261. data/tests/illformed/base/malformed_base.xml +0 -0
  262. data/tests/illformed/base/relative_xml_base.xml +0 -0
  263. data/tests/illformed/base/relative_xml_base_2.xml +0 -0
  264. data/tests/illformed/chardet/big5.xml +0 -0
  265. data/tests/illformed/chardet/eucjp.xml +0 -0
  266. data/tests/illformed/chardet/euckr.xml +0 -0
  267. data/tests/illformed/chardet/gb2312.xml +0 -0
  268. data/tests/illformed/chardet/koi8r.xml +0 -0
  269. data/tests/illformed/chardet/shiftjis.xml +0 -0
  270. data/tests/illformed/chardet/tis620.xml +0 -0
  271. data/tests/illformed/chardet/windows1255.xml +0 -0
  272. data/tests/illformed/date/channel_pubDate_greek_1.xml +0 -0
  273. data/tests/illformed/date/channel_pubDate_hungarian_1.xml +0 -0
  274. data/tests/illformed/date/channel_pubDate_korean_nate.xml +0 -0
  275. data/tests/illformed/date/channel_pubDate_mssql.xml +0 -0
  276. data/tests/illformed/date/channel_pubDate_mssql_nofraction.xml +0 -0
  277. data/tests/illformed/date/channel_pubDate_nosecond.xml +0 -0
  278. data/tests/illformed/date/channel_pubDate_notime.xml +0 -0
  279. data/tests/illformed/date/entry_created.xml +0 -0
  280. data/tests/illformed/date/entry_created_w3dtf_utc.xml +0 -0
  281. data/tests/illformed/date/entry_issued.xml +0 -0
  282. data/tests/illformed/date/entry_issued_w3dtf_utc.xml +0 -0
  283. data/tests/illformed/date/entry_modified.xml +0 -0
  284. data/tests/illformed/date/entry_modified_map_date.xml +0 -0
  285. data/tests/illformed/date/entry_modified_w3dtf_utc.xml +0 -0
  286. data/tests/illformed/date/entry_published_w3dtf_utc.xml +0 -0
  287. data/tests/illformed/date/entry_source_updated_w3dtf_utc.xml +0 -0
  288. data/tests/illformed/date/entry_updated_w3dtf_utc.xml +0 -0
  289. data/tests/illformed/date/feed_modified.xml +0 -0
  290. data/tests/illformed/date/feed_modified_asctime.xml +0 -0
  291. data/tests/illformed/date/feed_modified_disney.xml +0 -0
  292. data/tests/illformed/date/feed_modified_disney_at.xml +0 -0
  293. data/tests/illformed/date/feed_modified_disney_ct.xml +0 -0
  294. data/tests/illformed/date/feed_modified_disney_mt.xml +0 -0
  295. data/tests/illformed/date/feed_modified_disney_pt.xml +0 -0
  296. data/tests/illformed/date/feed_modified_iso8601_ym.xml +0 -0
  297. data/tests/illformed/date/feed_modified_iso8601_ym_2.xml +0 -0
  298. data/tests/illformed/date/feed_modified_iso8601_ymd.xml +0 -0
  299. data/tests/illformed/date/feed_modified_iso8601_ymd_2.xml +0 -0
  300. data/tests/illformed/date/feed_modified_iso8601_yo_2.xml +0 -0
  301. data/tests/illformed/date/feed_modified_map_date.xml +0 -0
  302. data/tests/illformed/date/feed_modified_rfc2822.xml +0 -0
  303. data/tests/illformed/date/feed_modified_rfc2822_rollover_june_31.xml +0 -0
  304. data/tests/illformed/date/feed_modified_rfc822.xml +0 -0
  305. data/tests/illformed/date/feed_modified_w3dtf_rollover_leapyear.xml +0 -0
  306. data/tests/illformed/date/feed_modified_w3dtf_rollover_leapyear400.xml +0 -0
  307. data/tests/illformed/date/feed_modified_w3dtf_rollover_nonleapyear.xml +0 -0
  308. data/tests/illformed/date/feed_modified_w3dtf_sf.xml +0 -0
  309. data/tests/illformed/date/feed_modified_w3dtf_tokyo.xml +0 -0
  310. data/tests/illformed/date/feed_modified_w3dtf_utc.xml +0 -0
  311. data/tests/illformed/date/feed_modified_w3dtf_y.xml +0 -0
  312. data/tests/illformed/date/feed_modified_w3dtf_ym.xml +0 -0
  313. data/tests/illformed/date/feed_modified_w3dtf_ymd.xml +0 -0
  314. data/tests/illformed/date/feed_modified_w3dtf_ymd_2.xml +0 -0
  315. data/tests/illformed/date/feed_updated_w3dtf_utc.xml +0 -0
  316. data/tests/illformed/date/item_pubDate_euc-kr.xml +0 -0
  317. data/tests/illformed/encoding/bogus_encoding.xml +0 -0
  318. data/tests/illformed/encoding/encoding_mismatch_crash.xml +0 -0
  319. data/tests/illformed/encoding/http_text_plain.xml +0 -0
  320. data/tests/illformed/encoding/http_text_plain_charset.xml +0 -0
  321. data/tests/illformed/encoding/utf-16be-autodetect.xml +0 -0
  322. data/tests/illformed/encoding/utf-16be-bom.xml +0 -0
  323. data/tests/illformed/encoding/utf-16be.xml +0 -0
  324. data/tests/illformed/encoding/utf-16le-autodetect.xml +0 -0
  325. data/tests/illformed/encoding/utf-16le-bom.xml +0 -0
  326. data/tests/illformed/encoding/utf-16le.xml +0 -0
  327. data/tests/illformed/encoding/utf-8-bom.xml +0 -0
  328. data/tests/illformed/encoding/x80_437.xml +0 -0
  329. data/tests/illformed/encoding/x80_850.xml +0 -0
  330. data/tests/illformed/encoding/x80_852.xml +0 -0
  331. data/tests/illformed/encoding/x80_855.xml +0 -0
  332. data/tests/illformed/encoding/x80_857.xml +0 -0
  333. data/tests/illformed/encoding/x80_860.xml +0 -0
  334. data/tests/illformed/encoding/x80_861.xml +0 -0
  335. data/tests/illformed/encoding/x80_862.xml +0 -0
  336. data/tests/illformed/encoding/x80_863.xml +0 -0
  337. data/tests/illformed/encoding/x80_865.xml +0 -0
  338. data/tests/illformed/encoding/x80_866.xml +0 -0
  339. data/tests/illformed/encoding/x80_cp037.xml +0 -0
  340. data/tests/illformed/encoding/x80_cp1125.xml +0 -0
  341. data/tests/illformed/encoding/x80_cp1250.xml +0 -0
  342. data/tests/illformed/encoding/x80_cp1251.xml +0 -0
  343. data/tests/illformed/encoding/x80_cp1252.xml +0 -0
  344. data/tests/illformed/encoding/x80_cp1253.xml +0 -0
  345. data/tests/illformed/encoding/x80_cp1254.xml +0 -0
  346. data/tests/illformed/encoding/x80_cp1255.xml +0 -0
  347. data/tests/illformed/encoding/x80_cp1256.xml +0 -0
  348. data/tests/illformed/encoding/x80_cp1257.xml +0 -0
  349. data/tests/illformed/encoding/x80_cp1258.xml +0 -0
  350. data/tests/illformed/encoding/x80_cp437.xml +0 -0
  351. data/tests/illformed/encoding/x80_cp500.xml +0 -0
  352. data/tests/illformed/encoding/x80_cp737.xml +0 -0
  353. data/tests/illformed/encoding/x80_cp775.xml +0 -0
  354. data/tests/illformed/encoding/x80_cp850.xml +0 -0
  355. data/tests/illformed/encoding/x80_cp852.xml +0 -0
  356. data/tests/illformed/encoding/x80_cp855.xml +0 -0
  357. data/tests/illformed/encoding/x80_cp856.xml +0 -0
  358. data/tests/illformed/encoding/x80_cp857.xml +0 -0
  359. data/tests/illformed/encoding/x80_cp860.xml +0 -0
  360. data/tests/illformed/encoding/x80_cp861.xml +0 -0
  361. data/tests/illformed/encoding/x80_cp862.xml +0 -0
  362. data/tests/illformed/encoding/x80_cp863.xml +0 -0
  363. data/tests/illformed/encoding/x80_cp864.xml +0 -0
  364. data/tests/illformed/encoding/x80_cp865.xml +0 -0
  365. data/tests/illformed/encoding/x80_cp866.xml +0 -0
  366. data/tests/illformed/encoding/x80_cp874.xml +0 -0
  367. data/tests/illformed/encoding/x80_cp875.xml +0 -0
  368. data/tests/illformed/encoding/x80_cp_is.xml +0 -0
  369. data/tests/illformed/encoding/x80_csibm037.xml +0 -0
  370. data/tests/illformed/encoding/x80_csibm500.xml +0 -0
  371. data/tests/illformed/encoding/x80_csibm855.xml +0 -0
  372. data/tests/illformed/encoding/x80_csibm857.xml +0 -0
  373. data/tests/illformed/encoding/x80_csibm860.xml +0 -0
  374. data/tests/illformed/encoding/x80_csibm861.xml +0 -0
  375. data/tests/illformed/encoding/x80_csibm863.xml +0 -0
  376. data/tests/illformed/encoding/x80_csibm864.xml +0 -0
  377. data/tests/illformed/encoding/x80_csibm865.xml +0 -0
  378. data/tests/illformed/encoding/x80_csibm866.xml +0 -0
  379. data/tests/illformed/encoding/x80_cskoi8r.xml +0 -0
  380. data/tests/illformed/encoding/x80_csmacintosh.xml +0 -0
  381. data/tests/illformed/encoding/x80_cspc775baltic.xml +0 -0
  382. data/tests/illformed/encoding/x80_cspc850multilingual.xml +0 -0
  383. data/tests/illformed/encoding/x80_cspc862latinhebrew.xml +0 -0
  384. data/tests/illformed/encoding/x80_cspc8codepage437.xml +0 -0
  385. data/tests/illformed/encoding/x80_cspcp852.xml +0 -0
  386. data/tests/illformed/encoding/x80_dbcs.xml +0 -0
  387. data/tests/illformed/encoding/x80_ebcdic-cp-be.xml +0 -0
  388. data/tests/illformed/encoding/x80_ebcdic-cp-ca.xml +0 -0
  389. data/tests/illformed/encoding/x80_ebcdic-cp-ch.xml +0 -0
  390. data/tests/illformed/encoding/x80_ebcdic-cp-nl.xml +0 -0
  391. data/tests/illformed/encoding/x80_ebcdic-cp-us.xml +0 -0
  392. data/tests/illformed/encoding/x80_ebcdic-cp-wt.xml +0 -0
  393. data/tests/illformed/encoding/x80_ebcdic_cp_be.xml +0 -0
  394. data/tests/illformed/encoding/x80_ebcdic_cp_ca.xml +0 -0
  395. data/tests/illformed/encoding/x80_ebcdic_cp_ch.xml +0 -0
  396. data/tests/illformed/encoding/x80_ebcdic_cp_nl.xml +0 -0
  397. data/tests/illformed/encoding/x80_ebcdic_cp_us.xml +0 -0
  398. data/tests/illformed/encoding/x80_ebcdic_cp_wt.xml +0 -0
  399. data/tests/illformed/encoding/x80_ibm037.xml +0 -0
  400. data/tests/illformed/encoding/x80_ibm039.xml +0 -0
  401. data/tests/illformed/encoding/x80_ibm1140.xml +0 -0
  402. data/tests/illformed/encoding/x80_ibm437.xml +0 -0
  403. data/tests/illformed/encoding/x80_ibm500.xml +0 -0
  404. data/tests/illformed/encoding/x80_ibm775.xml +0 -0
  405. data/tests/illformed/encoding/x80_ibm850.xml +0 -0
  406. data/tests/illformed/encoding/x80_ibm852.xml +0 -0
  407. data/tests/illformed/encoding/x80_ibm855.xml +0 -0
  408. data/tests/illformed/encoding/x80_ibm857.xml +0 -0
  409. data/tests/illformed/encoding/x80_ibm860.xml +0 -0
  410. data/tests/illformed/encoding/x80_ibm861.xml +0 -0
  411. data/tests/illformed/encoding/x80_ibm862.xml +0 -0
  412. data/tests/illformed/encoding/x80_ibm863.xml +0 -0
  413. data/tests/illformed/encoding/x80_ibm864.xml +0 -0
  414. data/tests/illformed/encoding/x80_ibm865.xml +0 -0
  415. data/tests/illformed/encoding/x80_ibm866.xml +0 -0
  416. data/tests/illformed/encoding/x80_koi8-r.xml +0 -0
  417. data/tests/illformed/encoding/x80_koi8-t.xml +0 -0
  418. data/tests/illformed/encoding/x80_koi8-u.xml +0 -0
  419. data/tests/illformed/encoding/x80_mac-cyrillic.xml +0 -0
  420. data/tests/illformed/encoding/x80_mac.xml +0 -0
  421. data/tests/illformed/encoding/x80_maccentraleurope.xml +0 -0
  422. data/tests/illformed/encoding/x80_maccyrillic.xml +0 -0
  423. data/tests/illformed/encoding/x80_macgreek.xml +0 -0
  424. data/tests/illformed/encoding/x80_maciceland.xml +0 -0
  425. data/tests/illformed/encoding/x80_macintosh.xml +0 -0
  426. data/tests/illformed/encoding/x80_maclatin2.xml +0 -0
  427. data/tests/illformed/encoding/x80_macroman.xml +0 -0
  428. data/tests/illformed/encoding/x80_macturkish.xml +0 -0
  429. data/tests/illformed/encoding/x80_ms-ansi.xml +0 -0
  430. data/tests/illformed/encoding/x80_ms-arab.xml +0 -0
  431. data/tests/illformed/encoding/x80_ms-cyrl.xml +0 -0
  432. data/tests/illformed/encoding/x80_ms-ee.xml +0 -0
  433. data/tests/illformed/encoding/x80_ms-greek.xml +0 -0
  434. data/tests/illformed/encoding/x80_ms-hebr.xml +0 -0
  435. data/tests/illformed/encoding/x80_ms-turk.xml +0 -0
  436. data/tests/illformed/encoding/x80_tcvn-5712.xml +0 -0
  437. data/tests/illformed/encoding/x80_tcvn.xml +0 -0
  438. data/tests/illformed/encoding/x80_tcvn5712-1.xml +0 -0
  439. data/tests/illformed/encoding/x80_viscii.xml +0 -0
  440. data/tests/illformed/encoding/x80_winbaltrim.xml +0 -0
  441. data/tests/illformed/encoding/x80_windows-1250.xml +0 -0
  442. data/tests/illformed/encoding/x80_windows-1251.xml +0 -0
  443. data/tests/illformed/encoding/x80_windows-1252.xml +0 -0
  444. data/tests/illformed/encoding/x80_windows-1253.xml +0 -0
  445. data/tests/illformed/encoding/x80_windows-1254.xml +0 -0
  446. data/tests/illformed/encoding/x80_windows-1255.xml +0 -0
  447. data/tests/illformed/encoding/x80_windows-1256.xml +0 -0
  448. data/tests/illformed/encoding/x80_windows-1257.xml +0 -0
  449. data/tests/illformed/encoding/x80_windows-1258.xml +0 -0
  450. data/tests/illformed/encoding/x80_windows_1250.xml +0 -0
  451. data/tests/illformed/encoding/x80_windows_1251.xml +0 -0
  452. data/tests/illformed/encoding/x80_windows_1252.xml +0 -0
  453. data/tests/illformed/encoding/x80_windows_1253.xml +0 -0
  454. data/tests/illformed/encoding/x80_windows_1254.xml +0 -0
  455. data/tests/illformed/encoding/x80_windows_1255.xml +0 -0
  456. data/tests/illformed/encoding/x80_windows_1256.xml +0 -0
  457. data/tests/illformed/encoding/x80_windows_1257.xml +0 -0
  458. data/tests/illformed/encoding/x80_windows_1258.xml +0 -0
  459. data/tests/illformed/entities/160.xml +0 -0
  460. data/tests/illformed/entities/732.xml +0 -0
  461. data/tests/illformed/entities/8216.xml +0 -0
  462. data/tests/illformed/entities/8217.xml +0 -0
  463. data/tests/illformed/entities/8220.xml +0 -0
  464. data/tests/illformed/entities/8221.xml +0 -0
  465. data/tests/illformed/entities/9830.xml +0 -0
  466. data/tests/illformed/entities/aacute.xml +0 -0
  467. data/tests/illformed/entities/acirc.xml +0 -0
  468. data/tests/illformed/entities/acute.xml +0 -0
  469. data/tests/illformed/entities/aelig.xml +0 -0
  470. data/tests/illformed/entities/agrave.xml +0 -0
  471. data/tests/illformed/entities/alefsym.xml +0 -0
  472. data/tests/illformed/entities/alpha.xml +0 -0
  473. data/tests/illformed/entities/and.xml +0 -0
  474. data/tests/illformed/entities/ang.xml +0 -0
  475. data/tests/illformed/entities/aring.xml +0 -0
  476. data/tests/illformed/entities/asymp.xml +0 -0
  477. data/tests/illformed/entities/atilde.xml +0 -0
  478. data/tests/illformed/entities/auml.xml +0 -0
  479. data/tests/illformed/entities/bdquo.xml +0 -0
  480. data/tests/illformed/entities/beta.xml +0 -0
  481. data/tests/illformed/entities/brvbar.xml +0 -0
  482. data/tests/illformed/entities/bull.xml +0 -0
  483. data/tests/illformed/entities/cap.xml +0 -0
  484. data/tests/illformed/entities/ccedil.xml +0 -0
  485. data/tests/illformed/entities/cedil.xml +0 -0
  486. data/tests/illformed/entities/cent.xml +0 -0
  487. data/tests/illformed/entities/chi.xml +0 -0
  488. data/tests/illformed/entities/circ.xml +0 -0
  489. data/tests/illformed/entities/clubs.xml +0 -0
  490. data/tests/illformed/entities/cong.xml +0 -0
  491. data/tests/illformed/entities/copy.xml +0 -0
  492. data/tests/illformed/entities/crarr.xml +0 -0
  493. data/tests/illformed/entities/cup.xml +0 -0
  494. data/tests/illformed/entities/curren.xml +0 -0
  495. data/tests/illformed/entities/dagger.xml +0 -0
  496. data/tests/illformed/entities/darr.xml +0 -0
  497. data/tests/illformed/entities/deg.xml +0 -0
  498. data/tests/illformed/entities/delta.xml +0 -0
  499. data/tests/illformed/entities/diams.xml +0 -0
  500. data/tests/illformed/entities/divide.xml +0 -0
  501. data/tests/illformed/entities/doesnotexist.xml +0 -0
  502. data/tests/illformed/entities/eacute.xml +0 -0
  503. data/tests/illformed/entities/ecirc.xml +0 -0
  504. data/tests/illformed/entities/egrave.xml +0 -0
  505. data/tests/illformed/entities/empty.xml +0 -0
  506. data/tests/illformed/entities/emsp.xml +0 -0
  507. data/tests/illformed/entities/ensp.xml +0 -0
  508. data/tests/illformed/entities/epsilon.xml +0 -0
  509. data/tests/illformed/entities/equiv.xml +0 -0
  510. data/tests/illformed/entities/eta.xml +0 -0
  511. data/tests/illformed/entities/eth.xml +0 -0
  512. data/tests/illformed/entities/euml.xml +0 -0
  513. data/tests/illformed/entities/euro.xml +0 -0
  514. data/tests/illformed/entities/exist.xml +0 -0
  515. data/tests/illformed/entities/fnof.xml +0 -0
  516. data/tests/illformed/entities/forall.xml +0 -0
  517. data/tests/illformed/entities/frac12.xml +0 -0
  518. data/tests/illformed/entities/frac14.xml +0 -0
  519. data/tests/illformed/entities/frac34.xml +0 -0
  520. data/tests/illformed/entities/frasl.xml +0 -0
  521. data/tests/illformed/entities/gamma.xml +0 -0
  522. data/tests/illformed/entities/ge.xml +0 -0
  523. data/tests/illformed/entities/hArr.xml +0 -0
  524. data/tests/illformed/entities/hearts.xml +0 -0
  525. data/tests/illformed/entities/hellip.xml +0 -0
  526. data/tests/illformed/entities/iacute.xml +0 -0
  527. data/tests/illformed/entities/icirc.xml +0 -0
  528. data/tests/illformed/entities/iexcl.xml +0 -0
  529. data/tests/illformed/entities/igrave.xml +0 -0
  530. data/tests/illformed/entities/image.xml +0 -0
  531. data/tests/illformed/entities/infin.xml +0 -0
  532. data/tests/illformed/entities/int.xml +0 -0
  533. data/tests/illformed/entities/iota.xml +0 -0
  534. data/tests/illformed/entities/iquest.xml +0 -0
  535. data/tests/illformed/entities/isin.xml +0 -0
  536. data/tests/illformed/entities/iuml.xml +0 -0
  537. data/tests/illformed/entities/kappa.xml +0 -0
  538. data/tests/illformed/entities/lArr.xml +0 -0
  539. data/tests/illformed/entities/lambda.xml +0 -0
  540. data/tests/illformed/entities/lang.xml +0 -0
  541. data/tests/illformed/entities/laquo.xml +0 -0
  542. data/tests/illformed/entities/lceil.xml +0 -0
  543. data/tests/illformed/entities/ldquo.xml +0 -0
  544. data/tests/illformed/entities/le.xml +0 -0
  545. data/tests/illformed/entities/lfloor.xml +0 -0
  546. data/tests/illformed/entities/lowast.xml +0 -0
  547. data/tests/illformed/entities/loz.xml +0 -0
  548. data/tests/illformed/entities/lrm.xml +0 -0
  549. data/tests/illformed/entities/lsaquo.xml +0 -0
  550. data/tests/illformed/entities/lsquo.xml +0 -0
  551. data/tests/illformed/entities/macr.xml +0 -0
  552. data/tests/illformed/entities/mdash.xml +0 -0
  553. data/tests/illformed/entities/micro.xml +0 -0
  554. data/tests/illformed/entities/middot.xml +0 -0
  555. data/tests/illformed/entities/minus.xml +0 -0
  556. data/tests/illformed/entities/mu.xml +0 -0
  557. data/tests/illformed/entities/nabla.xml +0 -0
  558. data/tests/illformed/entities/nbsp.xml +0 -0
  559. data/tests/illformed/entities/ndash.xml +0 -0
  560. data/tests/illformed/entities/ne.xml +0 -0
  561. data/tests/illformed/entities/ni.xml +0 -0
  562. data/tests/illformed/entities/not.xml +0 -0
  563. data/tests/illformed/entities/notin.xml +0 -0
  564. data/tests/illformed/entities/nsub.xml +0 -0
  565. data/tests/illformed/entities/ntilde.xml +0 -0
  566. data/tests/illformed/entities/nu.xml +0 -0
  567. data/tests/illformed/entities/oacute.xml +0 -0
  568. data/tests/illformed/entities/ocirc.xml +0 -0
  569. data/tests/illformed/entities/oelig.xml +0 -0
  570. data/tests/illformed/entities/ograve.xml +0 -0
  571. data/tests/illformed/entities/oline.xml +0 -0
  572. data/tests/illformed/entities/omega.xml +0 -0
  573. data/tests/illformed/entities/omicron.xml +0 -0
  574. data/tests/illformed/entities/oplus.xml +0 -0
  575. data/tests/illformed/entities/or.xml +0 -0
  576. data/tests/illformed/entities/ordf.xml +0 -0
  577. data/tests/illformed/entities/ordm.xml +0 -0
  578. data/tests/illformed/entities/oslash.xml +0 -0
  579. data/tests/illformed/entities/otilde.xml +0 -0
  580. data/tests/illformed/entities/otimes.xml +0 -0
  581. data/tests/illformed/entities/ouml.xml +0 -0
  582. data/tests/illformed/entities/para.xml +0 -0
  583. data/tests/illformed/entities/part.xml +0 -0
  584. data/tests/illformed/entities/permil.xml +0 -0
  585. data/tests/illformed/entities/perp.xml +0 -0
  586. data/tests/illformed/entities/phi.xml +0 -0
  587. data/tests/illformed/entities/pi.xml +0 -0
  588. data/tests/illformed/entities/piv.xml +0 -0
  589. data/tests/illformed/entities/plusmn.xml +0 -0
  590. data/tests/illformed/entities/pound.xml +0 -0
  591. data/tests/illformed/entities/prime.xml +0 -0
  592. data/tests/illformed/entities/prod.xml +0 -0
  593. data/tests/illformed/entities/prop.xml +0 -0
  594. data/tests/illformed/entities/psi.xml +0 -0
  595. data/tests/illformed/entities/radic.xml +0 -0
  596. data/tests/illformed/entities/rang.xml +0 -0
  597. data/tests/illformed/entities/raquo.xml +0 -0
  598. data/tests/illformed/entities/rarr.xml +0 -0
  599. data/tests/illformed/entities/rceil.xml +0 -0
  600. data/tests/illformed/entities/rdquo.xml +0 -0
  601. data/tests/illformed/entities/real.xml +0 -0
  602. data/tests/illformed/entities/reg.xml +0 -0
  603. data/tests/illformed/entities/rfloor.xml +0 -0
  604. data/tests/illformed/entities/rho.xml +0 -0
  605. data/tests/illformed/entities/rlm.xml +0 -0
  606. data/tests/illformed/entities/rsaquo.xml +0 -0
  607. data/tests/illformed/entities/rsquo.xml +0 -0
  608. data/tests/illformed/entities/sbquo.xml +0 -0
  609. data/tests/illformed/entities/scaron.xml +0 -0
  610. data/tests/illformed/entities/sdot.xml +0 -0
  611. data/tests/illformed/entities/sect.xml +0 -0
  612. data/tests/illformed/entities/shy.xml +0 -0
  613. data/tests/illformed/entities/sigma.xml +0 -0
  614. data/tests/illformed/entities/sigmaf.xml +0 -0
  615. data/tests/illformed/entities/sim.xml +0 -0
  616. data/tests/illformed/entities/spades.xml +0 -0
  617. data/tests/illformed/entities/sub.xml +0 -0
  618. data/tests/illformed/entities/sube.xml +0 -0
  619. data/tests/illformed/entities/sum.xml +0 -0
  620. data/tests/illformed/entities/sup.xml +0 -0
  621. data/tests/illformed/entities/sup1.xml +0 -0
  622. data/tests/illformed/entities/sup2.xml +0 -0
  623. data/tests/illformed/entities/sup3.xml +0 -0
  624. data/tests/illformed/entities/supe.xml +0 -0
  625. data/tests/illformed/entities/szlig.xml +0 -0
  626. data/tests/illformed/entities/tau.xml +0 -0
  627. data/tests/illformed/entities/there4.xml +0 -0
  628. data/tests/illformed/entities/theta.xml +0 -0
  629. data/tests/illformed/entities/thetasym.xml +0 -0
  630. data/tests/illformed/entities/thinsp.xml +0 -0
  631. data/tests/illformed/entities/thorn.xml +0 -0
  632. data/tests/illformed/entities/tilde.xml +0 -0
  633. data/tests/illformed/entities/times.xml +0 -0
  634. data/tests/illformed/entities/trade.xml +0 -0
  635. data/tests/illformed/entities/uacute.xml +0 -0
  636. data/tests/illformed/entities/uarr.xml +0 -0
  637. data/tests/illformed/entities/ucirc.xml +0 -0
  638. data/tests/illformed/entities/ugrave.xml +0 -0
  639. data/tests/illformed/entities/uml.xml +0 -0
  640. data/tests/illformed/entities/upper_AElig.xml +0 -0
  641. data/tests/illformed/entities/upper_Aacute.xml +0 -0
  642. data/tests/illformed/entities/upper_Acirc.xml +0 -0
  643. data/tests/illformed/entities/upper_Agrave.xml +0 -0
  644. data/tests/illformed/entities/upper_Alpha.xml +0 -0
  645. data/tests/illformed/entities/upper_Aring.xml +0 -0
  646. data/tests/illformed/entities/upper_Atilde.xml +0 -0
  647. data/tests/illformed/entities/upper_Auml.xml +0 -0
  648. data/tests/illformed/entities/upper_Beta.xml +0 -0
  649. data/tests/illformed/entities/upper_Ccedil.xml +0 -0
  650. data/tests/illformed/entities/upper_Chi.xml +0 -0
  651. data/tests/illformed/entities/upper_Dagger.xml +0 -0
  652. data/tests/illformed/entities/upper_Delta.xml +0 -0
  653. data/tests/illformed/entities/upper_ETH.xml +0 -0
  654. data/tests/illformed/entities/upper_Eacute.xml +0 -0
  655. data/tests/illformed/entities/upper_Ecirc.xml +0 -0
  656. data/tests/illformed/entities/upper_Egrave.xml +0 -0
  657. data/tests/illformed/entities/upper_Epsilon.xml +0 -0
  658. data/tests/illformed/entities/upper_Eta.xml +0 -0
  659. data/tests/illformed/entities/upper_Euml.xml +0 -0
  660. data/tests/illformed/entities/upper_Gamma.xml +0 -0
  661. data/tests/illformed/entities/upper_Iacute.xml +0 -0
  662. data/tests/illformed/entities/upper_Icirc.xml +0 -0
  663. data/tests/illformed/entities/upper_Igrave.xml +0 -0
  664. data/tests/illformed/entities/upper_Iota.xml +0 -0
  665. data/tests/illformed/entities/upper_Iuml.xml +0 -0
  666. data/tests/illformed/entities/upper_Kappa.xml +0 -0
  667. data/tests/illformed/entities/upper_Lambda.xml +0 -0
  668. data/tests/illformed/entities/upper_Mu.xml +0 -0
  669. data/tests/illformed/entities/upper_Ntilde.xml +0 -0
  670. data/tests/illformed/entities/upper_Nu.xml +0 -0
  671. data/tests/illformed/entities/upper_OElig.xml +0 -0
  672. data/tests/illformed/entities/upper_Oacute.xml +0 -0
  673. data/tests/illformed/entities/upper_Ocirc.xml +0 -0
  674. data/tests/illformed/entities/upper_Ograve.xml +0 -0
  675. data/tests/illformed/entities/upper_Omega.xml +0 -0
  676. data/tests/illformed/entities/upper_Omicron.xml +0 -0
  677. data/tests/illformed/entities/upper_Oslash.xml +0 -0
  678. data/tests/illformed/entities/upper_Otilde.xml +0 -0
  679. data/tests/illformed/entities/upper_Ouml.xml +0 -0
  680. data/tests/illformed/entities/upper_Phi.xml +0 -0
  681. data/tests/illformed/entities/upper_Pi.xml +0 -0
  682. data/tests/illformed/entities/upper_Prime.xml +0 -0
  683. data/tests/illformed/entities/upper_Psi.xml +0 -0
  684. data/tests/illformed/entities/upper_Rho.xml +0 -0
  685. data/tests/illformed/entities/upper_Scaron.xml +0 -0
  686. data/tests/illformed/entities/upper_Sigma.xml +0 -0
  687. data/tests/illformed/entities/upper_THORN.xml +0 -0
  688. data/tests/illformed/entities/upper_Tau.xml +0 -0
  689. data/tests/illformed/entities/upper_Theta.xml +0 -0
  690. data/tests/illformed/entities/upper_Uacute.xml +0 -0
  691. data/tests/illformed/entities/upper_Ucirc.xml +0 -0
  692. data/tests/illformed/entities/upper_Ugrave.xml +0 -0
  693. data/tests/illformed/entities/upper_Upsilon.xml +0 -0
  694. data/tests/illformed/entities/upper_Uuml.xml +0 -0
  695. data/tests/illformed/entities/upper_Xi.xml +0 -0
  696. data/tests/illformed/entities/upper_Yacute.xml +0 -0
  697. data/tests/illformed/entities/upper_Yuml.xml +0 -0
  698. data/tests/illformed/entities/upper_Zeta.xml +0 -0
  699. data/tests/illformed/entities/upsih.xml +0 -0
  700. data/tests/illformed/entities/upsilon.xml +0 -0
  701. data/tests/illformed/entities/uuml.xml +0 -0
  702. data/tests/illformed/entities/weierp.xml +0 -0
  703. data/tests/illformed/entities/xi.xml +0 -0
  704. data/tests/illformed/entities/yacute.xml +0 -0
  705. data/tests/illformed/entities/yen.xml +0 -0
  706. data/tests/illformed/entities/yuml.xml +0 -0
  707. data/tests/illformed/entities/zeta.xml +0 -0
  708. data/tests/illformed/entities/zwj.xml +0 -0
  709. data/tests/illformed/entities/zwnj.xml +0 -0
  710. data/tests/illformed/itunes/itunes_channel_block.xml +0 -0
  711. data/tests/illformed/itunes/itunes_channel_block_false.xml +0 -0
  712. data/tests/illformed/itunes/itunes_channel_block_no.xml +0 -0
  713. data/tests/illformed/itunes/itunes_channel_block_true.xml +0 -0
  714. data/tests/illformed/itunes/itunes_channel_block_uppercase.xml +0 -0
  715. data/tests/illformed/itunes/itunes_channel_block_whitespace.xml +0 -0
  716. data/tests/illformed/itunes/itunes_channel_category.xml +0 -0
  717. data/tests/illformed/itunes/itunes_channel_category_nested.xml +0 -0
  718. data/tests/illformed/itunes/itunes_channel_category_scheme.xml +0 -0
  719. data/tests/illformed/itunes/itunes_channel_explicit.xml +0 -0
  720. data/tests/illformed/itunes/itunes_channel_explicit_false.xml +0 -0
  721. data/tests/illformed/itunes/itunes_channel_explicit_no.xml +0 -0
  722. data/tests/illformed/itunes/itunes_channel_explicit_true.xml +0 -0
  723. data/tests/illformed/itunes/itunes_channel_explicit_uppercase.xml +0 -0
  724. data/tests/illformed/itunes/itunes_channel_explicit_whitespace.xml +0 -0
  725. data/tests/illformed/itunes/itunes_channel_image.xml +0 -0
  726. data/tests/illformed/itunes/itunes_channel_keywords.xml +0 -0
  727. data/tests/illformed/itunes/itunes_channel_keywords_duplicate.xml +0 -0
  728. data/tests/illformed/itunes/itunes_channel_keywords_duplicate_2.xml +0 -0
  729. data/tests/illformed/itunes/itunes_channel_keywords_multiple.xml +0 -0
  730. data/tests/illformed/itunes/itunes_channel_link_image.xml +0 -0
  731. data/tests/illformed/itunes/itunes_channel_owner_email.xml +0 -0
  732. data/tests/illformed/itunes/itunes_channel_owner_name.xml +0 -0
  733. data/tests/illformed/itunes/itunes_channel_subtitle.xml +0 -0
  734. data/tests/illformed/itunes/itunes_channel_summary.xml +0 -0
  735. data/tests/illformed/itunes/itunes_core_element_uppercase.xml +0 -0
  736. data/tests/illformed/itunes/itunes_enclosure_url_maps_id.xml +0 -0
  737. data/tests/illformed/itunes/itunes_enclosure_url_maps_id_2.xml +0 -0
  738. data/tests/illformed/itunes/itunes_item_author_map_author.xml +0 -0
  739. data/tests/illformed/itunes/itunes_item_block.xml +0 -0
  740. data/tests/illformed/itunes/itunes_item_block_false.xml +0 -0
  741. data/tests/illformed/itunes/itunes_item_block_no.xml +0 -0
  742. data/tests/illformed/itunes/itunes_item_block_true.xml +0 -0
  743. data/tests/illformed/itunes/itunes_item_block_uppercase.xml +0 -0
  744. data/tests/illformed/itunes/itunes_item_block_whitespace.xml +0 -0
  745. data/tests/illformed/itunes/itunes_item_category.xml +0 -0
  746. data/tests/illformed/itunes/itunes_item_category_nested.xml +0 -0
  747. data/tests/illformed/itunes/itunes_item_category_scheme.xml +0 -0
  748. data/tests/illformed/itunes/itunes_item_duration.xml +0 -0
  749. data/tests/illformed/itunes/itunes_item_explicit.xml +0 -0
  750. data/tests/illformed/itunes/itunes_item_explicit_false.xml +0 -0
  751. data/tests/illformed/itunes/itunes_item_explicit_no.xml +0 -0
  752. data/tests/illformed/itunes/itunes_item_explicit_true.xml +0 -0
  753. data/tests/illformed/itunes/itunes_item_explicit_uppercase.xml +0 -0
  754. data/tests/illformed/itunes/itunes_item_explicit_whitespace.xml +0 -0
  755. data/tests/illformed/itunes/itunes_item_image.xml +0 -0
  756. data/tests/illformed/itunes/itunes_item_link_image.xml +0 -0
  757. data/tests/illformed/itunes/itunes_item_subtitle.xml +0 -0
  758. data/tests/illformed/itunes/itunes_item_summary.xml +0 -0
  759. data/tests/illformed/itunes/itunes_namespace.xml +0 -0
  760. data/tests/illformed/itunes/itunes_namespace_example.xml +0 -0
  761. data/tests/illformed/itunes/itunes_namespace_lowercase.xml +0 -0
  762. data/tests/illformed/itunes/itunes_namespace_uppercase.xml +0 -0
  763. data/tests/illformed/lang/channel_dc_language.xml +0 -0
  764. data/tests/illformed/lang/channel_language.xml +0 -0
  765. data/tests/illformed/lang/entry_content_xml_lang.xml +0 -0
  766. data/tests/illformed/lang/entry_content_xml_lang_inherit.xml +0 -0
  767. data/tests/illformed/lang/entry_content_xml_lang_inherit_2.xml +0 -0
  768. data/tests/illformed/lang/entry_content_xml_lang_inherit_3.xml +0 -0
  769. data/tests/illformed/lang/entry_content_xml_lang_inherit_4.xml +0 -0
  770. data/tests/illformed/lang/entry_summary_xml_lang.xml +0 -0
  771. data/tests/illformed/lang/entry_summary_xml_lang_inherit.xml +0 -0
  772. data/tests/illformed/lang/entry_summary_xml_lang_inherit_2.xml +0 -0
  773. data/tests/illformed/lang/entry_summary_xml_lang_inherit_3.xml +0 -0
  774. data/tests/illformed/lang/entry_summary_xml_lang_inherit_4.xml +0 -0
  775. data/tests/illformed/lang/entry_title_xml_lang.xml +0 -0
  776. data/tests/illformed/lang/entry_title_xml_lang_inherit.xml +0 -0
  777. data/tests/illformed/lang/entry_title_xml_lang_inherit_2.xml +0 -0
  778. data/tests/illformed/lang/entry_title_xml_lang_inherit_3.xml +0 -0
  779. data/tests/illformed/lang/entry_title_xml_lang_inherit_4.xml +0 -0
  780. data/tests/illformed/lang/feed_copyright_xml_lang.xml +0 -0
  781. data/tests/illformed/lang/feed_copyright_xml_lang_inherit.xml +0 -0
  782. data/tests/illformed/lang/feed_copyright_xml_lang_inherit_2.xml +0 -0
  783. data/tests/illformed/lang/feed_copyright_xml_lang_inherit_3.xml +0 -0
  784. data/tests/illformed/lang/feed_copyright_xml_lang_inherit_4.xml +0 -0
  785. data/tests/illformed/lang/feed_info_xml_lang.xml +0 -0
  786. data/tests/illformed/lang/feed_info_xml_lang_inherit.xml +0 -0
  787. data/tests/illformed/lang/feed_info_xml_lang_inherit_2.xml +0 -0
  788. data/tests/illformed/lang/feed_info_xml_lang_inherit_3.xml +0 -0
  789. data/tests/illformed/lang/feed_info_xml_lang_inherit_4.xml +0 -0
  790. data/tests/illformed/lang/feed_language.xml +0 -0
  791. data/tests/illformed/lang/feed_language_override.xml +0 -0
  792. data/tests/illformed/lang/feed_not_xml_lang.xml +0 -0
  793. data/tests/illformed/lang/feed_not_xml_lang_2.xml +0 -0
  794. data/tests/illformed/lang/feed_tagline_xml_lang.xml +0 -0
  795. data/tests/illformed/lang/feed_tagline_xml_lang_inherit.xml +0 -0
  796. data/tests/illformed/lang/feed_tagline_xml_lang_inherit_2.xml +0 -0
  797. data/tests/illformed/lang/feed_tagline_xml_lang_inherit_3.xml +0 -0
  798. data/tests/illformed/lang/feed_tagline_xml_lang_inherit_4.xml +0 -0
  799. data/tests/illformed/lang/feed_title_xml_lang.xml +0 -0
  800. data/tests/illformed/lang/feed_title_xml_lang_inherit.xml +0 -0
  801. data/tests/illformed/lang/feed_title_xml_lang_inherit_2.xml +0 -0
  802. data/tests/illformed/lang/feed_title_xml_lang_inherit_3.xml +0 -0
  803. data/tests/illformed/lang/feed_title_xml_lang_inherit_4.xml +0 -0
  804. data/tests/illformed/lang/feed_xml_lang.xml +0 -0
  805. data/tests/illformed/lang/http_content_language.xml +0 -0
  806. data/tests/illformed/lang/http_content_language_entry_title_inherit.xml +0 -0
  807. data/tests/illformed/lang/http_content_language_entry_title_inherit_2.xml +0 -0
  808. data/tests/illformed/lang/http_content_language_feed_language.xml +0 -0
  809. data/tests/illformed/lang/http_content_language_feed_xml_lang.xml +0 -0
  810. data/tests/illformed/lang/item_content_encoded_xml_lang.xml +0 -0
  811. data/tests/illformed/lang/item_content_encoded_xml_lang_inherit.xml +0 -0
  812. data/tests/illformed/lang/item_dc_language.xml +0 -0
  813. data/tests/illformed/lang/item_fullitem_xml_lang.xml +0 -0
  814. data/tests/illformed/lang/item_fullitem_xml_lang_inherit.xml +0 -0
  815. data/tests/illformed/lang/item_xhtml_body_xml_lang.xml +0 -0
  816. data/tests/illformed/lang/item_xhtml_body_xml_lang_inherit.xml +0 -0
  817. data/tests/illformed/namespace/undeclared_namespace.xml +0 -0
  818. data/tests/illformed/rdf/rdf_channel_empty_textinput.xml +0 -0
  819. data/tests/illformed/rdf/rdf_item_rdf_about.xml +0 -0
  820. data/tests/illformed/rdf/rss_version_10_not_default_ns.xml +0 -0
  821. data/tests/illformed/rss/channel_category.xml +0 -0
  822. data/tests/illformed/rss/channel_category_domain.xml +0 -0
  823. data/tests/illformed/rss/channel_category_multiple.xml +0 -0
  824. data/tests/illformed/rss/channel_category_multiple_2.xml +0 -0
  825. data/tests/illformed/rss/channel_dc_contributor.xml +0 -0
  826. data/tests/illformed/rss/channel_dc_publisher_email.xml +0 -0
  827. data/tests/illformed/rss/channel_dc_publisher_name.xml +0 -0
  828. data/tests/illformed/rss/channel_dc_subject.xml +0 -0
  829. data/tests/illformed/rss/channel_dc_subject_2.xml +0 -0
  830. data/tests/illformed/rss/channel_dc_subject_multiple.xml +0 -0
  831. data/tests/illformed/rss/channel_webMaster_email.xml +0 -0
  832. data/tests/illformed/rss/channel_webMaster_name.xml +0 -0
  833. data/tests/illformed/rss/item_category.xml +0 -0
  834. data/tests/illformed/rss/item_category_domain.xml +0 -0
  835. data/tests/illformed/rss/item_category_multiple.xml +0 -0
  836. data/tests/illformed/rss/item_category_multiple_2.xml +0 -0
  837. data/tests/illformed/rss/item_dc_contributor.xml +0 -0
  838. data/tests/illformed/rss/item_dc_publisher_email.xml +0 -0
  839. data/tests/illformed/rss/item_dc_publisher_name.xml +0 -0
  840. data/tests/illformed/rss/item_dc_subject.xml +0 -0
  841. data/tests/illformed/rss/item_dc_subject_2.xml +0 -0
  842. data/tests/illformed/rss/item_dc_subject_multiple.xml +0 -0
  843. data/tests/illformed/rss/item_description_and_summary.xml +0 -0
  844. data/tests/illformed/rss/item_description_br.xml +0 -0
  845. data/tests/illformed/rss/item_description_br_shorttag.xml +0 -0
  846. data/tests/illformed/rss/item_description_not_a_doctype.xml +0 -0
  847. data/tests/illformed/rss/item_guid_guidislink.xml +0 -0
  848. data/tests/illformed/rss/item_guid_isPermaLink_conflict_link_not_guidislink.xml +0 -0
  849. data/tests/illformed/rss/item_guid_isPermaLink_guidislink.xml +0 -0
  850. data/tests/illformed/rss/item_guid_not_permalink_not_guidislink.xml +0 -0
  851. data/tests/illformed/rss/item_guid_not_permalink_not_guidislink_2.xml +0 -0
  852. data/tests/illformed/rss/item_summary_and_description.xml +0 -0
  853. data/tests/rfeedparser_test_helper.rb +5 -11
  854. data/tests/rfeedparserserver.rb +0 -0
  855. data/tests/rfeedparsertest.rb +33 -19
  856. data/tests/rfponly/wellformed/date/feed_modified_with_negative_numeric_timezone.xml +0 -0
  857. data/tests/rfponly/wellformed/date/feed_modified_with_positive_numeric_timezone.xml +0 -0
  858. data/tests/rfponly/wellformed/date/w3dtf_second_fractions.xml +8 -0
  859. data/tests/to_skip.yml +25 -0
  860. data/tests/wellformed/atom10/atom10_namespace.xml +0 -0
  861. data/tests/wellformed/atom10/atom10_version.xml +0 -0
  862. data/tests/wellformed/atom10/entry_author_email.xml +0 -0
  863. data/tests/wellformed/atom10/entry_author_map_author.xml +0 -0
  864. data/tests/wellformed/atom10/entry_author_map_author_2.xml +0 -0
  865. data/tests/wellformed/atom10/entry_author_name.xml +0 -0
  866. data/tests/wellformed/atom10/entry_author_uri.xml +0 -0
  867. data/tests/wellformed/atom10/entry_author_url.xml +0 -0
  868. data/tests/wellformed/atom10/entry_category_label.xml +0 -0
  869. data/tests/wellformed/atom10/entry_category_scheme.xml +0 -0
  870. data/tests/wellformed/atom10/entry_category_term.xml +0 -0
  871. data/tests/wellformed/atom10/entry_content_application_xml.xml +0 -0
  872. data/tests/wellformed/atom10/entry_content_base64.xml +0 -0
  873. data/tests/wellformed/atom10/entry_content_base64_2.xml +0 -0
  874. data/tests/wellformed/atom10/entry_content_escaped_markup.xml +0 -0
  875. data/tests/wellformed/atom10/entry_content_inline_markup.xml +0 -0
  876. data/tests/wellformed/atom10/entry_content_inline_markup_2.xml +0 -0
  877. data/tests/wellformed/atom10/entry_content_src.xml +0 -0
  878. data/tests/wellformed/atom10/entry_content_text_plain.xml +0 -0
  879. data/tests/wellformed/atom10/entry_content_text_plain_brackets.xml +0 -0
  880. data/tests/wellformed/atom10/entry_content_type.xml +0 -0
  881. data/tests/wellformed/atom10/entry_content_type_text.xml +0 -0
  882. data/tests/wellformed/atom10/entry_content_value.xml +0 -0
  883. data/tests/wellformed/atom10/entry_contributor_email.xml +0 -0
  884. data/tests/wellformed/atom10/entry_contributor_multiple.xml +0 -0
  885. data/tests/wellformed/atom10/entry_contributor_name.xml +0 -0
  886. data/tests/wellformed/atom10/entry_contributor_uri.xml +0 -0
  887. data/tests/wellformed/atom10/entry_contributor_url.xml +0 -0
  888. data/tests/wellformed/atom10/entry_id.xml +0 -0
  889. data/tests/wellformed/atom10/entry_id_map_guid.xml +0 -0
  890. data/tests/wellformed/atom10/entry_id_no_normalization_1.xml +0 -0
  891. data/tests/wellformed/atom10/entry_id_no_normalization_2.xml +0 -0
  892. data/tests/wellformed/atom10/entry_id_no_normalization_3.xml +0 -0
  893. data/tests/wellformed/atom10/entry_id_no_normalization_4.xml +0 -0
  894. data/tests/wellformed/atom10/entry_id_no_normalization_5.xml +0 -0
  895. data/tests/wellformed/atom10/entry_id_no_normalization_6.xml +0 -0
  896. data/tests/wellformed/atom10/entry_id_no_normalization_7.xml +0 -0
  897. data/tests/wellformed/atom10/entry_link_alternate_map_link.xml +0 -0
  898. data/tests/wellformed/atom10/entry_link_alternate_map_link_2.xml +0 -0
  899. data/tests/wellformed/atom10/entry_link_alternate_map_link_3.xml +0 -0
  900. data/tests/wellformed/atom10/entry_link_href.xml +0 -0
  901. data/tests/wellformed/atom10/entry_link_hreflang.xml +0 -0
  902. data/tests/wellformed/atom10/entry_link_length.xml +0 -0
  903. data/tests/wellformed/atom10/entry_link_multiple.xml +0 -0
  904. data/tests/wellformed/atom10/entry_link_no_rel.xml +0 -0
  905. data/tests/wellformed/atom10/entry_link_rel.xml +0 -0
  906. data/tests/wellformed/atom10/entry_link_rel_enclosure.xml +0 -0
  907. data/tests/wellformed/atom10/entry_link_rel_enclosure_map_enclosure_length.xml +0 -0
  908. data/tests/wellformed/atom10/entry_link_rel_enclosure_map_enclosure_type.xml +0 -0
  909. data/tests/wellformed/atom10/entry_link_rel_enclosure_map_enclosure_url.xml +0 -0
  910. data/tests/wellformed/atom10/entry_link_rel_other.xml +0 -0
  911. data/tests/wellformed/atom10/entry_link_rel_related.xml +0 -0
  912. data/tests/wellformed/atom10/entry_link_rel_self.xml +0 -0
  913. data/tests/wellformed/atom10/entry_link_rel_via.xml +0 -0
  914. data/tests/wellformed/atom10/entry_link_title.xml +0 -0
  915. data/tests/wellformed/atom10/entry_link_type.xml +0 -0
  916. data/tests/wellformed/atom10/entry_rights.xml +0 -0
  917. data/tests/wellformed/atom10/entry_rights_content_value.xml +0 -0
  918. data/tests/wellformed/atom10/entry_rights_escaped_markup.xml +0 -0
  919. data/tests/wellformed/atom10/entry_rights_inline_markup.xml +0 -0
  920. data/tests/wellformed/atom10/entry_rights_inline_markup_2.xml +0 -0
  921. data/tests/wellformed/atom10/entry_rights_text_plain.xml +0 -0
  922. data/tests/wellformed/atom10/entry_rights_text_plain_brackets.xml +0 -0
  923. data/tests/wellformed/atom10/entry_rights_type_default.xml +0 -0
  924. data/tests/wellformed/atom10/entry_rights_type_text.xml +0 -0
  925. data/tests/wellformed/atom10/entry_source_author_email.xml +0 -0
  926. data/tests/wellformed/atom10/entry_source_author_map_author.xml +0 -0
  927. data/tests/wellformed/atom10/entry_source_author_map_author_2.xml +0 -0
  928. data/tests/wellformed/atom10/entry_source_author_name.xml +0 -0
  929. data/tests/wellformed/atom10/entry_source_author_uri.xml +0 -0
  930. data/tests/wellformed/atom10/entry_source_category_label.xml +0 -0
  931. data/tests/wellformed/atom10/entry_source_category_scheme.xml +0 -0
  932. data/tests/wellformed/atom10/entry_source_category_term.xml +0 -0
  933. data/tests/wellformed/atom10/entry_source_contributor_email.xml +0 -0
  934. data/tests/wellformed/atom10/entry_source_contributor_multiple.xml +0 -0
  935. data/tests/wellformed/atom10/entry_source_contributor_name.xml +0 -0
  936. data/tests/wellformed/atom10/entry_source_contributor_uri.xml +0 -0
  937. data/tests/wellformed/atom10/entry_source_generator.xml +0 -0
  938. data/tests/wellformed/atom10/entry_source_generator_name.xml +0 -0
  939. data/tests/wellformed/atom10/entry_source_generator_uri.xml +0 -0
  940. data/tests/wellformed/atom10/entry_source_generator_version.xml +0 -0
  941. data/tests/wellformed/atom10/entry_source_icon.xml +0 -0
  942. data/tests/wellformed/atom10/entry_source_id.xml +0 -0
  943. data/tests/wellformed/atom10/entry_source_link_alternate_map_link.xml +0 -0
  944. data/tests/wellformed/atom10/entry_source_link_alternate_map_link_2.xml +0 -0
  945. data/tests/wellformed/atom10/entry_source_link_href.xml +0 -0
  946. data/tests/wellformed/atom10/entry_source_link_hreflang.xml +0 -0
  947. data/tests/wellformed/atom10/entry_source_link_length.xml +0 -0
  948. data/tests/wellformed/atom10/entry_source_link_multiple.xml +0 -0
  949. data/tests/wellformed/atom10/entry_source_link_no_rel.xml +0 -0
  950. data/tests/wellformed/atom10/entry_source_link_rel.xml +0 -0
  951. data/tests/wellformed/atom10/entry_source_link_rel_other.xml +0 -0
  952. data/tests/wellformed/atom10/entry_source_link_rel_related.xml +0 -0
  953. data/tests/wellformed/atom10/entry_source_link_rel_self.xml +0 -0
  954. data/tests/wellformed/atom10/entry_source_link_rel_via.xml +0 -0
  955. data/tests/wellformed/atom10/entry_source_link_title.xml +0 -0
  956. data/tests/wellformed/atom10/entry_source_link_type.xml +0 -0
  957. data/tests/wellformed/atom10/entry_source_logo.xml +0 -0
  958. data/tests/wellformed/atom10/entry_source_rights.xml +0 -0
  959. data/tests/wellformed/atom10/entry_source_rights_base64.xml +0 -0
  960. data/tests/wellformed/atom10/entry_source_rights_base64_2.xml +0 -0
  961. data/tests/wellformed/atom10/entry_source_rights_content_type.xml +0 -0
  962. data/tests/wellformed/atom10/entry_source_rights_content_type_text.xml +0 -0
  963. data/tests/wellformed/atom10/entry_source_rights_content_value.xml +0 -0
  964. data/tests/wellformed/atom10/entry_source_rights_escaped_markup.xml +0 -0
  965. data/tests/wellformed/atom10/entry_source_rights_inline_markup.xml +0 -0
  966. data/tests/wellformed/atom10/entry_source_rights_inline_markup_2.xml +0 -0
  967. data/tests/wellformed/atom10/entry_source_rights_text_plain.xml +0 -0
  968. data/tests/wellformed/atom10/entry_source_subittle_content_type_text.xml +0 -0
  969. data/tests/wellformed/atom10/entry_source_subtitle.xml +0 -0
  970. data/tests/wellformed/atom10/entry_source_subtitle_base64.xml +0 -0
  971. data/tests/wellformed/atom10/entry_source_subtitle_base64_2.xml +0 -0
  972. data/tests/wellformed/atom10/entry_source_subtitle_content_type.xml +0 -0
  973. data/tests/wellformed/atom10/entry_source_subtitle_content_value.xml +0 -0
  974. data/tests/wellformed/atom10/entry_source_subtitle_escaped_markup.xml +0 -0
  975. data/tests/wellformed/atom10/entry_source_subtitle_inline_markup.xml +0 -0
  976. data/tests/wellformed/atom10/entry_source_subtitle_inline_markup_2.xml +0 -0
  977. data/tests/wellformed/atom10/entry_source_subtitle_text_plain.xml +0 -0
  978. data/tests/wellformed/atom10/entry_source_title.xml +0 -0
  979. data/tests/wellformed/atom10/entry_source_title_base64.xml +0 -0
  980. data/tests/wellformed/atom10/entry_source_title_base64_2.xml +0 -0
  981. data/tests/wellformed/atom10/entry_source_title_content_type.xml +0 -0
  982. data/tests/wellformed/atom10/entry_source_title_content_type_text.xml +0 -0
  983. data/tests/wellformed/atom10/entry_source_title_content_value.xml +0 -0
  984. data/tests/wellformed/atom10/entry_source_title_escaped_markup.xml +0 -0
  985. data/tests/wellformed/atom10/entry_source_title_inline_markup.xml +0 -0
  986. data/tests/wellformed/atom10/entry_source_title_inline_markup_2.xml +0 -0
  987. data/tests/wellformed/atom10/entry_source_title_text_plain.xml +0 -0
  988. data/tests/wellformed/atom10/entry_summary.xml +0 -0
  989. data/tests/wellformed/atom10/entry_summary_base64.xml +0 -0
  990. data/tests/wellformed/atom10/entry_summary_base64_2.xml +0 -0
  991. data/tests/wellformed/atom10/entry_summary_content_value.xml +0 -0
  992. data/tests/wellformed/atom10/entry_summary_escaped_markup.xml +0 -0
  993. data/tests/wellformed/atom10/entry_summary_inline_markup.xml +0 -0
  994. data/tests/wellformed/atom10/entry_summary_inline_markup_2.xml +0 -0
  995. data/tests/wellformed/atom10/entry_summary_text_plain.xml +0 -0
  996. data/tests/wellformed/atom10/entry_summary_type_default.xml +0 -0
  997. data/tests/wellformed/atom10/entry_summary_type_text.xml +0 -0
  998. data/tests/wellformed/atom10/entry_title.xml +0 -0
  999. data/tests/wellformed/atom10/entry_title_base64.xml +0 -0
  1000. data/tests/wellformed/atom10/entry_title_base64_2.xml +0 -0
  1001. data/tests/wellformed/atom10/entry_title_content_value.xml +0 -0
  1002. data/tests/wellformed/atom10/entry_title_escaped_markup.xml +0 -0
  1003. data/tests/wellformed/atom10/entry_title_inline_markup.xml +0 -0
  1004. data/tests/wellformed/atom10/entry_title_inline_markup_2.xml +0 -0
  1005. data/tests/wellformed/atom10/entry_title_text_plain.xml +0 -0
  1006. data/tests/wellformed/atom10/entry_title_text_plain_brackets.xml +0 -0
  1007. data/tests/wellformed/atom10/entry_title_type_default.xml +0 -0
  1008. data/tests/wellformed/atom10/entry_title_type_text.xml +0 -0
  1009. data/tests/wellformed/atom10/feed_author_email.xml +0 -0
  1010. data/tests/wellformed/atom10/feed_author_map_author.xml +0 -0
  1011. data/tests/wellformed/atom10/feed_author_map_author_2.xml +0 -0
  1012. data/tests/wellformed/atom10/feed_author_name.xml +0 -0
  1013. data/tests/wellformed/atom10/feed_author_uri.xml +0 -0
  1014. data/tests/wellformed/atom10/feed_author_url.xml +0 -0
  1015. data/tests/wellformed/atom10/feed_contributor_email.xml +0 -0
  1016. data/tests/wellformed/atom10/feed_contributor_multiple.xml +0 -0
  1017. data/tests/wellformed/atom10/feed_contributor_name.xml +0 -0
  1018. data/tests/wellformed/atom10/feed_contributor_uri.xml +0 -0
  1019. data/tests/wellformed/atom10/feed_contributor_url.xml +0 -0
  1020. data/tests/wellformed/atom10/feed_generator.xml +0 -0
  1021. data/tests/wellformed/atom10/feed_generator_name.xml +0 -0
  1022. data/tests/wellformed/atom10/feed_generator_url.xml +0 -0
  1023. data/tests/wellformed/atom10/feed_generator_version.xml +0 -0
  1024. data/tests/wellformed/atom10/feed_icon.xml +0 -0
  1025. data/tests/wellformed/atom10/feed_id.xml +0 -0
  1026. data/tests/wellformed/atom10/feed_id_map_guid.xml +0 -0
  1027. data/tests/wellformed/atom10/feed_link_alternate_map_link.xml +0 -0
  1028. data/tests/wellformed/atom10/feed_link_alternate_map_link_2.xml +0 -0
  1029. data/tests/wellformed/atom10/feed_link_href.xml +0 -0
  1030. data/tests/wellformed/atom10/feed_link_hreflang.xml +0 -0
  1031. data/tests/wellformed/atom10/feed_link_length.xml +0 -0
  1032. data/tests/wellformed/atom10/feed_link_multiple.xml +0 -0
  1033. data/tests/wellformed/atom10/feed_link_no_rel.xml +0 -0
  1034. data/tests/wellformed/atom10/feed_link_rel.xml +0 -0
  1035. data/tests/wellformed/atom10/feed_link_rel_other.xml +0 -0
  1036. data/tests/wellformed/atom10/feed_link_rel_related.xml +0 -0
  1037. data/tests/wellformed/atom10/feed_link_rel_self.xml +0 -0
  1038. data/tests/wellformed/atom10/feed_link_rel_via.xml +0 -0
  1039. data/tests/wellformed/atom10/feed_link_title.xml +0 -0
  1040. data/tests/wellformed/atom10/feed_link_type.xml +0 -0
  1041. data/tests/wellformed/atom10/feed_logo.xml +0 -0
  1042. data/tests/wellformed/atom10/feed_rights.xml +0 -0
  1043. data/tests/wellformed/atom10/feed_rights_base64.xml +0 -0
  1044. data/tests/wellformed/atom10/feed_rights_base64_2.xml +0 -0
  1045. data/tests/wellformed/atom10/feed_rights_content_type.xml +0 -0
  1046. data/tests/wellformed/atom10/feed_rights_content_type_text.xml +0 -0
  1047. data/tests/wellformed/atom10/feed_rights_content_value.xml +0 -0
  1048. data/tests/wellformed/atom10/feed_rights_escaped_markup.xml +0 -0
  1049. data/tests/wellformed/atom10/feed_rights_inline_markup.xml +0 -0
  1050. data/tests/wellformed/atom10/feed_rights_inline_markup_2.xml +0 -0
  1051. data/tests/wellformed/atom10/feed_rights_text_plain.xml +0 -0
  1052. data/tests/wellformed/atom10/feed_subtitle.xml +0 -0
  1053. data/tests/wellformed/atom10/feed_subtitle_base64.xml +0 -0
  1054. data/tests/wellformed/atom10/feed_subtitle_base64_2.xml +0 -0
  1055. data/tests/wellformed/atom10/feed_subtitle_content_type.xml +0 -0
  1056. data/tests/wellformed/atom10/feed_subtitle_content_type_text.xml +0 -0
  1057. data/tests/wellformed/atom10/feed_subtitle_content_value.xml +0 -0
  1058. data/tests/wellformed/atom10/feed_subtitle_escaped_markup.xml +0 -0
  1059. data/tests/wellformed/atom10/feed_subtitle_inline_markup.xml +0 -0
  1060. data/tests/wellformed/atom10/feed_subtitle_inline_markup_2.xml +0 -0
  1061. data/tests/wellformed/atom10/feed_subtitle_text_plain.xml +0 -0
  1062. data/tests/wellformed/atom10/feed_title.xml +0 -0
  1063. data/tests/wellformed/atom10/feed_title_base64.xml +0 -0
  1064. data/tests/wellformed/atom10/feed_title_base64_2.xml +0 -0
  1065. data/tests/wellformed/atom10/feed_title_content_type.xml +0 -0
  1066. data/tests/wellformed/atom10/feed_title_content_type_text.xml +0 -0
  1067. data/tests/wellformed/atom10/feed_title_content_value.xml +0 -0
  1068. data/tests/wellformed/atom10/feed_title_escaped_markup.xml +0 -0
  1069. data/tests/wellformed/atom10/feed_title_inline_markup.xml +0 -0
  1070. data/tests/wellformed/atom10/feed_title_inline_markup_2.xml +0 -0
  1071. data/tests/wellformed/atom10/feed_title_text_plain.xml +0 -0
  1072. data/tests/wellformed/atom10/relative_uri.xml +0 -0
  1073. data/tests/wellformed/atom10/relative_uri_inherit.xml +0 -0
  1074. data/tests/wellformed/atom10/relative_uri_inherit_2.xml +0 -0
  1075. data/tests/wellformed/base/entry_summary_xml_base.xml +0 -0
  1076. data/tests/wellformed/base/entry_summary_xml_base_inherit.xml +0 -0
  1077. data/tests/wellformed/base/entry_summary_xml_base_inherit_2.xml +0 -0
  1078. data/tests/wellformed/base/entry_summary_xml_base_inherit_3.xml +0 -0
  1079. data/tests/wellformed/base/entry_summary_xml_base_inherit_4.xml +0 -0
  1080. data/tests/wellformed/base/entry_title_xml_base.xml +0 -0
  1081. data/tests/wellformed/base/entry_title_xml_base_inherit.xml +0 -0
  1082. data/tests/wellformed/base/entry_title_xml_base_inherit_2.xml +0 -0
  1083. data/tests/wellformed/base/entry_title_xml_base_inherit_3.xml +0 -0
  1084. data/tests/wellformed/base/entry_title_xml_base_inherit_4.xml +0 -0
  1085. data/tests/wellformed/base/feed_copyright_xml_base.xml +0 -0
  1086. data/tests/wellformed/base/feed_copyright_xml_base_inherit.xml +0 -0
  1087. data/tests/wellformed/base/feed_copyright_xml_base_inherit_2.xml +0 -0
  1088. data/tests/wellformed/base/feed_copyright_xml_base_inherit_3.xml +0 -0
  1089. data/tests/wellformed/base/feed_copyright_xml_base_inherit_4.xml +0 -0
  1090. data/tests/wellformed/base/feed_info_xml_base.xml +0 -0
  1091. data/tests/wellformed/base/feed_info_xml_base_inherit.xml +0 -0
  1092. data/tests/wellformed/base/feed_info_xml_base_inherit_2.xml +0 -0
  1093. data/tests/wellformed/base/feed_info_xml_base_inherit_3.xml +0 -0
  1094. data/tests/wellformed/base/feed_info_xml_base_inherit_4.xml +0 -0
  1095. data/tests/wellformed/base/feed_tagline_xml_base.xml +0 -0
  1096. data/tests/wellformed/base/feed_tagline_xml_base_inherit.xml +0 -0
  1097. data/tests/wellformed/base/feed_tagline_xml_base_inherit_2.xml +0 -0
  1098. data/tests/wellformed/base/feed_tagline_xml_base_inherit_3.xml +0 -0
  1099. data/tests/wellformed/base/feed_tagline_xml_base_inherit_4.xml +0 -0
  1100. data/tests/wellformed/base/feed_title_xml_base.xml +0 -0
  1101. data/tests/wellformed/base/feed_title_xml_base_inherit.xml +0 -0
  1102. data/tests/wellformed/base/feed_title_xml_base_inherit_2.xml +0 -0
  1103. data/tests/wellformed/base/feed_title_xml_base_inherit_3.xml +0 -0
  1104. data/tests/wellformed/base/feed_title_xml_base_inherit_4.xml +0 -0
  1105. data/tests/wellformed/base/http_relative_xml_base.xml +0 -0
  1106. data/tests/wellformed/base/http_relative_xml_base_2.xml +0 -0
  1107. data/tests/wellformed/base/malformed_base.xml +0 -0
  1108. data/tests/wellformed/base/relative_xml_base.xml +0 -0
  1109. data/tests/wellformed/base/relative_xml_base_2.xml +0 -0
  1110. data/tests/wellformed/date/channel_pubDate_greek_1.xml +0 -0
  1111. data/tests/wellformed/date/channel_pubDate_hungarian_1.xml +0 -0
  1112. data/tests/wellformed/date/channel_pubDate_korean_nate.xml +0 -0
  1113. data/tests/wellformed/date/channel_pubDate_mssql.xml +0 -0
  1114. data/tests/wellformed/date/channel_pubDate_mssql_nofraction.xml +0 -0
  1115. data/tests/wellformed/date/channel_pubDate_nosecond.xml +0 -0
  1116. data/tests/wellformed/date/channel_pubDate_notime.xml +0 -0
  1117. data/tests/wellformed/date/entry_created.xml +0 -0
  1118. data/tests/wellformed/date/entry_created_w3dtf_utc.xml +0 -0
  1119. data/tests/wellformed/date/entry_issued.xml +0 -0
  1120. data/tests/wellformed/date/entry_issued_w3dtf_utc.xml +0 -0
  1121. data/tests/wellformed/date/entry_modified.xml +0 -0
  1122. data/tests/wellformed/date/entry_modified_map_date.xml +0 -0
  1123. data/tests/wellformed/date/entry_modified_w3dtf_utc.xml +0 -0
  1124. data/tests/wellformed/date/entry_published_w3dtf_utc.xml +0 -0
  1125. data/tests/wellformed/date/entry_source_updated_w3dtf_utc.xml +0 -0
  1126. data/tests/wellformed/date/entry_updated_w3dtf_utc.xml +0 -0
  1127. data/tests/wellformed/date/feed_modified.xml +0 -0
  1128. data/tests/wellformed/date/feed_modified_asctime.xml +0 -0
  1129. data/tests/wellformed/date/feed_modified_disney.xml +0 -0
  1130. data/tests/wellformed/date/feed_modified_disney_at.xml +0 -0
  1131. data/tests/wellformed/date/feed_modified_disney_ct.xml +0 -0
  1132. data/tests/wellformed/date/feed_modified_disney_mt.xml +0 -0
  1133. data/tests/wellformed/date/feed_modified_disney_pt.xml +0 -0
  1134. data/tests/wellformed/date/feed_modified_iso8601_ym.xml +0 -0
  1135. data/tests/wellformed/date/feed_modified_iso8601_ym_2.xml +0 -0
  1136. data/tests/wellformed/date/feed_modified_iso8601_ymd.xml +0 -0
  1137. data/tests/wellformed/date/feed_modified_iso8601_ymd_2.xml +0 -0
  1138. data/tests/wellformed/date/feed_modified_iso8601_yo_2.xml +0 -0
  1139. data/tests/wellformed/date/feed_modified_map_date.xml +0 -0
  1140. data/tests/wellformed/date/feed_modified_rfc2822.xml +0 -0
  1141. data/tests/wellformed/date/feed_modified_rfc2822_rollover_june_31.xml +0 -0
  1142. data/tests/wellformed/date/feed_modified_rfc822.xml +0 -0
  1143. data/tests/wellformed/date/feed_modified_w3dtf_rollover_leapyear.xml +0 -0
  1144. data/tests/wellformed/date/feed_modified_w3dtf_rollover_leapyear400.xml +0 -0
  1145. data/tests/wellformed/date/feed_modified_w3dtf_rollover_nonleapyear.xml +0 -0
  1146. data/tests/wellformed/date/feed_modified_w3dtf_sf.xml +0 -0
  1147. data/tests/wellformed/date/feed_modified_w3dtf_tokyo.xml +0 -0
  1148. data/tests/wellformed/date/feed_modified_w3dtf_utc.xml +0 -0
  1149. data/tests/wellformed/date/feed_modified_w3dtf_y.xml +0 -0
  1150. data/tests/wellformed/date/feed_modified_w3dtf_ym.xml +0 -0
  1151. data/tests/wellformed/date/feed_modified_w3dtf_ymd.xml +0 -0
  1152. data/tests/wellformed/date/feed_modified_w3dtf_ymd_2.xml +0 -0
  1153. data/tests/wellformed/date/feed_updated_w3dtf_utc.xml +0 -0
  1154. data/tests/wellformed/date/item_pubDate_euc-kr.xml +0 -0
  1155. data/tests/wellformed/encoding/encoding_attribute_crash.xml +0 -0
  1156. data/tests/wellformed/encoding/encoding_attribute_crash_2.xml +0 -0
  1157. data/tests/wellformed/encoding/euc-kr-attribute.xml +0 -0
  1158. data/tests/wellformed/encoding/euc-kr-item.xml +0 -0
  1159. data/tests/wellformed/encoding/euc-kr.xml +0 -0
  1160. data/tests/wellformed/encoding/http_encoding_attribute_crash.xml +0 -0
  1161. data/tests/wellformed/encoding/http_text_xml_bogus_charset.xml +0 -0
  1162. data/tests/wellformed/encoding/http_text_xml_bogus_param.xml +0 -0
  1163. data/tests/wellformed/encoding/http_text_xml_qs.xml +0 -0
  1164. data/tests/wellformed/encoding/utf-16be-autodetect.xml +0 -0
  1165. data/tests/wellformed/encoding/utf-16be-bom.xml +0 -0
  1166. data/tests/wellformed/encoding/utf-16be.xml +0 -0
  1167. data/tests/wellformed/encoding/utf-16le-autodetect.xml +0 -0
  1168. data/tests/wellformed/encoding/utf-16le-bom.xml +0 -0
  1169. data/tests/wellformed/encoding/utf-16le.xml +0 -0
  1170. data/tests/wellformed/encoding/utf-8-bom.xml +0 -0
  1171. data/tests/wellformed/encoding/x80_437.xml +0 -0
  1172. data/tests/wellformed/encoding/x80_850.xml +0 -0
  1173. data/tests/wellformed/encoding/x80_852.xml +0 -0
  1174. data/tests/wellformed/encoding/x80_855.xml +0 -0
  1175. data/tests/wellformed/encoding/x80_857.xml +0 -0
  1176. data/tests/wellformed/encoding/x80_860.xml +0 -0
  1177. data/tests/wellformed/encoding/x80_861.xml +0 -0
  1178. data/tests/wellformed/encoding/x80_862.xml +0 -0
  1179. data/tests/wellformed/encoding/x80_863.xml +0 -0
  1180. data/tests/wellformed/encoding/x80_865.xml +0 -0
  1181. data/tests/wellformed/encoding/x80_866.xml +0 -0
  1182. data/tests/wellformed/encoding/x80_cp037.xml +0 -0
  1183. data/tests/wellformed/encoding/x80_cp1125.xml +0 -0
  1184. data/tests/wellformed/encoding/x80_cp1250.xml +0 -0
  1185. data/tests/wellformed/encoding/x80_cp1251.xml +0 -0
  1186. data/tests/wellformed/encoding/x80_cp1252.xml +0 -0
  1187. data/tests/wellformed/encoding/x80_cp1253.xml +0 -0
  1188. data/tests/wellformed/encoding/x80_cp1254.xml +0 -0
  1189. data/tests/wellformed/encoding/x80_cp1255.xml +0 -0
  1190. data/tests/wellformed/encoding/x80_cp1256.xml +0 -0
  1191. data/tests/wellformed/encoding/x80_cp1257.xml +0 -0
  1192. data/tests/wellformed/encoding/x80_cp1258.xml +0 -0
  1193. data/tests/wellformed/encoding/x80_cp437.xml +0 -0
  1194. data/tests/wellformed/encoding/x80_cp500.xml +0 -0
  1195. data/tests/wellformed/encoding/x80_cp737.xml +0 -0
  1196. data/tests/wellformed/encoding/x80_cp775.xml +0 -0
  1197. data/tests/wellformed/encoding/x80_cp850.xml +0 -0
  1198. data/tests/wellformed/encoding/x80_cp852.xml +0 -0
  1199. data/tests/wellformed/encoding/x80_cp855.xml +0 -0
  1200. data/tests/wellformed/encoding/x80_cp856.xml +0 -0
  1201. data/tests/wellformed/encoding/x80_cp857.xml +0 -0
  1202. data/tests/wellformed/encoding/x80_cp860.xml +0 -0
  1203. data/tests/wellformed/encoding/x80_cp861.xml +0 -0
  1204. data/tests/wellformed/encoding/x80_cp862.xml +0 -0
  1205. data/tests/wellformed/encoding/x80_cp863.xml +0 -0
  1206. data/tests/wellformed/encoding/x80_cp864.xml +0 -0
  1207. data/tests/wellformed/encoding/x80_cp865.xml +0 -0
  1208. data/tests/wellformed/encoding/x80_cp866.xml +0 -0
  1209. data/tests/wellformed/encoding/x80_cp874.xml +0 -0
  1210. data/tests/wellformed/encoding/x80_cp875.xml +0 -0
  1211. data/tests/wellformed/encoding/x80_cp_is.xml +0 -0
  1212. data/tests/wellformed/encoding/x80_csibm037.xml +0 -0
  1213. data/tests/wellformed/encoding/x80_csibm500.xml +0 -0
  1214. data/tests/wellformed/encoding/x80_csibm855.xml +0 -0
  1215. data/tests/wellformed/encoding/x80_csibm857.xml +0 -0
  1216. data/tests/wellformed/encoding/x80_csibm860.xml +0 -0
  1217. data/tests/wellformed/encoding/x80_csibm861.xml +0 -0
  1218. data/tests/wellformed/encoding/x80_csibm863.xml +0 -0
  1219. data/tests/wellformed/encoding/x80_csibm864.xml +0 -0
  1220. data/tests/wellformed/encoding/x80_csibm865.xml +0 -0
  1221. data/tests/wellformed/encoding/x80_csibm866.xml +0 -0
  1222. data/tests/wellformed/encoding/x80_cskoi8r.xml +0 -0
  1223. data/tests/wellformed/encoding/x80_csmacintosh.xml +0 -0
  1224. data/tests/wellformed/encoding/x80_cspc775baltic.xml +0 -0
  1225. data/tests/wellformed/encoding/x80_cspc850multilingual.xml +0 -0
  1226. data/tests/wellformed/encoding/x80_cspc862latinhebrew.xml +0 -0
  1227. data/tests/wellformed/encoding/x80_cspc8codepage437.xml +0 -0
  1228. data/tests/wellformed/encoding/x80_cspcp852.xml +0 -0
  1229. data/tests/wellformed/encoding/x80_dbcs.xml +0 -0
  1230. data/tests/wellformed/encoding/x80_ebcdic-cp-be.xml +0 -0
  1231. data/tests/wellformed/encoding/x80_ebcdic-cp-ca.xml +0 -0
  1232. data/tests/wellformed/encoding/x80_ebcdic-cp-ch.xml +0 -0
  1233. data/tests/wellformed/encoding/x80_ebcdic-cp-nl.xml +0 -0
  1234. data/tests/wellformed/encoding/x80_ebcdic-cp-us.xml +0 -0
  1235. data/tests/wellformed/encoding/x80_ebcdic-cp-wt.xml +0 -0
  1236. data/tests/wellformed/encoding/x80_ebcdic_cp_be.xml +0 -0
  1237. data/tests/wellformed/encoding/x80_ebcdic_cp_ca.xml +0 -0
  1238. data/tests/wellformed/encoding/x80_ebcdic_cp_ch.xml +0 -0
  1239. data/tests/wellformed/encoding/x80_ebcdic_cp_nl.xml +0 -0
  1240. data/tests/wellformed/encoding/x80_ebcdic_cp_us.xml +0 -0
  1241. data/tests/wellformed/encoding/x80_ebcdic_cp_wt.xml +0 -0
  1242. data/tests/wellformed/encoding/x80_ibm037.xml +0 -0
  1243. data/tests/wellformed/encoding/x80_ibm039.xml +0 -0
  1244. data/tests/wellformed/encoding/x80_ibm1140.xml +0 -0
  1245. data/tests/wellformed/encoding/x80_ibm437.xml +0 -0
  1246. data/tests/wellformed/encoding/x80_ibm500.xml +0 -0
  1247. data/tests/wellformed/encoding/x80_ibm775.xml +0 -0
  1248. data/tests/wellformed/encoding/x80_ibm850.xml +0 -0
  1249. data/tests/wellformed/encoding/x80_ibm852.xml +0 -0
  1250. data/tests/wellformed/encoding/x80_ibm855.xml +0 -0
  1251. data/tests/wellformed/encoding/x80_ibm857.xml +0 -0
  1252. data/tests/wellformed/encoding/x80_ibm860.xml +0 -0
  1253. data/tests/wellformed/encoding/x80_ibm861.xml +0 -0
  1254. data/tests/wellformed/encoding/x80_ibm862.xml +0 -0
  1255. data/tests/wellformed/encoding/x80_ibm863.xml +0 -0
  1256. data/tests/wellformed/encoding/x80_ibm864.xml +0 -0
  1257. data/tests/wellformed/encoding/x80_ibm865.xml +0 -0
  1258. data/tests/wellformed/encoding/x80_ibm866.xml +0 -0
  1259. data/tests/wellformed/encoding/x80_koi8-r.xml +0 -0
  1260. data/tests/wellformed/encoding/x80_koi8-t.xml +0 -0
  1261. data/tests/wellformed/encoding/x80_koi8-u.xml +0 -0
  1262. data/tests/wellformed/encoding/x80_mac-cyrillic.xml +0 -0
  1263. data/tests/wellformed/encoding/x80_mac.xml +0 -0
  1264. data/tests/wellformed/encoding/x80_maccentraleurope.xml +0 -0
  1265. data/tests/wellformed/encoding/x80_maccyrillic.xml +0 -0
  1266. data/tests/wellformed/encoding/x80_macgreek.xml +0 -0
  1267. data/tests/wellformed/encoding/x80_maciceland.xml +0 -0
  1268. data/tests/wellformed/encoding/x80_macintosh.xml +0 -0
  1269. data/tests/wellformed/encoding/x80_maclatin2.xml +0 -0
  1270. data/tests/wellformed/encoding/x80_macroman.xml +0 -0
  1271. data/tests/wellformed/encoding/x80_macturkish.xml +0 -0
  1272. data/tests/wellformed/encoding/x80_ms-ansi.xml +0 -0
  1273. data/tests/wellformed/encoding/x80_ms-arab.xml +0 -0
  1274. data/tests/wellformed/encoding/x80_ms-cyrl.xml +0 -0
  1275. data/tests/wellformed/encoding/x80_ms-ee.xml +0 -0
  1276. data/tests/wellformed/encoding/x80_ms-greek.xml +0 -0
  1277. data/tests/wellformed/encoding/x80_ms-hebr.xml +0 -0
  1278. data/tests/wellformed/encoding/x80_ms-turk.xml +0 -0
  1279. data/tests/wellformed/encoding/x80_tcvn-5712.xml +0 -0
  1280. data/tests/wellformed/encoding/x80_tcvn.xml +0 -0
  1281. data/tests/wellformed/encoding/x80_tcvn5712-1.xml +0 -0
  1282. data/tests/wellformed/encoding/x80_viscii.xml +0 -0
  1283. data/tests/wellformed/encoding/x80_winbaltrim.xml +0 -0
  1284. data/tests/wellformed/encoding/x80_windows-1250.xml +0 -0
  1285. data/tests/wellformed/encoding/x80_windows-1251.xml +0 -0
  1286. data/tests/wellformed/encoding/x80_windows-1252.xml +0 -0
  1287. data/tests/wellformed/encoding/x80_windows-1253.xml +0 -0
  1288. data/tests/wellformed/encoding/x80_windows-1254.xml +0 -0
  1289. data/tests/wellformed/encoding/x80_windows-1255.xml +0 -0
  1290. data/tests/wellformed/encoding/x80_windows-1256.xml +0 -0
  1291. data/tests/wellformed/encoding/x80_windows-1257.xml +0 -0
  1292. data/tests/wellformed/encoding/x80_windows-1258.xml +0 -0
  1293. data/tests/wellformed/encoding/x80_windows_1250.xml +0 -0
  1294. data/tests/wellformed/encoding/x80_windows_1251.xml +0 -0
  1295. data/tests/wellformed/encoding/x80_windows_1252.xml +0 -0
  1296. data/tests/wellformed/encoding/x80_windows_1253.xml +0 -0
  1297. data/tests/wellformed/encoding/x80_windows_1254.xml +0 -0
  1298. data/tests/wellformed/encoding/x80_windows_1255.xml +0 -0
  1299. data/tests/wellformed/encoding/x80_windows_1256.xml +0 -0
  1300. data/tests/wellformed/encoding/x80_windows_1257.xml +0 -0
  1301. data/tests/wellformed/encoding/x80_windows_1258.xml +0 -0
  1302. data/tests/wellformed/feedburner/feedburner_browserfriendly.xml +0 -0
  1303. data/tests/wellformed/itunes/itunes_channel_block.xml +0 -0
  1304. data/tests/wellformed/itunes/itunes_channel_block_false.xml +0 -0
  1305. data/tests/wellformed/itunes/itunes_channel_block_no.xml +0 -0
  1306. data/tests/wellformed/itunes/itunes_channel_block_true.xml +0 -0
  1307. data/tests/wellformed/itunes/itunes_channel_block_uppercase.xml +0 -0
  1308. data/tests/wellformed/itunes/itunes_channel_block_whitespace.xml +0 -0
  1309. data/tests/wellformed/itunes/itunes_channel_category.xml +0 -0
  1310. data/tests/wellformed/itunes/itunes_channel_category_nested.xml +0 -0
  1311. data/tests/wellformed/itunes/itunes_channel_category_scheme.xml +0 -0
  1312. data/tests/wellformed/itunes/itunes_channel_explicit.xml +0 -0
  1313. data/tests/wellformed/itunes/itunes_channel_explicit_false.xml +0 -0
  1314. data/tests/wellformed/itunes/itunes_channel_explicit_no.xml +0 -0
  1315. data/tests/wellformed/itunes/itunes_channel_explicit_true.xml +0 -0
  1316. data/tests/wellformed/itunes/itunes_channel_explicit_uppercase.xml +0 -0
  1317. data/tests/wellformed/itunes/itunes_channel_explicit_whitespace.xml +0 -0
  1318. data/tests/wellformed/itunes/itunes_channel_image.xml +0 -0
  1319. data/tests/wellformed/itunes/itunes_channel_keywords.xml +0 -0
  1320. data/tests/wellformed/itunes/itunes_channel_keywords_duplicate.xml +0 -0
  1321. data/tests/wellformed/itunes/itunes_channel_keywords_duplicate_2.xml +0 -0
  1322. data/tests/wellformed/itunes/itunes_channel_keywords_multiple.xml +0 -0
  1323. data/tests/wellformed/itunes/itunes_channel_link_image.xml +0 -0
  1324. data/tests/wellformed/itunes/itunes_channel_owner_email.xml +0 -0
  1325. data/tests/wellformed/itunes/itunes_channel_owner_name.xml +0 -0
  1326. data/tests/wellformed/itunes/itunes_channel_subtitle.xml +0 -0
  1327. data/tests/wellformed/itunes/itunes_channel_summary.xml +0 -0
  1328. data/tests/wellformed/itunes/itunes_core_element_uppercase.xml +0 -0
  1329. data/tests/wellformed/itunes/itunes_enclosure_url_maps_id.xml +0 -0
  1330. data/tests/wellformed/itunes/itunes_enclosure_url_maps_id_2.xml +0 -0
  1331. data/tests/wellformed/itunes/itunes_item_author_map_author.xml +0 -0
  1332. data/tests/wellformed/itunes/itunes_item_block.xml +0 -0
  1333. data/tests/wellformed/itunes/itunes_item_block_false.xml +0 -0
  1334. data/tests/wellformed/itunes/itunes_item_block_no.xml +0 -0
  1335. data/tests/wellformed/itunes/itunes_item_block_true.xml +0 -0
  1336. data/tests/wellformed/itunes/itunes_item_block_uppercase.xml +0 -0
  1337. data/tests/wellformed/itunes/itunes_item_block_whitespace.xml +0 -0
  1338. data/tests/wellformed/itunes/itunes_item_category.xml +0 -0
  1339. data/tests/wellformed/itunes/itunes_item_category_nested.xml +0 -0
  1340. data/tests/wellformed/itunes/itunes_item_category_scheme.xml +0 -0
  1341. data/tests/wellformed/itunes/itunes_item_duration.xml +0 -0
  1342. data/tests/wellformed/itunes/itunes_item_explicit.xml +0 -0
  1343. data/tests/wellformed/itunes/itunes_item_explicit_false.xml +0 -0
  1344. data/tests/wellformed/itunes/itunes_item_explicit_no.xml +0 -0
  1345. data/tests/wellformed/itunes/itunes_item_explicit_true.xml +0 -0
  1346. data/tests/wellformed/itunes/itunes_item_explicit_uppercase.xml +0 -0
  1347. data/tests/wellformed/itunes/itunes_item_explicit_whitespace.xml +0 -0
  1348. data/tests/wellformed/itunes/itunes_item_image.xml +0 -0
  1349. data/tests/wellformed/itunes/itunes_item_link_image.xml +0 -0
  1350. data/tests/wellformed/itunes/itunes_item_subtitle.xml +0 -0
  1351. data/tests/wellformed/itunes/itunes_item_summary.xml +0 -0
  1352. data/tests/wellformed/itunes/itunes_link_enclosure_maps_id.xml +0 -0
  1353. data/tests/wellformed/itunes/itunes_link_enclosure_maps_id_2.xml +0 -0
  1354. data/tests/wellformed/itunes/itunes_namespace.xml +0 -0
  1355. data/tests/wellformed/itunes/itunes_namespace_example.xml +0 -0
  1356. data/tests/wellformed/itunes/itunes_namespace_lowercase.xml +0 -0
  1357. data/tests/wellformed/itunes/itunes_namespace_uppercase.xml +0 -0
  1358. data/tests/wellformed/lang/entry_content_xml_lang_inherit.xml +0 -0
  1359. data/tests/wellformed/lang/entry_content_xml_lang_inherit_2.xml +0 -0
  1360. data/tests/wellformed/lang/entry_content_xml_lang_inherit_3.xml +0 -0
  1361. data/tests/wellformed/lang/entry_content_xml_lang_inherit_4.xml +0 -0
  1362. data/tests/wellformed/lang/entry_summary_xml_lang.xml +0 -0
  1363. data/tests/wellformed/lang/entry_summary_xml_lang_inherit.xml +0 -0
  1364. data/tests/wellformed/lang/entry_summary_xml_lang_inherit_2.xml +0 -0
  1365. data/tests/wellformed/lang/entry_summary_xml_lang_inherit_3.xml +0 -0
  1366. data/tests/wellformed/lang/entry_summary_xml_lang_inherit_4.xml +0 -0
  1367. data/tests/wellformed/lang/entry_title_xml_lang.xml +0 -0
  1368. data/tests/wellformed/lang/entry_title_xml_lang_inherit.xml +0 -0
  1369. data/tests/wellformed/lang/entry_title_xml_lang_inherit_2.xml +0 -0
  1370. data/tests/wellformed/lang/entry_title_xml_lang_inherit_3.xml +0 -0
  1371. data/tests/wellformed/lang/entry_title_xml_lang_inherit_4.xml +0 -0
  1372. data/tests/wellformed/lang/feed_copyright_xml_lang.xml +0 -0
  1373. data/tests/wellformed/lang/feed_copyright_xml_lang_inherit.xml +0 -0
  1374. data/tests/wellformed/lang/feed_copyright_xml_lang_inherit_2.xml +0 -0
  1375. data/tests/wellformed/lang/feed_copyright_xml_lang_inherit_3.xml +0 -0
  1376. data/tests/wellformed/lang/feed_copyright_xml_lang_inherit_4.xml +0 -0
  1377. data/tests/wellformed/lang/feed_info_xml_lang.xml +0 -0
  1378. data/tests/wellformed/lang/feed_info_xml_lang_inherit.xml +0 -0
  1379. data/tests/wellformed/lang/feed_info_xml_lang_inherit_2.xml +0 -0
  1380. data/tests/wellformed/lang/feed_info_xml_lang_inherit_3.xml +0 -0
  1381. data/tests/wellformed/lang/feed_info_xml_lang_inherit_4.xml +0 -0
  1382. data/tests/wellformed/lang/feed_language.xml +0 -0
  1383. data/tests/wellformed/lang/feed_language_override.xml +0 -0
  1384. data/tests/wellformed/lang/feed_not_xml_lang.xml +0 -0
  1385. data/tests/wellformed/lang/feed_not_xml_lang_2.xml +0 -0
  1386. data/tests/wellformed/lang/feed_tagline_xml_lang.xml +0 -0
  1387. data/tests/wellformed/lang/feed_tagline_xml_lang_inherit.xml +0 -0
  1388. data/tests/wellformed/lang/feed_tagline_xml_lang_inherit_2.xml +0 -0
  1389. data/tests/wellformed/lang/feed_tagline_xml_lang_inherit_3.xml +0 -0
  1390. data/tests/wellformed/lang/feed_tagline_xml_lang_inherit_4.xml +0 -0
  1391. data/tests/wellformed/lang/feed_title_xml_lang.xml +0 -0
  1392. data/tests/wellformed/lang/feed_title_xml_lang_inherit.xml +0 -0
  1393. data/tests/wellformed/lang/feed_title_xml_lang_inherit_2.xml +0 -0
  1394. data/tests/wellformed/lang/feed_title_xml_lang_inherit_3.xml +0 -0
  1395. data/tests/wellformed/lang/feed_title_xml_lang_inherit_4.xml +0 -0
  1396. data/tests/wellformed/lang/feed_xml_lang.xml +0 -0
  1397. data/tests/wellformed/lang/http_content_language.xml +0 -0
  1398. data/tests/wellformed/lang/http_content_language_entry_title_inherit.xml +0 -0
  1399. data/tests/wellformed/lang/http_content_language_entry_title_inherit_2.xml +0 -0
  1400. data/tests/wellformed/lang/http_content_language_feed_language.xml +0 -0
  1401. data/tests/wellformed/lang/http_content_language_feed_xml_lang.xml +0 -0
  1402. data/tests/wellformed/rdf/doctype_contains_entity_decl.xml +0 -0
  1403. data/tests/wellformed/rdf/rdf_item_rdf_about.xml +0 -0
  1404. data/tests/wellformed/rdf/rss_version_10_not_default_ns.xml +0 -0
  1405. data/tests/wellformed/rss/channel_dc_contributor.xml +0 -0
  1406. data/tests/wellformed/rss/channel_dc_publisher_email.xml +0 -0
  1407. data/tests/wellformed/rss/channel_dc_publisher_name.xml +0 -0
  1408. data/tests/wellformed/rss/channel_webMaster_email.xml +0 -0
  1409. data/tests/wellformed/rss/channel_webMaster_name.xml +0 -0
  1410. data/tests/wellformed/rss/item_dc_contributor.xml +0 -0
  1411. data/tests/wellformed/rss/item_dc_publisher_email.xml +0 -0
  1412. data/tests/wellformed/rss/item_dc_publisher_name.xml +0 -0
  1413. data/tests/wellformed/rss/item_description_and_summary.xml +0 -0
  1414. data/tests/wellformed/rss/item_description_br.xml +0 -0
  1415. data/tests/wellformed/rss/item_description_br_shorttag.xml +0 -0
  1416. data/tests/wellformed/rss/item_description_not_a_doctype.xml +0 -0
  1417. data/tests/wellformed/rss/item_guid_guidislink.xml +0 -0
  1418. data/tests/wellformed/rss/item_guid_isPermaLink_conflict_link_not_guidislink.xml +0 -0
  1419. data/tests/wellformed/rss/item_guid_isPermaLink_guidislink.xml +0 -0
  1420. data/tests/wellformed/rss/item_guid_not_permalink_not_guidislink.xml +0 -0
  1421. data/tests/wellformed/rss/item_guid_not_permalink_not_guidislink_2.xml +0 -0
  1422. data/tests/wellformed/rss/item_summary_and_description.xml +0 -0
  1423. data/tests/wellformed/rss/item_title_not_media.xml +15 -0
  1424. data/tests/wellformed/sanitize/entry_content_onload.xml +0 -0
  1425. data/tests/wellformed/sanitize/entry_content_style.xml +0 -0
  1426. data/tests/wellformed/sanitize/entry_summary_blink.xml +0 -0
  1427. data/tests/wellformed/sanitize/entry_summary_onload.xml +0 -0
  1428. data/tests/wellformed/sanitize/entry_summary_style.xml +0 -0
  1429. data/tests/wellformed/sanitize/entry_title_blink.xml +0 -0
  1430. data/tests/wellformed/sanitize/entry_title_onload.xml +0 -0
  1431. data/tests/wellformed/sanitize/entry_title_style.xml +0 -0
  1432. data/tests/wellformed/sanitize/feed_copyright_blink.xml +0 -0
  1433. data/tests/wellformed/sanitize/feed_copyright_onload.xml +0 -0
  1434. data/tests/wellformed/sanitize/feed_copyright_style.xml +0 -0
  1435. data/tests/wellformed/sanitize/feed_info_blink.xml +0 -0
  1436. data/tests/wellformed/sanitize/feed_info_onload.xml +0 -0
  1437. data/tests/wellformed/sanitize/feed_info_style.xml +0 -0
  1438. data/tests/wellformed/sanitize/feed_subtitle_blink.xml +0 -0
  1439. data/tests/wellformed/sanitize/feed_subtitle_onload.xml +0 -0
  1440. data/tests/wellformed/sanitize/feed_subtitle_style.xml +0 -0
  1441. data/tests/wellformed/sanitize/feed_tagline_blink.xml +0 -0
  1442. data/tests/wellformed/sanitize/feed_tagline_onload.xml +0 -0
  1443. data/tests/wellformed/sanitize/feed_tagline_style.xml +0 -0
  1444. data/tests/wellformed/sanitize/feed_title_blink.xml +0 -0
  1445. data/tests/wellformed/sanitize/feed_title_onload.xml +0 -0
  1446. data/tests/wellformed/sanitize/feed_title_style.xml +0 -0
  1447. data/tests/wellformed/sanitize/item_body_blink.xml +0 -0
  1448. data/tests/wellformed/sanitize/item_body_onload.xml +0 -0
  1449. data/tests/wellformed/sanitize/item_body_style.xml +0 -0
  1450. data/tests/wellformed/sanitize/item_content_encoded_blink.xml +0 -0
  1451. data/tests/wellformed/sanitize/item_content_encoded_map_content.xml +0 -0
  1452. data/tests/wellformed/sanitize/item_content_encoded_onload.xml +0 -0
  1453. data/tests/wellformed/sanitize/item_content_encoded_script.xml +0 -0
  1454. data/tests/wellformed/sanitize/item_content_encoded_style.xml +0 -0
  1455. data/tests/wellformed/sanitize/item_description_blink.xml +0 -0
  1456. data/tests/wellformed/sanitize/item_description_onload.xml +0 -0
  1457. data/tests/wellformed/sanitize/item_description_script.xml +0 -0
  1458. data/tests/wellformed/sanitize/item_description_script_map_summary.xml +0 -0
  1459. data/tests/wellformed/sanitize/item_description_style.xml +0 -0
  1460. data/tests/wellformed/sanitize/item_fullitem_blink.xml +0 -0
  1461. data/tests/wellformed/sanitize/item_fullitem_onload.xml +0 -0
  1462. data/tests/wellformed/sanitize/item_fullitem_style.xml +0 -0
  1463. data/tests/wellformed/sanitize/item_xhtml_body_blink.xml +0 -0
  1464. data/tests/wellformed/sanitize/item_xhtml_body_onload.xml +0 -0
  1465. data/tests/wellformed/sanitize/item_xhtml_body_style.xml +0 -0
  1466. metadata +120 -101
  1467. data/lib/rfeedparser/forgiving_uri.rb +0 -953
  1468. data/lib/rfeedparser/parsers.rb +0 -177
@@ -0,0 +1,15 @@
1
+ <!--
2
+ Description: RSS CNN Media feed with media title
3
+ Expect: entries[0]['title'] == 'the correct title'
4
+ -->
5
+ <?xml version="1.0" encoding="UTF-8"?>
6
+ <rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
7
+ <channel>
8
+ <item>
9
+ <title>the correct title</title>
10
+ <media:content url="http://i.l.cnn.net/image.jpg" medium="image">
11
+ <media:title type="html">media title</media:title>
12
+ </media:content>
13
+ </item>
14
+ </channel>
15
+ </rss>
metadata CHANGED
@@ -1,44 +1,110 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: rfeedparser
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.9.940
7
- date: 2007-11-03 00:00:00 -07:00
8
- summary: Parse RSS and Atom feeds in Ruby
9
- require_paths:
10
- - lib
11
- email: jeff at somethingsimilar dot com
12
- homepage: http://rfeedparser.rubyforge.org/
13
- rubyforge_project: rfeedparser
14
- description:
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: false
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.9.950
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Jeff Hodges
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-07-28 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rchardet
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "1.1"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: hpricot
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "="
32
+ - !ruby/object:Gem::Version
33
+ version: "0.6"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: character-encodings
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.2.0
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: htmltools
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "1.10"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: htmlentities
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "="
62
+ - !ruby/object:Gem::Version
63
+ version: 4.0.0
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: mongrel
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 1.0.1
74
+ version:
75
+ - !ruby/object:Gem::Dependency
76
+ name: addressable
77
+ type: :runtime
78
+ version_requirement:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 1.0.4
84
+ version:
85
+ description:
86
+ email: jeff at somethingsimilar dot com
87
+ executables: []
88
+
89
+ extensions: []
90
+
91
+ extra_rdoc_files:
92
+ - README
93
+ - LICENSE
94
+ - RUBY-TESTING
31
95
  files:
32
96
  - lib/rfeedparser
33
97
  - lib/rfeedparser/aliases.rb
34
98
  - lib/rfeedparser/better_attributelist.rb
35
99
  - lib/rfeedparser/better_sgmlparser.rb
36
100
  - lib/rfeedparser/encoding_helpers.rb
101
+ - lib/rfeedparser/expat_parser.rb
37
102
  - lib/rfeedparser/feedparserdict.rb
38
- - lib/rfeedparser/forgiving_uri.rb
103
+ - lib/rfeedparser/libxml_parser.rb
104
+ - lib/rfeedparser/loose_feed_parser.rb
39
105
  - lib/rfeedparser/markup_helpers.rb
106
+ - lib/rfeedparser/monkey_patches.rb
40
107
  - lib/rfeedparser/parser_mixin.rb
41
- - lib/rfeedparser/parsers.rb
42
108
  - lib/rfeedparser/scrub.rb
43
109
  - lib/rfeedparser/time_helpers.rb
44
110
  - lib/rfeedparser/utilities.rb
@@ -1850,11 +1916,13 @@ files:
1850
1916
  - tests/rfponly/wellformed/date
1851
1917
  - tests/rfponly/wellformed/date/feed_modified_with_negative_numeric_timezone.xml
1852
1918
  - tests/rfponly/wellformed/date/feed_modified_with_positive_numeric_timezone.xml
1919
+ - tests/rfponly/wellformed/date/w3dtf_second_fractions.xml
1853
1920
  - tests/rfponly/wellformed/mrss
1854
1921
  - tests/rfponly/wellformed/mrss/mrss_media_content.xml
1855
1922
  - tests/rfponly/wellformed/mrss/mrss_thumbnail.xml
1856
1923
  - tests/rfponly/wellformed/scrub
1857
1924
  - tests/rfponly/wellformed/scrub/hpricot_self_closing_tag_workaround.xml
1925
+ - tests/to_skip.yml
1858
1926
  - tests/wellformed
1859
1927
  - tests/wellformed/amp
1860
1928
  - tests/wellformed/amp/amp01.xml
@@ -2999,6 +3067,7 @@ files:
2999
3067
  - tests/wellformed/rss/item_source_url.xml
3000
3068
  - tests/wellformed/rss/item_summary_and_description.xml
3001
3069
  - tests/wellformed/rss/item_title.xml
3070
+ - tests/wellformed/rss/item_title_not_media.xml
3002
3071
  - tests/wellformed/rss/item_xhtml_body.xml
3003
3072
  - tests/wellformed/rss/item_xhtml_body_mode.xml
3004
3073
  - tests/wellformed/rss/item_xhtml_body_type.xml
@@ -3437,81 +3506,31 @@ files:
3437
3506
  - README
3438
3507
  - LICENSE
3439
3508
  - RUBY-TESTING
3440
- test_files:
3441
- - tests/rfeedparsertest.rb
3509
+ has_rdoc: false
3510
+ homepage: http://rfeedparser.rubyforge.org/
3511
+ post_install_message:
3442
3512
  rdoc_options: []
3443
3513
 
3444
- extra_rdoc_files:
3445
- - README
3446
- - LICENSE
3447
- - RUBY-TESTING
3448
- executables: []
3449
-
3450
- extensions: []
3451
-
3514
+ require_paths:
3515
+ - lib
3516
+ required_ruby_version: !ruby/object:Gem::Requirement
3517
+ requirements:
3518
+ - - ">="
3519
+ - !ruby/object:Gem::Version
3520
+ version: "0"
3521
+ version:
3522
+ required_rubygems_version: !ruby/object:Gem::Requirement
3523
+ requirements:
3524
+ - - ">="
3525
+ - !ruby/object:Gem::Version
3526
+ version: "0"
3527
+ version:
3452
3528
  requirements:
3453
- - Yoshida Masato's Ruby bindings to the Expat XML parser
3454
- dependencies:
3455
- - !ruby/object:Gem::Dependency
3456
- name: rchardet
3457
- version_requirement:
3458
- version_requirements: !ruby/object:Gem::Version::Requirement
3459
- requirements:
3460
- - - ">="
3461
- - !ruby/object:Gem::Version
3462
- version: "1.1"
3463
- version:
3464
- - !ruby/object:Gem::Dependency
3465
- name: activesupport
3466
- version_requirement:
3467
- version_requirements: !ruby/object:Gem::Version::Requirement
3468
- requirements:
3469
- - - ">="
3470
- - !ruby/object:Gem::Version
3471
- version: 1.4.1
3472
- version:
3473
- - !ruby/object:Gem::Dependency
3474
- name: hpricot
3475
- version_requirement:
3476
- version_requirements: !ruby/object:Gem::Version::Requirement
3477
- requirements:
3478
- - - "="
3479
- - !ruby/object:Gem::Version
3480
- version: "0.6"
3481
- version:
3482
- - !ruby/object:Gem::Dependency
3483
- name: character-encodings
3484
- version_requirement:
3485
- version_requirements: !ruby/object:Gem::Version::Requirement
3486
- requirements:
3487
- - - ">="
3488
- - !ruby/object:Gem::Version
3489
- version: "0.2"
3490
- version:
3491
- - !ruby/object:Gem::Dependency
3492
- name: htmltools
3493
- version_requirement:
3494
- version_requirements: !ruby/object:Gem::Version::Requirement
3495
- requirements:
3496
- - - ">="
3497
- - !ruby/object:Gem::Version
3498
- version: "1.10"
3499
- version:
3500
- - !ruby/object:Gem::Dependency
3501
- name: htmlentities
3502
- version_requirement:
3503
- version_requirements: !ruby/object:Gem::Version::Requirement
3504
- requirements:
3505
- - - "="
3506
- - !ruby/object:Gem::Version
3507
- version: 4.0.0
3508
- version:
3509
- - !ruby/object:Gem::Dependency
3510
- name: mongrel
3511
- version_requirement:
3512
- version_requirements: !ruby/object:Gem::Version::Requirement
3513
- requirements:
3514
- - - ">="
3515
- - !ruby/object:Gem::Version
3516
- version: 1.0.1
3517
- version:
3529
+ - Ruby bindings to the Expat XML parser or libxml2 (version 0.8.3 or greater)
3530
+ rubyforge_project: rfeedparser
3531
+ rubygems_version: 1.2.0
3532
+ signing_key:
3533
+ specification_version: 2
3534
+ summary: Parse RSS and Atom feeds in Ruby
3535
+ test_files:
3536
+ - tests/rfeedparsertest.rb
@@ -1,953 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # From Robert Aman's GentleCMS URI.
3
- # GentleCMS, Copyright (c) 2006 Robert Aman
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining
6
- # a copy of this software and associated documentation files (the
7
- # "Software"), to deal in the Software without restriction, including
8
- # without limitation the rights to use, copy, modify, merge, publish,
9
- # distribute, sublicense, and/or sell copies of the Software, and to
10
- # permit persons to whom the Software is furnished to do so, subject to
11
- # the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be
14
- # included in all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
-
24
- # This is an implementation of a URI parser based on RFC 3986.
25
- class ForgivingURI
26
- # Raised if something other than a uri is supplied.
27
- class InvalidURIError < StandardError
28
- end
29
- # Raised if an invalid method option is supplied.
30
- class InvalidOptionError < StandardError
31
- end
32
-
33
- # Returns a URI object based on the parsed string.
34
- def self.parse(uri_string)
35
- return nil if uri_string.nil?
36
-
37
- # If a URI object is passed, just return itself.
38
- return uri_string if uri_string.kind_of?(self)
39
-
40
- # If a URI object of the Ruby standard library variety is passed,
41
- # convert it to a string, then parse the string.
42
- if uri_string.class.name =~ /^URI::/
43
- uri_string = uri_string.to_s
44
- end
45
-
46
- uri_regex =
47
- /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/
48
- scan = uri_string.scan(uri_regex)
49
- fragments = scan[0]
50
- return nil if fragments.nil?
51
- scheme = fragments[1]
52
- authority = fragments[3]
53
- path = fragments[4]
54
- query = fragments[6]
55
- fragment = fragments[8]
56
- userinfo = nil
57
- host = nil
58
- port = nil
59
- if authority != nil
60
- userinfo = authority.scan(/^([^\[\]]*)@/).flatten[0]
61
- host = authority.gsub(/^([^\[\]]*)@/, "").gsub(/:([^:@\[\]]*?)$/, "")
62
- port = authority.scan(/:([^:@\[\]]*?)$/).flatten[0]
63
- end
64
- if scheme == 'file'
65
- path = "/#{host}" + path
66
- host = nil
67
- end
68
- if port.nil? || port == ""
69
- port = nil
70
- end
71
-
72
- # WARNING: Not standards-compliant, but follows the theme
73
- # of Postel's law:
74
- #
75
- # Special exception for dealing with the retarded idea of the
76
- # feed pseudo-protocol. Without this exception, the parser will read
77
- # the URI as having a blank port number, instead of as having a second
78
- # URI embedded within. This exception translates these broken URIs
79
- # and instead treats the inner URI as opaque.
80
- if scheme == "feed" && host == "http"
81
- userinfo = nil
82
- host = nil
83
- port = nil
84
- path = authority + path
85
- end
86
-
87
- return ForgivingURI.new(scheme, userinfo, host, port, path, query, fragment)
88
- end
89
-
90
- # Converts a path to a file protocol URI. If the path supplied is
91
- # relative, it will be returned as a relative URI. If the path supplied
92
- # is actually a URI, it will return the parsed URI.
93
- def self.convert_path(path)
94
- return nil if path.nil?
95
-
96
- converted_uri = path.strip
97
- if converted_uri.length > 0 && converted_uri[0..0] == "/"
98
- converted_uri = "file://" + converted_uri
99
- end
100
- if converted_uri.length > 0 &&
101
- converted_uri.scan(/^[a-zA-Z]:[\\\/]/).size > 0
102
- converted_uri = "file:///" + converted_uri
103
- end
104
- converted_uri.gsub!(/^file:\/*/i, "file:///")
105
- if converted_uri =~ /^file:/i
106
- # Adjust windows-style uris
107
- converted_uri.gsub!(/^file:\/\/\/([a-zA-Z])\|/i, 'file:///\1:')
108
- converted_uri.gsub!(/\\/, '/')
109
- converted_uri = self.parse(converted_uri).normalize
110
- if File.exists?(converted_uri.path) &&
111
- File.stat(converted_uri.path).directory?
112
- converted_uri.path.gsub!(/\/$/, "")
113
- converted_uri.path = converted_uri.path + '/'
114
- end
115
- else
116
- converted_uri = self.parse(converted_uri)
117
- end
118
-
119
- return converted_uri
120
- end
121
-
122
- # Joins several uris together.
123
- def self.join(*uris)
124
- uri_objects = uris.collect do |uri|
125
- uri.kind_of?(self) ? uri : self.parse(uri.to_s)
126
- end
127
- result = uri_objects.shift.dup
128
- for uri in uri_objects
129
- result.merge!(uri)
130
- end
131
- return result
132
- end
133
-
134
- # Correctly escapes a uri.
135
- def self.escape(uri)
136
- uri_object = uri.kind_of?(self) ? uri : self.parse(uri.to_s)
137
- return ForgivingURI.new(
138
- uri_object.scheme,
139
- uri_object.userinfo,
140
- uri_object.host,
141
- uri_object.specified_port,
142
- self.normalize_escaping(uri_object.path),
143
- self.normalize_escaping(uri_object.query),
144
- self.normalize_escaping(uri_object.fragment)
145
- ).to_s
146
- end
147
-
148
- # Extracts uris from an arbitrary body of text.
149
- def self.extract(text, options={})
150
- defaults = {:base => nil, :parse => false}
151
- options = defaults.merge(options)
152
- raise InvalidOptionError unless (options.keys - defaults.keys).empty?
153
- # This regular expression needs to be less forgiving or else it would
154
- # match virtually all text. Which isn't exactly what we're going for.
155
- extract_regex = /((([a-z\+]+):)[^ \n\<\>\"\\]+[\w\/])/
156
- extracted_uris =
157
- text.scan(extract_regex).collect { |match| match[0] }
158
- sgml_extract_regex = /<[^>]+href=\"([^\"]+?)\"[^>]*>/
159
- sgml_extracted_uris =
160
- text.scan(sgml_extract_regex).collect { |match| match[0] }
161
- extracted_uris.concat(sgml_extracted_uris - extracted_uris)
162
- textile_extract_regex = /\".+?\":([^ ]+\/[^ ]+)[ \,\.\;\:\?\!\<\>\"]/i
163
- textile_extracted_uris =
164
- text.scan(textile_extract_regex).collect { |match| match[0] }
165
- extracted_uris.concat(textile_extracted_uris - extracted_uris)
166
- parsed_uris = []
167
- base_uri = nil
168
- if options[:base] != nil
169
- base_uri = options[:base] if options[:base].kind_of?(self)
170
- base_uri = self.parse(options[:base].to_s) if base_uri == nil
171
- end
172
- for uri_string in extracted_uris
173
- begin
174
- if base_uri == nil
175
- parsed_uris << self.parse(uri_string)
176
- else
177
- parsed_uris << (base_uri + self.parse(uri_string))
178
- end
179
- rescue Exception
180
- nil
181
- end
182
- end
183
- parsed_uris.reject! do |uri|
184
- (uri.scheme =~ /T\d+/ ||
185
- uri.scheme == "xmlns" ||
186
- uri.scheme == "xml" ||
187
- uri.scheme == "thr" ||
188
- uri.scheme == "this" ||
189
- uri.scheme == "float" ||
190
- uri.scheme == "user" ||
191
- uri.scheme == "username" ||
192
- uri.scheme == "out")
193
- end
194
- if options[:parse]
195
- return parsed_uris
196
- else
197
- return parsed_uris.collect { |uri| uri.to_s }
198
- end
199
- end
200
-
201
- # Creates a new uri object from component parts. Passing nil for
202
- # any of these parameters is acceptable.
203
- def initialize(scheme, userinfo, host, port, path, query, fragment)
204
- assign_components(scheme, userinfo, host, port, path, query, fragment)
205
- end
206
-
207
- # Returns the scheme (protocol) for this URI.
208
- def scheme
209
- return nil if @scheme.nil? || @scheme.strip == ""
210
- return @scheme
211
- end
212
-
213
- # Sets the scheme (protocol for this URI.)
214
- def scheme=(new_scheme)
215
- @scheme = new_scheme
216
- end
217
-
218
- # Returns the username and password segment of this URI.
219
- def userinfo
220
- return @userinfo
221
- end
222
-
223
- # Sets the username and password segment of this URI.
224
- def userinfo=(new_userinfo)
225
- @userinfo = new_userinfo
226
- @authority = nil
227
- end
228
-
229
- # Returns the host for this URI.
230
- def host
231
- return @host
232
- end
233
-
234
- # Sets the host for this URI.
235
- def host=(new_host)
236
- @host = new_host
237
- @authority = nil
238
- end
239
-
240
- # Returns the authority segment of this URI.
241
- def authority
242
- if !defined?(@authority) || @authority.nil?
243
- return nil if self.host.nil?
244
- @authority = ""
245
- if self.userinfo != nil
246
- @authority << "#{self.userinfo}@"
247
- end
248
- @authority << self.host
249
- if self.specified_port != nil
250
- @authority << ":#{self.specified_port}"
251
- end
252
- end
253
- return @authority
254
- end
255
-
256
- # Sets the authority segment of this URI.
257
- def authority=(new_authority)
258
- @authority = new_authority
259
- new_userinfo = nil
260
- new_host = nil
261
- new_port = nil
262
- if new_authority != nil
263
- new_userinfo = new_authority.scan(/^([^\[\]]*)@/).flatten[0]
264
- new_host =
265
- new_authority.gsub(/^([^\[\]]*)@/, "").gsub(/:([^:@\[\]]*?)$/, "")
266
- new_port = new_authority.scan(/:([^:@\[\]]*?)$/).flatten[0]
267
- end
268
- if new_port.nil? || new_port == ""
269
- new_port = nil
270
- end
271
- @userinfo = new_userinfo
272
- @host = new_host
273
- @port = nil
274
- @specified_port = new_port
275
- end
276
-
277
- # Returns the user for this URI.
278
- def user
279
- if !defined?(@user) || @user.nil?
280
- @user = nil
281
- return @user if @userinfo.nil?
282
- if @userinfo =~ /:/
283
- @user = @userinfo.strip.scan(/^(.*):/).flatten[0].strip
284
- else
285
- @user = @userinfo.dup
286
- end
287
- end
288
- return @user
289
- end
290
-
291
- # Sets the user for this URI.
292
- def user=(new_user)
293
- current_password = self.password
294
- @user = new_user
295
- if new_user == nil && current_password == nil
296
- @userinfo = nil
297
- elsif new_user == nil && current_password != nil
298
- @userinfo = ":#{current_password}"
299
- elsif new_user != nil && current_password == nil
300
- @userinfo = "#{new_user}"
301
- elsif new_user != nil && current_password != nil
302
- @userinfo = "#{new_user}:#{current_password}"
303
- end
304
- @user = nil
305
- @password = nil
306
- @authority = nil
307
- end
308
-
309
- # Returns the password for this URI.
310
- def password
311
- if !defined?(@password) || @password.nil?
312
- @password = nil
313
- return @password if @userinfo.nil?
314
- if @userinfo =~ /:/
315
- @password = @userinfo.strip.scan(/:(.*)$/).flatten[0].strip
316
- else
317
- return nil
318
- end
319
- end
320
- return @password
321
- end
322
-
323
- # Sets the password for this URI.
324
- def password=(new_password)
325
- current_user = self.user
326
- @password = new_password
327
- if current_user == nil && new_password == nil
328
- @userinfo = nil
329
- elsif current_user == nil && new_password != nil
330
- @userinfo = ":#{new_password}"
331
- elsif current_user != nil && new_password == nil
332
- @userinfo = "#{current_user}"
333
- elsif current_user != nil && new_password != nil
334
- @userinfo = "#{current_user}:#{new_password}"
335
- end
336
- @user = nil
337
- @authority = nil
338
- end
339
-
340
- # Returns an array of known ip-based schemes. These schemes typically
341
- # use a similar URI form:
342
- # //<user>:<password>@<host>:<port>/<url-path>
343
- def self.ip_based_schemes
344
- return self.scheme_mapping.keys
345
- end
346
-
347
- # Returns a hash of common IP-based schemes and their default port
348
- # numbers. Adding new schemes to this hash, as necessary, will allow
349
- # for better URI normalization.
350
- def self.scheme_mapping
351
- if !defined?(@protocol_mapping) || @protocol_mapping.nil?
352
- @protocol_mapping = {
353
- "http" => 80,
354
- "https" => 443,
355
- "ftp" => 21,
356
- "tftp" => 69,
357
- "ssh" => 22,
358
- "svn+ssh" => 22,
359
- "telnet" => 23,
360
- "nntp" => 119,
361
- "gopher" => 70,
362
- "wais" => 210,
363
- "prospero" => 1525
364
- }
365
- end
366
- return @protocol_mapping
367
- end
368
-
369
- # Returns the port number for this URI. This method will normalize to the
370
- # default port for the URI's scheme if the port isn't explicitly specified
371
- # in the URI.
372
- def port
373
- if @port.to_i == 0
374
- if self.scheme.nil?
375
- @port = nil
376
- else
377
- @port = self.class.scheme_mapping[self.scheme.strip.downcase]
378
- end
379
- return @port
380
- else
381
- @port = @port.to_i
382
- return @port
383
- end
384
- end
385
-
386
- # Sets the port for this URI.
387
- def port=(new_port)
388
- @port = new_port.to_s.to_i
389
- @specified_port = @port
390
- @authority = nil
391
- end
392
-
393
- # Returns the port number that was actually specified in the URI string.
394
- def specified_port
395
- @specified_port = nil if !defined?(@specified_port)
396
- return nil if @specified_port.nil?
397
- port = @specified_port.to_s.to_i
398
- if port == 0
399
- return nil
400
- else
401
- return port
402
- end
403
- end
404
-
405
- # Returns the path for this URI.
406
- def path
407
- return @path
408
- end
409
-
410
- # Sets the path for this URI.
411
- def path=(new_path)
412
- @path = new_path
413
- end
414
-
415
- # Returns the basename, if any, of the file at the path being referenced.
416
- # Returns nil if there is no path component.
417
- def basename
418
- return nil if self.path == nil
419
- return File.basename(self.path).gsub(/;[^\/]*$/, "")
420
- end
421
-
422
- # Returns the extension, if any, of the file at the path being referenced.
423
- # Returns "" if there is no extension or nil if there is no path
424
- # component.
425
- def extname
426
- return nil if self.path == nil
427
- return File.extname(self.basename.gsub(/;[^\/]*$/, ""))
428
- end
429
-
430
- # Returns the query string for this URI.
431
- def query
432
- return @query
433
- end
434
-
435
- # Sets the query string for this URI.
436
- def query=(new_query)
437
- @query = new_query
438
- end
439
-
440
- # Returns the fragment for this URI.
441
- def fragment
442
- return @fragment
443
- end
444
-
445
- # Sets the fragment for this URI.
446
- def fragment=(new_fragment)
447
- @fragment = new_fragment
448
- end
449
-
450
- # Returns true if the URI uses an IP-based protocol.
451
- def ip_based?
452
- return false if self.scheme.nil?
453
- return self.class.ip_based_schemes.include?(self.scheme.strip.downcase)
454
- end
455
-
456
- # Returns true if this URI is known to be relative.
457
- def relative?
458
- return self.scheme.nil?
459
- end
460
-
461
- # Returns true if this URI is known to be absolute.
462
- def absolute?
463
- return !relative?
464
- end
465
-
466
- # Joins two URIs together.
467
- def +(uri)
468
- if !uri.kind_of?(self.class)
469
- uri = ForgivingURI.parse(uri.to_s)
470
- end
471
- if uri.to_s == ""
472
- return self.dup
473
- end
474
-
475
- joined_scheme = nil
476
- joined_userinfo = nil
477
- joined_host = nil
478
- joined_port = nil
479
- joined_path = nil
480
- joined_query = nil
481
- joined_fragment = nil
482
-
483
- # Section 5.2.2 of RFC 3986
484
- if uri.scheme != nil
485
- joined_scheme = uri.scheme
486
- joined_userinfo = uri.userinfo
487
- joined_host = uri.host
488
- joined_port = uri.specified_port
489
- joined_path = self.class.normalize_path(uri.path)
490
- joined_query = uri.query
491
- else
492
- if uri.authority != nil
493
- joined_userinfo = uri.userinfo
494
- joined_host = uri.host
495
- joined_port = uri.specified_port
496
- joined_path = self.class.normalize_path(uri.path)
497
- joined_query = uri.query
498
- else
499
- if uri.path == nil || uri.path == ""
500
- joined_path = self.path
501
- if uri.query != nil
502
- joined_query = uri.query
503
- else
504
- joined_query = self.query
505
- end
506
- else
507
- if uri.path[0..0] == "/"
508
- joined_path = self.class.normalize_path(uri.path)
509
- else
510
- base_path = self.path.nil? ? "" : self.path.dup
511
- base_path = self.class.normalize_path(base_path)
512
- base_path.gsub!(/\/[^\/]+$/, "/")
513
- joined_path = self.class.normalize_path(base_path + uri.path)
514
- end
515
- joined_query = uri.query
516
- end
517
- joined_userinfo = self.userinfo
518
- joined_host = self.host
519
- joined_port = self.specified_port
520
- end
521
- joined_scheme = self.scheme
522
- end
523
- joined_fragment = uri.fragment
524
-
525
- return ForgivingURI.new(
526
- joined_scheme,
527
- joined_userinfo,
528
- joined_host,
529
- joined_port,
530
- joined_path,
531
- joined_query,
532
- joined_fragment
533
- )
534
- end
535
-
536
- # Merges two URIs together.
537
- def merge(uri)
538
- return (self + uri)
539
- end
540
-
541
- # Destructive form of merge.
542
- def merge!(uri)
543
- replace_self(self.merge(uri))
544
- end
545
-
546
- # Returns a normalized URI object.
547
- #
548
- # NOTE: This method does not attempt to conform to specifications. It
549
- # exists largely to correct other people's failures to read the
550
- # specifications, and also to deal with caching issues since several
551
- # different URIs may represent the same resource and should not be
552
- # cached multiple times.
553
- def normalize
554
- normalized_scheme = nil
555
- normalized_scheme = self.scheme.strip.downcase if self.scheme != nil
556
- normalized_scheme = "svn+ssh" if normalized_scheme == "ssh+svn"
557
- if normalized_scheme == "feed"
558
- if self.to_s =~ /^feed:\/*http:\/*/
559
- return self.class.parse(
560
- self.to_s.scan(/^feed:\/*(http:\/*.*)/).flatten[0]).normalize
561
- end
562
- end
563
- normalized_userinfo = nil
564
- normalized_userinfo = self.userinfo.strip if self.userinfo != nil
565
- normalized_host = nil
566
- normalized_host = self.host.strip.downcase if self.host != nil
567
- if normalized_host != nil
568
- begin
569
- normalized_host = ForgivingURI::IDNA.to_ascii(normalized_host)
570
- rescue Exception
571
- nil
572
- end
573
- end
574
-
575
- # Normalize IPv4 addresses that were generated with the stupid
576
- # assumption that inet_addr() would be used to parse the IP address.
577
- if normalized_host != nil && normalized_host.strip =~ /^\d+$/
578
- # Decimal IPv4 address.
579
- decimal = normalized_host.to_i
580
- if decimal < (256 ** 4)
581
- octets = [0,0,0,0]
582
- octets[0] = decimal >> 24
583
- decimal -= (octets[0] * (256 ** 3))
584
- octets[1] = decimal >> 16
585
- decimal -= (octets[1] * (256 ** 2))
586
- octets[2] = decimal >> 8
587
- decimal -= (octets[2] * (256 ** 1))
588
- octets[3] = decimal
589
- normalized_host = octets.join(".")
590
- end
591
- elsif (normalized_host != nil && normalized_host.strip =~
592
- /^0+[0-7]{3}.0+[0-7]{3}.0+[0-7]{3}.0+[0-7]{3}$/)
593
- # Octal IPv4 address.
594
- octet_strings = normalized_host.split('.')
595
- octets = []
596
- octet_strings.each do |octet_string|
597
- decimal = octet_string.to_i(8)
598
- octets << decimal
599
- end
600
- normalized_host = octets.join(".")
601
- elsif (normalized_host != nil && normalized_host.strip =~
602
- /^0x[0-9a-f]{2}.0x[0-9a-f]{2}.0x[0-9a-f]{2}.0x[0-9a-f]{2}$/i)
603
- # Hexidecimal IPv4 address.
604
- octet_strings = normalized_host.split('.')
605
- octets = []
606
- octet_strings.each do |octet_string|
607
- decimal = octet_string[2...4].to_i(16)
608
- octets << decimal
609
- end
610
- normalized_host = octets.join(".")
611
- end
612
- normalized_port = self.port
613
- if self.class.scheme_mapping[normalized_scheme] == normalized_port
614
- normalized_port = nil
615
- end
616
- normalized_path = nil
617
- normalized_path = self.path.strip if self.path != nil
618
- if normalized_scheme != nil && normalized_host == nil
619
- if self.class.ip_based_schemes.include?(normalized_scheme) &&
620
- normalized_path =~ /[\w\.]+/
621
- normalized_host = normalized_path
622
- normalized_path = nil
623
- unless normalized_host =~ /\./
624
- normalized_host = normalized_host + ".com"
625
- end
626
- end
627
- end
628
- if normalized_path == nil &&
629
- normalized_scheme != nil &&
630
- normalized_host != nil
631
- normalized_path = "/"
632
- end
633
- if normalized_path != nil
634
- normalized_path = self.class.normalize_path(normalized_path)
635
- normalized_path = self.class.normalize_escaping(normalized_path)
636
- end
637
- if normalized_path == ""
638
- if ["http", "https", "ftp", "tftp"].include?(normalized_scheme)
639
- normalized_path = "/"
640
- end
641
- end
642
- normalized_path.gsub!(/%3B/, ";") if normalized_path != nil
643
- normalized_path.gsub!(/%3A/, ":") if normalized_path != nil
644
- normalized_path.gsub!(/%40/, "@") if normalized_path != nil
645
- normalized_path.gsub!(/%2C/, ",") if normalized_path != nil
646
- normalized_path.gsub!(/%3D/, "=") if normalized_path != nil
647
-
648
- normalized_query = nil
649
- normalized_query = self.query.strip if self.query != nil
650
- normalized_query = self.class.normalize_escaping(normalized_query)
651
- normalized_query.gsub!(/%3D/, "=") if normalized_query != nil
652
- normalized_query.gsub!(/%26/, "&") if normalized_query != nil
653
- normalized_fragment = nil
654
- normalized_fragment = self.fragment.strip if self.fragment != nil
655
- normalized_fragment = self.class.normalize_escaping(normalized_fragment)
656
- return ForgivingURI.new(
657
- normalized_scheme,
658
- normalized_userinfo,
659
- normalized_host,
660
- normalized_port,
661
- normalized_path,
662
- normalized_query,
663
- normalized_fragment
664
- )
665
- end
666
-
667
- # Destructively normalizes this URI object.
668
- def normalize!
669
- replace_self(self.normalize)
670
- end
671
-
672
- # Creates a URI suitable for display to users. If semantic attacks are
673
- # likely, the application should try to detect these and warn the user.
674
- # See RFC 3986 section 7.6 for more information.
675
- def display_uri
676
- display_uri = self.normalize
677
- begin
678
- display_uri.instance_variable_set("@host",
679
- ForgivingURI::IDNA.to_unicode(display_uri.host))
680
- rescue Exception
681
- nil
682
- end
683
- return display_uri
684
- end
685
-
686
- # Returns true if the URI objects are equal. This method normalizes
687
- # both URIs before doing the comparison, and allows comparison against
688
- # strings.
689
- def ===(uri)
690
- uri_string = nil
691
- if uri.respond_to?(:normalize)
692
- uri_string = uri.normalize.to_s
693
- else
694
- begin
695
- uri_string = ForgivingURI.parse(uri.to_s).normalize.to_s
696
- rescue Exception
697
- return false
698
- end
699
- end
700
- return self.normalize.to_s == uri_string
701
- end
702
-
703
- # Returns true if the URI objects are equal. This method normalizes
704
- # both URIs before doing the comparison.
705
- def ==(uri)
706
- return false unless uri.kind_of?(self.class)
707
- return self.normalize.to_s == uri.normalize.to_s
708
- end
709
-
710
- # Returns true if the URI objects are equal. This method does NOT
711
- # normalize either URI before doing the comparison.
712
- def eql?(uri)
713
- return false unless uri.kind_of?(self.class)
714
- return self.to_s == uri.to_s
715
- end
716
-
717
- # Clones the URI object.
718
- def dup
719
- duplicated_scheme = nil
720
- duplicated_scheme = self.scheme.dup if self.scheme != nil
721
- duplicated_userinfo = nil
722
- duplicated_userinfo = self.userinfo.dup if self.userinfo != nil
723
- duplicated_host = nil
724
- duplicated_host = self.host.dup if self.host != nil
725
- duplicated_port = self.port
726
- duplicated_path = nil
727
- duplicated_path = self.path.dup if self.path != nil
728
- duplicated_query = nil
729
- duplicated_query = self.query.dup if self.query != nil
730
- duplicated_fragment = nil
731
- duplicated_fragment = self.fragment.dup if self.fragment != nil
732
- duplicated_uri = ForgivingURI.new(
733
- duplicated_scheme,
734
- duplicated_userinfo,
735
- duplicated_host,
736
- duplicated_port,
737
- duplicated_path,
738
- duplicated_query,
739
- duplicated_fragment
740
- )
741
- @specified_port = nil if !defined?(@specified_port)
742
- duplicated_uri.instance_variable_set("@specified_port", @specified_port)
743
- return duplicated_uri
744
- end
745
-
746
- # Returns the assembled URI as a string.
747
- def to_s
748
- uri_string = ""
749
- if self.scheme != nil
750
- uri_string << "#{self.scheme}:"
751
- end
752
- if self.authority != nil
753
- uri_string << "//#{self.authority}"
754
- end
755
- if self.path != nil
756
- uri_string << self.path
757
- end
758
- if self.query != nil
759
- uri_string << "?#{self.query}"
760
- end
761
- if self.fragment != nil
762
- uri_string << "##{self.fragment}"
763
- end
764
- return uri_string
765
- end
766
-
767
- # Returns a string representation of the URI object's state.
768
- def inspect
769
- sprintf("#<%s:%#0x URI:%s>", self.class.to_s, self.object_id, self.to_s)
770
- end
771
-
772
- # This module handles internationalized domain names. When Ruby has an
773
- # implementation of nameprep, stringprep, punycode, etc, this
774
- # module should contain an actual implementation of IDNA instead of
775
- # returning nil if libidn can't be used.
776
- module IDNA
777
- # Returns the ascii representation of the label.
778
- def self.to_ascii(label)
779
- return nil if label.nil?
780
- if self.use_libidn?
781
- return IDN::Idna.toASCII(label)
782
- else
783
- raise NotImplementedError,
784
- "There is no available pure-ruby implementation. " +
785
- "Install libidn bindings."
786
- end
787
- end
788
-
789
- # Returns the unicode representation of the label.
790
- def self.to_unicode(label)
791
- return nil if label.nil?
792
- if self.use_libidn?
793
- return IDN::Idna.toUnicode(label)
794
- else
795
- raise NotImplementedError,
796
- "There is no available pure-ruby implementation. " +
797
- "Install libidn bindings."
798
- end
799
- end
800
-
801
- private
802
- # Determines if the libidn bindings are available and able to be used.
803
- def self.use_libidn?
804
- if !defined?(@use_libidn) || @use_libidn.nil?
805
- begin
806
- require 'rubygems'
807
- rescue LoadError
808
- nil
809
- end
810
- begin
811
- require 'idn'
812
- rescue LoadError
813
- nil
814
- end
815
- @use_libidn = !!(defined?(IDN::Idna))
816
- end
817
- return @use_libidn
818
- end
819
- end
820
-
821
- private
822
- # Resolves paths to their simplest form.
823
- def self.normalize_path(path)
824
- return nil if path.nil?
825
- normalized_path = path.dup
826
- previous_state = normalized_path.dup
827
- begin
828
- previous_state = normalized_path.dup
829
- normalized_path.gsub!(/\/\.\//, "/")
830
- normalized_path.gsub!(/\/\.$/, "/")
831
- parent = normalized_path.scan(/\/([^\/]+)\/\.\.\//).flatten[0]
832
- if parent != "." && parent != ".."
833
- normalized_path.gsub!(/\/#{parent}\/\.\.\//, "/")
834
- end
835
- parent = normalized_path.scan(/\/([^\/]+)\/\.\.$/).flatten[0]
836
- if parent != "." && parent != ".."
837
- normalized_path.gsub!(/\/#{parent}\/\.\.$/, "/")
838
- end
839
- normalized_path.gsub!(/^\.\.?\/?/, "")
840
- normalized_path.gsub!(/^\/\.\.?\//, "/")
841
- end until previous_state == normalized_path
842
- return normalized_path
843
- end
844
-
845
- # Normalizes percent escaping of characters
846
- def self.normalize_escaping(escaped_section)
847
- return nil if escaped_section.nil?
848
- normalized_section = escaped_section.dup
849
- normalized_section.gsub!(/%[0-9a-f]{2}/i) do |sequence|
850
- sequence[1..3].to_i(16).chr
851
- end
852
- if ForgivingURI::IDNA.send(:use_libidn?)
853
- normalized_section =
854
- IDN::Stringprep.nfkc_normalize(normalized_section)
855
- end
856
- new_section = ""
857
- for index in 0...normalized_section.size
858
- if self.unreserved?(normalized_section[index]) ||
859
- normalized_section[index] == '/'[0]
860
- new_section << normalized_section[index..index]
861
- else
862
- new_section << ("%" + normalized_section[index].to_s(16).upcase)
863
- end
864
- end
865
- normalized_section = new_section
866
- return normalized_section
867
- end
868
-
869
- # Returns true if the specified character is unreserved.
870
- def self.unreserved?(character)
871
- character_string = nil
872
- character_string = character.chr if character.respond_to?(:chr)
873
- character_string = character[0..0] if character.kind_of?(String)
874
- return self.unreserved.include?(character_string)
875
- end
876
-
877
- # Returns a list of unreserved characters.
878
- def self.unreserved
879
- if !defined?(@unreserved) || @unreserved.nil?
880
- @unreserved = ["-", ".", "_", "~"]
881
- for c in "a".."z"
882
- @unreserved << c
883
- @unreserved << c.upcase
884
- end
885
- for c in "0".."9"
886
- @unreserved << c
887
- end
888
- @unreserved.sort!
889
- end
890
- return @unreserved
891
- end
892
-
893
- # Assigns the specified components to the appropriate instance variables.
894
- # Used in destructive operations to avoid code repetition.
895
- def assign_components(scheme, userinfo, host, port, path, query, fragment)
896
- if scheme == nil && userinfo == nil && host == nil && port == nil &&
897
- path == nil && query == nil && fragment == nil
898
- raise InvalidURIError, "All parameters were nil."
899
- end
900
- @scheme = scheme
901
- @userinfo = userinfo
902
- @host = host
903
- @specified_port = port.to_s
904
- @port = port
905
- @port = @port.to_s if @port.kind_of?(Fixnum)
906
- if @port != nil && !(@port =~ /^\d+$/)
907
- raise InvalidURIError,
908
- "Invalid port number: #{@port.inspect}"
909
- end
910
- @port = @port.to_i
911
- @port = nil if @port == 0
912
- @path = path
913
- @query = query
914
- @fragment = fragment
915
- if @scheme != nil && @host == "" && @path == ""
916
- raise InvalidURIError,
917
- "Absolute URI missing hierarchical segment."
918
- end
919
- end
920
-
921
- # Replaces the internal state of self with the specified URI's state.
922
- # Used in destructive operations to avoid massive code repetition.
923
- def replace_self(uri)
924
- @authority = nil
925
- @user = nil
926
- @password = nil
927
-
928
- @scheme = uri.scheme
929
- @userinfo = uri.userinfo
930
- @host = uri.host
931
- @specified_port = uri.instance_variable_get("@specified_port")
932
- @port = @specified_port.to_s.to_i
933
- @path = uri.path
934
- @query = uri.query
935
- @fragment = uri.fragment
936
- return self
937
- end
938
- end
939
-
940
- def urljoin(base, uri)
941
- urifixer = /^([A-Za-z][A-Za-z0-9+-.]*:\/\/)(\/*)(.*?)/u
942
- uri = uri.sub(urifixer, '\1\3')
943
- pbase = ForgivingURI.parse(base) rescue nil
944
- if pbase && pbase.absolute?
945
- puri = ForgivingURI.parse(uri) rescue nil
946
- if puri && puri.relative?
947
- # ForgivingURI.join does the wrong thing. What the hell.
948
- return ForgivingURI.join(base, uri).to_s.gsub(/[^:]\/{2,}/, '')
949
- end
950
- end
951
- return uri
952
- end
953
-