rfeedparser 0.9.940 → 0.9.950

Sign up to get free protection for your applications and to get access to all the features.
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
-