radiant 0.8.2 → 0.9.0.rc2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of radiant might be problematic. Click here for more details.

Files changed (1212) hide show
  1. data/CHANGELOG +258 -389
  2. data/CONTRIBUTORS +21 -0
  3. data/app/controllers/admin/layouts_controller.rb +2 -8
  4. data/app/controllers/admin/pages_controller.rb +0 -19
  5. data/app/controllers/admin/preferences_controller.rb +3 -4
  6. data/app/controllers/admin/references_controller.rb +1 -1
  7. data/app/controllers/admin/resource_controller.rb +11 -10
  8. data/app/controllers/admin/snippets_controller.rb +5 -6
  9. data/app/controllers/admin/users_controller.rb +15 -1
  10. data/app/controllers/admin/welcome_controller.rb +5 -5
  11. data/app/controllers/application_controller.rb +34 -2
  12. data/app/controllers/site_controller.rb +20 -6
  13. data/app/helpers/admin/layouts_helper.rb +19 -0
  14. data/app/helpers/admin/node_helper.rb +10 -10
  15. data/app/helpers/admin/pages_helper.rb +82 -22
  16. data/app/helpers/admin/references_helper.rb +6 -3
  17. data/app/helpers/admin/snippets_helper.rb +39 -0
  18. data/app/helpers/admin/users_helper.rb +2 -2
  19. data/app/helpers/application_helper.rb +93 -27
  20. data/app/models/layout.rb +3 -4
  21. data/app/models/page.rb +35 -20
  22. data/app/models/page_part.rb +4 -4
  23. data/app/models/radiant/config.rb +11 -7
  24. data/app/models/snippet.rb +5 -5
  25. data/app/models/standard_tags.rb +116 -20
  26. data/app/models/status.rb +3 -1
  27. data/app/models/user.rb +37 -33
  28. data/app/views/admin/extensions/index.html.haml +26 -25
  29. data/app/views/admin/layouts/_form.html.haml +26 -23
  30. data/app/views/admin/layouts/edit.html.haml +5 -3
  31. data/app/views/admin/layouts/index.html.haml +31 -32
  32. data/app/views/admin/layouts/new.html.haml +4 -2
  33. data/app/views/admin/layouts/remove.html.haml +9 -9
  34. data/app/views/admin/page_parts/_page_part.html.haml +11 -10
  35. data/app/views/admin/pages/_fields.html.haml +42 -48
  36. data/app/views/admin/pages/_meta_row.html.haml +2 -4
  37. data/app/views/admin/pages/_node.html.haml +5 -5
  38. data/app/views/admin/pages/_popups.html.haml +12 -29
  39. data/app/views/admin/pages/edit.html.haml +6 -3
  40. data/app/views/admin/pages/index.html.haml +22 -24
  41. data/app/views/admin/pages/new.html.haml +4 -3
  42. data/app/views/admin/pages/remove.html.haml +14 -17
  43. data/app/views/admin/preferences/edit.html.haml +36 -28
  44. data/app/views/admin/references/_tag_reference.haml +2 -2
  45. data/app/views/admin/references/filters.haml +6 -0
  46. data/app/views/admin/references/tags.haml +30 -0
  47. data/app/views/admin/snippets/_form.html.haml +22 -18
  48. data/app/views/admin/snippets/edit.html.haml +6 -2
  49. data/app/views/admin/snippets/index.html.haml +29 -29
  50. data/app/views/admin/snippets/new.html.haml +4 -2
  51. data/app/views/admin/snippets/remove.html.haml +9 -11
  52. data/app/views/admin/users/_avatar.html.haml +3 -0
  53. data/app/views/admin/users/_form.html.haml +47 -67
  54. data/app/views/admin/users/_password_fields.html.haml +18 -0
  55. data/app/views/admin/users/edit.html.haml +5 -1
  56. data/app/views/admin/users/index.html.haml +33 -30
  57. data/app/views/admin/users/new.html.haml +2 -1
  58. data/app/views/admin/users/remove.html.haml +8 -10
  59. data/app/views/admin/welcome/login.html.haml +19 -58
  60. data/app/views/layouts/application.html.haml +30 -29
  61. data/config/boot.rb +1 -1
  62. data/config/cucumber.yml +7 -0
  63. data/config/database.db2.yml +4 -1
  64. data/config/database.mysql.yml +5 -2
  65. data/config/database.postgresql.yml +5 -2
  66. data/config/database.sqlite.yml +4 -1
  67. data/config/database.sqlserver.yml +5 -2
  68. data/config/environment.rb +14 -2
  69. data/config/environments/cucumber.rb +29 -0
  70. data/config/environments/production.rb +6 -1
  71. data/config/environments/test.rb +6 -3
  72. data/config/initializers/haml.rb +2 -0
  73. data/config/initializers/pagination.rb +1 -0
  74. data/config/locales/en.yml +190 -0
  75. data/config/locales/en_available_tags.yml +454 -0
  76. data/config/routes.rb +2 -2
  77. data/db/migrate/20090226140109_add_user_language.rb +9 -0
  78. data/db/migrate/20090929164633_rename_developer_role_to_designer.rb +9 -0
  79. data/db/migrate/20091003095744_change_user_language_to_locale.rb +9 -0
  80. data/db/schema.rb +3 -2
  81. data/features/admin/content_negotiation.feature +4 -4
  82. data/features/admin/layouts_management.feature +2 -2
  83. data/features/admin/pages_management.feature +31 -17
  84. data/features/admin/snippets_management.feature +19 -17
  85. data/features/admin/user_permissions.feature +49 -41
  86. data/features/admin/user_preferences.feature +6 -6
  87. data/features/admin/users_management.feature +8 -9
  88. data/features/page_serving.feature +8 -8
  89. data/features/step_definitions/admin/admin_steps.rb +8 -2
  90. data/features/step_definitions/admin/content_negotiation_steps.rb +14 -5
  91. data/features/step_definitions/admin/pages_management_steps.rb +1 -1
  92. data/features/step_definitions/admin/users_management_steps.rb +3 -0
  93. data/features/step_definitions/page_serving_steps.rb +0 -19
  94. data/features/step_definitions/web_steps.rb +263 -0
  95. data/features/support/dataset.rb +9 -0
  96. data/features/support/env.rb +44 -14
  97. data/features/support/paths.rb +57 -12
  98. data/lib/generators/extension/extension_generator.rb +29 -1
  99. data/lib/generators/extension/templates/RSpecRakefile +14 -1
  100. data/lib/generators/extension/templates/Rakefile +17 -0
  101. data/lib/generators/extension/templates/en.yml +3 -0
  102. data/lib/generators/extension/templates/extension.rb +10 -10
  103. data/lib/generators/extension/templates/routes.rb +5 -0
  104. data/lib/generators/extension/templates/tasks.rake +27 -0
  105. data/lib/generators/extension/templates/test_helper.rb +1 -1
  106. data/lib/generators/instance/instance_generator.rb +3 -2
  107. data/lib/generators/instance/templates/databases/sqlserver.yml +2 -1
  108. data/lib/generators/instance/templates/instance_boot.rb +1 -1
  109. data/lib/generators/instance/templates/instance_environment.rb +8 -1
  110. data/lib/generators/language_extension/USAGE +27 -0
  111. data/lib/generators/language_extension/language_extension_generator.rb +49 -0
  112. data/lib/generators/language_extension/templates/README +3 -0
  113. data/lib/generators/language_extension/templates/RSpecRakefile +123 -0
  114. data/lib/generators/language_extension/templates/Rakefile +25 -0
  115. data/lib/generators/language_extension/templates/available_tags.yml +553 -0
  116. data/lib/generators/language_extension/templates/cucumber.yml +1 -0
  117. data/lib/generators/language_extension/templates/cucumber_env.rb +16 -0
  118. data/lib/generators/language_extension/templates/cucumber_paths.rb +14 -0
  119. data/lib/generators/language_extension/templates/extension.rb +8 -0
  120. data/lib/generators/language_extension/templates/functional_test.rb +15 -0
  121. data/lib/generators/language_extension/templates/lang.yml +181 -0
  122. data/lib/generators/language_extension/templates/spec.opts +6 -0
  123. data/lib/generators/language_extension/templates/spec_helper.rb +36 -0
  124. data/lib/generators/language_extension/templates/tasks.rake +28 -0
  125. data/lib/generators/language_extension/templates/test_helper.rb +26 -0
  126. data/lib/login_system.rb +14 -17
  127. data/lib/radiant.rb +4 -3
  128. data/lib/radiant/admin_ui.rb +114 -58
  129. data/lib/radiant/available_locales.rb +31 -0
  130. data/lib/radiant/cache.rb +12 -0
  131. data/lib/radiant/extension.rb +29 -3
  132. data/lib/radiant/extension/script.rb +44 -13
  133. data/lib/radiant/extension_loader.rb +21 -7
  134. data/lib/radiant/initializer.rb +23 -23
  135. data/lib/radiant/pagination/link_renderer.rb +31 -0
  136. data/lib/radiant/setup.rb +1 -0
  137. data/lib/radiant/taggable.rb +2 -1
  138. data/lib/task_support.rb +21 -1
  139. data/lib/tasks/ci.rake +17 -0
  140. data/lib/tasks/cucumber.rake +39 -13
  141. data/lib/tasks/extensions.rake +12 -1
  142. data/lib/tasks/framework.rake +44 -8
  143. data/lib/tasks/prototype.rake +34 -0
  144. data/lib/tasks/release.rake +6 -4
  145. data/lib/tasks/rspec.rake +7 -7
  146. data/lib/tasks/translate.rake +59 -0
  147. data/lib/tasks/undefine.rake +4 -0
  148. data/lib/translation_support.rb +54 -0
  149. data/public/images/admin/add_tab.png +0 -0
  150. data/public/images/admin/avatar_32x32.png +0 -0
  151. data/public/images/admin/avatar_96x96.png +0 -0
  152. data/public/images/admin/{brown-bottom-line.gif → brown_bottom_line.gif} +0 -0
  153. data/public/images/admin/buttons_background.png +0 -0
  154. data/public/images/admin/calendar_down.gif +0 -0
  155. data/public/images/admin/collapse.png +0 -0
  156. data/public/images/admin/draft_page.png +0 -0
  157. data/public/images/admin/expand.png +0 -0
  158. data/public/images/admin/layout.png +0 -0
  159. data/public/images/admin/login_shadow.png +0 -0
  160. data/public/images/admin/metadata_toggle.png +0 -0
  161. data/public/images/admin/minus_disabled.png +0 -0
  162. data/public/images/admin/minus_grey.png +0 -0
  163. data/public/images/admin/navigation_background.gif +0 -0
  164. data/public/images/admin/navigation_secondary_background.png +0 -0
  165. data/public/images/admin/navigation_secondary_separator.gif +0 -0
  166. data/public/images/admin/navigation_shadow.png +0 -0
  167. data/public/images/admin/navigation_tabs.png +0 -0
  168. data/public/images/admin/{new-homepage.png → new_homepage.png} +0 -0
  169. data/public/images/admin/{new-layout.png → new_layout.png} +0 -0
  170. data/public/images/admin/{new-snippet.png → new_snippet.png} +0 -0
  171. data/public/images/admin/{new-user.png → new_user.png} +0 -0
  172. data/public/images/admin/page.png +0 -0
  173. data/public/images/admin/plus_grey.png +0 -0
  174. data/public/images/admin/popup_border_background.png +0 -0
  175. data/public/images/admin/popup_border_bottom_left.png +0 -0
  176. data/public/images/admin/popup_border_bottom_right.png +0 -0
  177. data/public/images/admin/popup_border_top_left.png +0 -0
  178. data/public/images/admin/popup_border_top_right.png +0 -0
  179. data/public/images/admin/single_form_shadow.png +0 -0
  180. data/public/images/admin/snippet.png +0 -0
  181. data/public/images/admin/spacer.gif +0 -0
  182. data/public/images/admin/status_background.png +0 -0
  183. data/public/images/admin/status_bottom_left.png +0 -0
  184. data/public/images/admin/status_bottom_right.png +0 -0
  185. data/public/images/admin/status_spinner.gif +0 -0
  186. data/public/images/admin/status_top_left.png +0 -0
  187. data/public/images/admin/status_top_right.png +0 -0
  188. data/public/images/admin/tab_close.png +0 -0
  189. data/public/images/admin/vertical_tan_gradient.png +0 -0
  190. data/public/images/admin/view_site.png +0 -0
  191. data/public/images/admin/virtual_page.png +0 -0
  192. data/public/images/radiant-badge-color.png +0 -0
  193. data/public/javascripts/admin/application.js +82 -0
  194. data/public/javascripts/admin/codearea.js +165 -0
  195. data/public/javascripts/{controls.js → admin/controls.js} +78 -76
  196. data/public/javascripts/admin/cookie.js +80 -0
  197. data/public/javascripts/admin/dateinput.js +402 -0
  198. data/public/javascripts/{dragdrop.js → admin/dragdrop.js} +167 -166
  199. data/public/javascripts/{effects.js → admin/effects.js} +168 -174
  200. data/public/javascripts/admin/lowpro.js +340 -0
  201. data/public/javascripts/admin/overrides.js +1 -0
  202. data/public/javascripts/admin/pagestatus.js +17 -0
  203. data/public/javascripts/admin/popup.js +216 -0
  204. data/public/javascripts/{prototype.js → admin/prototype.js} +1574 -1020
  205. data/public/javascripts/admin/ruledtable.js +5 -5
  206. data/public/javascripts/admin/shortcuts.js +27 -0
  207. data/public/javascripts/admin/sitemap.js +37 -20
  208. data/public/javascripts/admin/status.js +233 -0
  209. data/public/javascripts/admin/tabcontrol.js +88 -100
  210. data/public/javascripts/admin/toggle.js +430 -0
  211. data/public/javascripts/admin/utility.js +52 -0
  212. data/public/stylesheets/admin/main.css +1088 -588
  213. data/public/stylesheets/admin/overrides.css +1 -0
  214. data/public/stylesheets/sass/admin/main.sass +26 -0
  215. data/public/stylesheets/sass/admin/modules/_links.sass +15 -0
  216. data/public/stylesheets/sass/admin/modules/_opacity.sass +7 -0
  217. data/public/stylesheets/sass/admin/modules/_rounded.sass +41 -0
  218. data/public/stylesheets/sass/admin/modules/_shadow.sass +9 -0
  219. data/public/stylesheets/sass/admin/overrides.sass +2 -0
  220. data/public/stylesheets/sass/admin/partials/_actions.sass +43 -0
  221. data/public/stylesheets/sass/admin/partials/_avatars.sass +10 -0
  222. data/public/stylesheets/sass/admin/partials/_base.sass +59 -0
  223. data/public/stylesheets/sass/admin/partials/_content.sass +199 -0
  224. data/public/stylesheets/sass/admin/partials/_dateinput.sass +62 -0
  225. data/public/stylesheets/sass/admin/partials/_depreciated.sass +26 -0
  226. data/public/stylesheets/sass/admin/partials/_footer.sass +12 -0
  227. data/public/stylesheets/sass/admin/partials/_forms.sass +309 -0
  228. data/public/stylesheets/sass/admin/partials/_header.sass +112 -0
  229. data/public/stylesheets/sass/admin/partials/_layout.sass +10 -0
  230. data/public/stylesheets/sass/admin/partials/_messages.sass +10 -0
  231. data/public/stylesheets/sass/admin/partials/_popup.sass +117 -0
  232. data/public/stylesheets/sass/admin/partials/_reset.sass +36 -0
  233. data/public/stylesheets/sass/admin/partials/_tabcontrol.sass +70 -0
  234. data/public/stylesheets/sass/admin/partials/_toolbar.sass +31 -0
  235. data/rerun.txt +1 -0
  236. data/script/cucumber +9 -7
  237. data/spec/controllers/admin/export_controller_spec.rb +1 -1
  238. data/spec/controllers/admin/layouts_controller_spec.rb +5 -5
  239. data/spec/controllers/admin/pages_controller_spec.rb +26 -7
  240. data/spec/controllers/admin/preferences_controller_spec.rb +5 -6
  241. data/spec/controllers/admin/references_controller_spec.rb +1 -1
  242. data/spec/controllers/admin/snippets_controller_spec.rb +6 -6
  243. data/spec/controllers/admin/users_controller_spec.rb +10 -1
  244. data/spec/controllers/admin/welcome_controller_spec.rb +3 -3
  245. data/spec/controllers/application_controller_spec.rb +14 -0
  246. data/spec/controllers/site_controller_spec.rb +48 -1
  247. data/spec/datasets/pages_dataset.rb +5 -1
  248. data/spec/datasets/users_dataset.rb +23 -10
  249. data/spec/generators/extension_controller_generator_spec.rb +16 -6
  250. data/spec/generators/extension_generator_spec.rb +49 -18
  251. data/spec/generators/extension_generators_spec_helper.rb +53 -26
  252. data/spec/generators/extension_mailer_generator_spec.rb +3 -3
  253. data/spec/generators/instance_generator_spec.rb +152 -0
  254. data/spec/helpers/admin/node_helper_spec.rb +8 -8
  255. data/spec/helpers/admin/references_helper_spec.rb +4 -4
  256. data/spec/helpers/admin/users_helper_spec.rb +2 -2
  257. data/spec/helpers/application_helper_spec.rb +68 -32
  258. data/spec/lib/login_system_spec.rb +1 -1
  259. data/spec/lib/radiant/admin_ui/nav_tabs_spec.rb +139 -0
  260. data/spec/lib/radiant/admin_ui_spec.rb +30 -131
  261. data/spec/lib/radiant/available_locales_spec.rb +13 -0
  262. data/spec/lib/radiant/extension/script_spec.rb +24 -11
  263. data/spec/lib/radiant/extension_loader_spec.rb +37 -7
  264. data/spec/lib/radiant/extension_spec.rb +32 -1
  265. data/spec/lib/radiant/initializer_spec.rb +32 -2
  266. data/spec/lib/radiant/taggable_spec.rb +10 -8
  267. data/spec/lib/radiant_spec.rb +5 -1
  268. data/spec/lib/task_support_spec.rb +31 -0
  269. data/spec/lib/translation_support_spec.rb +16 -0
  270. data/spec/matchers/generator_matchers.rb +145 -147
  271. data/spec/matchers/render_form_errors_matcher.rb +1 -1
  272. data/spec/models/page_spec.rb +36 -0
  273. data/spec/models/radiant/config_spec.rb +2 -2
  274. data/spec/models/standard_tags_spec.rb +96 -26
  275. data/spec/models/user_spec.rb +32 -8
  276. data/test/fixtures/extensions/{01_basic → basic}/app/controllers/basic_extension_controller.rb +0 -0
  277. data/test/fixtures/extensions/{01_basic → basic}/app/metal/basic_metal.rb +0 -0
  278. data/test/fixtures/extensions/{01_basic → basic}/app/models/basic_extension_mailer.rb +0 -0
  279. data/test/fixtures/extensions/{01_basic → basic}/app/models/basic_extension_model.rb +0 -0
  280. data/test/fixtures/extensions/{01_basic → basic}/app/views/basic_extension/index.html.erb +0 -0
  281. data/test/fixtures/extensions/{01_basic → basic}/app/views/basic_extension/override.html.erb +0 -0
  282. data/test/fixtures/extensions/{01_basic → basic}/app/views/basic_extension_mailer/message.text.html.erb +0 -0
  283. data/test/fixtures/extensions/{01_basic → basic}/basic_extension.rb +3 -4
  284. data/test/fixtures/extensions/{01_basic → basic}/db/migrate/200812131420_create_initial_schema.rb +0 -0
  285. data/test/fixtures/extensions/{01_basic → basic}/db/migrate/200812131421_modify_initial_schema.rb +0 -0
  286. data/test/fixtures/extensions/{01_basic → basic}/lib/new_module.rb +0 -0
  287. data/test/fixtures/extensions/{01_basic → basic}/vendor/plugins/multiple/init.rb +0 -0
  288. data/test/fixtures/extensions/{01_basic → basic}/vendor/plugins/multiple/lib/multiple.rb +0 -0
  289. data/test/fixtures/extensions/{01_basic → basic}/vendor/plugins/plugin_normal/init.rb +0 -0
  290. data/test/fixtures/extensions/{01_basic → basic}/vendor/plugins/plugin_normal/lib/normal_plugin.rb +0 -0
  291. data/test/fixtures/extensions/load_order_blue/load_order_blue_extension.rb +0 -3
  292. data/test/fixtures/extensions/load_order_green/load_order_green_extension.rb +0 -3
  293. data/test/fixtures/extensions/load_order_red/load_order_red_extension.rb +0 -3
  294. data/test/fixtures/extensions/locale/config/locales/en-uk.yml +3 -0
  295. data/test/fixtures/extensions/locale/config/locales/en.yml +3 -0
  296. data/test/fixtures/extensions/locale/locale_extension.rb +5 -0
  297. data/test/fixtures/extensions/{02_overriding → overriding}/app/metal/basic_metal.rb +0 -0
  298. data/test/fixtures/extensions/{02_overriding → overriding}/app/views/basic_extension/override.html.erb +0 -0
  299. data/test/fixtures/extensions/{02_overriding → overriding}/overriding_extension.rb +0 -3
  300. data/test/fixtures/extensions/{02_overriding → overriding}/vendor/plugins/multiple/init.rb +0 -0
  301. data/test/fixtures/extensions/{02_overriding → overriding}/vendor/plugins/multiple/lib/multiple.rb +0 -0
  302. data/test/fixtures/extensions/routed/config/routes.rb +1 -0
  303. data/test/fixtures/extensions/routed/routed_extension.rb +2 -0
  304. data/test/fixtures/extensions/{03_upgrading → upgrading}/db/migrate/01_first.rb +0 -0
  305. data/test/fixtures/extensions/{03_upgrading → upgrading}/db/migrate/02_second.rb +0 -0
  306. data/test/fixtures/extensions/{03_upgrading → upgrading}/db/migrate/03_pending.rb +0 -0
  307. data/test/fixtures/extensions/{03_upgrading → upgrading}/db/migrate/04_dont_run.rb +0 -0
  308. data/test/fixtures/extensions/{03_upgrading → upgrading}/upgrading_extension.rb +0 -0
  309. data/test/fixtures/gems/misnamed_ext-0.0.0/misnamed_ext_extension.rb +2 -0
  310. data/test/fixtures/gems/radiant-gem_ext-extension-0.0.0/gem_ext_extension.rb +2 -0
  311. data/test/fixtures/gems/radiant-gem_ext-extension-0.0.0/lib/gem_ext.rb +3 -0
  312. data/test/test_helper.rb +1 -1
  313. data/vendor/extensions/archive/archive_extension.rb +1 -1
  314. data/vendor/extensions/dutch_language_pack/README +3 -0
  315. data/vendor/extensions/dutch_language_pack/Rakefile +123 -0
  316. data/vendor/extensions/dutch_language_pack/config/locales/nl.yml +187 -0
  317. data/vendor/extensions/dutch_language_pack/config/locales/nl_available_tags.yml +553 -0
  318. data/vendor/extensions/dutch_language_pack/dutch_language_pack_extension.rb +9 -0
  319. data/vendor/extensions/dutch_language_pack/lib/tasks/i18n_nl_extension_tasks.rake +28 -0
  320. data/vendor/extensions/french_language_pack/README +3 -0
  321. data/vendor/extensions/french_language_pack/Rakefile +123 -0
  322. data/vendor/extensions/french_language_pack/config/locales/fr.yml +184 -0
  323. data/vendor/extensions/french_language_pack/config/locales/fr_available_tags.yml +553 -0
  324. data/vendor/extensions/french_language_pack/french_language_pack_extension.rb +9 -0
  325. data/vendor/extensions/french_language_pack/lib/tasks/i18n_fr_extension_tasks.rake +28 -0
  326. data/vendor/extensions/german_language_pack/README +3 -0
  327. data/vendor/extensions/german_language_pack/Rakefile +123 -0
  328. data/vendor/extensions/german_language_pack/config/locales/de.yml +184 -0
  329. data/vendor/extensions/german_language_pack/config/locales/de_available_tags.yml +553 -0
  330. data/vendor/extensions/german_language_pack/german_language_pack_extension.rb +9 -0
  331. data/vendor/extensions/german_language_pack/lib/tasks/i18n_de_extension_tasks.rake +28 -0
  332. data/vendor/extensions/italian_language_pack/README +3 -0
  333. data/vendor/extensions/italian_language_pack/Rakefile +123 -0
  334. data/vendor/extensions/italian_language_pack/config/locales/it.yml +184 -0
  335. data/vendor/extensions/italian_language_pack/config/locales/it_available_tags.yml +553 -0
  336. data/vendor/extensions/italian_language_pack/italian_language_pack_extension.rb +8 -0
  337. data/vendor/extensions/italian_language_pack/lib/tasks/i18n_it_extension_tasks.rake +28 -0
  338. data/vendor/extensions/japanese_language_pack/README +3 -0
  339. data/vendor/extensions/japanese_language_pack/Rakefile +123 -0
  340. data/vendor/extensions/japanese_language_pack/config/locales/ja.yml +184 -0
  341. data/vendor/extensions/japanese_language_pack/config/locales/ja_available_tags.yml +553 -0
  342. data/vendor/extensions/japanese_language_pack/japanese_language_pack_extension.rb +9 -0
  343. data/vendor/extensions/japanese_language_pack/lib/tasks/i18n_ja_extension_tasks.rake +28 -0
  344. data/vendor/extensions/markdown_filter/lib/markdown_filter.rb +5 -1
  345. data/vendor/extensions/markdown_filter/lib/markdown_tags.rb +4 -4
  346. data/vendor/extensions/markdown_filter/markdown.html +122 -122
  347. data/vendor/extensions/markdown_filter/markdown_filter_extension.rb +2 -2
  348. data/vendor/extensions/markdown_filter/smartypants.html +47 -47
  349. data/vendor/extensions/markdown_filter/spec/models/markdown_filter_spec.rb +1 -1
  350. data/vendor/extensions/markdown_filter/vendor/kramdown/AUTHORS +1 -0
  351. data/vendor/extensions/markdown_filter/vendor/kramdown/COPYING +24 -0
  352. data/vendor/extensions/markdown_filter/vendor/kramdown/ChangeLog +2624 -0
  353. data/vendor/extensions/markdown_filter/vendor/kramdown/GPL +674 -0
  354. data/vendor/extensions/markdown_filter/vendor/kramdown/README +20 -0
  355. data/vendor/extensions/markdown_filter/vendor/kramdown/Rakefile +283 -0
  356. data/vendor/extensions/markdown_filter/vendor/kramdown/VERSION +1 -0
  357. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/benchmark.rb +34 -0
  358. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/generate_data.rb +110 -0
  359. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-jruby-1.4.0.dat +7 -0
  360. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.8.6.dat +7 -0
  361. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.8.7.dat +7 -0
  362. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.9.1p243.dat +7 -0
  363. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/historic-ruby-1.9.2dev.dat +7 -0
  364. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/mdbasics.text +306 -0
  365. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/mdsyntax.text +888 -0
  366. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-jruby-1.4.0.dat +7 -0
  367. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.8.6.dat +7 -0
  368. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.8.7.dat +7 -0
  369. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.9.1p243.dat +7 -0
  370. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/static-ruby-1.9.2dev.dat +7 -0
  371. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/testing.sh +9 -0
  372. data/vendor/extensions/markdown_filter/vendor/kramdown/benchmark/timing.sh +10 -0
  373. data/vendor/extensions/markdown_filter/vendor/kramdown/bin/kramdown +71 -0
  374. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/default.css +293 -0
  375. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/default.template +78 -0
  376. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/index.page +91 -0
  377. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/installation.page +90 -0
  378. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/news.feed +10 -0
  379. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/news.page +27 -0
  380. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/quickref.page +551 -0
  381. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/syntax.page +1451 -0
  382. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/tests.page +51 -0
  383. data/vendor/extensions/markdown_filter/vendor/kramdown/doc/virtual +2 -0
  384. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown.rb +23 -0
  385. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/compatibility.rb +34 -0
  386. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter.rb +36 -0
  387. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter/base.rb +75 -0
  388. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter/html.rb +325 -0
  389. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/converter/latex.rb +516 -0
  390. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/document.rb +145 -0
  391. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/error.rb +27 -0
  392. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/options.rb +262 -0
  393. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser.rb +33 -0
  394. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown.rb +292 -0
  395. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/attribute_list.rb +102 -0
  396. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/autolink.rb +42 -0
  397. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/blank_line.rb +43 -0
  398. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/blockquote.rb +42 -0
  399. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/codeblock.rb +58 -0
  400. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/codespan.rb +57 -0
  401. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/emphasis.rb +69 -0
  402. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/eob.rb +39 -0
  403. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/escaped_chars.rb +38 -0
  404. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/extension.rb +109 -0
  405. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/footnote.rb +73 -0
  406. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/header.rb +81 -0
  407. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/horizontal_rule.rb +39 -0
  408. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/html.rb +253 -0
  409. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/html_entity.rb +38 -0
  410. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/line_break.rb +38 -0
  411. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/link.rb +153 -0
  412. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/list.rb +225 -0
  413. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/paragraph.rb +44 -0
  414. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/smart_quotes.rb +213 -0
  415. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/table.rb +125 -0
  416. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/parser/kramdown/typographic_symbol.rb +48 -0
  417. data/vendor/extensions/markdown_filter/vendor/kramdown/lib/kramdown/version.rb +28 -0
  418. data/vendor/extensions/markdown_filter/vendor/kramdown/setup.rb +1585 -0
  419. data/vendor/extensions/markdown_filter/vendor/kramdown/test/run_tests.rb +58 -0
  420. data/vendor/extensions/markdown_filter/vendor/kramdown/test/test_files.rb +39 -0
  421. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/spaces.html +1 -0
  422. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/spaces.text +3 -0
  423. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/tabs.html +1 -0
  424. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/01_blank_line/tabs.text +6 -0
  425. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/beginning.html +1 -0
  426. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/beginning.text +3 -0
  427. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/end.html +1 -0
  428. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/end.text +3 -0
  429. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/middle.html +2 -0
  430. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/02_eob/middle.text +5 -0
  431. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/indented.html +18 -0
  432. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/indented.text +19 -0
  433. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/no_newline_at_end.html +5 -0
  434. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/no_newline_at_end.text +5 -0
  435. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/one_para.html +1 -0
  436. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/one_para.text +1 -0
  437. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/two_para.html +4 -0
  438. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/03_paragraph/two_para.text +4 -0
  439. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header.html +34 -0
  440. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header.text +32 -0
  441. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header_no_newline_at_end.html +1 -0
  442. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/atx_header_no_newline_at_end.text +1 -0
  443. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header.html +31 -0
  444. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header.text +36 -0
  445. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header_no_newline_at_end.html +1 -0
  446. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/setext_header_no_newline_at_end.text +2 -0
  447. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_ids.html +17 -0
  448. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_ids.options +1 -0
  449. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/04_header/with_auto_ids.text +19 -0
  450. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/indented.html +25 -0
  451. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/indented.text +14 -0
  452. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/nested.html +9 -0
  453. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/nested.text +5 -0
  454. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/no_newline_at_end.html +4 -0
  455. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/no_newline_at_end.text +2 -0
  456. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/only_first_quoted.html +8 -0
  457. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/only_first_quoted.text +4 -0
  458. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/with_code_blocks.html +15 -0
  459. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/05_blockquote/with_code_blocks.text +11 -0
  460. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/error.html +4 -0
  461. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/error.text +4 -0
  462. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/no_newline_at_end.html +2 -0
  463. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/no_newline_at_end.text +1 -0
  464. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/normal.html +13 -0
  465. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/normal.text +10 -0
  466. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/tilde_syntax.html +7 -0
  467. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/tilde_syntax.text +9 -0
  468. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/whitespace.html +3 -0
  469. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/whitespace.text +3 -0
  470. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_blank_line.html +13 -0
  471. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_blank_line.text +12 -0
  472. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_eob_marker.html +6 -0
  473. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/06_codeblock/with_eob_marker.text +5 -0
  474. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/error.html +7 -0
  475. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/error.text +7 -0
  476. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/normal.html +19 -0
  477. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/normal.text +19 -0
  478. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/sepspaces.html +3 -0
  479. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/sepspaces.text +3 -0
  480. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/septabs.html +3 -0
  481. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/07_horizontal_rule/septabs.text +3 -0
  482. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/escaping.html +17 -0
  483. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/escaping.text +17 -0
  484. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_hr.html +9 -0
  485. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_hr.text +5 -0
  486. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_others.html +38 -0
  487. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/list_and_others.text +25 -0
  488. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/mixed.html +111 -0
  489. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/mixed.text +66 -0
  490. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/nested.html +17 -0
  491. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/nested.text +7 -0
  492. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/other_first_element.html +39 -0
  493. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/other_first_element.text +18 -0
  494. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ol.html +19 -0
  495. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ol.text +13 -0
  496. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ul.html +61 -0
  497. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/simple_ul.text +43 -0
  498. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/single_item.html +3 -0
  499. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/single_item.text +1 -0
  500. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/special_cases.html +29 -0
  501. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/08_list/special_cases.text +19 -0
  502. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/comment.html +13 -0
  503. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/comment.text +12 -0
  504. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/deflists.html +6 -0
  505. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/deflists.options +1 -0
  506. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/deflists.text +6 -0
  507. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/tables.html +14 -0
  508. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/tables.options +1 -0
  509. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/content_model/tables.text +14 -0
  510. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/filtered_html.html +1 -0
  511. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/filtered_html.options +1 -0
  512. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/filtered_html.text +1 -0
  513. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_and_codeblocks.html +15 -0
  514. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_and_codeblocks.options +1 -0
  515. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/html_and_codeblocks.text +13 -0
  516. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_1.html +3 -0
  517. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_1.text +5 -0
  518. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_2.html +5 -0
  519. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/invalid_html_2.text +5 -0
  520. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/markdown_attr.html +38 -0
  521. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/markdown_attr.text +38 -0
  522. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/not_parsed.html +24 -0
  523. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/not_parsed.text +24 -0
  524. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_raw.html +32 -0
  525. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_raw.options +1 -0
  526. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_raw.text +30 -0
  527. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_span.html +12 -0
  528. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_span.options +1 -0
  529. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_as_span.text +9 -0
  530. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_block_html.html +21 -0
  531. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_block_html.options +1 -0
  532. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/parse_block_html.text +17 -0
  533. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/processing_instruction.html +13 -0
  534. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/processing_instruction.text +12 -0
  535. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/simple.html +62 -0
  536. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/simple.options +1 -0
  537. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/09_html/simple.text +57 -0
  538. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/10_ald/simple.html +2 -0
  539. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/10_ald/simple.text +8 -0
  540. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/auto_id_and_ial.html +1 -0
  541. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/auto_id_and_ial.options +1 -0
  542. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/auto_id_and_ial.text +2 -0
  543. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/simple.html +20 -0
  544. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/11_ial/simple.text +27 -0
  545. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/comment.html +5 -0
  546. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/comment.text +11 -0
  547. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/ignored.html +6 -0
  548. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/ignored.text +11 -0
  549. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/nomarkdown.html +6 -0
  550. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/nomarkdown.text +11 -0
  551. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options.html +24 -0
  552. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options.text +28 -0
  553. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options2.html +10 -0
  554. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options2.text +5 -0
  555. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options3.html +7 -0
  556. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/12_extension/options3.text +7 -0
  557. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/definition_at_beginning.html +1 -0
  558. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/definition_at_beginning.text +1 -0
  559. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/multiple_terms.html +13 -0
  560. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/multiple_terms.text +10 -0
  561. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/no_def_list.html +2 -0
  562. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/no_def_list.text +2 -0
  563. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/para_wrapping.html +10 -0
  564. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/para_wrapping.text +6 -0
  565. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/separated_by_eob.html +8 -0
  566. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/separated_by_eob.text +5 -0
  567. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/simple.html +8 -0
  568. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/simple.text +7 -0
  569. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/styled_terms.html +4 -0
  570. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/styled_terms.text +2 -0
  571. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/too_much_space.html +3 -0
  572. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/too_much_space.text +4 -0
  573. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/with_blocks.html +38 -0
  574. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/13_definition_list/with_blocks.text +24 -0
  575. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/errors.html +3 -0
  576. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/errors.text +3 -0
  577. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/footer.html +65 -0
  578. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/footer.text +25 -0
  579. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/header.html +103 -0
  580. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/header.text +32 -0
  581. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/no_table.html +3 -0
  582. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/no_table.text +3 -0
  583. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/simple.html +61 -0
  584. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/block/14_table/simple.text +16 -0
  585. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/encoding.html +46 -0
  586. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/encoding.text +28 -0
  587. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/empty.html +3 -0
  588. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/empty.text +3 -0
  589. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/image_in_a.html +5 -0
  590. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/image_in_a.text +5 -0
  591. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/imagelinks.html +12 -0
  592. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/imagelinks.text +14 -0
  593. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/inline.html +40 -0
  594. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/inline.text +42 -0
  595. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/link_defs.html +8 -0
  596. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/link_defs.text +22 -0
  597. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/links_with_angle_brackets.html +3 -0
  598. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/links_with_angle_brackets.text +3 -0
  599. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/reference.html +32 -0
  600. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/01_link/reference.text +42 -0
  601. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/empty.html +3 -0
  602. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/empty.text +3 -0
  603. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/errors.html +9 -0
  604. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/errors.text +9 -0
  605. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/nesting.html +34 -0
  606. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/nesting.text +30 -0
  607. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/normal.html +46 -0
  608. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/02_emphasis/normal.text +46 -0
  609. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/empty.html +5 -0
  610. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/empty.text +5 -0
  611. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/errors.html +1 -0
  612. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/errors.text +1 -0
  613. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/normal.html +16 -0
  614. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/03_codespan/normal.text +16 -0
  615. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/definitions.html +14 -0
  616. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/definitions.text +18 -0
  617. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.html +12 -0
  618. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.options +1 -0
  619. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/footnote_nr.text +4 -0
  620. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/markers.html +46 -0
  621. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/04_footnote/markers.text +26 -0
  622. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/across_lines.html +1 -0
  623. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/across_lines.text +2 -0
  624. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/link_with_mailto.html +1 -0
  625. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/link_with_mailto.text +1 -0
  626. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/markdown_attr.html +6 -0
  627. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/markdown_attr.text +6 -0
  628. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/normal.html +28 -0
  629. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/05_html/normal.text +28 -0
  630. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/autolinks/url_links.html +9 -0
  631. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/autolinks/url_links.text +9 -0
  632. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/escaped_chars/normal.html +41 -0
  633. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/escaped_chars/normal.text +41 -0
  634. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/ial/simple.html +5 -0
  635. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/ial/simple.text +5 -0
  636. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/line_breaks/normal.html +11 -0
  637. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/line_breaks/normal.text +11 -0
  638. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities.html +4 -0
  639. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/entities.text +4 -0
  640. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/greaterthan.html +1 -0
  641. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/greaterthan.text +1 -0
  642. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/lowerthan.html +1 -0
  643. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/lowerthan.text +1 -0
  644. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/typography.html +15 -0
  645. data/vendor/extensions/markdown_filter/vendor/kramdown/test/testcases/span/text_substitutions/typography.text +15 -0
  646. data/vendor/extensions/russian_language_pack/README +3 -0
  647. data/vendor/extensions/russian_language_pack/Rakefile +123 -0
  648. data/vendor/extensions/russian_language_pack/config/locales/ru.yml +180 -0
  649. data/vendor/extensions/russian_language_pack/config/locales/ru_available_tags.yml +553 -0
  650. data/vendor/extensions/russian_language_pack/lib/tasks/i18n_ru_extension_tasks.rake +28 -0
  651. data/vendor/extensions/russian_language_pack/russian_language_pack_extension.rb +9 -0
  652. data/vendor/extensions/textile_filter/textile.html +114 -114
  653. data/vendor/plugins/dataset/lib/dataset/extensions/cucumber.rb +5 -4
  654. data/vendor/plugins/dataset/lib/dataset/load.rb +0 -10
  655. data/vendor/plugins/dataset/lib/dataset/session.rb +4 -20
  656. data/vendor/plugins/dataset/lib/dataset/session_binding.rb +5 -15
  657. data/vendor/plugins/haml/CONTRIBUTING +4 -0
  658. data/vendor/plugins/haml/MIT-LICENSE +1 -1
  659. data/vendor/plugins/haml/README.md +357 -0
  660. data/vendor/plugins/haml/Rakefile +233 -26
  661. data/vendor/plugins/haml/TODO +47 -0
  662. data/vendor/plugins/haml/VERSION +1 -1
  663. data/vendor/plugins/haml/VERSION_NAME +1 -0
  664. data/vendor/plugins/haml/doc-src/FAQ.md +175 -0
  665. data/vendor/plugins/haml/doc-src/HAML_CHANGELOG.md +479 -0
  666. data/vendor/plugins/haml/doc-src/HAML_REFERENCE.md +1184 -0
  667. data/vendor/plugins/haml/doc-src/SASS_CHANGELOG.md +695 -0
  668. data/vendor/plugins/haml/doc-src/SASS_REFERENCE.md +1150 -0
  669. data/vendor/plugins/haml/extra/haml-mode.el +514 -97
  670. data/vendor/plugins/haml/extra/sass-mode.el +155 -38
  671. data/vendor/plugins/haml/extra/update_watch.rb +13 -0
  672. data/vendor/plugins/haml/haml.gemspec +51 -0
  673. data/vendor/plugins/haml/init.rb +11 -3
  674. data/vendor/plugins/haml/lib/haml.rb +15 -993
  675. data/vendor/plugins/haml/lib/haml/buffer.rb +147 -85
  676. data/vendor/plugins/haml/lib/haml/engine.rb +137 -103
  677. data/vendor/plugins/haml/lib/haml/error.rb +7 -7
  678. data/vendor/plugins/haml/lib/haml/exec.rb +141 -45
  679. data/vendor/plugins/haml/lib/haml/filters.rb +108 -43
  680. data/vendor/plugins/haml/lib/haml/helpers.rb +267 -168
  681. data/vendor/plugins/haml/lib/haml/helpers/action_view_extensions.rb +48 -38
  682. data/vendor/plugins/haml/lib/haml/helpers/action_view_mods.rb +135 -138
  683. data/vendor/plugins/haml/lib/haml/helpers/xss_mods.rb +125 -0
  684. data/vendor/plugins/haml/lib/haml/html.rb +146 -100
  685. data/vendor/plugins/haml/lib/haml/precompiler.rb +528 -277
  686. data/vendor/plugins/haml/lib/haml/shared.rb +78 -0
  687. data/vendor/plugins/haml/lib/haml/template.rb +49 -15
  688. data/vendor/plugins/haml/lib/haml/template/patch.rb +2 -2
  689. data/vendor/plugins/haml/lib/haml/template/plugin.rb +9 -6
  690. data/vendor/plugins/haml/lib/haml/util.rb +299 -6
  691. data/vendor/plugins/haml/lib/haml/version.rb +30 -13
  692. data/vendor/plugins/haml/lib/sass.rb +7 -856
  693. data/vendor/plugins/haml/lib/sass/css.rb +171 -161
  694. data/vendor/plugins/haml/lib/sass/engine.rb +365 -316
  695. data/vendor/plugins/haml/lib/sass/environment.rb +79 -0
  696. data/vendor/plugins/haml/lib/sass/error.rb +33 -11
  697. data/vendor/plugins/haml/lib/sass/files.rb +147 -0
  698. data/vendor/plugins/haml/lib/sass/plugin.rb +177 -123
  699. data/vendor/plugins/haml/lib/sass/plugin/merb.rb +9 -16
  700. data/vendor/plugins/haml/lib/sass/plugin/rack.rb +65 -0
  701. data/vendor/plugins/haml/lib/sass/plugin/rails.rb +15 -15
  702. data/vendor/plugins/haml/lib/sass/repl.rb +58 -0
  703. data/vendor/plugins/haml/lib/sass/script.rb +62 -0
  704. data/vendor/plugins/haml/lib/sass/script/bool.rb +17 -0
  705. data/vendor/plugins/haml/lib/sass/script/color.rb +222 -0
  706. data/vendor/plugins/haml/lib/sass/script/funcall.rb +50 -0
  707. data/vendor/plugins/haml/lib/sass/script/functions.rb +257 -0
  708. data/vendor/plugins/haml/lib/sass/script/lexer.rb +194 -0
  709. data/vendor/plugins/haml/lib/sass/script/literal.rb +177 -0
  710. data/vendor/plugins/haml/lib/sass/script/node.rb +14 -0
  711. data/vendor/plugins/haml/lib/sass/script/number.rb +383 -0
  712. data/vendor/plugins/haml/lib/sass/script/operation.rb +45 -0
  713. data/vendor/plugins/haml/lib/sass/script/parser.rb +222 -0
  714. data/vendor/plugins/haml/lib/sass/script/string.rb +12 -0
  715. data/vendor/plugins/haml/lib/sass/script/unary_operation.rb +34 -0
  716. data/vendor/plugins/haml/lib/sass/script/variable.rb +31 -0
  717. data/vendor/plugins/haml/lib/sass/tree/comment_node.rb +74 -10
  718. data/vendor/plugins/haml/lib/sass/tree/debug_node.rb +30 -0
  719. data/vendor/plugins/haml/lib/sass/tree/directive_node.rb +39 -17
  720. data/vendor/plugins/haml/lib/sass/tree/for_node.rb +48 -0
  721. data/vendor/plugins/haml/lib/sass/tree/if_node.rb +54 -0
  722. data/vendor/plugins/haml/lib/sass/tree/import_node.rb +65 -0
  723. data/vendor/plugins/haml/lib/sass/tree/mixin_def_node.rb +29 -0
  724. data/vendor/plugins/haml/lib/sass/tree/mixin_node.rb +48 -0
  725. data/vendor/plugins/haml/lib/sass/tree/node.rb +216 -11
  726. data/vendor/plugins/haml/lib/sass/tree/prop_node.rb +121 -0
  727. data/vendor/plugins/haml/lib/sass/tree/rule_node.rb +182 -51
  728. data/vendor/plugins/haml/lib/sass/tree/variable_node.rb +34 -0
  729. data/vendor/plugins/haml/lib/sass/tree/while_node.rb +31 -0
  730. data/vendor/plugins/haml/test/haml/engine_test.rb +659 -44
  731. data/vendor/plugins/haml/test/haml/helper_test.rb +60 -2
  732. data/vendor/plugins/haml/test/haml/html2haml_test.rb +60 -0
  733. data/vendor/plugins/haml/test/haml/results/content_for_layout.xhtml +0 -3
  734. data/vendor/plugins/haml/test/haml/results/filters.xhtml +2 -0
  735. data/vendor/plugins/haml/test/haml/results/just_stuff.xhtml +3 -3
  736. data/vendor/plugins/haml/test/haml/results/list.xhtml +1 -1
  737. data/vendor/plugins/haml/test/haml/results/standard.xhtml +120 -0
  738. data/vendor/plugins/haml/test/haml/rhtml/standard.rhtml +2 -2
  739. data/vendor/plugins/haml/test/haml/template_test.rb +117 -11
  740. data/vendor/plugins/haml/test/haml/templates/content_for_layout.haml +0 -2
  741. data/vendor/plugins/haml/test/haml/templates/list.haml +1 -1
  742. data/vendor/plugins/haml/test/haml/templates/standard.haml +2 -2
  743. data/vendor/plugins/haml/test/haml/templates/standard_ugly.haml +2 -2
  744. data/vendor/plugins/haml/test/haml/util_test.rb +107 -0
  745. data/vendor/plugins/haml/test/linked_rails.rb +11 -2
  746. data/vendor/plugins/haml/test/sass/css2sass_test.rb +83 -24
  747. data/vendor/plugins/haml/test/sass/engine_test.rb +743 -67
  748. data/vendor/plugins/haml/test/sass/functions_test.rb +174 -0
  749. data/vendor/plugins/haml/test/sass/more_results/more1.css +9 -0
  750. data/vendor/plugins/haml/test/sass/more_results/more1_with_line_comments.css +26 -0
  751. data/vendor/plugins/haml/test/sass/more_results/more_import.css +29 -0
  752. data/vendor/plugins/haml/test/sass/more_templates/_more_partial.sass +2 -0
  753. data/vendor/plugins/haml/test/sass/more_templates/more1.sass +23 -0
  754. data/vendor/plugins/haml/test/sass/more_templates/more_import.sass +11 -0
  755. data/vendor/plugins/haml/test/sass/plugin_test.rb +130 -48
  756. data/vendor/plugins/haml/test/sass/results/line_numbers.css +49 -0
  757. data/vendor/plugins/haml/test/sass/results/script.css +16 -0
  758. data/vendor/plugins/haml/test/sass/results/subdir/subdir.css +2 -0
  759. data/vendor/plugins/haml/test/sass/results/units.css +11 -0
  760. data/vendor/plugins/haml/test/sass/script_test.rb +267 -0
  761. data/vendor/plugins/haml/test/sass/templates/complex.sass +0 -3
  762. data/vendor/plugins/haml/test/sass/templates/import.sass +2 -2
  763. data/vendor/plugins/haml/test/sass/templates/importee.sass +7 -2
  764. data/vendor/plugins/haml/test/sass/templates/line_numbers.sass +13 -0
  765. data/vendor/plugins/haml/test/sass/templates/script.sass +101 -0
  766. data/vendor/plugins/haml/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
  767. data/vendor/plugins/haml/test/sass/templates/subdir/subdir.sass +2 -2
  768. data/vendor/plugins/haml/test/sass/templates/units.sass +11 -0
  769. data/vendor/plugins/haml/test/test_helper.rb +26 -4
  770. data/vendor/plugins/haml/yard/default/fulldoc/html/css/common.sass +22 -0
  771. data/vendor/plugins/haml/yard/default/layout/html/footer.erb +12 -0
  772. data/vendor/plugins/haml/yard/inherited_hash.rb +41 -0
  773. data/vendor/radius/CHANGELOG +8 -0
  774. data/vendor/radius/Manifest.txt +21 -0
  775. data/vendor/radius/{QUICKSTART → QUICKSTART.rdoc} +11 -12
  776. data/vendor/radius/{README → README.rdoc} +38 -17
  777. data/vendor/radius/Rakefile +31 -86
  778. data/vendor/radius/lib/radius.rb +10 -502
  779. data/vendor/radius/lib/radius/context.rb +139 -0
  780. data/vendor/radius/lib/radius/delegating_open_struct.rb +31 -0
  781. data/vendor/radius/lib/radius/error.rb +43 -0
  782. data/vendor/radius/lib/radius/parse_tag.rb +24 -0
  783. data/vendor/radius/lib/radius/parser.rb +65 -0
  784. data/vendor/radius/lib/radius/parser/scan.rb +1247 -0
  785. data/vendor/radius/lib/radius/parser/scan.rl +123 -0
  786. data/vendor/radius/lib/radius/tag_binding.rb +71 -0
  787. data/vendor/radius/lib/radius/tag_definitions.rb +78 -0
  788. data/vendor/radius/lib/radius/utility.rb +30 -0
  789. data/vendor/radius/lib/radius/version.rb +14 -0
  790. data/vendor/radius/radius.gemspec +38 -0
  791. data/vendor/radius/tasks/scan.rake +27 -0
  792. data/vendor/radius/test/context_test.rb +61 -0
  793. data/vendor/radius/test/{radius_test.rb → parser_test.rb} +45 -82
  794. data/vendor/radius/test/quickstart_test.rb +153 -0
  795. data/vendor/radius/test/test_helper.rb +28 -0
  796. data/vendor/rails/Rakefile +81 -0
  797. data/vendor/rails/actionmailer/CHANGELOG +4 -0
  798. data/vendor/rails/actionmailer/Rakefile +1 -1
  799. data/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/parser.rb +2 -0
  800. data/vendor/rails/actionmailer/lib/action_mailer/version.rb +1 -1
  801. data/vendor/rails/actionmailer/lib/actionmailer.rb +1 -0
  802. data/vendor/rails/actionmailer/test/fixtures/helpers/example_helper.rb +1 -1
  803. data/vendor/rails/actionmailer/test/mail_service_test.rb +3 -1
  804. data/vendor/rails/actionpack/CHANGELOG +12 -0
  805. data/vendor/rails/actionpack/Rakefile +1 -1
  806. data/vendor/rails/actionpack/lib/action_controller.rb +3 -1
  807. data/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +19 -3
  808. data/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +16 -10
  809. data/vendor/rails/actionpack/lib/action_controller/base.rb +1 -1
  810. data/vendor/rails/actionpack/lib/action_controller/caching.rb +1 -0
  811. data/vendor/rails/actionpack/lib/action_controller/cookies.rb +2 -1
  812. data/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +3 -2
  813. data/vendor/rails/actionpack/lib/action_controller/integration.rb +15 -3
  814. data/vendor/rails/actionpack/lib/action_controller/layout.rb +6 -1
  815. data/vendor/rails/actionpack/lib/action_controller/middlewares.rb +2 -0
  816. data/vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb +6 -21
  817. data/vendor/rails/actionpack/lib/action_controller/rack_lint_patch.rb +36 -0
  818. data/vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb +6 -2
  819. data/vendor/rails/actionpack/lib/action_controller/response.rb +2 -1
  820. data/vendor/rails/actionpack/lib/action_controller/string_coercion.rb +29 -0
  821. data/vendor/rails/actionpack/lib/action_controller/test_case.rb +6 -1
  822. data/vendor/rails/actionpack/lib/action_controller/test_process.rb +1 -1
  823. data/vendor/rails/actionpack/lib/action_controller/translation.rb +2 -2
  824. data/vendor/rails/actionpack/lib/action_controller/uploaded_file.rb +2 -2
  825. data/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb +1 -1
  826. data/vendor/rails/actionpack/lib/action_pack/version.rb +1 -1
  827. data/vendor/rails/actionpack/lib/action_view.rb +3 -3
  828. data/vendor/rails/actionpack/lib/action_view/base.rb +6 -1
  829. data/vendor/rails/actionpack/lib/action_view/erb/util.rb +6 -0
  830. data/vendor/rails/actionpack/lib/action_view/helpers.rb +2 -0
  831. data/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +3 -3
  832. data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +2 -2
  833. data/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb +2 -2
  834. data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +27 -15
  835. data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +32 -11
  836. data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +1 -1
  837. data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +3 -3
  838. data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +6 -1
  839. data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +1 -1
  840. data/vendor/rails/actionpack/lib/action_view/helpers/raw_output_helper.rb +9 -0
  841. data/vendor/rails/actionpack/lib/action_view/helpers/sanitize_helper.rb +10 -2
  842. data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +4 -4
  843. data/vendor/rails/actionpack/lib/action_view/helpers/translation_helper.rb +1 -1
  844. data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +3 -3
  845. data/vendor/rails/actionpack/lib/action_view/locale/en.yml +3 -0
  846. data/vendor/rails/actionpack/lib/action_view/partials.rb +1 -1
  847. data/vendor/rails/actionpack/lib/action_view/safe_buffer.rb +28 -0
  848. data/vendor/rails/actionpack/lib/action_view/template.rb +8 -2
  849. data/vendor/rails/actionpack/lib/action_view/test_case.rb +102 -27
  850. data/vendor/rails/actionpack/lib/actionpack.rb +1 -0
  851. data/vendor/rails/actionpack/test/controller/cookie_test.rb +7 -0
  852. data/vendor/rails/actionpack/test/controller/dom_assertions_test.rb +53 -0
  853. data/vendor/rails/actionpack/test/controller/filter_params_test.rb +1 -0
  854. data/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb +1 -0
  855. data/vendor/rails/actionpack/test/controller/http_digest_authentication_test.rb +22 -0
  856. data/vendor/rails/actionpack/test/controller/integration_test.rb +38 -0
  857. data/vendor/rails/actionpack/test/controller/layout_test.rb +11 -0
  858. data/vendor/rails/actionpack/test/controller/polymorphic_routes_test.rb +4 -0
  859. data/vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb +19 -1
  860. data/vendor/rails/actionpack/test/controller/routing_test.rb +23 -15
  861. data/vendor/rails/actionpack/test/controller/session/test_session_test.rb +2 -2
  862. data/vendor/rails/actionpack/test/fixtures/layout_tests/abs_path_layout.rhtml +1 -0
  863. data/vendor/rails/actionpack/test/fixtures/test/_from_helper.erb +1 -0
  864. data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +1 -1
  865. data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +12 -0
  866. data/vendor/rails/actionpack/test/template/benchmark_helper_test.rb +6 -6
  867. data/vendor/rails/actionpack/test/template/compiled_templates_test.rb +2 -1
  868. data/vendor/rails/actionpack/test/template/date_helper_i18n_test.rb +10 -9
  869. data/vendor/rails/actionpack/test/template/date_helper_test.rb +29 -13
  870. data/vendor/rails/actionpack/test/template/form_helper_test.rb +90 -10
  871. data/vendor/rails/actionpack/test/template/number_helper_test.rb +4 -0
  872. data/vendor/rails/actionpack/test/template/raw_output_helper_test.rb +21 -0
  873. data/vendor/rails/actionpack/test/template/sanitize_helper_test.rb +10 -1
  874. data/vendor/rails/actionpack/test/template/tag_helper_test.rb +1 -0
  875. data/vendor/rails/actionpack/test/view/safe_buffer_test.rb +36 -0
  876. data/vendor/rails/actionpack/test/view/test_case_test.rb +173 -5
  877. data/vendor/rails/activemodel/CHANGES +12 -0
  878. data/vendor/rails/activemodel/README +21 -0
  879. data/vendor/rails/activemodel/Rakefile +24 -0
  880. data/vendor/rails/activemodel/lib/active_model.rb +5 -0
  881. data/vendor/rails/activemodel/lib/active_model/base.rb +8 -0
  882. data/vendor/rails/activemodel/lib/active_model/callbacks.rb +7 -0
  883. data/vendor/rails/activemodel/lib/active_model/core.rb +7 -0
  884. data/vendor/rails/activemodel/lib/active_model/deprecated_error_methods.rb +38 -0
  885. data/vendor/rails/activemodel/lib/active_model/errors.rb +82 -0
  886. data/vendor/rails/activemodel/lib/active_model/observing.rb +98 -0
  887. data/vendor/rails/activemodel/lib/active_model/state_machine.rb +68 -0
  888. data/vendor/rails/activemodel/lib/active_model/state_machine/event.rb +64 -0
  889. data/vendor/rails/activemodel/lib/active_model/state_machine/machine.rb +78 -0
  890. data/vendor/rails/activemodel/lib/active_model/state_machine/state.rb +47 -0
  891. data/vendor/rails/activemodel/lib/active_model/state_machine/state_transition.rb +40 -0
  892. data/vendor/rails/activemodel/lib/active_model/validations.rb +126 -0
  893. data/vendor/rails/activemodel/lib/active_model/validations/acceptance.rb +45 -0
  894. data/vendor/rails/activemodel/lib/active_model/validations/associated.rb +46 -0
  895. data/vendor/rails/activemodel/lib/active_model/validations/confirmation.rb +44 -0
  896. data/vendor/rails/activemodel/lib/active_model/validations/exclusion.rb +37 -0
  897. data/vendor/rails/activemodel/lib/active_model/validations/format.rb +39 -0
  898. data/vendor/rails/activemodel/lib/active_model/validations/inclusion.rb +37 -0
  899. data/vendor/rails/activemodel/lib/active_model/validations/length.rb +95 -0
  900. data/vendor/rails/activemodel/lib/active_model/validations/numericality.rb +80 -0
  901. data/vendor/rails/activemodel/lib/active_model/validations/presence.rb +42 -0
  902. data/vendor/rails/activemodel/lib/active_model/validations/uniqueness.rb +104 -0
  903. data/vendor/rails/activemodel/test/observing_test.rb +121 -0
  904. data/vendor/rails/activemodel/test/state_machine/event_test.rb +49 -0
  905. data/vendor/rails/activemodel/test/state_machine/machine_test.rb +43 -0
  906. data/vendor/rails/activemodel/test/state_machine/state_test.rb +72 -0
  907. data/vendor/rails/activemodel/test/state_machine/state_transition_test.rb +84 -0
  908. data/vendor/rails/activemodel/test/state_machine_test.rb +312 -0
  909. data/vendor/rails/activemodel/test/test_helper.rb +21 -0
  910. data/vendor/rails/activerecord/CHANGELOG +8 -0
  911. data/vendor/rails/activerecord/MIT-LICENSE +20 -0
  912. data/vendor/rails/activerecord/Rakefile +1 -1
  913. data/vendor/rails/activerecord/lib/active_record/associations.rb +10 -7
  914. data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +7 -8
  915. data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +2 -2
  916. data/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb +9 -0
  917. data/vendor/rails/activerecord/lib/active_record/autosave_association.rb +32 -23
  918. data/vendor/rails/activerecord/lib/active_record/base.rb +7 -0
  919. data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +6 -2
  920. data/vendor/rails/activerecord/lib/active_record/fixtures.rb +1 -1
  921. data/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb +0 -33
  922. data/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb +0 -22
  923. data/vendor/rails/activerecord/lib/active_record/nested_attributes.rb +101 -38
  924. data/vendor/rails/activerecord/lib/active_record/validations.rb +35 -35
  925. data/vendor/rails/activerecord/lib/active_record/version.rb +1 -1
  926. data/vendor/rails/activerecord/lib/activerecord.rb +1 -0
  927. data/vendor/rails/activerecord/test/cases/associations/has_many_associations_test.rb +12 -0
  928. data/vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb +22 -0
  929. data/vendor/rails/activerecord/test/cases/associations/has_one_associations_test.rb +21 -0
  930. data/vendor/rails/activerecord/test/cases/autosave_association_test.rb +230 -11
  931. data/vendor/rails/activerecord/test/cases/base_test.rb +2 -0
  932. data/vendor/rails/activerecord/test/cases/connection_test_mysql.rb +8 -0
  933. data/vendor/rails/activerecord/test/cases/fixtures_test.rb +2 -2
  934. data/vendor/rails/activerecord/test/cases/locking_test.rb +0 -18
  935. data/vendor/rails/activerecord/test/cases/nested_attributes_test.rb +109 -37
  936. data/vendor/rails/activerecord/test/cases/reflection_test.rb +3 -3
  937. data/vendor/rails/activerecord/test/cases/validations_i18n_test.rb +8 -0
  938. data/vendor/rails/activerecord/test/cases/validations_test.rb +37 -9
  939. data/vendor/rails/activerecord/test/fixtures/accounts.yml +1 -0
  940. data/vendor/rails/activerecord/test/models/company.rb +10 -0
  941. data/vendor/rails/activerecord/test/models/pirate.rb +9 -2
  942. data/vendor/rails/activerecord/test/models/treasure.rb +2 -0
  943. data/vendor/rails/activerecord/test/schema/mysql_specific_schema.rb +12 -0
  944. data/vendor/rails/activerecord/test/schema/schema.rb +1 -0
  945. data/vendor/rails/activeresource/CHANGELOG +9 -0
  946. data/vendor/rails/activeresource/MIT-LICENSE +20 -0
  947. data/vendor/rails/activeresource/Rakefile +1 -1
  948. data/vendor/rails/activeresource/lib/active_resource/validations.rb +2 -2
  949. data/vendor/rails/activeresource/lib/active_resource/version.rb +1 -1
  950. data/vendor/rails/activeresource/lib/activeresource.rb +1 -0
  951. data/vendor/rails/activeresource/test/base_errors_test.rb +2 -2
  952. data/vendor/rails/activesupport/CHANGELOG +8 -0
  953. data/vendor/rails/activesupport/MIT-LICENSE +20 -0
  954. data/vendor/rails/activesupport/Rakefile +175 -0
  955. data/vendor/rails/activesupport/bin/generate_tables +147 -0
  956. data/vendor/rails/activesupport/install.rb +30 -0
  957. data/vendor/rails/activesupport/lib/active_support/cache.rb +7 -0
  958. data/vendor/rails/activesupport/lib/active_support/cache/mem_cache_store.rb +5 -0
  959. data/vendor/rails/activesupport/lib/active_support/cache/strategy/local_cache.rb +5 -5
  960. data/vendor/rails/activesupport/lib/active_support/core_ext.rb +7 -3
  961. data/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +2 -58
  962. data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +1 -0
  963. data/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb +3 -1
  964. data/vendor/rails/activesupport/lib/active_support/core_ext/object.rb +1 -0
  965. data/vendor/rails/activesupport/lib/active_support/core_ext/object/blank.rb +58 -0
  966. data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +2 -0
  967. data/vendor/rails/activesupport/lib/active_support/core_ext/string/output_safety.rb +48 -0
  968. data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +2 -1
  969. data/vendor/rails/activesupport/lib/active_support/deprecation.rb +1 -1
  970. data/vendor/rails/activesupport/lib/active_support/json/backends/jsongem.rb +2 -3
  971. data/vendor/rails/activesupport/lib/active_support/json/backends/yaml.rb +1 -5
  972. data/vendor/rails/activesupport/lib/active_support/json/decoding.rb +2 -0
  973. data/vendor/rails/activesupport/lib/active_support/message_verifier.rb +30 -10
  974. data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +1 -1
  975. data/vendor/rails/activesupport/lib/active_support/multibyte/utils.rb +4 -4
  976. data/vendor/rails/activesupport/lib/active_support/ordered_hash.rb +7 -0
  977. data/vendor/rails/activesupport/lib/active_support/vendor.rb +2 -2
  978. data/vendor/rails/activesupport/lib/active_support/version.rb +1 -1
  979. data/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +8 -2
  980. data/vendor/rails/activesupport/lib/active_support/xml_mini/nokogiri.rb +13 -21
  981. data/vendor/rails/activesupport/lib/activesupport.rb +1 -0
  982. data/vendor/rails/activesupport/test/abstract_unit.rb +36 -0
  983. data/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb +2 -0
  984. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +2 -0
  985. data/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +2 -0
  986. data/vendor/rails/activesupport/test/autoloading_fixtures/application.rb +1 -0
  987. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb +3 -0
  988. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +3 -0
  989. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +2 -0
  990. data/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +7 -0
  991. data/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb +1 -0
  992. data/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +5 -0
  993. data/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +2 -0
  994. data/vendor/rails/activesupport/test/autoloading_fixtures/e.rb +2 -0
  995. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +2 -0
  996. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +4 -0
  997. data/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +2 -0
  998. data/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +1 -0
  999. data/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +2 -0
  1000. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +3 -0
  1001. data/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +3 -0
  1002. data/vendor/rails/activesupport/test/buffered_logger_test.rb +146 -0
  1003. data/vendor/rails/activesupport/test/caching_test.rb +348 -0
  1004. data/vendor/rails/activesupport/test/callbacks_test.rb +188 -0
  1005. data/vendor/rails/activesupport/test/clean_backtrace_test.rb +47 -0
  1006. data/vendor/rails/activesupport/test/clean_logger_test.rb +57 -0
  1007. data/vendor/rails/activesupport/test/core_ext/array_ext_test.rb +363 -0
  1008. data/vendor/rails/activesupport/test/core_ext/base64_ext_test.rb +8 -0
  1009. data/vendor/rails/activesupport/test/core_ext/bigdecimal.rb +10 -0
  1010. data/vendor/rails/activesupport/test/core_ext/blank_test.rb +24 -0
  1011. data/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb +14 -0
  1012. data/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb +31 -0
  1013. data/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb +224 -0
  1014. data/vendor/rails/activesupport/test/core_ext/class/delegating_attributes_test.rb +115 -0
  1015. data/vendor/rails/activesupport/test/core_ext/class_test.rb +46 -0
  1016. data/vendor/rails/activesupport/test/core_ext/date_ext_test.rb +278 -0
  1017. data/vendor/rails/activesupport/test/core_ext/date_time_ext_test.rb +359 -0
  1018. data/vendor/rails/activesupport/test/core_ext/duplicable_test.rb +22 -0
  1019. data/vendor/rails/activesupport/test/core_ext/duration_test.rb +121 -0
  1020. data/vendor/rails/activesupport/test/core_ext/enumerable_test.rb +97 -0
  1021. data/vendor/rails/activesupport/test/core_ext/exception_test.rb +68 -0
  1022. data/vendor/rails/activesupport/test/core_ext/file_test.rb +67 -0
  1023. data/vendor/rails/activesupport/test/core_ext/float_ext_test.rb +25 -0
  1024. data/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +1014 -0
  1025. data/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb +37 -0
  1026. data/vendor/rails/activesupport/test/core_ext/kernel_test.rb +43 -0
  1027. data/vendor/rails/activesupport/test/core_ext/load_error_test.rb +16 -0
  1028. data/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default_test.rb +30 -0
  1029. data/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb +52 -0
  1030. data/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +33 -0
  1031. data/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +58 -0
  1032. data/vendor/rails/activesupport/test/core_ext/module/model_naming_test.rb +27 -0
  1033. data/vendor/rails/activesupport/test/core_ext/module/synchronization_test.rb +85 -0
  1034. data/vendor/rails/activesupport/test/core_ext/module_test.rb +363 -0
  1035. data/vendor/rails/activesupport/test/core_ext/name_error_test.rb +20 -0
  1036. data/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb +162 -0
  1037. data/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb +282 -0
  1038. data/vendor/rails/activesupport/test/core_ext/object_ext_test.rb +8 -0
  1039. data/vendor/rails/activesupport/test/core_ext/pathname_test.rb +9 -0
  1040. data/vendor/rails/activesupport/test/core_ext/proc_test.rb +11 -0
  1041. data/vendor/rails/activesupport/test/core_ext/range_ext_test.rb +63 -0
  1042. data/vendor/rails/activesupport/test/core_ext/string_ext_test.rb +369 -0
  1043. data/vendor/rails/activesupport/test/core_ext/symbol_test.rb +9 -0
  1044. data/vendor/rails/activesupport/test/core_ext/time_ext_test.rb +744 -0
  1045. data/vendor/rails/activesupport/test/core_ext/time_with_zone_test.rb +845 -0
  1046. data/vendor/rails/activesupport/test/core_ext/uri_ext_test.rb +12 -0
  1047. data/vendor/rails/activesupport/test/dependencies/check_warnings.rb +2 -0
  1048. data/vendor/rails/activesupport/test/dependencies/conflict.rb +1 -0
  1049. data/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb +3 -0
  1050. data/vendor/rails/activesupport/test/dependencies/mutual_one.rb +4 -0
  1051. data/vendor/rails/activesupport/test/dependencies/mutual_two.rb +4 -0
  1052. data/vendor/rails/activesupport/test/dependencies/raises_exception.rb +3 -0
  1053. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb +1 -0
  1054. data/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb +1 -0
  1055. data/vendor/rails/activesupport/test/dependencies/service_one.rb +5 -0
  1056. data/vendor/rails/activesupport/test/dependencies/service_two.rb +2 -0
  1057. data/vendor/rails/activesupport/test/dependencies_test.rb +782 -0
  1058. data/vendor/rails/activesupport/test/deprecation_test.rb +167 -0
  1059. data/vendor/rails/activesupport/test/flush_cache_on_private_memoization_test.rb +43 -0
  1060. data/vendor/rails/activesupport/test/gzip_test.rb +7 -0
  1061. data/vendor/rails/activesupport/test/i18n_test.rb +98 -0
  1062. data/vendor/rails/activesupport/test/inflector_test.rb +298 -0
  1063. data/vendor/rails/activesupport/test/inflector_test_cases.rb +252 -0
  1064. data/vendor/rails/activesupport/test/json/decoding_test.rb +73 -0
  1065. data/vendor/rails/activesupport/test/json/encoding_test.rb +160 -0
  1066. data/vendor/rails/activesupport/test/memoizable_test.rb +247 -0
  1067. data/vendor/rails/activesupport/test/message_encryptor_test.rb +46 -0
  1068. data/vendor/rails/activesupport/test/message_verifier_test.rb +31 -0
  1069. data/vendor/rails/activesupport/test/multibyte_chars_test.rb +606 -0
  1070. data/vendor/rails/activesupport/test/multibyte_conformance.rb +129 -0
  1071. data/vendor/rails/activesupport/test/multibyte_test_helpers.rb +19 -0
  1072. data/vendor/rails/activesupport/test/multibyte_unicode_database_test.rb +22 -0
  1073. data/vendor/rails/activesupport/test/multibyte_utils_test.rb +137 -0
  1074. data/vendor/rails/activesupport/test/option_merger_test.rb +85 -0
  1075. data/vendor/rails/activesupport/test/ordered_hash_test.rb +201 -0
  1076. data/vendor/rails/activesupport/test/ordered_options_test.rb +53 -0
  1077. data/vendor/rails/activesupport/test/rescuable_test.rb +75 -0
  1078. data/vendor/rails/activesupport/test/secure_random_test.rb +19 -0
  1079. data/vendor/rails/activesupport/test/string_inquirer_test.rb +15 -0
  1080. data/vendor/rails/activesupport/test/test_test.rb +148 -0
  1081. data/vendor/rails/activesupport/test/time_zone_test.rb +266 -0
  1082. data/vendor/rails/activesupport/test/whiny_nil_test.rb +50 -0
  1083. data/vendor/rails/activesupport/test/xml_mini/jdom_engine_test.rb +153 -0
  1084. data/vendor/rails/activesupport/test/xml_mini/nokogiri_engine_test.rb +168 -0
  1085. data/vendor/rails/activesupport/test/xml_mini/rexml_engine_test.rb +15 -0
  1086. data/vendor/rails/ci/ci_build.rb +119 -0
  1087. data/vendor/rails/ci/ci_setup_notes.txt +131 -0
  1088. data/vendor/rails/ci/cruise_config.rb +9 -0
  1089. data/vendor/rails/ci/geminstaller.yml +24 -0
  1090. data/vendor/rails/ci/site.css +13 -0
  1091. data/vendor/rails/ci/site_config.rb +72 -0
  1092. data/vendor/rails/doc/template/horo.rb +613 -0
  1093. data/vendor/rails/pushgems.rb +14 -0
  1094. data/vendor/rails/railties/CHANGELOG +6 -0
  1095. data/vendor/rails/railties/Rakefile +6 -6
  1096. data/vendor/rails/railties/lib/commands/plugin.rb +1 -1
  1097. data/vendor/rails/railties/lib/rails/rack/debugger.rb +2 -0
  1098. data/vendor/rails/railties/lib/rails/version.rb +1 -1
  1099. data/vendor/rails/railties/lib/rails_generator/options.rb +7 -7
  1100. data/vendor/rails/railties/lib/tasks/rails.rb +2 -1
  1101. data/vendor/rails/railties/test/abstract_unit.rb +27 -0
  1102. data/vendor/rails/railties/test/backtrace_cleaner_test.rb +61 -0
  1103. data/vendor/rails/railties/test/boot_test.rb +178 -0
  1104. data/vendor/rails/railties/test/console_app_test.rb +42 -0
  1105. data/vendor/rails/railties/test/fcgi_dispatcher_test.rb +266 -0
  1106. data/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/about.yml +1 -0
  1107. data/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/init.rb +1 -0
  1108. data/vendor/rails/railties/test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb +1 -0
  1109. data/vendor/rails/railties/test/fixtures/eager/zoo.rb +3 -0
  1110. data/vendor/rails/railties/test/fixtures/eager/zoo/reptile_house.rb +2 -0
  1111. data/vendor/rails/railties/test/fixtures/environment_with_constant.rb +1 -0
  1112. data/vendor/{extensions/markdown_filter/lib/tasks/textile_filter_extension_tasks.rake → rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb} +0 -0
  1113. data/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb +2 -0
  1114. data/vendor/rails/railties/test/fixtures/metal/multiplemetals/app/metal/metal_a.rb +5 -0
  1115. data/vendor/rails/railties/test/fixtures/metal/multiplemetals/app/metal/metal_b.rb +5 -0
  1116. data/vendor/rails/railties/test/fixtures/metal/pluralmetal/app/metal/legacy_routes.rb +5 -0
  1117. data/vendor/rails/railties/test/fixtures/metal/singlemetal/app/metal/foo_metal.rb +5 -0
  1118. data/vendor/rails/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_a.rb +7 -0
  1119. data/vendor/rails/railties/test/fixtures/metal/subfolders/app/metal/Folder/metal_b.rb +7 -0
  1120. data/vendor/rails/railties/test/fixtures/plugins/alternate/a/generators/a_generator/a_generator.rb +4 -0
  1121. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/init.rb +1 -0
  1122. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/lib/gemlike.rb +2 -0
  1123. data/vendor/rails/railties/test/fixtures/plugins/default/gemlike/rails/init.rb +7 -0
  1124. data/vendor/rails/railties/test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb +0 -0
  1125. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/about.yml +2 -0
  1126. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/generators/stubby_generator/stubby_generator.rb +4 -0
  1127. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb +7 -0
  1128. data/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +2 -0
  1129. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/controllers/engine_controller.rb +2 -0
  1130. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/metal/engine_metal.rb +10 -0
  1131. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/app/models/engine_model.rb +2 -0
  1132. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/config/locales/en.yml +2 -0
  1133. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/config/routes.rb +3 -0
  1134. data/vendor/rails/railties/test/fixtures/plugins/engines/engine/init.rb +3 -0
  1135. data/vendor/rails/railties/test/fixtures/public/foo/bar.html +1 -0
  1136. data/vendor/rails/railties/test/fixtures/public/foo/index.html +1 -0
  1137. data/vendor/rails/railties/test/fixtures/public/index.html +1 -0
  1138. data/vendor/rails/railties/test/gem_dependency_test.rb +219 -0
  1139. data/vendor/rails/railties/test/generator_lookup_test.rb +40 -0
  1140. data/vendor/rails/railties/test/generators/generator_test_helper.rb +310 -0
  1141. data/vendor/rails/railties/test/generators/rails_controller_generator_test.rb +44 -0
  1142. data/vendor/rails/railties/test/generators/rails_helper_generator_test.rb +36 -0
  1143. data/vendor/rails/railties/test/generators/rails_mailer_generator_test.rb +29 -0
  1144. data/vendor/rails/railties/test/generators/rails_model_generator_test.rb +96 -0
  1145. data/vendor/rails/railties/test/generators/rails_resource_generator_test.rb +29 -0
  1146. data/vendor/rails/railties/test/generators/rails_scaffold_generator_test.rb +151 -0
  1147. data/vendor/rails/railties/test/generators/rails_template_runner_test.rb +216 -0
  1148. data/vendor/rails/railties/test/initializer_test.rb +416 -0
  1149. data/vendor/rails/railties/test/metal_test.rb +72 -0
  1150. data/vendor/rails/railties/test/mocks/routes.rb +6 -0
  1151. data/vendor/rails/railties/test/plugin_loader_test.rb +172 -0
  1152. data/vendor/rails/railties/test/plugin_locator_test.rb +62 -0
  1153. data/vendor/rails/railties/test/plugin_test.rb +162 -0
  1154. data/vendor/rails/railties/test/plugin_test_helper.rb +29 -0
  1155. data/vendor/rails/railties/test/rack_static_test.rb +46 -0
  1156. data/vendor/rails/railties/test/rails_generator_test.rb +145 -0
  1157. data/vendor/rails/railties/test/rails_info_controller_test.rb +52 -0
  1158. data/vendor/rails/railties/test/rails_info_test.rb +99 -0
  1159. data/vendor/rails/railties/test/secret_key_generation_test.rb +38 -0
  1160. data/vendor/rails/railties/test/vendor/gems/dummy-gem-a-0.4.0/lib/dummy-gem-a.rb +1 -0
  1161. data/vendor/rails/railties/test/vendor/gems/dummy-gem-b-0.4.0/lib/dummy-gem-b.rb +1 -0
  1162. data/vendor/rails/railties/test/vendor/gems/dummy-gem-b-0.6.0/lib/dummy-gem-b.rb +1 -0
  1163. data/vendor/rails/railties/test/vendor/gems/dummy-gem-c-0.4.0/lib/dummy-gem-c.rb +1 -0
  1164. data/vendor/rails/railties/test/vendor/gems/dummy-gem-c-0.6.0/lib/dummy-gem-c.rb +1 -0
  1165. data/vendor/rails/railties/test/vendor/gems/dummy-gem-d-1.0.0/lib/dummy-gem-d.rb +1 -0
  1166. data/vendor/rails/railties/test/vendor/gems/dummy-gem-e-1.0.0/lib/dummy-gem-e.rb +1 -0
  1167. data/vendor/rails/railties/test/vendor/gems/dummy-gem-f-1.0.0/lib/dummy-gem-f.rb +1 -0
  1168. data/vendor/rails/railties/test/vendor/gems/dummy-gem-g-1.0.0/lib/dummy-gem-g.rb +1 -0
  1169. data/vendor/rails/railties/test/vendor/gems/dummy-gem-h-1.0.0/lib/dummy-gem-h.rb +1 -0
  1170. data/vendor/rails/railties/test/vendor/gems/dummy-gem-i-1.0.0/ext/dummy-gem-i/Makefile +0 -0
  1171. data/vendor/rails/railties/test/vendor/gems/dummy-gem-i-1.0.0/lib/dummy-gem-i.rb +1 -0
  1172. data/vendor/rails/railties/test/vendor/gems/dummy-gem-j-1.0.0/lib/dummy-gem-j.rb +1 -0
  1173. data/vendor/rails/railties/test/vendor/gems/dummy-gem-k-1.0.0/lib/dummy-gem-k.rb +1 -0
  1174. data/vendor/rails/release.rb +25 -0
  1175. metadata +814 -84
  1176. data/app/views/admin/pages/_edit_styles.html.haml +0 -15
  1177. data/app/views/admin/references/filters.js.erb +0 -5
  1178. data/app/views/admin/references/tags.js.erb +0 -5
  1179. data/features/step_definitions/webrat_steps.rb +0 -117
  1180. data/public/images/admin/add-child.png +0 -0
  1181. data/public/images/admin/clear-page-cache.png +0 -0
  1182. data/public/images/admin/remove-disabled.png +0 -0
  1183. data/public/images/admin/remove.png +0 -0
  1184. data/public/images/admin/view-site.gif +0 -0
  1185. data/public/images/admin/virtual-page.png +0 -0
  1186. data/public/javascripts/admin/admin.js +0 -149
  1187. data/public/javascripts/application.js +0 -2
  1188. data/public/javascripts/pngfix.js +0 -39
  1189. data/public/javascripts/string.js +0 -17
  1190. data/vendor/extensions/markdown_filter/vendor/bluecloth/CHANGES +0 -366
  1191. data/vendor/extensions/markdown_filter/vendor/bluecloth/LICENSE +0 -340
  1192. data/vendor/extensions/markdown_filter/vendor/bluecloth/README +0 -99
  1193. data/vendor/extensions/markdown_filter/vendor/bluecloth/bin/bluecloth +0 -83
  1194. data/vendor/extensions/markdown_filter/vendor/bluecloth/install.rb +0 -150
  1195. data/vendor/extensions/markdown_filter/vendor/bluecloth/lib/bluecloth.rb +0 -1144
  1196. data/vendor/extensions/markdown_filter/vendor/bluecloth/test.rb +0 -117
  1197. data/vendor/extensions/markdown_filter/vendor/bluecloth/tests/00_Class.tests.rb +0 -71
  1198. data/vendor/extensions/markdown_filter/vendor/bluecloth/tests/05_Markdown.tests.rb +0 -1527
  1199. data/vendor/extensions/markdown_filter/vendor/bluecloth/tests/10_Bug.tests.rb +0 -57
  1200. data/vendor/extensions/markdown_filter/vendor/bluecloth/tests/15_Contrib.tests.rb +0 -132
  1201. data/vendor/extensions/markdown_filter/vendor/bluecloth/tests/bctestcase.rb +0 -274
  1202. data/vendor/extensions/markdown_filter/vendor/bluecloth/tests/data/antsugar.txt +0 -34
  1203. data/vendor/extensions/markdown_filter/vendor/bluecloth/tests/data/ml-announce.txt +0 -17
  1204. data/vendor/extensions/markdown_filter/vendor/bluecloth/tests/data/re-overflow.txt +0 -67
  1205. data/vendor/extensions/markdown_filter/vendor/bluecloth/tests/data/re-overflow2.txt +0 -281
  1206. data/vendor/extensions/markdown_filter/vendor/bluecloth/utils.rb +0 -553
  1207. data/vendor/radius/ROADMAP +0 -12
  1208. data/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite +0 -0
  1209. data/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite3 +0 -0
  1210. data/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite +0 -0
  1211. data/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite3 +0 -0
  1212. data/vendor/rails/activeresource/test/debug.log +0 -7974
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
2
3
  require File.dirname(__FILE__) + '/../test_helper'
