radiantcms-couchrest_model 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (726) hide show
  1. data/CHANGELOG +0 -16
  2. data/CONTRIBUTORS +0 -7
  3. data/README +84 -2
  4. data/app/controllers/admin/export_controller.rb +5 -0
  5. data/app/controllers/admin/pages_controller.rb +7 -11
  6. data/app/controllers/admin/preferences_controller.rb +1 -1
  7. data/app/controllers/admin/resource_controller.rb +1 -1
  8. data/app/helpers/admin/pages_helper.rb +3 -1
  9. data/app/helpers/admin/preferences_helper.rb +0 -1
  10. data/app/helpers/admin/references_helper.rb +2 -1
  11. data/app/helpers/application_helper.rb +2 -4
  12. data/app/models/env_dump_page.rb +17 -0
  13. data/app/models/file_not_found_page.rb +0 -4
  14. data/app/models/page.rb +20 -61
  15. data/app/models/radiant/config.rb +37 -225
  16. data/app/models/radiant/exporter.rb +11 -0
  17. data/app/models/standard_tags.rb +108 -116
  18. data/app/models/status.rb +1 -9
  19. data/app/models/text_filter.rb +1 -12
  20. data/app/views/admin/extensions/index.html.haml +2 -2
  21. data/app/views/admin/layouts/index.html.haml +9 -9
  22. data/app/views/admin/pages/_fields.html.haml +4 -11
  23. data/app/views/admin/pages/_meta_row.html.haml +1 -5
  24. data/app/views/admin/pages/_node.html.haml +8 -8
  25. data/app/views/admin/pages/_popups.html.haml +1 -14
  26. data/app/views/admin/pages/index.html.haml +4 -4
  27. data/app/views/admin/snippets/_form.html.haml +1 -1
  28. data/app/views/admin/snippets/index.html.haml +10 -10
  29. data/app/views/admin/users/_avatar.html.haml +1 -3
  30. data/app/views/admin/users/_form.html.haml +2 -2
  31. data/app/views/admin/users/_password_fields.html.haml +2 -2
  32. data/app/views/admin/users/index.html.haml +10 -10
  33. data/app/views/layouts/application.html.haml +1 -1
  34. data/config/environment.rb +3 -5
  35. data/config/locales/en.yml +11 -48
  36. data/config/locales/en_available_tags.yml +34 -122
  37. data/config/routes.rb +6 -3
  38. data/db/schema.rb +3 -9
  39. data/db/templates/empty.yml +2 -0
  40. data/db/templates/roasters.yml +1210 -0
  41. data/db/templates/simple-blog.yml +197 -0
  42. data/db/templates/styled-blog.yml +472 -0
  43. data/features/admin/pages_management.feature +9 -2
  44. data/features/admin/resource_pagination.feature +1 -1
  45. data/features/admin/snippets_management.feature +1 -2
  46. data/features/admin/user_permissions.feature +1 -0
  47. data/features/admin/user_preferences.feature +1 -1
  48. data/features/step_definitions/admin/content_negotiation_steps.rb +0 -4
  49. data/features/step_definitions/admin/pagination_steps.rb +4 -2
  50. data/features/support/paths.rb +0 -2
  51. data/files +7283 -0
  52. data/lib/generators/extension/extension_generator.rb +0 -6
  53. data/lib/generators/extension/templates/README +1 -4
  54. data/lib/generators/extension/templates/RSpecRakefile +19 -0
  55. data/lib/generators/extension/templates/Rakefile +17 -0
  56. data/lib/generators/extension/templates/extension.rb +3 -3
  57. data/lib/generators/instance/instance_generator.rb +2 -3
  58. data/lib/generators/instance/templates/instance_environment.rb +2 -3
  59. data/lib/radiant.rb +2 -2
  60. data/lib/radiant/admin_ui.rb +11 -27
  61. data/lib/radiant/extension.rb +2 -8
  62. data/lib/radiant/extension_loader.rb +0 -4
  63. data/lib/radiant/initializer.rb +2 -46
  64. data/lib/radiant/setup.rb +11 -21
  65. data/lib/task_support.rb +8 -14
  66. data/lib/tasks/framework.rake +10 -17
  67. data/lib/tasks/prototype.rake +3 -3
  68. data/lib/tasks/release.rake +0 -1
  69. data/public/javascripts/admin/application.js +1 -1
  70. data/public/javascripts/admin/popup.js +7 -7
  71. data/public/javascripts/admin/tabcontrol.js +0 -1
  72. data/public/javascripts/admin/utility.js +2 -3
  73. data/public/stylesheets/admin/main.css +1213 -1
  74. data/public/stylesheets/admin/overrides.css +1 -0
  75. data/public/stylesheets/sass/admin/main.sass +20 -24
  76. data/public/stylesheets/sass/admin/modules/_links.sass +3 -6
  77. data/public/stylesheets/sass/admin/modules/_opacity.sass +2 -2
  78. data/public/stylesheets/sass/admin/modules/_rounded.sass +3 -3
  79. data/public/stylesheets/sass/admin/modules/_shadow.sass +2 -5
  80. data/public/stylesheets/sass/admin/partials/_actions.sass +38 -53
  81. data/public/stylesheets/sass/admin/partials/_avatars.sass +2 -2
  82. data/public/stylesheets/sass/admin/partials/_base.sass +58 -6
  83. data/public/stylesheets/sass/admin/partials/_content.sass +182 -10
  84. data/public/stylesheets/sass/admin/partials/_dateinput.sass +5 -5
  85. data/public/stylesheets/sass/admin/partials/_deprecated.sass +1 -1
  86. data/public/stylesheets/sass/admin/partials/_forms.sass +25 -26
  87. data/public/stylesheets/sass/admin/partials/_header.sass +9 -9
  88. data/public/stylesheets/sass/admin/partials/_popup.sass +1 -1
  89. data/public/stylesheets/sass/admin/partials/_tabcontrol.sass +3 -4
  90. data/radiantcms-couchrest_model.gemspec +3673 -0
  91. data/rerun.txt +1 -0
  92. data/spec/controllers/admin/export_controller_spec.rb +16 -0
  93. data/spec/controllers/admin/pages_controller_spec.rb +6 -35
  94. data/spec/controllers/admin/preferences_controller_spec.rb +1 -1
  95. data/spec/datasets/config_dataset.rb +0 -1
  96. data/spec/datasets/home_page_dataset.rb +3 -1
  97. data/spec/datasets/pages_dataset.rb +1 -1
  98. data/spec/fixtures/radiant_config.yml +2 -2
  99. data/spec/generators/extension_generator_spec.rb +8 -28
  100. data/spec/generators/instance_generator_spec.rb +3 -10
  101. data/spec/helpers/admin/node_helper_spec.rb +0 -1
  102. data/spec/helpers/admin/references_helper_spec.rb +1 -10
  103. data/spec/helpers/application_helper_spec.rb +2 -7
  104. data/spec/lib/radiant/admin_ui_spec.rb +10 -11
  105. data/spec/lib/radiant/extension_spec.rb +3 -3
  106. data/spec/lib/task_support_spec.rb +0 -6
  107. data/spec/models/env_dump_page_spec.rb +18 -0
  108. data/spec/models/file_not_found_page_spec.rb +11 -15
  109. data/spec/models/page_spec.rb +166 -209
  110. data/spec/models/radiant/config_spec.rb +3 -38
  111. data/spec/models/radiant/exporter_spec.rb +25 -0
  112. data/spec/models/standard_tags_spec.rb +142 -132
  113. data/spec/models/status_spec.rb +0 -11
  114. data/spec/models/text_filter_spec.rb +2 -6
  115. data/test/fixtures/extensions/basic/basic_extension.rb +6 -1
  116. data/vendor/extensions/archive/README +29 -0
  117. data/vendor/extensions/archive/Rakefile +120 -0
  118. data/vendor/extensions/archive/app/models/archive_day_index_page.rb +28 -0
  119. data/vendor/extensions/archive/app/models/archive_finder.rb +60 -0
  120. data/vendor/extensions/archive/app/models/archive_month_index_page.rb +28 -0
  121. data/vendor/extensions/archive/app/models/archive_page.rb +36 -0
  122. data/vendor/extensions/archive/app/models/archive_year_index_page.rb +28 -0
  123. data/vendor/extensions/archive/archive_extension.rb +19 -0
  124. data/vendor/extensions/archive/lib/archive_index_tags_and_methods.rb +57 -0
  125. data/vendor/extensions/archive/lib/tasks/archive_extension_tasks.rake +28 -0
  126. data/vendor/extensions/archive/spec/datasets/archive_dataset.rb +51 -0
  127. data/vendor/extensions/archive/spec/models/archive_day_index_page_spec.rb +20 -0
  128. data/vendor/extensions/archive/spec/models/archive_month_index_page_spec.rb +20 -0
  129. data/vendor/extensions/archive/spec/models/archive_page_spec.rb +33 -0
  130. data/vendor/extensions/archive/spec/models/archive_year_index_page_spec.rb +20 -0
  131. data/vendor/extensions/archive/spec/spec.opts +6 -0
  132. data/vendor/extensions/archive/spec/spec_helper.rb +36 -0
  133. data/vendor/extensions/archive/test/fixtures/pages.yml +397 -0
  134. data/vendor/extensions/archive/test/functional/archive_extension_test.rb +16 -0
  135. data/vendor/extensions/archive/test/helpers/archive_index_test_helper.rb +37 -0
  136. data/vendor/extensions/archive/test/test_helper.rb +26 -0
  137. data/vendor/extensions/archive/test/unit/archive_day_index_page_test.rb +22 -0
  138. data/vendor/extensions/archive/test/unit/archive_month_index_page_test.rb +22 -0
  139. data/vendor/extensions/archive/test/unit/archive_page_test.rb +40 -0
  140. data/vendor/extensions/archive/test/unit/archive_year_index_page_test.rb +22 -0
  141. data/vendor/extensions/dutch_language_pack/README +3 -0
  142. data/vendor/extensions/dutch_language_pack/Rakefile +123 -0
  143. data/vendor/extensions/dutch_language_pack/config/locales/nl.yml +187 -0
  144. data/vendor/extensions/dutch_language_pack/config/locales/nl_available_tags.yml +553 -0
  145. data/vendor/extensions/dutch_language_pack/dutch_language_pack_extension.rb +9 -0
  146. data/vendor/extensions/dutch_language_pack/lib/tasks/i18n_nl_extension_tasks.rake +28 -0
  147. data/vendor/extensions/french_language_pack/README +3 -0
  148. data/vendor/extensions/french_language_pack/Rakefile +123 -0
  149. data/vendor/extensions/french_language_pack/config/locales/fr.yml +190 -0
  150. data/vendor/extensions/french_language_pack/config/locales/fr_available_tags.yml +553 -0
  151. data/vendor/extensions/french_language_pack/french_language_pack_extension.rb +9 -0
  152. data/vendor/extensions/french_language_pack/lib/tasks/i18n_fr_extension_tasks.rake +28 -0
  153. data/vendor/extensions/german_language_pack/README +4 -0
  154. data/vendor/extensions/german_language_pack/Rakefile +123 -0
  155. data/vendor/extensions/german_language_pack/config/locales/de.yml +186 -0
  156. data/vendor/extensions/german_language_pack/config/locales/de_available_tags.yml +624 -0
  157. data/vendor/extensions/german_language_pack/german_language_pack_extension.rb +9 -0
  158. data/vendor/extensions/german_language_pack/lib/tasks/i18n_de_extension_tasks.rake +28 -0
  159. data/vendor/extensions/italian_language_pack/README +3 -0
  160. data/vendor/extensions/italian_language_pack/Rakefile +123 -0
  161. data/vendor/extensions/italian_language_pack/config/locales/it.yml +184 -0
  162. data/vendor/extensions/italian_language_pack/config/locales/it_available_tags.yml +553 -0
  163. data/vendor/extensions/italian_language_pack/italian_language_pack_extension.rb +8 -0
  164. data/vendor/extensions/italian_language_pack/lib/tasks/i18n_it_extension_tasks.rake +28 -0
  165. data/vendor/extensions/japanese_language_pack/README +3 -0
  166. data/vendor/extensions/japanese_language_pack/Rakefile +123 -0
  167. data/vendor/extensions/japanese_language_pack/config/locales/ja.yml +184 -0
  168. data/vendor/extensions/japanese_language_pack/config/locales/ja_available_tags.yml +553 -0
  169. data/vendor/extensions/japanese_language_pack/japanese_language_pack_extension.rb +9 -0
  170. data/vendor/extensions/japanese_language_pack/lib/tasks/i18n_ja_extension_tasks.rake +28 -0
  171. data/vendor/extensions/markdown_filter/README +1 -0
  172. data/vendor/extensions/markdown_filter/Rakefile +120 -0
  173. data/vendor/extensions/markdown_filter/lib/markdown_filter.rb +14 -0
  174. data/vendor/extensions/markdown_filter/lib/markdown_tags.rb +18 -0
  175. data/vendor/extensions/markdown_filter/lib/tasks/markdown_filter_extension_tasks.rake +28 -0
  176. data/vendor/extensions/markdown_filter/markdown.html +123 -0
  177. data/vendor/extensions/markdown_filter/markdown_filter_extension.rb +18 -0
  178. data/vendor/extensions/markdown_filter/spec/models/markdown_filter_spec.rb +22 -0
  179. data/vendor/extensions/markdown_filter/spec/spec.opts +6 -0
  180. data/vendor/extensions/markdown_filter/spec/spec_helper.rb +36 -0
  181. data/vendor/extensions/markdown_filter/test/test_helper.rb +19 -0
  182. data/vendor/extensions/markdown_filter/test/unit/markdown_filter_test.rb +18 -0
  183. data/vendor/extensions/markdown_filter/vendor/kramdown/AUTHORS +1 -0
  184. data/vendor/extensions/markdown_filter/vendor/kramdown/CONTRIBUTERS +4 -0
  185. data/vendor/extensions/markdown_filter/vendor/kramdown/COPYING +24 -0
  186. data/vendor/extensions/markdown_filter/vendor/kramdown/ChangeLog +3956 -0
  187. data/vendor/extensions/markdown_filter/vendor/kramdown/GPL +674 -0
  188. data/vendor/extensions/markdown_filter/vendor/kramdown/README +30 -0
  189. data/vendor/extensions/markdown_filter/vendor/kramdown/Rakefile +342 -0
  190. data/vendor/extensions/markdown_filter/vendor/kramdown/VERSION +1 -0
  191. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/benchmark.rb +34 -0
  192. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/generate_data.rb +112 -0
  193. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-jruby-1.4.0.dat +7 -0
  194. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.8.6.dat +7 -0
  195. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.8.7.dat +7 -0
  196. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.9.1p243.dat +7 -0
  197. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.9.2dev.dat +7 -0
  198. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/mdbasics.text +306 -0
  199. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/mdsyntax.text +888 -0
  200. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-jruby-1.4.0.dat +7 -0
  201. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.8.6.dat +7 -0
  202. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.8.7.dat +7 -0
  203. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.9.1p243.dat +7 -0
  204. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.9.2dev.dat +7 -0
  205. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/testing.sh +9 -0
  206. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/timing.sh +10 -0
  207. data/vendor/extensions/markdown_filter/vendor/kramdown/bin/kramdown +78 -0
  208. data/vendor/extensions/markdown_filter/vendor/kramdown/data/kramdown/document.html +9 -0
  209. data/vendor/extensions/markdown_filter/vendor/kramdown/data/kramdown/document.latex +43 -0
  210. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/default.less.css +510 -0
  211. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/default.template +71 -0
  212. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/documentation.page +72 -0
  213. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/index.page +63 -0
  214. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/installation.page +90 -0
  215. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/links.markdown +6 -0
  216. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/news.feed +10 -0
  217. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/news.page +28 -0
  218. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/quickref.page +564 -0
  219. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/syntax.page +1521 -0
  220. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/tests.page +51 -0
  221. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/virtual +2 -0
  222. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown.rb +23 -0
  223. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/compatibility.rb +34 -0
  224. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter.rb +41 -0
  225. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter/base.rb +111 -0
  226. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter/html.rb +397 -0
  227. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter/latex.rb +555 -0
  228. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/document.rb +164 -0
  229. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/error.rb +27 -0
  230. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/options.rb +282 -0
  231. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser.rb +39 -0
  232. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/base.rb +95 -0
  233. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/html.rb +387 -0
  234. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown.rb +301 -0
  235. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/abbreviation.rb +65 -0
  236. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/attribute_list.rb +103 -0
  237. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/autolink.rb +47 -0
  238. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/blank_line.rb +43 -0
  239. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/blockquote.rb +42 -0
  240. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/codeblock.rb +58 -0
  241. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/codespan.rb +57 -0
  242. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/emphasis.rb +70 -0
  243. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/eob.rb +39 -0
  244. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/escaped_chars.rb +38 -0
  245. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/extension.rb +101 -0
  246. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/footnote.rb +73 -0
  247. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/header.rb +66 -0
  248. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/horizontal_rule.rb +39 -0
  249. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/html.rb +173 -0
  250. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/html_entity.rb +38 -0
  251. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/line_break.rb +38 -0
  252. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/link.rb +153 -0
  253. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/list.rb +228 -0
  254. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/math.rb +53 -0
  255. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/paragraph.rb +44 -0
  256. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/smart_quotes.rb +214 -0
  257. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/table.rb +126 -0
  258. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/typographic_symbol.rb +52 -0
  259. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/version.rb +28 -0
  260. data/vendor/extensions/markdown_filter/vendor/kramdown/man/man1/kramdown.1 +222 -0
  261. data/vendor/extensions/markdown_filter/vendor/kramdown/setup.rb +1585 -0
  262. data/vendor/extensions/markdown_filter/vendor/kramdown/test/run_tests.rb +59 -0
  263. data/vendor/extensions/markdown_filter/vendor/kramdown/test/test_files.rb +100 -0
  264. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/spaces.html +1 -0
  265. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/spaces.text +3 -0
  266. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/tabs.html +1 -0
  267. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/tabs.text +6 -0
  268. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/beginning.html +1 -0
  269. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/beginning.text +3 -0
  270. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/end.html +1 -0
  271. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/end.text +3 -0
  272. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/middle.html +2 -0
  273. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/middle.text +5 -0
  274. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/indented.html +18 -0
  275. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/indented.text +19 -0
  276. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/no_newline_at_end.html +5 -0
  277. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/no_newline_at_end.text +5 -0
  278. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/one_para.html +1 -0
  279. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/one_para.text +1 -0
  280. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/two_para.html +4 -0
  281. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/two_para.text +4 -0
  282. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header.html +34 -0
  283. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header.text +32 -0
  284. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header_no_newline_at_end.html +1 -0
  285. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header_no_newline_at_end.text +1 -0
  286. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header.html +31 -0
  287. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header.text +36 -0
  288. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header_no_newline_at_end.html +1 -0
  289. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header_no_newline_at_end.text +2 -0
  290. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_id_prefix.html +3 -0
  291. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_id_prefix.options +2 -0
  292. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_id_prefix.text +3 -0
  293. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_ids.html +17 -0
  294. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_ids.options +1 -0
  295. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_ids.text +19 -0
  296. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/indented.html +25 -0
  297. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/indented.text +14 -0
  298. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/nested.html +9 -0
  299. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/nested.text +5 -0
  300. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/no_newline_at_end.html +4 -0
  301. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/no_newline_at_end.text +2 -0
  302. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/only_first_quoted.html +8 -0
  303. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/only_first_quoted.text +4 -0
  304. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/with_code_blocks.html +15 -0
  305. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/with_code_blocks.text +11 -0
  306. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/error.html +4 -0
  307. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/error.text +4 -0
  308. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/no_newline_at_end.html +2 -0
  309. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/no_newline_at_end.text +1 -0
  310. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/normal.html +13 -0
  311. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/normal.text +10 -0
  312. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/tilde_syntax.html +7 -0
  313. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/tilde_syntax.text +9 -0
  314. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/whitespace.html +3 -0
  315. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/whitespace.text +3 -0
  316. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_blank_line.html +13 -0
  317. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_blank_line.text +12 -0
  318. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_eob_marker.html +6 -0
  319. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_eob_marker.text +5 -0
  320. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/error.html +7 -0
  321. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/error.text +7 -0
  322. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/normal.html +19 -0
  323. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/normal.text +19 -0
  324. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/sepspaces.html +3 -0
  325. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/sepspaces.text +3 -0
  326. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/septabs.html +3 -0
  327. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/septabs.text +3 -0
  328. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/escaping.html +17 -0
  329. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/escaping.text +17 -0
  330. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/item_ial.html +9 -0
  331. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/item_ial.text +5 -0
  332. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_hr.html +9 -0
  333. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_hr.text +5 -0
  334. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_others.html +38 -0
  335. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_others.text +25 -0
  336. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/mixed.html +117 -0
  337. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/mixed.text +66 -0
  338. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/nested.html +17 -0
  339. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/nested.text +7 -0
  340. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/other_first_element.html +39 -0
  341. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/other_first_element.text +18 -0
  342. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ol.html +19 -0
  343. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ol.text +13 -0
  344. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ul.html +61 -0
  345. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ul.text +43 -0
  346. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/single_item.html +3 -0
  347. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/single_item.text +1 -0
  348. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/special_cases.html +78 -0
  349. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/special_cases.text +48 -0
  350. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/comment.html +18 -0
  351. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/comment.text +15 -0
  352. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/deflists.html +6 -0
  353. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/deflists.options +1 -0
  354. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/deflists.text +6 -0
  355. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/tables.html +14 -0
  356. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/tables.options +1 -0
  357. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/tables.text +14 -0
  358. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/filtered_html.html +1 -0
  359. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/filtered_html.options +1 -0
  360. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/filtered_html.text +1 -0
  361. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_and_codeblocks.html +15 -0
  362. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_and_codeblocks.options +1 -0
  363. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_and_codeblocks.text +13 -0
  364. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/code.html +10 -0
  365. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/code.text +9 -0
  366. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/comment.html +7 -0
  367. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/comment.text +8 -0
  368. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/emphasis.html +1 -0
  369. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/emphasis.text +1 -0
  370. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/entity.html +1 -0
  371. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/entity.text +1 -0
  372. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/header.html +6 -0
  373. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/header.options +2 -0
  374. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/header.text +6 -0
  375. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_dl.html +8 -0
  376. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_dl.text +8 -0
  377. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_ol.html +15 -0
  378. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_ol.text +17 -0
  379. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_ul.html +19 -0
  380. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/list_ul.text +22 -0
  381. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/options +1 -0
  382. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/paragraph.html +3 -0
  383. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/paragraph.text +4 -0
  384. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/table_normal.html +13 -0
  385. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/table_normal.text +12 -0
  386. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/table_simple.html +10 -0
  387. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/table_simple.text +14 -0
  388. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/typography.html +1 -0
  389. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_to_native/typography.text +1 -0
  390. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_1.html +3 -0
  391. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_1.text +5 -0
  392. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_2.html +5 -0
  393. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_2.text +5 -0
  394. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/markdown_attr.html +38 -0
  395. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/markdown_attr.text +38 -0
  396. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/not_parsed.html +24 -0
  397. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/not_parsed.text +24 -0
  398. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_raw.html +30 -0
  399. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_raw.options +1 -0
  400. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_raw.text +29 -0
  401. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_span.html +12 -0
  402. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_span.options +1 -0
  403. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_span.text +9 -0
  404. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_block_html.html +21 -0
  405. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_block_html.options +1 -0
  406. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_block_html.text +17 -0
  407. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/processing_instruction.html +13 -0
  408. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/processing_instruction.text +12 -0
  409. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/simple.html +62 -0
  410. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/simple.options +1 -0
  411. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/simple.text +57 -0
  412. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/10_ald/simple.html +2 -0
  413. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/10_ald/simple.text +8 -0
  414. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/auto_id_and_ial.html +1 -0
  415. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/auto_id_and_ial.options +1 -0
  416. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/auto_id_and_ial.text +2 -0
  417. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/simple.html +25 -0
  418. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/simple.text +34 -0
  419. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/comment.html +5 -0
  420. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/comment.text +11 -0
  421. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/ignored.html +4 -0
  422. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/ignored.text +8 -0
  423. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/nomarkdown.html +6 -0
  424. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/nomarkdown.text +11 -0
  425. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options.html +24 -0
  426. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options.text +27 -0
  427. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options2.html +10 -0
  428. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options2.text +5 -0
  429. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options3.html +7 -0
  430. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options3.text +7 -0
  431. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/definition_at_beginning.html +1 -0
  432. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/definition_at_beginning.text +1 -0
  433. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/multiple_terms.html +13 -0
  434. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/multiple_terms.text +10 -0
  435. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/no_def_list.html +2 -0
  436. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/no_def_list.text +2 -0
  437. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/para_wrapping.html +10 -0
  438. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/para_wrapping.text +6 -0
  439. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/separated_by_eob.html +8 -0
  440. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/separated_by_eob.text +5 -0
  441. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/simple.html +8 -0
  442. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/simple.text +7 -0
  443. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/styled_terms.html +4 -0
  444. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/styled_terms.text +2 -0
  445. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/too_much_space.html +3 -0
  446. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/too_much_space.text +4 -0
  447. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/with_blocks.html +38 -0
  448. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/with_blocks.text +24 -0
  449. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/errors.html +3 -0
  450. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/errors.text +3 -0
  451. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/footer.html +65 -0
  452. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/footer.text +25 -0
  453. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/header.html +103 -0
  454. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/header.text +32 -0
  455. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/no_table.html +3 -0
  456. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/no_table.text +3 -0
  457. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/simple.html +61 -0
  458. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/simple.text +16 -0
  459. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/15_math/normal.html +19 -0
  460. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/15_math/normal.text +18 -0
  461. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/encoding.html +46 -0
  462. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/encoding.text +28 -0
  463. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/empty.html +3 -0
  464. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/empty.text +3 -0
  465. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/image_in_a.html +5 -0
  466. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/image_in_a.text +5 -0
  467. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/imagelinks.html +12 -0
  468. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/imagelinks.text +14 -0
  469. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/inline.html +40 -0
  470. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/inline.text +42 -0
  471. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/link_defs.html +8 -0
  472. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/link_defs.text +22 -0
  473. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/links_with_angle_brackets.html +3 -0
  474. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/links_with_angle_brackets.text +3 -0
  475. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/reference.html +32 -0
  476. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/reference.text +42 -0
  477. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/empty.html +3 -0
  478. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/empty.text +3 -0
  479. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/errors.html +9 -0
  480. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/errors.text +9 -0
  481. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/nesting.html +38 -0
  482. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/nesting.text +33 -0
  483. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/normal.html +46 -0
  484. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/normal.text +46 -0
  485. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/empty.html +5 -0
  486. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/empty.text +5 -0
  487. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/errors.html +1 -0
  488. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/errors.text +1 -0
  489. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/normal.html +16 -0
  490. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/normal.text +16 -0
  491. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/definitions.html +14 -0
  492. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/definitions.latex +18 -0
  493. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/definitions.text +18 -0
  494. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.html +12 -0
  495. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.latex +6 -0
  496. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.options +1 -0
  497. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.text +4 -0
  498. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/markers.html +46 -0
  499. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/markers.latex +32 -0
  500. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/markers.text +26 -0
  501. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/across_lines.html +1 -0
  502. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/across_lines.text +2 -0
  503. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/invalid.html +1 -0
  504. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/invalid.text +1 -0
  505. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/link_with_mailto.html +1 -0
  506. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/link_with_mailto.text +1 -0
  507. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/markdown_attr.html +6 -0
  508. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/markdown_attr.text +6 -0
  509. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/normal.html +28 -0
  510. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/normal.text +28 -0
  511. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/abbreviations/abbrev.html +8 -0
  512. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/abbreviations/abbrev.text +15 -0
  513. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/abbreviations/abbrev_defs.html +2 -0
  514. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/abbreviations/abbrev_defs.text +5 -0
  515. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/autolinks/url_links.html +12 -0
  516. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/autolinks/url_links.text +12 -0
  517. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/escaped_chars/normal.html +41 -0
  518. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/escaped_chars/normal.text +41 -0
  519. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/comment.html +6 -0
  520. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/comment.text +6 -0
  521. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/ignored.html +1 -0
  522. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/ignored.text +1 -0
  523. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/nomarkdown.html +1 -0
  524. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/nomarkdown.text +1 -0
  525. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/options.html +1 -0
  526. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/extension/options.text +1 -0
  527. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/ial/simple.html +6 -0
  528. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/ial/simple.text +6 -0
  529. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/line_breaks/normal.html +11 -0
  530. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/line_breaks/normal.text +11 -0
  531. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/math/normal.html +5 -0
  532. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/math/normal.text +5 -0
  533. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities.html +4 -0
  534. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities.text +4 -0
  535. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/greaterthan.html +1 -0
  536. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/greaterthan.text +1 -0
  537. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/lowerthan.html +1 -0
  538. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/lowerthan.text +1 -0
  539. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/typography.html +18 -0
  540. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/typography.text +18 -0
  541. data/vendor/extensions/russian_language_pack/README +3 -0
  542. data/vendor/extensions/russian_language_pack/Rakefile +123 -0
  543. data/vendor/extensions/russian_language_pack/config/locales/ru.yml +180 -0
  544. data/vendor/extensions/russian_language_pack/config/locales/ru_available_tags.yml +553 -0
  545. data/vendor/extensions/russian_language_pack/lib/tasks/i18n_ru_extension_tasks.rake +28 -0
  546. data/vendor/extensions/russian_language_pack/russian_language_pack_extension.rb +9 -0
  547. data/vendor/extensions/smarty_pants_filter/README +1 -0
  548. data/vendor/extensions/smarty_pants_filter/Rakefile +136 -0
  549. data/vendor/extensions/smarty_pants_filter/lib/smarty_pants_filter.rb +7 -0
  550. data/vendor/extensions/smarty_pants_filter/lib/smarty_pants_tags.rb +18 -0
  551. data/vendor/extensions/smarty_pants_filter/lib/tasks/smarty_pants_filter_extension_tasks.rake +28 -0
  552. data/vendor/extensions/smarty_pants_filter/smarty_pants_filter_extension.rb +18 -0
  553. data/vendor/extensions/smarty_pants_filter/smartypants.html +47 -0
  554. data/vendor/extensions/smarty_pants_filter/spec/models/smarty_pants_filter_spec.rb +19 -0
  555. data/vendor/extensions/smarty_pants_filter/spec/spec.opts +6 -0
  556. data/vendor/extensions/smarty_pants_filter/spec/spec_helper.rb +36 -0
  557. data/vendor/extensions/smarty_pants_filter/test/test_helper.rb +19 -0
  558. data/vendor/extensions/smarty_pants_filter/test/unit/smarty_pants_filter_test.rb +14 -0
  559. data/vendor/extensions/smarty_pants_filter/vendor/rubypants/README +114 -0
  560. data/vendor/extensions/smarty_pants_filter/vendor/rubypants/Rakefile +84 -0
  561. data/vendor/extensions/smarty_pants_filter/vendor/rubypants/install.rb +9 -0
  562. data/vendor/extensions/smarty_pants_filter/vendor/rubypants/rubypants.rb +490 -0
  563. data/vendor/extensions/smarty_pants_filter/vendor/rubypants/test_rubypants.rb +162 -0
  564. data/vendor/extensions/textile_filter/README +1 -0
  565. data/vendor/extensions/textile_filter/Rakefile +120 -0
  566. data/vendor/extensions/textile_filter/lib/tasks/textile_filter_extension_tasks.rake +0 -0
  567. data/vendor/extensions/textile_filter/lib/textile_filter.rb +6 -0
  568. data/vendor/extensions/textile_filter/lib/textile_tags.rb +24 -0
  569. data/vendor/extensions/textile_filter/spec/models/textile_filter_spec.rb +19 -0
  570. data/vendor/extensions/textile_filter/spec/spec.opts +6 -0
  571. data/vendor/extensions/textile_filter/spec/spec_helper.rb +36 -0
  572. data/vendor/extensions/textile_filter/test/test_helper.rb +19 -0
  573. data/vendor/extensions/textile_filter/test/unit/textile_filter_test.rb +13 -0
  574. data/vendor/extensions/textile_filter/textile.html +115 -0
  575. data/vendor/extensions/textile_filter/textile_filter_extension.rb +10 -0
  576. data/vendor/plugins/haml/README.md +154 -95
  577. data/vendor/plugins/haml/Rakefile +91 -104
  578. data/vendor/plugins/haml/TODO +20 -26
  579. data/vendor/plugins/haml/VERSION +1 -1
  580. data/vendor/plugins/haml/VERSION_NAME +1 -1
  581. data/vendor/plugins/haml/bin/css2sass +1 -7
  582. data/vendor/plugins/haml/doc-src/FAQ.md +4 -16
  583. data/vendor/plugins/haml/doc-src/HAML_CHANGELOG.md +1 -536
  584. data/vendor/plugins/haml/doc-src/HAML_REFERENCE.md +16 -176
  585. data/vendor/plugins/haml/doc-src/SASS_CHANGELOG.md +0 -1159
  586. data/vendor/plugins/haml/doc-src/SASS_REFERENCE.md +632 -1162
  587. data/vendor/plugins/haml/extra/haml-mode.el +34 -36
  588. data/vendor/plugins/haml/extra/sass-mode.el +9 -10
  589. data/vendor/plugins/haml/haml.gemspec +33 -8
  590. data/vendor/plugins/haml/lib/haml.rb +2 -5
  591. data/vendor/plugins/haml/lib/haml/buffer.rb +4 -22
  592. data/vendor/plugins/haml/lib/haml/engine.rb +4 -13
  593. data/vendor/plugins/haml/lib/haml/exec.rb +64 -456
  594. data/vendor/plugins/haml/lib/haml/filters.rb +1 -19
  595. data/vendor/plugins/haml/lib/haml/helpers.rb +19 -40
  596. data/vendor/plugins/haml/lib/haml/helpers/action_view_mods.rb +12 -38
  597. data/vendor/plugins/haml/lib/haml/helpers/xss_mods.rb +2 -13
  598. data/vendor/plugins/haml/lib/haml/html.rb +49 -209
  599. data/vendor/plugins/haml/lib/haml/precompiler.rb +89 -130
  600. data/vendor/plugins/haml/lib/haml/railtie.rb +13 -16
  601. data/vendor/plugins/haml/lib/haml/template.rb +12 -13
  602. data/vendor/plugins/haml/lib/haml/template/plugin.rb +6 -18
  603. data/vendor/plugins/haml/lib/haml/util.rb +44 -483
  604. data/vendor/plugins/haml/lib/haml/version.rb +2 -25
  605. data/vendor/plugins/haml/lib/sass.rb +2 -7
  606. data/vendor/plugins/haml/lib/sass/css.rb +196 -86
  607. data/vendor/plugins/haml/lib/sass/engine.rb +99 -304
  608. data/vendor/plugins/haml/lib/sass/environment.rb +3 -67
  609. data/vendor/plugins/haml/lib/sass/error.rb +25 -166
  610. data/vendor/plugins/haml/lib/sass/files.rb +38 -43
  611. data/vendor/plugins/haml/lib/sass/plugin.rb +150 -198
  612. data/vendor/plugins/haml/lib/sass/plugin/merb.rb +20 -8
  613. data/vendor/plugins/haml/lib/sass/plugin/rack.rb +20 -2
  614. data/vendor/plugins/haml/lib/sass/plugin/rails.rb +9 -16
  615. data/vendor/plugins/haml/lib/sass/repl.rb +1 -1
  616. data/vendor/plugins/haml/lib/sass/script.rb +31 -32
  617. data/vendor/plugins/haml/lib/sass/script/bool.rb +1 -2
  618. data/vendor/plugins/haml/lib/sass/script/color.rb +26 -295
  619. data/vendor/plugins/haml/lib/sass/script/funcall.rb +6 -33
  620. data/vendor/plugins/haml/lib/sass/script/functions.rb +33 -637
  621. data/vendor/plugins/haml/lib/sass/script/lexer.rb +57 -200
  622. data/vendor/plugins/haml/lib/sass/script/literal.rb +10 -69
  623. data/vendor/plugins/haml/lib/sass/script/node.rb +1 -99
  624. data/vendor/plugins/haml/lib/sass/script/number.rb +24 -64
  625. data/vendor/plugins/haml/lib/sass/script/operation.rb +3 -53
  626. data/vendor/plugins/haml/lib/sass/script/parser.rb +50 -229
  627. data/vendor/plugins/haml/lib/sass/script/string.rb +2 -57
  628. data/vendor/plugins/haml/lib/sass/script/unary_operation.rb +2 -25
  629. data/vendor/plugins/haml/lib/sass/script/variable.rb +5 -22
  630. data/vendor/plugins/haml/lib/sass/tree/comment_node.rb +27 -71
  631. data/vendor/plugins/haml/lib/sass/tree/debug_node.rb +2 -8
  632. data/vendor/plugins/haml/lib/sass/tree/directive_node.rb +37 -44
  633. data/vendor/plugins/haml/lib/sass/tree/for_node.rb +0 -19
  634. data/vendor/plugins/haml/lib/sass/tree/if_node.rb +0 -26
  635. data/vendor/plugins/haml/lib/sass/tree/import_node.rb +27 -64
  636. data/vendor/plugins/haml/lib/sass/tree/mixin_def_node.rb +0 -31
  637. data/vendor/plugins/haml/lib/sass/tree/mixin_node.rb +7 -82
  638. data/vendor/plugins/haml/lib/sass/tree/node.rb +77 -291
  639. data/vendor/plugins/haml/lib/sass/tree/prop_node.rb +58 -157
  640. data/vendor/plugins/haml/lib/sass/tree/rule_node.rb +137 -178
  641. data/vendor/plugins/haml/lib/sass/tree/variable_node.rb +5 -10
  642. data/vendor/plugins/haml/lib/sass/tree/while_node.rb +0 -17
  643. data/vendor/plugins/haml/test/benchmark.rb +5 -5
  644. data/vendor/plugins/haml/test/haml/engine_test.rb +19 -530
  645. data/vendor/plugins/haml/test/haml/helper_test.rb +7 -124
  646. data/vendor/plugins/haml/test/haml/html2haml_test.rb +66 -250
  647. data/vendor/plugins/haml/test/haml/results/filters.xhtml +1 -1
  648. data/vendor/plugins/haml/test/haml/results/helpers.xhtml +23 -0
  649. data/vendor/plugins/haml/test/haml/results/just_stuff.xhtml +0 -2
  650. data/vendor/plugins/haml/test/haml/rhtml/_av_partial_1.rhtml +12 -0
  651. data/vendor/plugins/haml/test/haml/rhtml/_av_partial_2.rhtml +8 -0
  652. data/vendor/plugins/haml/test/haml/rhtml/action_view.rhtml +62 -0
  653. data/vendor/plugins/haml/test/haml/rhtml/standard.rhtml +54 -0
  654. data/vendor/plugins/haml/test/haml/template_test.rb +3 -33
  655. data/vendor/plugins/haml/test/haml/templates/helpers.haml +66 -0
  656. data/vendor/plugins/haml/test/haml/templates/just_stuff.haml +0 -2
  657. data/vendor/plugins/haml/test/haml/util_test.rb +0 -161
  658. data/vendor/plugins/haml/test/linked_rails.rb +1 -22
  659. data/vendor/plugins/haml/test/sass/css2sass_test.rb +18 -130
  660. data/vendor/plugins/haml/test/sass/engine_test.rb +138 -1426
  661. data/vendor/plugins/haml/test/sass/functions_test.rb +47 -429
  662. data/vendor/plugins/haml/test/sass/more_results/more_import.css +1 -1
  663. data/vendor/plugins/haml/test/sass/more_templates/more_import.sass +3 -3
  664. data/vendor/plugins/haml/test/sass/plugin_test.rb +56 -246
  665. data/vendor/plugins/haml/test/sass/results/compact.css +1 -1
  666. data/vendor/plugins/haml/test/sass/results/complex.css +6 -5
  667. data/vendor/plugins/haml/test/sass/results/compressed.css +1 -1
  668. data/vendor/plugins/haml/test/sass/results/expanded.css +1 -1
  669. data/vendor/plugins/haml/test/sass/results/import.css +1 -3
  670. data/vendor/plugins/haml/test/sass/results/mixins.css +12 -12
  671. data/vendor/plugins/haml/test/sass/results/nested.css +1 -1
  672. data/vendor/plugins/haml/test/sass/results/parent_ref.css +4 -4
  673. data/vendor/plugins/haml/test/sass/results/script.css +4 -4
  674. data/vendor/plugins/haml/test/sass/script_test.rb +78 -281
  675. data/vendor/plugins/haml/test/sass/templates/alt.sass +2 -2
  676. data/vendor/plugins/haml/test/sass/templates/basic.sass +1 -1
  677. data/vendor/plugins/haml/test/sass/templates/bork.sass +2 -0
  678. data/vendor/plugins/haml/test/sass/templates/complex.sass +2 -0
  679. data/vendor/plugins/haml/test/sass/templates/import.sass +4 -5
  680. data/vendor/plugins/haml/test/sass/templates/importee.sass +3 -3
  681. data/vendor/plugins/haml/test/sass/templates/line_numbers.sass +1 -1
  682. data/vendor/plugins/haml/test/sass/templates/mixins.sass +2 -2
  683. data/vendor/plugins/haml/test/sass/templates/parent_ref.sass +2 -2
  684. data/vendor/plugins/haml/test/sass/templates/script.sass +69 -69
  685. data/vendor/plugins/haml/test/sass/templates/units.sass +10 -10
  686. data/vendor/plugins/haml/test/test_helper.rb +4 -52
  687. data/vendor/plugins/haml/yard/default/fulldoc/html/css/common.sass +1 -5
  688. metadata +2926 -2487
  689. data/vendor/rack-cache/CHANGES +0 -128
  690. data/vendor/rack-cache/COPYING +0 -18
  691. data/vendor/rack-cache/README +0 -110
  692. data/vendor/rack-cache/Rakefile +0 -137
  693. data/vendor/rack-cache/TODO +0 -31
  694. data/vendor/rack-cache/doc/configuration.markdown +0 -86
  695. data/vendor/rack-cache/doc/faq.markdown +0 -141
  696. data/vendor/rack-cache/doc/index.markdown +0 -118
  697. data/vendor/rack-cache/doc/layout.html.erb +0 -34
  698. data/vendor/rack-cache/doc/license.markdown +0 -24
  699. data/vendor/rack-cache/doc/rack-cache.css +0 -362
  700. data/vendor/rack-cache/doc/server.ru +0 -34
  701. data/vendor/rack-cache/doc/storage.markdown +0 -162
  702. data/vendor/rack-cache/example/sinatra/app.rb +0 -25
  703. data/vendor/rack-cache/example/sinatra/views/index.erb +0 -44
  704. data/vendor/rack-cache/lib/rack/cache.rb +0 -45
  705. data/vendor/rack-cache/lib/rack/cache/cachecontrol.rb +0 -193
  706. data/vendor/rack-cache/lib/rack/cache/context.rb +0 -233
  707. data/vendor/rack-cache/lib/rack/cache/entitystore.rb +0 -253
  708. data/vendor/rack-cache/lib/rack/cache/key.rb +0 -52
  709. data/vendor/rack-cache/lib/rack/cache/metastore.rb +0 -328
  710. data/vendor/rack-cache/lib/rack/cache/options.rb +0 -150
  711. data/vendor/rack-cache/lib/rack/cache/request.rb +0 -33
  712. data/vendor/rack-cache/lib/rack/cache/response.rb +0 -267
  713. data/vendor/rack-cache/lib/rack/cache/storage.rb +0 -49
  714. data/vendor/rack-cache/rack-cache.gemspec +0 -69
  715. data/vendor/rack-cache/test/cache_test.rb +0 -38
  716. data/vendor/rack-cache/test/cachecontrol_test.rb +0 -139
  717. data/vendor/rack-cache/test/context_test.rb +0 -727
  718. data/vendor/rack-cache/test/entitystore_test.rb +0 -189
  719. data/vendor/rack-cache/test/key_test.rb +0 -50
  720. data/vendor/rack-cache/test/metastore_test.rb +0 -263
  721. data/vendor/rack-cache/test/options_test.rb +0 -78
  722. data/vendor/rack-cache/test/pony.jpg +0 -0
  723. data/vendor/rack-cache/test/request_test.rb +0 -19
  724. data/vendor/rack-cache/test/response_test.rb +0 -178
  725. data/vendor/rack-cache/test/spec_setup.rb +0 -202
  726. data/vendor/rack-cache/test/storage_test.rb +0 -94