3
4
 
4
5
  class EngineTest < Test::Unit::TestCase
@@ -17,40 +18,62 @@ class EngineTest < Test::Unit::TestCase
17
18
  "~" => "There's no Ruby code for ~ to evaluate.",
18
19
  "=" => "There's no Ruby code for = to evaluate.",
19
20
  "%p/\n a" => "Illegal nesting: nesting within a self-closing tag is illegal.",
20
- "%p\n\ta" => <<END.strip,
21
- A tab character was used for indentation. Haml must be indented using two spaces.
22
- Are you sure you have soft tabs enabled in your editor?
23
- END
24
- "%p\n a" => "1 space was used for indentation. Haml must be indented using two spaces.",
25
- "%p\n a" => "3 spaces were used for indentation. Haml must be indented using two spaces.",
26
- "%p\n a" => "4 spaces were used for indentation. Haml must be indented using two spaces.",
27
21
  ":a\n b" => ['Filter "a" is not defined.', 1],
28
22
  ":a= b" => 'Invalid filter name ":a= b".',
29
23
  "." => "Illegal element: classes and ids must have values.",
30
24
  ".#" => "Illegal element: classes and ids must have values.",
31
25
  ".{} a" => "Illegal element: classes and ids must have values.",
26
+ ".() a" => "Illegal element: classes and ids must have values.",
32
27
  ".= a" => "Illegal element: classes and ids must have values.",
33
28
  "%p..a" => "Illegal element: classes and ids must have values.",
34
29
  "%a/ b" => "Self-closing tags can't have content.",
30
+ "%p{:a => 'b',\n:c => 'd'}/ e" => ["Self-closing tags can't have content.", 2],
31
+ "%p{:a => 'b',\n:c => 'd'}=" => ["There's no Ruby code for = to evaluate.", 2],
32
+ "%p.{:a => 'b',\n:c => 'd'} e" => ["Illegal element: classes and ids must have values.", 1],
33
+ "%p{:a => 'b',\n:c => 'd',\n:e => 'f'}\n%p/ a" => ["Self-closing tags can't have content.", 4],
34
+ "%p{:a => 'b',\n:c => 'd',\n:e => 'f'}\n- raise 'foo'" => ["foo", 4],
35
+ "%p{:a => 'b',\n:c => raise('foo'),\n:e => 'f'}" => ["foo", 2],
36
+ "%p{:a => 'b',\n:c => 'd',\n:e => raise('foo')}" => ["foo", 3],
35
37
  " %p foo" => "Indenting at the beginning of the document is illegal.",
36
38
  " %p foo" => "Indenting at the beginning of the document is illegal.",
37
39
  "- end" => "You don't need to use \"- end\" in Haml. Use indentation instead:\n- if foo?\n %strong Foo!\n- else\n Not foo.",