@@ -1,139 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/spec_setup"
2
- require 'rack/cache/cachecontrol'
3
-
4
- describe 'Rack::Cache::CacheControl' do
5
- it 'takes no args and initializes with an empty set of values' do
6
- cache_control = Rack::Cache::CacheControl.new
7
- cache_control.should.be.empty
8
- cache_control.to_s.should.equal ''
9
- end
10
-
11
- it 'takes a String and parses it into a Hash when created' do
12
- cache_control = Rack::Cache::CacheControl.new('max-age=600, foo')
13
- cache_control['max-age'].should.equal '600'
14
- cache_control['foo'].should.be true
15
- end
16
-
17
- it 'takes a String with a single name=value pair' do
18
- cache_control = Rack::Cache::CacheControl.new('max-age=600')
19
- cache_control['max-age'].should.equal '600'
20
- end
21
-
22
- it 'takes a String with multiple name=value pairs' do
23
- cache_control = Rack::Cache::CacheControl.new('max-age=600, max-stale=300, min-fresh=570')
24
- cache_control['max-age'].should.equal '600'
25
- cache_control['max-stale'].should.equal '300'
26
- cache_control['min-fresh'].should.equal '570'
27
- end
28
-
29
- it 'takes a String with a single flag value' do
30
- cache_control = Rack::Cache::CacheControl.new('no-cache')
31
- cache_control.should.include 'no-cache'
32
- cache_control['no-cache'].should.be true
33
- end
34
-
35
- it 'takes a String with a bunch of all kinds of stuff' do
36
- cache_control =
37
- Rack::Cache::CacheControl.new('max-age=600,must-revalidate,min-fresh=3000,foo=bar,baz')
38
- cache_control['max-age'].should.equal '600'
39
- cache_control['must-revalidate'].should.be true
40
- cache_control['min-fresh'].should.equal '3000'
41
- cache_control['foo'].should.equal 'bar'
42
- cache_control['baz'].should.be true
43
- end
44
-
45
- it 'strips leading and trailing spaces from header value' do
46
- cache_control = Rack::Cache::CacheControl.new(' public, max-age = 600 ')
47
- cache_control.should.include 'public'
48
- cache_control.should.include 'max-age'
49
- cache_control['max-age'].should.equal '600'
50
- end
51
-
52
- it 'removes all directives with #clear' do
53
- cache_control = Rack::Cache::CacheControl.new('max-age=600, must-revalidate')
54
- cache_control.clear
55
- cache_control.should.be.empty
56
- end
57
-
58
- it 'converts self into header String with #to_s' do
59
- cache_control = Rack::Cache::CacheControl.new
60
- cache_control['public'] = true
61
- cache_control['max-age'] = '600'
62
- cache_control.to_s.split(', ').sort.should.equal ['max-age=600', 'public']
63
- end
64
-
65
- it 'sorts alphabetically with boolean directives before value directives' do
66
- cache_control = Rack::Cache::CacheControl.new('foo=bar, z, x, y, bling=baz, zoom=zib, b, a')
67
- cache_control.to_s.should.equal 'a, b, x, y, z, bling=baz, foo=bar, zoom=zib'
68
- end
69
-
70
- it 'responds to #max_age with an integer when max-age directive present' do
71
- cache_control = Rack::Cache::CacheControl.new('public, max-age=600')
72
- cache_control.max_age.should.equal 600
73
- end
74
-
75
- it 'responds to #max_age with nil when no max-age directive present' do
76
- cache_control = Rack::Cache::CacheControl.new('public')
77
- cache_control.max_age.should.be nil
78
- end
79
-
80
- it 'responds to #shared_max_age with an integer when s-maxage directive present' do
81
- cache_control = Rack::Cache::CacheControl.new('public, s-maxage=600')
82
- cache_control.shared_max_age.should.equal 600
83
- end
84
-
85
- it 'responds to #shared_max_age with nil when no s-maxage directive present' do
86
- cache_control = Rack::Cache::CacheControl.new('public')
87
- cache_control.shared_max_age.should.be nil
88
- end
89
-
90
- it 'responds to #public? truthfully when public directive present' do
91
- cache_control = Rack::Cache::CacheControl.new('public')
92
- cache_control.should.be.public
93
- end
94
-
95
- it 'responds to #public? non-truthfully when no public directive present' do
96
- cache_control = Rack::Cache::CacheControl.new('private')
97
- cache_control.should.not.be.public
98
- end
99
-
100
- it 'responds to #private? truthfully when private directive present' do
101
- cache_control = Rack::Cache::CacheControl.new('private')
102
- cache_control.should.be.private
103
- end
104
-
105
- it 'responds to #private? non-truthfully when no private directive present' do
106
- cache_control = Rack::Cache::CacheControl.new('public')
107
- cache_control.should.not.be.private
108
- end
109
-
110
- it 'responds to #no_cache? truthfully when no-cache directive present' do
111
- cache_control = Rack::Cache::CacheControl.new('no-cache')
112
- cache_control.should.be.no_cache
113
- end
114
-
115
- it 'responds to #no_cache? non-truthfully when no no-cache directive present' do
116
- cache_control = Rack::Cache::CacheControl.new('max-age=600')
117
- cache_control.should.not.be.no_cache
118
- end
119
-
120
- it 'responds to #must_revalidate? truthfully when must-revalidate directive present' do
121
- cache_control = Rack::Cache::CacheControl.new('must-revalidate')
122
- cache_control.should.be.must_revalidate
123
- end
124
-
125
- it 'responds to #must_revalidate? non-truthfully when no must-revalidate directive present' do
126
- cache_control = Rack::Cache::CacheControl.new('max-age=600')
127
- cache_control.should.not.be.no_cache
128
- end
129
-
130
- it 'responds to #proxy_revalidate? truthfully when proxy-revalidate directive present' do
131
- cache_control = Rack::Cache::CacheControl.new('proxy-revalidate')
132
- cache_control.should.be.proxy_revalidate
133
- end
134
-
135
- it 'responds to #proxy_revalidate? non-truthfully when no proxy-revalidate directive present' do
136
- cache_control = Rack::Cache::CacheControl.new('max-age=600')
137
- cache_control.should.not.be.no_cache
138
- end
139
- end
@@ -1,727 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/spec_setup"
2
- require 'rack/cache/context'
3
-
4
- describe 'Rack::Cache::Context' do
5
- before(:each) { setup_cache_context }
6
- after(:each) { teardown_cache_context }
7
-
8
- it 'passes on non-GET/HEAD requests' do
9
- respond_with 200
10
- post '/'
11
-
12
- app.should.be.called
13
- response.should.be.ok
14
- cache.trace.should.include :pass
15
- response.headers.should.not.include 'Age'
16
- end
17
-
18
- %w[post put delete].each do |request_method|
19
- it "invalidates on #{request_method} requests" do
20
- respond_with 200
21
- request request_method, '/'
22
-
23
- app.should.be.called
24
- response.should.be.ok
25
- cache.trace.should.include :invalidate
26
- cache.trace.should.include :pass
27
- end
28
- end
29
-
30
- it 'does not cache with Authorization request header and non public response' do
31
- respond_with 200, 'ETag' => '"FOO"'
32
- get '/', 'HTTP_AUTHORIZATION' => 'basic foobarbaz'
33
-
34
- app.should.be.called
35
- response.should.be.ok
36
- response.headers['Cache-Control'].should.equal 'private'
37
- cache.trace.should.include :miss
38
- cache.trace.should.not.include :store
39
- response.headers.should.not.include 'Age'
40
- end
41
-
42
- it 'does cache with Authorization request header and public response' do
43
- respond_with 200, 'Cache-Control' => 'public', 'ETag' => '"FOO"'
44
- get '/', 'HTTP_AUTHORIZATION' => 'basic foobarbaz'
45
-
46
- app.should.be.called
47
- response.should.be.ok
48
- cache.trace.should.include :miss
49
- cache.trace.should.include :store
50
- response.headers.should.include 'Age'
51
- response.headers['Cache-Control'].should.equal 'public'
52
- end
53
-
54
- it 'does not cache with Cookie header and non public response' do
55
- respond_with 200, 'ETag' => '"FOO"'
56
- get '/', 'HTTP_COOKIE' => 'foo=bar'
57
-
58
- app.should.be.called
59
- response.should.be.ok
60
- response.headers['Cache-Control'].should.equal 'private'
61
- cache.trace.should.include :miss
62
- cache.trace.should.not.include :store
63
- response.headers.should.not.include 'Age'
64
- end
65
-
66
- it 'does not cache requests with a Cookie header' do
67
- respond_with 200
68
- get '/', 'HTTP_COOKIE' => 'foo=bar'
69
-
70
- response.should.be.ok
71
- app.should.be.called
72
- cache.trace.should.include :miss
73
- cache.trace.should.not.include :store
74
- response.headers.should.not.include 'Age'
75
- response.headers['Cache-Control'].should.equal 'private'
76
- end
77
-
78
- it 'responds with 304 when If-Modified-Since matches Last-Modified' do
79
- timestamp = Time.now.httpdate
80
- respond_with do |req,res|
81
- res.status = 200
82
- res['Last-Modified'] = timestamp
83
- res['Content-Type'] = 'text/plain'
84
- res.body = ['Hello World']
85
- end
86
-
87
- get '/',
88
- 'HTTP_IF_MODIFIED_SINCE' => timestamp
89
- app.should.be.called
90
- response.status.should.equal 304
91
- response.headers.should.not.include 'Content-Length'
92
- response.headers.should.not.include 'Content-Type'
93
- response.body.should.empty
94
- cache.trace.should.include :miss
95
- cache.trace.should.include :store
96
- end
97
-
98
- it 'responds with 304 when If-None-Match matches ETag' do
99
- respond_with do |req,res|
100
- res.status = 200
101
- res['ETag'] = '12345'
102
- res['Content-Type'] = 'text/plain'
103
- res.body = ['Hello World']
104
- end
105
-
106
- get '/',
107
- 'HTTP_IF_NONE_MATCH' => '12345'
108
- app.should.be.called
109
- response.status.should.equal 304
110
- response.headers.should.not.include 'Content-Length'
111
- response.headers.should.not.include 'Content-Type'
112
- response.headers.should.include 'ETag'
113
- response.body.should.empty
114
- cache.trace.should.include :miss
115
- cache.trace.should.include :store
116
- end
117
-
118
- it 'stores responses when no-cache request directive present' do
119
- respond_with 200, 'Expires' => (Time.now + 5).httpdate
120
-
121
- get '/', 'HTTP_CACHE_CONTROL' => 'no-cache'
122
- response.should.be.ok
123
- cache.trace.should.include :store
124
- response.headers.should.include 'Age'
125
- end
126
-
127
- it 'reloads responses when cache hits but no-cache request directive present' do
128
- count = 0
129
- respond_with 200, 'Cache-Control' => 'max-age=10000' do |req,res|
130
- count+= 1
131
- res.body = (count == 1) ? ['Hello World'] : ['Goodbye World']
132
- end
133
-
134
- get '/'
135
- response.should.be.ok
136
- response.body.should.equal 'Hello World'
137
- cache.trace.should.include :store
138
-
139
- get '/'
140
- response.should.be.ok
141
- response.body.should.equal 'Hello World'
142
- cache.trace.should.include :fresh
143
-
144
- get '/', 'HTTP_CACHE_CONTROL' => 'no-cache'
145
- response.should.be.ok
146
- response.body.should.equal 'Goodbye World'
147
- cache.trace.should.include :reload
148
- cache.trace.should.include :store
149
- end
150
-
151
- it 'does not reload responses when allow_reload is set false' do
152
- count = 0
153
- respond_with 200, 'Cache-Control' => 'max-age=10000' do |req,res|
154
- count+= 1
155
- res.body = (count == 1) ? ['Hello World'] : ['Goodbye World']
156
- end
157
-
158
- get '/'
159
- response.should.be.ok
160
- response.body.should.equal 'Hello World'
161
- cache.trace.should.include :store
162
-
163
- get '/'
164
- response.should.be.ok
165
- response.body.should.equal 'Hello World'
166
- cache.trace.should.include :fresh
167
-
168
- get '/',
169
- 'rack-cache.allow_reload' => false,
170
- 'HTTP_CACHE_CONTROL' => 'no-cache'
171
- response.should.be.ok
172
- response.body.should.equal 'Hello World'
173
- cache.trace.should.not.include :reload
174
- end
175
-
176
- it 'revalidates fresh cache entry when max-age request directive is exceeded' do
177
- count = 0
178
- respond_with do |req,res|
179
- count+= 1
180
- res['Cache-Control'] = 'max-age=10000'
181
- res['ETag'] = count.to_s
182
- res.body = (count == 1) ? ['Hello World'] : ['Goodbye World']
183
- end
184
-
185
- get '/'
186
- response.should.be.ok
187
- response.body.should.equal 'Hello World'
188
- cache.trace.should.include :store
189
-
190
- get '/'
191
- response.should.be.ok
192
- response.body.should.equal 'Hello World'
193
- cache.trace.should.include :fresh
194
-
195
- get '/', 'HTTP_CACHE_CONTROL' => 'max-age=0'
196
- response.should.be.ok
197
- response.body.should.equal 'Goodbye World'
198
- cache.trace.should.include :stale
199
- cache.trace.should.include :invalid
200
- cache.trace.should.include :store
201
- end
202
-
203
- it 'does not revalidate fresh cache entry when enable_revalidate option is set false' do
204
- count = 0
205
- respond_with do |req,res|
206
- count+= 1
207
- res['Cache-Control'] = 'max-age=10000'
208
- res['ETag'] = count.to_s
209
- res.body = (count == 1) ? ['Hello World'] : ['Goodbye World']
210
- end
211
-
212
- get '/'
213
- response.should.be.ok
214
- response.body.should.equal 'Hello World'
215
- cache.trace.should.include :store
216
-
217
- get '/'
218
- response.should.be.ok
219
- response.body.should.equal 'Hello World'
220
- cache.trace.should.include :fresh
221
-
222
- get '/',
223
- 'rack-cache.allow_revalidate' => false,
224
- 'HTTP_CACHE_CONTROL' => 'max-age=0'
225
- response.should.be.ok
226
- response.body.should.equal 'Hello World'
227
- cache.trace.should.not.include :stale
228
- cache.trace.should.not.include :invalid
229
- cache.trace.should.include :fresh
230
- end
231
- it 'fetches response from backend when cache misses' do
232
- respond_with 200, 'Expires' => (Time.now + 5).httpdate
233
- get '/'
234
-
235
- response.should.be.ok
236
- cache.trace.should.include :miss
237
- response.headers.should.include 'Age'
238
- end
239
-
240
- [(201..202),(204..206),(303..305),(400..403),(405..409),(411..417),(500..505)].each do |range|
241
- range.each do |response_code|
242
- it "does not cache #{response_code} responses" do
243
- respond_with response_code, 'Expires' => (Time.now + 5).httpdate
244
- get '/'
245
-
246
- cache.trace.should.not.include :store
247
- response.status.should.equal response_code
248
- response.headers.should.not.include 'Age'
249
- end
250
- end
251
- end
252
-
253
- it "does not cache responses with explicit no-store directive" do
254
- respond_with 200,
255
- 'Expires' => (Time.now + 5).httpdate,
256
- 'Cache-Control' => 'no-store'
257
- get '/'
258
-
259
- response.should.be.ok
260
- cache.trace.should.not.include :store
261
- response.headers.should.not.include 'Age'
262
- end
263
-
264
- it 'does not cache responses without freshness information or a validator' do
265
- respond_with 200
266
- get '/'
267
-
268
- response.should.be.ok
269
- cache.trace.should.not.include :store
270
- end
271
-
272
- it "caches responses with explicit no-cache directive" do
273
- respond_with 200,
274
- 'Expires' => (Time.now + 5).httpdate,
275
- 'Cache-Control' => 'no-cache'
276
- get '/'
277
-
278
- response.should.be.ok
279
- cache.trace.should.include :store
280
- response.headers.should.include 'Age'
281
- end
282
-
283
- it 'caches responses with an Expiration header' do
284
- respond_with 200, 'Expires' => (Time.now + 5).httpdate
285
- get '/'
286
-
287
- response.should.be.ok
288
- response.body.should.equal 'Hello World'
289
- response.headers.should.include 'Date'
290
- response['Age'].should.not.be.nil
291
- response['X-Content-Digest'].should.not.be.nil
292
- cache.trace.should.include :miss
293
- cache.trace.should.include :store
294
- cache.metastore.to_hash.keys.length.should.equal 1
295
- end
296
-
297
- it 'caches responses with a max-age directive' do
298
- respond_with 200, 'Cache-Control' => 'max-age=5'
299
- get '/'
300
-
301
- response.should.be.ok
302
- response.body.should.equal 'Hello World'
303
- response.headers.should.include 'Date'
304
- response['Age'].should.not.be.nil
305
- response['X-Content-Digest'].should.not.be.nil
306
- cache.trace.should.include :miss
307
- cache.trace.should.include :store
308
- cache.metastore.to_hash.keys.length.should.equal 1
309
- end
310
-
311
- it 'caches responses with a s-maxage directive' do
312
- respond_with 200, 'Cache-Control' => 's-maxage=5'
313
- get '/'
314
-
315
- response.should.be.ok
316
- response.body.should.equal 'Hello World'
317
- response.headers.should.include 'Date'
318
- response['Age'].should.not.be.nil
319
- response['X-Content-Digest'].should.not.be.nil
320
- cache.trace.should.include :miss
321
- cache.trace.should.include :store
322
- cache.metastore.to_hash.keys.length.should.equal 1
323
- end
324
-
325
- it 'caches responses with a Last-Modified validator but no freshness information' do
326
- respond_with 200, 'Last-Modified' => Time.now.httpdate
327
- get '/'
328
-
329
- response.should.be.ok
330
- response.body.should.equal 'Hello World'
331
- cache.trace.should.include :miss
332
- cache.trace.should.include :store
333
- end
334
-
335
- it 'caches responses with an ETag validator but no freshness information' do
336
- respond_with 200, 'ETag' => '"123456"'
337
- get '/'
338
-
339
- response.should.be.ok
340
- response.body.should.equal 'Hello World'
341
- cache.trace.should.include :miss
342
- cache.trace.should.include :store
343
- end
344
-
345
- it 'hits cached response with Expires header' do
346
- respond_with 200,
347
- 'Date' => (Time.now - 5).httpdate,
348
- 'Expires' => (Time.now + 5).httpdate
349
-
350
- get '/'
351
- app.should.be.called
352
- response.should.be.ok
353
- response.headers.should.include 'Date'
354
- cache.trace.should.include :miss
355
- cache.trace.should.include :store
356
- response.body.should.equal 'Hello World'
357
-
358
- get '/'
359
- response.should.be.ok
360
- app.should.not.be.called
361
- response['Date'].should.equal responses.first['Date']
362
- response['Age'].to_i.should.satisfy { |age| age > 0 }
363
- response['X-Content-Digest'].should.not.be.nil
364
- cache.trace.should.include :fresh
365
- cache.trace.should.not.include :store
366
- response.body.should.equal 'Hello World'
367
- end
368
-
369
- it 'hits cached response with max-age directive' do
370
- respond_with 200,
371
- 'Date' => (Time.now - 5).httpdate,
372
- 'Cache-Control' => 'max-age=10'
373
-
374
- get '/'
375
- app.should.be.called
376
- response.should.be.ok
377
- response.headers.should.include 'Date'
378
- cache.trace.should.include :miss
379
- cache.trace.should.include :store
380
- response.body.should.equal 'Hello World'
381
-
382
- get '/'
383
- response.should.be.ok
384
- app.should.not.be.called
385
- response['Date'].should.equal responses.first['Date']
386
- response['Age'].to_i.should.satisfy { |age| age > 0 }
387
- response['X-Content-Digest'].should.not.be.nil
388
- cache.trace.should.include :fresh
389
- cache.trace.should.not.include :store
390
- response.body.should.equal 'Hello World'
391
- end
392
-
393
- it 'hits cached response with s-maxage directive' do
394
- respond_with 200,
395
- 'Date' => (Time.now - 5).httpdate,
396
- 'Cache-Control' => 's-maxage=10, max-age=0'
397
-
398
- get '/'
399
- app.should.be.called
400
- response.should.be.ok
401
- response.headers.should.include 'Date'
402
- cache.trace.should.include :miss
403
- cache.trace.should.include :store
404
- response.body.should.equal 'Hello World'
405
-
406
- get '/'
407
- response.should.be.ok
408
- app.should.not.be.called
409
- response['Date'].should.equal responses.first['Date']
410
- response['Age'].to_i.should.satisfy { |age| age > 0 }
411
- response['X-Content-Digest'].should.not.be.nil
412
- cache.trace.should.include :fresh
413
- cache.trace.should.not.include :store
414
- response.body.should.equal 'Hello World'
415
- end
416
-
417
- it 'assigns default_ttl when response has no freshness information' do
418
- respond_with 200
419
-
420
- get '/', 'rack-cache.default_ttl' => 10
421
- app.should.be.called
422
- response.should.be.ok
423
- cache.trace.should.include :miss
424
- cache.trace.should.include :store
425
- response.body.should.equal 'Hello World'
426
- response['Cache-Control'].should.include 's-maxage=10'
427
-
428
- get '/', 'rack-cache.default_ttl' => 10
429
- response.should.be.ok
430
- app.should.not.be.called
431
- cache.trace.should.include :fresh
432
- cache.trace.should.not.include :store
433
- response.body.should.equal 'Hello World'
434
- end
435
-
436
- it 'does not assign default_ttl when response has must-revalidate directive' do
437
- respond_with 200,
438
- 'Cache-Control' => 'must-revalidate'
439
-
440
- get '/', 'rack-cache.default_ttl' => 10
441
- app.should.be.called
442
- response.should.be.ok
443
- cache.trace.should.include :miss
444
- cache.trace.should.not.include :store
445
- response['Cache-Control'].should.not.include 's-maxage'
446
- response.body.should.equal 'Hello World'
447
- end
448
-
449
- it 'fetches full response when cache stale and no validators present' do
450
- respond_with 200, 'Expires' => (Time.now + 5).httpdate
451
-
452
- # build initial request
453
- get '/'
454
- app.should.be.called
455
- response.should.be.ok
456
- response.headers.should.include 'Date'
457
- response.headers.should.include 'X-Content-Digest'
458
- response.headers.should.include 'Age'
459
- cache.trace.should.include :miss
460
- cache.trace.should.include :store
461
- response.body.should.equal 'Hello World'
462
-
463
- # go in and play around with the cached metadata directly ...
464
- cache.metastore.to_hash.values.length.should.equal 1
465
- cache.metastore.to_hash.values.first.first[1]['Expires'] = Time.now.httpdate
466
-
467
- # build subsequent request; should be found but miss due to freshness
468
- get '/'
469
- app.should.be.called
470
- response.should.be.ok
471
- response['Age'].to_i.should.equal 0
472
- response.headers.should.include 'X-Content-Digest'
473
- cache.trace.should.include :stale
474
- cache.trace.should.not.include :fresh
475
- cache.trace.should.not.include :miss
476
- cache.trace.should.include :store
477
- response.body.should.equal 'Hello World'
478
- end
479
-
480
- it 'validates cached responses with Last-Modified and no freshness information' do
481
- timestamp = Time.now.httpdate
482
- respond_with do |req,res|
483
- res['Last-Modified'] = timestamp
484
- if req.env['HTTP_IF_MODIFIED_SINCE'] == timestamp
485
- res.status = 304
486
- res.body = []
487
- end
488
- end
489
-
490
- # build initial request
491
- get '/'
492
- app.should.be.called
493
- response.should.be.ok
494
- response.headers.should.include 'Last-Modified'
495
- response.headers.should.include 'X-Content-Digest'
496
- response.body.should.equal 'Hello World'
497
- cache.trace.should.include :miss
498
- cache.trace.should.include :store
499
- cache.trace.should.not.include :stale
500
-
501
- # build subsequent request; should be found but miss due to freshness
502
- get '/'
503
- app.should.be.called
504
- response.should.be.ok
505
- response.headers.should.include 'Last-Modified'
506
- response.headers.should.include 'X-Content-Digest'
507
- response['Age'].to_i.should.equal 0
508
- response.body.should.equal 'Hello World'
509
- cache.trace.should.include :stale
510
- cache.trace.should.include :valid
511
- cache.trace.should.include :store
512
- cache.trace.should.not.include :miss
513
- end
514
-
515
- it 'validates cached responses with ETag and no freshness information' do
516
- timestamp = Time.now.httpdate
517
- respond_with do |req,res|
518
- res['ETAG'] = '"12345"'
519
- if req.env['HTTP_IF_NONE_MATCH'] == res['Etag']
520
- res.status = 304
521
- res.body = []
522
- end
523
- end
524
-
525
- # build initial request
526
- get '/'
527
- app.should.be.called
528
- response.should.be.ok
529
- response.headers.should.include 'ETag'
530
- response.headers.should.include 'X-Content-Digest'
531
- response.body.should.equal 'Hello World'
532
- cache.trace.should.include :miss
533
- cache.trace.should.include :store
534
-
535
- # build subsequent request; should be found but miss due to freshness
536
- get '/'
537
- app.should.be.called
538
- response.should.be.ok
539
- response.headers.should.include 'ETag'
540
- response.headers.should.include 'X-Content-Digest'
541
- response['Age'].to_i.should.equal 0
542
- response.body.should.equal 'Hello World'
543
- cache.trace.should.include :stale
544
- cache.trace.should.include :valid
545
- cache.trace.should.include :store
546
- cache.trace.should.not.include :miss
547
- end
548
-
549
- it 'replaces cached responses when validation results in non-304 response' do
550
- timestamp = Time.now.httpdate
551
- count = 0
552
- respond_with do |req,res|
553
- res['Last-Modified'] = timestamp
554
- case (count+=1)
555
- when 1 ; res.body = ['first response']
556
- when 2 ; res.body = ['second response']
557
- when 3
558
- res.body = []
559
- res.status = 304
560
- end
561
- end
562
-
563
- # first request should fetch from backend and store in cache
564
- get '/'
565
- response.status.should.equal 200
566
- response.body.should.equal 'first response'
567
-
568
- # second request is validated, is invalid, and replaces cached entry
569
- get '/'
570
- response.status.should.equal 200
571
- response.body.should.equal 'second response'
572
-
573
- # third respone is validated, valid, and returns cached entry
574
- get '/'
575
- response.status.should.equal 200
576
- response.body.should.equal 'second response'
577
-
578
- count.should.equal 3
579
- end
580
-
581
- it 'passes HEAD requests through directly on pass' do
582
- respond_with do |req,res|
583
- res.status = 200
584
- res.body = []
585
- req.request_method.should.equal 'HEAD'
586
- end
587
-
588
- head '/', 'HTTP_EXPECT' => 'something ...'
589
- app.should.be.called
590
- response.body.should.equal ''
591
- end
592
-
593
- it 'uses cache to respond to HEAD requests when fresh' do
594
- respond_with do |req,res|
595
- res['Cache-Control'] = 'max-age=10'
596
- res.body = ['Hello World']
597
- req.request_method.should.not.equal 'HEAD'
598
- end
599
-
600
- get '/'
601
- app.should.be.called
602
- response.status.should.equal 200
603
- response.body.should.equal 'Hello World'
604
-
605
- head '/'
606
- app.should.not.be.called
607
- response.status.should.equal 200
608
- response.body.should.equal ''
609
- response['Content-Length'].should.equal 'Hello World'.length.to_s
610
- end
611
-
612
- it 'invalidates cached responses on POST' do
613
- respond_with do |req,res|
614
- if req.request_method == 'GET'
615
- res.status = 200
616
- res['Cache-Control'] = 'public, max-age=500'
617
- res.body = ['Hello World']
618
- elsif req.request_method == 'POST'
619
- res.status = 303
620
- res['Location'] = '/'
621
- res.headers.delete('Cache-Control')
622
- res.body = []
623
- end
624
- end
625
-
626
- # build initial request to enter into the cache
627
- get '/'
628
- app.should.be.called
629
- response.should.be.ok
630
- response.body.should.equal 'Hello World'
631
- cache.trace.should.include :miss
632
- cache.trace.should.include :store
633
-
634
- # make sure it is valid
635
- get '/'
636
- app.should.not.called
637
- response.should.be.ok
638
- response.body.should.equal 'Hello World'
639
- cache.trace.should.include :fresh
640
-
641
- # now POST to same URL
642
- post '/'
643
- app.should.be.called
644
- response.should.be.redirect
645
- response['Location'].should.equal '/'
646
- cache.trace.should.include :invalidate
647
- cache.trace.should.include :pass
648
- response.body.should.equal ''
649
-
650
- # now make sure it was actually invalidated
651
- get '/'
652
- app.should.be.called
653
- response.should.be.ok
654
- response.body.should.equal 'Hello World'
655
- cache.trace.should.include :stale
656
- cache.trace.should.include :invalid
657
- cache.trace.should.include :store
658
- end
659
-
660
- describe 'with responses that include a Vary header' do
661
- before(:each) do
662
- count = 0
663
- respond_with 200 do |req,res|
664
- res['Vary'] = 'Accept User-Agent Foo'
665
- res['Cache-Control'] = 'max-age=10'
666
- res['X-Response-Count'] = (count+=1).to_s
667
- res.body = [req.env['HTTP_USER_AGENT']]
668
- end
669
- end
670
-
671
- it 'serves from cache when headers match' do
672
- get '/',
673
- 'HTTP_ACCEPT' => 'text/html',
674
- 'HTTP_USER_AGENT' => 'Bob/1.0'
675
- response.should.be.ok
676
- response.body.should.equal 'Bob/1.0'
677
- cache.trace.should.include :miss
678
- cache.trace.should.include :store
679
-
680
- get '/',
681
- 'HTTP_ACCEPT' => 'text/html',
682
- 'HTTP_USER_AGENT' => 'Bob/1.0'
683
- response.should.be.ok
684
- response.body.should.equal 'Bob/1.0'
685
- cache.trace.should.include :fresh
686
- cache.trace.should.not.include :store
687
- response.headers.should.include 'X-Content-Digest'
688
- end
689
-
690
- it 'stores multiple responses when headers differ' do
691
- get '/',
692
- 'HTTP_ACCEPT' => 'text/html',
693
- 'HTTP_USER_AGENT' => 'Bob/1.0'
694
- response.should.be.ok
695
- response.body.should.equal 'Bob/1.0'
696
- response['X-Response-Count'].should.equal '1'
697
-
698
- get '/',
699
- 'HTTP_ACCEPT' => 'text/html',
700
- 'HTTP_USER_AGENT' => 'Bob/2.0'
701
- cache.trace.should.include :miss
702
- cache.trace.should.include :store
703
- response.body.should.equal 'Bob/2.0'
704
- response['X-Response-Count'].should.equal '2'
705
-
706
- get '/',
707
- 'HTTP_ACCEPT' => 'text/html',
708
- 'HTTP_USER_AGENT' => 'Bob/1.0'
709
- cache.trace.should.include :fresh
710
- response.body.should.equal 'Bob/1.0'
711
- response['X-Response-Count'].should.equal '1'
712
-
713
- get '/',
714
- 'HTTP_ACCEPT' => 'text/html',
715
- 'HTTP_USER_AGENT' => 'Bob/2.0'
716
- cache.trace.should.include :fresh
717
- response.body.should.equal 'Bob/2.0'
718
- response['X-Response-Count'].should.equal '2'
719
-
720
- get '/',
721
- 'HTTP_USER_AGENT' => 'Bob/2.0'
722
- cache.trace.should.include :miss
723
- response.body.should.equal 'Bob/2.0'
724
- response['X-Response-Count'].should.equal '3'
725
- end
726
- end
727
- end