38
40
  " \n\t\n %p foo" => ["Indenting at the beginning of the document is illegal.", 3],
41
+ "\n\n %p foo" => ["Indenting at the beginning of the document is illegal.", 3],
42
+ "%p\n foo\n foo" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 3],
43
+ "%p\n foo\n%p\n foo" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 4],
44
+ "%p\n\t\tfoo\n\tfoo" => ["Inconsistent indentation: 1 tab was used for indentation, but the rest of the document was indented using 2 tabs.", 3],
45
+ "%p\n foo\n foo" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 3],
46
+ "%p\n foo\n %p\n bar" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 4],
47
+ "%p\n :plain\n bar\n \t baz" => ['Inconsistent indentation: " \t " was used for indentation, but the rest of the document was indented using 2 spaces.', 4],
48
+ "%p\n foo\n%p\n bar" => ["The line was indented 2 levels deeper than the previous line.", 4],
49
+ "%p\n foo\n %p\n bar" => ["The line was indented 3 levels deeper than the previous line.", 4],
50
+ "%p\n \tfoo" => ["Indentation can't use both tabs and spaces.", 2],
51
+ "%p(" => "Invalid attribute list: \"(\".",
52
+ "%p(foo=\nbar)" => ["Invalid attribute list: \"(foo=\".", 1],
53
+ "%p(foo=)" => "Invalid attribute list: \"(foo=)\".",
54
+ "%p(foo 'bar')" => "Invalid attribute list: \"(foo 'bar')\".",
55
+ "%p(foo 'bar'\nbaz='bang')" => ["Invalid attribute list: \"(foo 'bar'\".", 1],
56
+ "%p(foo='bar'\nbaz 'bang'\nbip='bop')" => ["Invalid attribute list: \"(foo='bar' baz 'bang'\".", 2],
57
+ "%p{:foo => 'bar' :bar => 'baz'}" => :compile,
58
+ "%p{:foo => }" => :compile,
59
+ "%p{=> 'bar'}" => :compile,
60
+ "%p{:foo => 'bar}" => :compile,
61
+ "%p{'foo => 'bar'}" => :compile,
62
+ "%p{:foo => 'bar\"}" => :compile,
39
63
 
40
64
  # Regression tests
41
65
  "- raise 'foo'\n\n\n\nbar" => ["foo", 1],
42
66
  "= 'foo'\n-raise 'foo'" => ["foo", 2],
43
67
  "\n\n\n- raise 'foo'" => ["foo", 4],
68
+ "%p foo |\n bar |\n baz |\nbop\n- raise 'foo'" => ["foo", 5],
44
69
  "foo\n\n\n bar" => ["Illegal nesting: nesting within plain text is illegal.", 4],
45
70
  "%p/\n\n bar" => ["Illegal nesting: nesting within a self-closing tag is illegal.", 3],
46
71
  "%p foo\n\n bar" => ["Illegal nesting: content can't be both given on the same line as %p and nested within it.", 3],
47
72
  "/ foo\n\n bar" => ["Illegal nesting: nesting within a tag that already has content is illegal.", 3],
48
73
  "!!!\n\n bar" => ["Illegal nesting: nesting within a header command is illegal.", 3],
49
- "foo\n\n\n\tbar" => [<<END.strip, 4],
50
- A tab character was used for indentation. Haml must be indented using two spaces.
51
- Are you sure you have soft tabs enabled in your editor?
52
- END
53
74
  "foo\n:ruby\n 1\n 2\n 3\n- raise 'foo'" => ["foo", 6],
75
+ "foo\n:erb\n 1\n 2\n 3\n- raise 'foo'" => ["foo", 6],
76
+ "= raise 'foo'\nfoo\nbar\nbaz\nbang" => ["foo", 1],
54
77
  }
55
78
 
56
79
  User = Struct.new('User', :id)
@@ -70,7 +93,20 @@ END
70
93
  end
71
94
  Haml::Engine.new(text, options)
72
95
  end
73
-
96
+
97
+ def test_empty_render
98
+ assert_equal "", render("")
99
+ end
100
+
101
+ def test_flexible_tabulation
102
+ assert_equal("<p>\n foo\n</p>\n<q>\n bar\n <a>\n baz\n </a>\n</q>\n",
103
+ render("%p\n foo\n%q\n bar\n %a\n baz"))
104
+ assert_equal("<p>\n foo\n</p>\n<q>\n bar\n <a>\n baz\n </a>\n</q>\n",
105
+ render("%p\n\tfoo\n%q\n\tbar\n\t%a\n\t\tbaz"))
106
+ assert_equal("<p>\n \t \t bar\n baz\n</p>\n",
107
+ render("%p\n :plain\n \t \t bar\n baz"))
108
+ end
109
+
74
110
  def test_empty_render_should_remain_empty
75
111
  assert_equal('', render(''))
76
112
  end
@@ -79,11 +115,27 @@ END
79
115
  assert_equal("<div class='atlantis' style='ugly'></div>", render(".atlantis{:style => 'ugly'}").chomp)
80
116
  end
81
117
 
118
+ def test_css_id_as_attribute_should_be_appended_with_underscore
119
+ assert_equal("<div id='my_id_1'></div>", render("#my_id{:id => '1'}").chomp)
120
+ assert_equal("<div id='my_id_1'></div>", render("#my_id{:id => 1}").chomp)
121
+ end
122
+
82
123
  def test_ruby_code_should_work_inside_attributes
83
124
  author = 'hcatlin'
84
125
  assert_equal("<p class='3'>foo</p>", render("%p{:class => 1+2} foo").chomp)
85
126
  end
86
127
 
128
+ def test_dynamic_attributes_with_no_content
129
+ assert_equal(<<HTML, render(<<HAML))
130
+ <p>
131
+ <a href='http://haml-lang.com'></a>
132
+ </p>
133
+ HTML
134
+ %p
135
+ %a{:href => "http://" + "haml-lang.com"}
136
+ HAML
137
+ end
138
+
87
139
  def test_nil_should_render_empty_tag
88
140
  assert_equal("<div class='no_attributes'></div>",
89
141
  render(".no_attributes{:nil => nil}").chomp)
@@ -109,14 +161,23 @@ END
109
161
  assert_equal("<strong>Hi there!</strong>\n", engine.to_html)
110
162
  end
111
163
 
112
- def test_double_equals
113
- assert_equal("<p>Hello World</p>\n", render('%p== Hello #{who}', :locals => {:who => 'World'}))
114
- assert_equal("<p>\n Hello World\n</p>\n", render("%p\n == Hello \#{who}", :locals => {:who => 'World'}))
164
+ def test_interpolation
165
+ assert_equal("<p>Hello World</p>\n", render('%p Hello #{who}', :locals => {:who => 'World'}))
166
+ assert_equal("<p>\n Hello World\n</p>\n", render("%p\n Hello \#{who}", :locals => {:who => 'World'}))
115
167
  end
116
168
 
117
- def test_double_equals_in_the_middle_of_a_string
169
+ def test_interpolation_in_the_middle_of_a_string
118
170
  assert_equal("\"title 'Title'. \"\n",
119
- render("== \"title '\#{\"Title\"}'. \""))
171
+ render("\"title '\#{\"Title\"}'. \""))
172
+ end
173
+
174
+ def test_interpolation_at_the_beginning_of_a_line
175
+ assert_equal("<p>2</p>\n", render('%p #{1 + 1}'))
176
+ assert_equal("<p>\n 2\n</p>\n", render("%p\n \#{1 + 1}"))
177
+ end
178
+
179
+ def test_escaped_interpolation
180
+ assert_equal("<p>Foo &amp; Bar & Baz</p>\n", render('%p& Foo #{"&"} Bar & Baz'))
120
181
  end
121
182
 
122
183
  def test_nil_tag_value_should_render_as_empty
@@ -135,6 +196,13 @@ END
135
196
  assert_equal("<img alt='' src='/foo.png' />\n", render("%img{:width => nil, :src => '/foo.png', :alt => String.new}"))
136
197
  end
137
198
 
199
+ def test_attribute_hash_with_newlines
200
+ assert_equal("<p a='b' c='d'>foop</p>\n", render("%p{:a => 'b',\n :c => 'd'} foop"))
201
+ assert_equal("<p a='b' c='d'>\n foop\n</p>\n", render("%p{:a => 'b',\n :c => 'd'}\n foop"))
202
+ assert_equal("<p a='b' c='d' />\n", render("%p{:a => 'b',\n :c => 'd'}/"))
203
+ assert_equal("<p a='b' c='d' e='f'></p>\n", render("%p{:a => 'b',\n :c => 'd',\n :e => 'f'}"))
204
+ end
205
+
138
206
  def test_attr_hashes_not_modified
139
207
  hash = {:color => 'red'}
140
208
  assert_equal(<<HTML, render(<<HAML, :locals => {:hash => hash}))
@@ -176,6 +244,19 @@ HAML
176
244
  SOURCE
177
245
  end
178
246
 
247
+ def test_pre_code
248
+ assert_equal(<<HTML, render(<<HAML))
249
+ <pre><code>Foo&#x000A; bar&#x000A; baz</code></pre>
250
+ HTML
251
+ %pre
252
+ %code
253
+ :preserve
254
+ Foo
255
+ bar
256
+ baz
257
+ HAML
258
+ end
259
+
179
260
  def test_boolean_attributes
180
261
  assert_equal("<p bar baz='true' foo='bar'></p>\n",
181
262
  render("%p{:foo => 'bar', :bar => true, :baz => 'true'}", :format => :html4))
@@ -188,8 +269,23 @@ SOURCE
188
269
  render("%p{:foo => 'bar', :bar => false, :baz => 'false'}", :format => :xhtml))
189
270
  end
190
271
 
272
+ def test_both_whitespace_nukes_work_together
273
+ assert_equal(<<RESULT, render(<<SOURCE))
274
+ <p><q>Foo
275
+ Bar</q></p>
276
+ RESULT
277
+ %p
278
+ %q><= "Foo\\nBar"
279
+ SOURCE
280
+ end
281
+
282
+ def test_nil_option
283
+ assert_equal("<p foo='bar'></p>\n", render('%p{:foo => "bar"}', :attr_wrapper => nil))
284
+ end
285
+
286
+ # Regression tests
287
+
191
288
  def test_whitespace_nuke_with_both_newlines
192
- # Regression test
193
289
  assert_equal("<p>foo</p>\n", render('%p<= "\nfoo\n"'))
194
290
  assert_equal(<<HTML, render(<<HAML))
195
291
  <p>
@@ -201,17 +297,48 @@ HTML
201
297
  HAML
202
298
  end
203
299
 
204
- def test_both_whitespace_nukes_work_together
205
- assert_equal(<<RESULT, render(<<SOURCE))
206
- <p><q>Foo
207
- Bar</q></p>
208
- RESULT
300
+ def test_whitespace_nuke_with_tags_and_else
301
+ assert_equal(<<HTML, render(<<HAML))
302
+ <a>
303
+ <b>foo</b>
304
+ </a>
305
+ HTML
306
+ %a
307
+ %b<
308
+ - if false
309
+ = "foo"
310
+ - else
311
+ foo
312
+ HAML
313
+
314
+ assert_equal(<<HTML, render(<<HAML))
315
+ <a>
316
+ <b>
317
+ foo
318
+ </b>
319
+ </a>
320
+ HTML
321
+ %a
322
+ %b
323
+ - if false
324
+ = "foo"
325
+ - else
326
+ foo
327
+ HAML
328
+ end
329
+
330
+ def test_outer_whitespace_nuke_with_empty_script
331
+ assert_equal(<<HTML, render(<<HAML))
332
+ <p>
333
+ foo<a></a></p>
334
+ HTML
209
335
  %p
210
- %q><= "Foo\\nBar"
211
- SOURCE
336
+ foo
337
+ = " "
338
+ %a>
339
+ HAML
212
340
  end
213
341
 
214
- # Mostly a regression test
215
342
  def test_both_case_indentation_work_with_deeply_nested_code
216
343
  result = <<RESULT
217
344
  <h2>
@@ -238,6 +365,257 @@ HAML
238
365
  HAML
239
366
  end
240
367
 
368
+ def test_equals_block_with_ugly
369
+ assert_equal("foo\n", render(<<HAML, :ugly => true))
370
+ = capture_haml do
371
+ foo
372
+ HAML
373
+ end
374
+
375
+ def test_plain_equals_with_ugly
376
+ assert_equal("foo\nbar\n", render(<<HAML, :ugly => true))
377
+ = "foo"
378
+ bar
379
+ HAML
380
+ end
381
+
382
+ def test_inline_if
383
+ assert_equal(<<HTML, render(<<HAML))
384
+ <p>One</p>
385
+ <p></p>
386
+ <p>Three</p>
387
+ HTML
388
+ - for name in ["One", "Two", "Three"]
389
+ %p= name unless name == "Two"
390
+ HAML
391
+ end
392
+
393
+ def test_end_with_method_call
394
+ assert_equal(<<HTML, render(<<HAML))
395
+ 2|3|4
396
+ b-a-r
397
+ HTML
398
+ = [1, 2, 3].map do |i|
399
+ - i + 1
400
+ - end.join("|")
401
+ = "bar".gsub(/./) do |s|
402
+ - s + "-"
403
+ - end.gsub(/-$/) do |s|
404
+ - ''
405
+ HAML
406
+ end
407
+
408
+ def test_nested_end_with_method_call
409
+ assert_equal(<<HTML, render(<<HAML))
410
+ <p>
411
+ 2|3|4
412
+ b-a-r
413
+ </p>
414
+ HTML
415
+ %p
416
+ = [1, 2, 3].map do |i|
417
+ - i + 1
418
+ - end.join("|")
419
+ = "bar".gsub(/./) do |s|
420
+ - s + "-"
421
+ - end.gsub(/-$/) do |s|
422
+ - ''
423
+ HAML
424
+ end
425
+
426
+ def test_silent_end_with_stuff
427
+ assert_equal(<<HTML, render(<<HAML))
428
+ e
429
+ d
430
+ c
431
+ b
432
+ a
433
+ HTML
434
+ - str = "abcde"
435
+ - if true
436
+ = str.slice!(-1).chr
437
+ - end until str.empty?
438
+ HAML
439
+
440
+ assert_equal(<<HTML, render(<<HAML))
441
+ <p>hi!</p>
442
+ HTML
443
+ - if true
444
+ %p hi!
445
+ - end if "foo".gsub(/f/) do
446
+ - "z"
447
+ - end + "bar"
448
+ HAML
449
+ end
450
+
451
+ def test_multiline_with_colon_after_filter
452
+ assert_equal(<<HTML, render(<<HAML))
453
+ Foo
454
+ Bar
455
+ HTML
456
+ :plain
457
+ Foo
458
+ = { :a => "Bar", |
459
+ :b => "Baz" }[:a] |
460
+ HAML
461
+ assert_equal(<<HTML, render(<<HAML))
462
+
463
+ Bar
464
+ HTML
465
+ :plain
466
+ = { :a => "Bar", |
467
+ :b => "Baz" }[:a] |
468
+ HAML
469
+ end
470
+
471
+ def test_multiline_in_filter
472
+ assert_equal(<<HTML, render(<<HAML))
473
+ Foo |
474
+ Bar |
475
+ Baz
476
+ HTML
477
+ :plain
478
+ Foo |
479
+ Bar |
480
+ Baz
481
+ HAML
482
+ end
483
+
484
+ def test_curly_brace
485
+ assert_equal(<<HTML, render(<<HAML))
486
+ Foo { Bar
487
+ HTML
488
+ == Foo { Bar
489
+ HAML
490
+ end
491
+
492
+ def test_escape_html
493
+ html = <<HTML
494
+ &amp;
495
+ &
496
+ &amp;
497
+ HTML
498
+
499
+ assert_equal(html, render(<<HAML, :escape_html => true))
500
+ &= "&"
501
+ != "&"
502
+ = "&"
503
+ HAML
504
+
505
+ assert_equal(html, render(<<HAML, :escape_html => true))
506
+ &~ "&"
507
+ !~ "&"
508
+ ~ "&"
509
+ HAML
510
+
511
+ assert_equal(html, render(<<HAML, :escape_html => true))
512
+ & \#{"&"}
513
+ ! \#{"&"}
514
+ \#{"&"}
515
+ HAML
516
+
517
+ assert_equal(html, render(<<HAML, :escape_html => true))
518
+ &== \#{"&"}
519
+ !== \#{"&"}
520
+ == \#{"&"}
521
+ HAML
522
+
523
+ tag_html = <<HTML
524
+ <p>&amp;</p>
525
+ <p>&</p>
526
+ <p>&amp;</p>
527
+ HTML
528
+
529
+ assert_equal(tag_html, render(<<HAML, :escape_html => true))
530
+ %p&= "&"
531
+ %p!= "&"
532
+ %p= "&"
533
+ HAML
534
+
535
+ assert_equal(tag_html, render(<<HAML, :escape_html => true))
536
+ %p&~ "&"
537
+ %p!~ "&"
538
+ %p~ "&"
539
+ HAML
540
+
541
+ assert_equal(tag_html, render(<<HAML, :escape_html => true))
542
+ %p& \#{"&"}
543
+ %p! \#{"&"}
544
+ %p \#{"&"}
545
+ HAML
546
+
547
+ assert_equal(tag_html, render(<<HAML, :escape_html => true))
548
+ %p&== \#{"&"}
549
+ %p!== \#{"&"}
550
+ %p== \#{"&"}
551
+ HAML
552
+ end
553
+
554
+ def test_new_attrs_with_hash
555
+ assert_equal("<a href='#'></a>\n", render('%a(href="#")'))
556
+ end
557
+
558
+ def test_javascript_filter_with_dynamic_interp_and_escape_html
559
+ assert_equal(<<HTML, render(<<HAML, :escape_html => true))
560
+ <script type='text/javascript'>
561
+ //<![CDATA[
562
+ & < > &
563
+ //]]>
564
+ </script>
565
+ HTML
566
+ :javascript
567
+ & < > \#{"&"}
568
+ HAML
569
+ end
570
+
571
+ def test_erb_filter_with_multiline_expr
572
+ assert_equal(<<HTML, render(<<HAML))
573
+ foobarbaz
574
+ HTML
575
+ :erb
576
+ <%= "foo" +
577
+ "bar" +
578
+ "baz" %>
579
+ HAML
580
+ end
581
+
582
+ def test_silent_script_with_hyphen_case
583
+ assert_equal("", render("- 'foo-case-bar-case'"))
584
+ end
585
+
586
+ def test_silent_script_with_hyphen_end
587
+ assert_equal("", render("- 'foo-end-bar-end'"))
588
+ end
589
+
590
+ def test_silent_script_with_hyphen_end_and_block
591
+ assert_equal(<<HTML, render(<<HAML))
592
+ <p>foo-end</p>
593
+ <p>bar-end</p>
594
+ HTML
595
+ - "foo-end-bar-end".gsub(/\\w+-end/) do |s|
596
+ %p= s
597
+ HAML
598
+ end
599
+
600
+ def test_if_without_content_and_else
601
+ assert_equal(<<HTML, render(<<HAML))
602
+ foo
603
+ HTML
604
+ - if false
605
+ - else
606
+ foo
607
+ HAML
608
+ end
609
+
610
+ def test_html_attributes_with_hash
611
+ assert_equal("<a href='#' rel='top'>Foo</a>\n",
612
+ render('%a(href="#" rel="top") Foo'))
613
+ assert_equal("<a href='#'>Foo</a>\n",
614
+ render('%a(href="#") #{"Foo"}'))
615
+
616
+ assert_equal("<a href='#\"'></a>\n", render('%a(href="#\\"")'))
617
+ end
618
+
241
619
  # HTML escaping tests
242
620
 
243
621
  def test_ampersand_equals_should_escape
@@ -281,30 +659,55 @@ HAML
281
659
  assert_equal("<img alt='' src='foo&#x000A;.png' />\n",
282
660
  render("%img{:width => nil, :src => \"foo\\n.png\", :alt => String.new}"))
283
661
  end
284
-
662
+
663
+ def test_string_double_equals_should_be_esaped
664
+ assert_equal("<p>4&&lt;</p>\n", render("%p== \#{2+2}&\#{'<'}", :escape_html => true))
665
+ assert_equal("<p>4&<</p>\n", render("%p== \#{2+2}&\#{'<'}", :escape_html => false))
666
+ end
667
+
668
+ def test_escaped_inline_string_double_equals
669
+ assert_equal("<p>4&&lt;</p>\n", render("%p&== \#{2+2}&\#{'<'}", :escape_html => true))
670
+ assert_equal("<p>4&&lt;</p>\n", render("%p&== \#{2+2}&\#{'<'}", :escape_html => false))
671
+ end
672
+
673
+ def test_unescaped_inline_string_double_equals
674
+ assert_equal("<p>4&<</p>\n", render("%p!== \#{2+2}&\#{'<'}", :escape_html => true))
675
+ assert_equal("<p>4&<</p>\n", render("%p!== \#{2+2}&\#{'<'}", :escape_html => false))
676
+ end
677
+
678
+ def test_escaped_string_double_equals
679
+ assert_equal("<p>\n 4&&lt;\n</p>\n", render("%p\n &== \#{2+2}&\#{'<'}", :escape_html => true))
680
+ assert_equal("<p>\n 4&&lt;\n</p>\n", render("%p\n &== \#{2+2}&\#{'<'}", :escape_html => false))
681
+ end
682
+
683
+ def test_unescaped_string_double_equals
684
+ assert_equal("<p>\n 4&<\n</p>\n", render("%p\n !== \#{2+2}&\#{'<'}", :escape_html => true))
685
+ assert_equal("<p>\n 4&<\n</p>\n", render("%p\n !== \#{2+2}&\#{'<'}", :escape_html => false))
686
+ end
687
+
285
688
  def test_string_interpolation_should_be_esaped
286
- assert_equal("<p>4&amp;3</p>\n", render("%p== \#{2+2}&\#{2+1}", :escape_html => true))
287
- assert_equal("<p>4&3</p>\n", render("%p== \#{2+2}&\#{2+1}", :escape_html => false))
689
+ assert_equal("<p>4&&lt;</p>\n", render("%p \#{2+2}&\#{'<'}", :escape_html => true))
690
+ assert_equal("<p>4&<</p>\n", render("%p \#{2+2}&\#{'<'}", :escape_html => false))
288
691
  end
289
692
 
290
693
  def test_escaped_inline_string_interpolation
291
- assert_equal("<p>4&amp;3</p>\n", render("%p&== \#{2+2}&\#{2+1}", :escape_html => true))
292
- assert_equal("<p>4&amp;3</p>\n", render("%p&== \#{2+2}&\#{2+1}", :escape_html => false))
694
+ assert_equal("<p>4&&lt;</p>\n", render("%p& \#{2+2}&\#{'<'}", :escape_html => true))
695
+ assert_equal("<p>4&&lt;</p>\n", render("%p& \#{2+2}&\#{'<'}", :escape_html => false))
293
696
  end
294
697
 
295
698
  def test_unescaped_inline_string_interpolation
296
- assert_equal("<p>4&3</p>\n", render("%p!== \#{2+2}&\#{2+1}", :escape_html => true))
297
- assert_equal("<p>4&3</p>\n", render("%p!== \#{2+2}&\#{2+1}", :escape_html => false))
699
+ assert_equal("<p>4&<</p>\n", render("%p! \#{2+2}&\#{'<'}", :escape_html => true))
700
+ assert_equal("<p>4&<</p>\n", render("%p! \#{2+2}&\#{'<'}", :escape_html => false))
298
701
  end
299
702
 
300
703
  def test_escaped_string_interpolation
301
- assert_equal("<p>\n 4&amp;3\n</p>\n", render("%p\n &== \#{2+2}&\#{2+1}", :escape_html => true))
302
- assert_equal("<p>\n 4&amp;3\n</p>\n", render("%p\n &== \#{2+2}&\#{2+1}", :escape_html => false))
704
+ assert_equal("<p>\n 4&&lt;\n</p>\n", render("%p\n & \#{2+2}&\#{'<'}", :escape_html => true))
705
+ assert_equal("<p>\n 4&&lt;\n</p>\n", render("%p\n & \#{2+2}&\#{'<'}", :escape_html => false))
303
706
  end
304
707
 
305
708
  def test_unescaped_string_interpolation
306
- assert_equal("<p>\n 4&3\n</p>\n", render("%p\n !== \#{2+2}&\#{2+1}", :escape_html => true))
307
- assert_equal("<p>\n 4&3\n</p>\n", render("%p\n !== \#{2+2}&\#{2+1}", :escape_html => false))
709
+ assert_equal("<p>\n 4&<\n</p>\n", render("%p\n ! \#{2+2}&\#{'<'}", :escape_html => true))
710
+ assert_equal("<p>\n 4&<\n</p>\n", render("%p\n ! \#{2+2}&\#{'<'}", :escape_html => false))
308
711
  end
309
712
 
310
713
  def test_scripts_should_respect_escape_html_option
@@ -361,6 +764,7 @@ HAML
361
764
  def test_doctypes
362
765
  assert_equal('<!DOCTYPE html>',
363
766
  render('!!!', :format => :html5).strip)
767
+ assert_equal('<!DOCTYPE html>', render('!!! 5').strip)
364
768
  assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
365
769
  render('!!! strict').strip)
366
770
  assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
@@ -454,18 +858,28 @@ HAML
454
858
  assert_equal("<a b='2' />\nc\n", render("%a{'b' => 1 + 1}/\n= 'c'\n"))
455
859
  end
456
860
 
457
- def test_exceptions
458
- EXCEPTION_MAP.each do |key, value|
861
+ EXCEPTION_MAP.each do |key, value|
862
+ define_method("test_exception (#{key.inspect})") do
459
863
  begin
460
- render(key, :filename => "(exception test for #{key.inspect})")
864
+ render(key, :filename => __FILE__)
461
865
  rescue Exception => err
462
866
  value = [value] unless value.is_a?(Array)
463
867
  expected_message, line_no = value
464
868
  line_no ||= key.split("\n").length
465
- line_reported = err.backtrace[0].gsub(/\(.+\):/, '').to_i
466
869
 
467
- assert_equal(expected_message, err.message, "Line: #{key}")
468
- assert_equal(line_no, line_reported, "Line: #{key}")
870
+ if expected_message == :compile
871
+ if Haml::Util.ruby1_8?
872
+ assert_match(/^compile error\n/, err.message, "Line: #{key}")
873
+ else
874
+ assert_match(/^#{Regexp.quote __FILE__}:#{line_no}: syntax error,/, err.message, "Line: #{key}")
875
+ end
876
+ else
877
+ assert_equal(expected_message, err.message, "Line: #{key}")
878
+ end
879
+
880
+ if Haml::Util.ruby1_8?
881
+ assert_match(/^#{Regexp.escape(__FILE__)}:#{line_no}/, err.backtrace[0], "Line: #{key}")
882
+ end
469
883
  else
470
884
  assert(false, "Exception not raised for\n#{key}")
471
885
  end
@@ -499,7 +913,7 @@ HAML
499
913
  end
500
914
 
501
915
  def test_unbalanced_brackets
502
- render('== #{1 + 5} foo #{6 + 7 bar #{8 + 9}')
916
+ render('foo #{1 + 5} foo #{6 + 7 bar #{8 + 9}')
503
917
  rescue Haml::SyntaxError => e
504
918
  assert_equal("Unbalanced brackets.", e.message)
505
919
  end
@@ -591,6 +1005,32 @@ END
591
1005
  assert_equal("FOO\n", engine("= upcase").render_proc("foo".instance_eval{binding}).call)
592
1006
  end
593
1007
 
1008
+ def test_haml_buffer_gets_reset_even_with_exception
1009
+ scope = Object.new
1010
+ render("- raise Haml::Error", :scope => scope)
1011
+ assert(false, "Expected exception")
1012
+ rescue Exception
1013
+ assert_nil(scope.send(:haml_buffer))
1014
+ end
1015
+
1016
+ def test_def_method_haml_buffer_gets_reset_even_with_exception
1017
+ scope = Object.new
1018
+ engine("- raise Haml::Error").def_method(scope, :render)
1019
+ scope.render
1020
+ assert(false, "Expected exception")
1021
+ rescue Exception
1022
+ assert_nil(scope.send(:haml_buffer))
1023
+ end
1024
+
1025
+ def test_render_proc_haml_buffer_gets_reset_even_with_exception
1026
+ scope = Object.new
1027
+ proc = engine("- raise Haml::Error").render_proc(scope)
1028
+ proc.call
1029
+ assert(false, "Expected exception")
1030
+ rescue Exception
1031
+ assert_nil(scope.send(:haml_buffer))
1032
+ end
1033
+
594
1034
  def test_ugly_true
595
1035
  assert_equal("<div id='outer'>\n<div id='inner'>\n<p>hello world</p>\n</div>\n</div>\n",
596
1036
  render("#outer\n #inner\n %p hello world", :ugly => true))
@@ -618,6 +1058,22 @@ END
618
1058
  assert_raise(Haml::Error, "Invalid output format :html1") { engine("%br", :format => :html1) }
619
1059
  end
620
1060
 
1061
+ def test_static_hashes
1062
+ assert_equal("<a b='a =&gt; b'></a>\n", render("%a{:b => 'a => b'}", :suppress_eval => true))
1063
+ assert_equal("<a b='a, b'></a>\n", render("%a{:b => 'a, b'}", :suppress_eval => true))
1064
+ assert_equal("<a b='a\tb'></a>\n", render('%a{:b => "a\tb"}', :suppress_eval => true))
1065
+ assert_equal("<a b='a\#{foo}b'></a>\n", render('%a{:b => "a\\#{foo}b"}', :suppress_eval => true))
1066
+ end
1067
+
1068
+ def test_dynamic_hashes_with_suppress_eval
1069
+ assert_equal("<a></a>\n", render('%a{:b => "a #{1 + 1} b", :c => "d"}', :suppress_eval => true))
1070
+ end
1071
+
1072
+ def test_utf8_attrs
1073
+ assert_equal("<a href='héllo'></a>\n", render("%a{:href => 'héllo'}"))
1074
+ assert_equal("<a href='héllo'></a>\n", render("%a(href='héllo')"))
1075
+ end
1076
+
621
1077
  # HTML 4.0
622
1078
 
623
1079
  def test_html_has_no_self_closing_tags
@@ -654,4 +1110,163 @@ END
654
1110
  def test_html5_doctype
655
1111
  assert_equal %{<!DOCTYPE html>\n}, render('!!!', :format => :html5)
656
1112
  end
1113
+
1114
+ # New attributes
1115
+
1116
+ def test_basic_new_attributes
1117
+ assert_equal("<a>bar</a>\n", render("%a() bar"))
1118
+ assert_equal("<a href='foo'>bar</a>\n", render("%a(href='foo') bar"))
1119
+ assert_equal("<a b='c' c='d' d='e'>baz</a>\n", render(%q{%a(b="c" c='d' d="e") baz}))
1120
+ end
1121
+
1122
+ def test_new_attribute_ids
1123
+ assert_equal("<div id='foo_bar'></div>\n", render("#foo(id='bar')"))
1124
+ assert_equal("<div id='foo_bar_baz'></div>\n", render("#foo{:id => 'bar'}(id='baz')"))
1125
+ assert_equal("<div id='foo_baz_bar'></div>\n", render("#foo(id='baz'){:id => 'bar'}"))
1126
+ foo = User.new(42)
1127
+ assert_equal("<div class='struct_user' id='foo_baz_bar_struct_user_42'></div>\n",
1128
+ render("#foo(id='baz'){:id => 'bar'}[foo]", :locals => {:foo => foo}))
1129
+ assert_equal("<div class='struct_user' id='foo_baz_bar_struct_user_42'></div>\n",
1130
+ render("#foo(id='baz')[foo]{:id => 'bar'}", :locals => {:foo => foo}))
1131
+ assert_equal("<div class='struct_user' id='foo_baz_bar_struct_user_42'></div>\n",
1132
+ render("#foo[foo](id='baz'){:id => 'bar'}", :locals => {:foo => foo}))
1133
+ assert_equal("<div class='struct_user' id='foo_bar_baz_struct_user_42'></div>\n",
1134
+ render("#foo[foo]{:id => 'bar'}(id='baz')", :locals => {:foo => foo}))
1135
+ end
1136
+
1137
+ def test_new_attribute_classes
1138
+ assert_equal("<div class='bar foo'></div>\n", render(".foo(class='bar')"))
1139
+ assert_equal("<div class='bar baz foo'></div>\n", render(".foo{:class => 'bar'}(class='baz')"))
1140
+ assert_equal("<div class='bar baz foo'></div>\n", render(".foo(class='baz'){:class => 'bar'}"))
1141
+ foo = User.new(42)
1142
+ assert_equal("<div class='bar baz foo struct_user' id='struct_user_42'></div>\n",
1143
+ render(".foo(class='baz'){:class => 'bar'}[foo]", :locals => {:foo => foo}))
1144
+ assert_equal("<div class='bar baz foo struct_user' id='struct_user_42'></div>\n",
1145
+ render(".foo[foo](class='baz'){:class => 'bar'}", :locals => {:foo => foo}))
1146
+ assert_equal("<div class='bar baz foo struct_user' id='struct_user_42'></div>\n",
1147
+ render(".foo[foo]{:class => 'bar'}(class='baz')", :locals => {:foo => foo}))
1148
+ end
1149
+
1150
+ def test_dynamic_new_attributes
1151
+ assert_equal("<a href='12'>bar</a>\n", render("%a(href=foo) bar", :locals => {:foo => 12}))
1152
+ assert_equal("<a b='12' c='13' d='14'>bar</a>\n", render("%a(b=b c='13' d=d) bar", :locals => {:b => 12, :d => 14}))
1153
+ end
1154
+
1155
+ def test_new_attribute_interpolation
1156
+ assert_equal("<a href='12'>bar</a>\n", render('%a(href="1#{1 + 1}") bar'))
1157
+ assert_equal("<a href='2: 2, 3: 3'>bar</a>\n", render(%q{%a(href='2: #{1 + 1}, 3: #{foo}') bar}, :locals => {:foo => 3}))
1158
+ assert_equal(%Q{<a href='1\#{1 + 1}'>bar</a>\n}, render('%a(href="1\#{1 + 1}") bar'))
1159
+ end
1160
+
1161
+ def test_truthy_new_attributes
1162
+ assert_equal("<a href='href'>bar</a>\n", render("%a(href) bar"))
1163
+ assert_equal("<a bar='baz' href>bar</a>\n", render("%a(href bar='baz') bar", :format => :html5))
1164
+ assert_equal("<a href='href'>bar</a>\n", render("%a(href=true) bar"))
1165
+ assert_equal("<a>bar</a>\n", render("%a(href=false) bar"))
1166
+ end
1167
+
1168
+ def test_new_attribute_parsing
1169
+ assert_equal("<a a2='b2'>bar</a>\n", render("%a(a2=b2) bar", :locals => {:b2 => 'b2'}))
1170
+ assert_equal(%Q{<a a='foo"bar'>bar</a>\n}, render(%q{%a(a="#{'foo"bar'}") bar})) #'
1171
+ assert_equal(%Q{<a a="foo'bar">bar</a>\n}, render(%q{%a(a="#{"foo'bar"}") bar})) #'
1172
+ assert_equal(%Q{<a a='foo"bar'>bar</a>\n}, render(%q{%a(a='foo"bar') bar}))
1173
+ assert_equal(%Q{<a a="foo'bar">bar</a>\n}, render(%q{%a(a="foo'bar") bar}))
1174
+ assert_equal("<a a:b='foo'>bar</a>\n", render("%a(a:b='foo') bar"))
1175
+ assert_equal("<a a='foo' b='bar'>bar</a>\n", render("%a(a = 'foo' b = 'bar') bar"))
1176
+ assert_equal("<a a='foo' b='bar'>bar</a>\n", render("%a(a = foo b = bar) bar", :locals => {:foo => 'foo', :bar => 'bar'}))
1177
+ assert_equal("<a a='foo'>(b='bar')</a>\n", render("%a(a='foo')(b='bar')"))
1178
+ assert_equal("<a a='foo)bar'>baz</a>\n", render("%a(a='foo)bar') baz"))
1179
+ assert_equal("<a a='foo'>baz</a>\n", render("%a( a = 'foo' ) baz"))
1180
+ end
1181
+
1182
+ def test_new_attribute_escaping
1183
+ assert_equal(%Q{<a a='foo " bar'>bar</a>\n}, render(%q{%a(a="foo \" bar") bar}))
1184
+ assert_equal(%Q{<a a='foo \\" bar'>bar</a>\n}, render(%q{%a(a="foo \\\\\" bar") bar}))
1185
+
1186
+ assert_equal(%Q{<a a="foo ' bar">bar</a>\n}, render(%q{%a(a='foo \' bar') bar}))
1187
+ assert_equal(%Q{<a a="foo \\' bar">bar</a>\n}, render(%q{%a(a='foo \\\\\' bar') bar}))
1188
+
1189
+ assert_equal(%Q{<a a='foo \\ bar'>bar</a>\n}, render(%q{%a(a="foo \\\\ bar") bar}))
1190
+ assert_equal(%Q{<a a='foo \#{1 + 1} bar'>bar</a>\n}, render(%q{%a(a="foo \#{1 + 1} bar") bar}))
1191
+ end
1192
+
1193
+ def test_multiline_new_attribute
1194
+ assert_equal("<a a='b' c='d'>bar</a>\n", render("%a(a='b'\n c='d') bar"))
1195
+ assert_equal("<a a='b' b='c' c='d' d='e' e='f' f='j'>bar</a>\n",
1196
+ render("%a(a='b' b='c'\n c='d' d=e\n e='f' f='j') bar", :locals => {:e => 'e'}))
1197
+ end
1198
+
1199
+ def test_new_and_old_attributes
1200
+ assert_equal("<a a='b' c='d'>bar</a>\n", render("%a(a='b'){:c => 'd'} bar"))
1201
+ assert_equal("<a a='b' c='d'>bar</a>\n", render("%a{:c => 'd'}(a='b') bar"))
1202
+ assert_equal("<a a='b' c='d'>bar</a>\n", render("%a(c='d'){:a => 'b'} bar"))
1203
+ assert_equal("<a a='b' c='d'>bar</a>\n", render("%a{:a => 'b'}(c='d') bar"))
1204
+
1205
+ assert_equal("<a a='d'>bar</a>\n", render("%a{:a => 'b'}(a='d') bar"))
1206
+ assert_equal("<a a='b'>bar</a>\n", render("%a(a='d'){:a => 'b'} bar"))
1207
+
1208
+ assert_equal("<a a='b' b='c' c='d' d='e'>bar</a>\n",
1209
+ render("%a{:a => 'b',\n:b => 'c'}(c='d'\nd='e') bar"))
1210
+ end
1211
+
1212
+ # Encodings
1213
+
1214
+ unless Haml::Util.ruby1_8?
1215
+ def test_default_encoding
1216
+ assert_equal(Encoding.find("utf-8"), render(<<HAML.encode("us-ascii")).encoding)
1217
+ HTML
1218
+ %p bar
1219
+ %p foo
1220
+ HAML
1221
+ end
1222
+
1223
+ def test_convert_template_render
1224
+ assert_equal(<<HTML, render(<<HAML.encode("iso-8859-1"), :encoding => "utf-8"))
1225
+ <p>bâr</p>
1226
+ <p>föö</p>
1227
+ HTML
1228
+ %p bâr
1229
+ %p föö
1230
+ HAML
1231
+ end
1232
+
1233
+ def test_fake_ascii_encoding
1234
+ assert_equal(<<HTML.force_encoding("ascii-8bit"), render(<<HAML, :encoding => "ascii-8bit"))
1235
+ <p>bâr</p>
1236
+ <p>föö</p>
1237
+ HTML
1238
+ %p bâr
1239
+ %p föö
1240
+ HAML
1241
+ end
1242
+
1243
+ def test_convert_template_render_proc
1244
+ assert_converts_template_properly {|e| e.render_proc.call}
1245
+ end
1246
+
1247
+ def test_convert_template_render
1248
+ assert_converts_template_properly {|e| e.render}
1249
+ end
1250
+
1251
+ def test_convert_template_def_method
1252
+ assert_converts_template_properly do |e|
1253
+ o = Object.new
1254
+ e.def_method(o, :render)
1255
+ o.render
1256
+ end
1257
+ end
1258
+ end
1259
+
1260
+ private
1261
+
1262
+ def assert_converts_template_properly
1263
+ engine = Haml::Engine.new(<<HAML.encode("iso-8859-1"), :encoding => "utf-8")
1264
+ %p bâr
1265
+ %p föö
1266
+ HAML
1267
+ assert_equal(<<HTML, yield(engine))
1268
+ <p>bâr</p>
1269
+ <p>föö</p>
1270
+ HTML
1271
+ end
657
1272
  end