spree 0.7.1 → 0.8.0

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

Potentially problematic release.


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

Files changed (959) hide show
  1. data/CHANGELOG +44 -11
  2. data/CONTRIBUTORS +1 -1
  3. data/INSTALL +4 -5
  4. data/README.markdown +1 -34
  5. data/app/controllers/admin/base_controller.rb +6 -0
  6. data/app/controllers/admin/configurations_controller.rb +7 -1
  7. data/app/controllers/admin/creditcard_payments_controller.rb +6 -56
  8. data/app/controllers/admin/products_controller.rb +9 -0
  9. data/app/controllers/admin/prototypes_controller.rb +4 -8
  10. data/app/controllers/admin/shipments_controller.rb +37 -0
  11. data/{vendor/extensions/shipping/app → app}/controllers/admin/shipping_categories_controller.rb +1 -1
  12. data/{vendor/extensions/shipping/app → app}/controllers/admin/shipping_methods_controller.rb +1 -1
  13. data/app/controllers/admin/users_controller.rb +6 -3
  14. data/app/controllers/admin/zones_controller.rb +17 -36
  15. data/app/controllers/application.rb +74 -12
  16. data/app/controllers/content_controller.rb +4 -0
  17. data/app/controllers/orders_controller.rb +52 -26
  18. data/app/controllers/password_resets_controller.rb +44 -0
  19. data/app/controllers/spree/base_controller.rb +1 -1
  20. data/app/controllers/states_controller.rb +8 -10
  21. data/app/controllers/taxons_controller.rb +0 -6
  22. data/app/controllers/user_sessions_controller.rb +38 -0
  23. data/app/controllers/users_controller.rb +29 -14
  24. data/app/helpers/admin/base_helper.rb +127 -4
  25. data/app/helpers/admin/orders_helper.rb +1 -1
  26. data/{vendor/extensions/shipping/app → app}/helpers/admin/shipping_categories_helper.rb +0 -0
  27. data/{vendor/extensions/shipping/app → app}/helpers/admin/shipping_methods_helper.rb +0 -0
  28. data/app/helpers/admin/zones_helper.rb +4 -4
  29. data/app/helpers/application_helper.rb +0 -13
  30. data/app/helpers/orders_helper.rb +0 -11
  31. data/app/helpers/spree/base_helper.rb +51 -3
  32. data/app/helpers/taxons_helper.rb +13 -12
  33. data/app/models/address.rb +0 -1
  34. data/app/models/app_configuration.rb +4 -1
  35. data/app/models/country.rb +2 -2
  36. data/app/models/creditcard.rb +10 -6
  37. data/app/models/creditcard_payment.rb +1 -0
  38. data/app/models/image.rb +1 -1
  39. data/app/models/line_item.rb +2 -0
  40. data/app/models/option_type.rb +1 -0
  41. data/app/models/order.rb +51 -29
  42. data/app/models/order_mailer.rb +4 -4
  43. data/app/models/product.rb +27 -1
  44. data/app/models/product_property.rb +0 -1
  45. data/app/models/property.rb +3 -0
  46. data/app/models/prototype.rb +1 -0
  47. data/app/models/shipment.rb +13 -17
  48. data/app/models/tax_category.rb +1 -0
  49. data/app/models/user.rb +32 -117
  50. data/app/models/user_mailer.rb +11 -0
  51. data/app/models/user_session.rb +2 -0
  52. data/app/models/variant.rb +6 -2
  53. data/app/models/zone.rb +34 -18
  54. data/app/models/zone_member.rb +9 -3
  55. data/app/views/account/login.html.erb +2 -0
  56. data/app/views/admin/configurations/index.html.erb +1 -1
  57. data/app/views/admin/creditcard_payments/edit.html.erb +11 -9
  58. data/app/views/admin/creditcard_payments/new.html.erb +14 -27
  59. data/app/views/admin/general_settings/edit.html.erb +28 -11
  60. data/app/views/admin/general_settings/show.html.erb +29 -16
  61. data/app/views/admin/inventory_settings/edit.html.erb +20 -11
  62. data/app/views/admin/inventory_settings/show.html.erb +9 -11
  63. data/app/views/admin/mail_settings/edit.html.erb +109 -80
  64. data/app/views/admin/mail_settings/show.html.erb +55 -41
  65. data/app/views/admin/option_types/_form.html.erb +18 -22
  66. data/app/views/admin/option_types/_option_value.html.erb +1 -1
  67. data/app/views/admin/option_types/available.html.erb +26 -30
  68. data/app/views/admin/option_types/edit.html.erb +5 -2
  69. data/app/views/admin/option_types/index.html.erb +36 -35
  70. data/app/views/admin/option_types/new.html.erb +7 -4
  71. data/app/views/admin/option_types/selected.html.erb +28 -28
  72. data/app/views/admin/orders/index.html.erb +86 -112
  73. data/app/views/admin/orders/show.html.erb +31 -51
  74. data/app/views/admin/overview/index.html.erb +1 -1
  75. data/app/views/admin/payments/index.html.erb +14 -6
  76. data/app/views/admin/product_properties/_product_property.html.erb +1 -1
  77. data/app/views/admin/product_properties/index.html.erb +21 -16
  78. data/app/views/admin/products/_form.html.erb +79 -71
  79. data/app/views/admin/products/_images.html.erb +27 -30
  80. data/app/views/admin/products/_option_types.html.erb +2 -2
  81. data/app/views/admin/products/_properties_form.erb +7 -0
  82. data/app/views/admin/products/edit.html.erb +9 -6
  83. data/app/views/admin/products/index.html.erb +79 -67
  84. data/app/views/admin/products/new.html.erb +51 -5
  85. data/app/views/admin/properties/_form.html.erb +12 -14
  86. data/app/views/admin/properties/edit.html.erb +3 -2
  87. data/app/views/admin/properties/index.html.erb +26 -17
  88. data/app/views/admin/properties/new.html.erb +5 -3
  89. data/app/views/admin/prototypes/_form.html.erb +38 -15
  90. data/app/views/admin/prototypes/available.html.erb +7 -7
  91. data/app/views/admin/prototypes/edit.html.erb +2 -2
  92. data/app/views/admin/prototypes/index.html.erb +24 -16
  93. data/app/views/admin/prototypes/new.html.erb +4 -2
  94. data/app/views/admin/reports/index.html.erb +18 -23
  95. data/app/views/admin/reports/sales_total.html.erb +25 -26
  96. data/app/views/admin/shared/_additional_field.html.erb +5 -0
  97. data/app/views/admin/shared/_address.html.erb +13 -0
  98. data/app/views/admin/shared/_configuration_menu.html.erb +18 -0
  99. data/app/views/admin/shared/_edit_resource_links.html.erb +4 -0
  100. data/app/views/admin/shared/_form_address.html.erb +50 -0
  101. data/app/views/admin/shared/_new_resource_links.html.erb +4 -0
  102. data/app/views/admin/shared/_order_details.html.erb +36 -0
  103. data/{vendor/plugins/has_many_polymorphs/test/fixtures/eaters_foodstuffs.yml → app/views/admin/shared/_order_sub_menu.html.erb} +0 -0
  104. data/app/views/admin/shared/_order_tabs.html.erb +27 -0
  105. data/app/views/admin/shared/_product_sub_menu.html.erb +8 -0
  106. data/app/views/admin/shared/_product_tabs.html.erb +35 -0
  107. data/app/views/admin/shared/_report_criteria.html.erb +23 -0
  108. data/app/views/admin/shared/_show_resource_links.html.erb +5 -0
  109. data/app/views/admin/shipments/_details.html.erb +19 -0
  110. data/app/views/admin/shipments/_form.html.erb +21 -0
  111. data/app/views/admin/shipments/edit.html.erb +12 -0
  112. data/{vendor/extensions/shipping/app → app}/views/admin/shipments/index.html.erb +8 -8
  113. data/app/views/admin/shipments/new.html.erb +14 -0
  114. data/{vendor/extensions/shipping/app → app}/views/admin/shipping_categories/_form.html.erb +0 -0
  115. data/{vendor/extensions/shipping/app → app}/views/admin/shipping_categories/edit.html.erb +1 -1
  116. data/app/views/admin/shipping_categories/index.html.erb +27 -0
  117. data/{vendor/extensions/shipping/app → app}/views/admin/shipping_categories/new.html.erb +1 -1
  118. data/{vendor/extensions/shipping/app → app}/views/admin/shipping_methods/_form.html.erb +1 -1
  119. data/{vendor/extensions/shipping/app → app}/views/admin/shipping_methods/edit.html.erb +1 -1
  120. data/app/views/admin/shipping_methods/index.html.erb +34 -0
  121. data/{vendor/extensions/shipping/app → app}/views/admin/shipping_methods/new.html.erb +1 -1
  122. data/app/views/admin/states/_form.html.erb +9 -10
  123. data/app/views/admin/states/_state_list.html.erb +10 -7
  124. data/app/views/admin/states/edit.html.erb +4 -2
  125. data/app/views/admin/states/index.html.erb +11 -4
  126. data/app/views/admin/states/new.html.erb +4 -2
  127. data/app/views/admin/tax_categories/_form.html.erb +9 -11
  128. data/app/views/admin/tax_categories/edit.html.erb +4 -2
  129. data/app/views/admin/tax_categories/index.html.erb +19 -9
  130. data/app/views/admin/tax_categories/new.html.erb +4 -2
  131. data/app/views/admin/tax_categories/show.html.erb +1 -0
  132. data/app/views/admin/taxonomies/_form.html.erb +5 -9
  133. data/app/views/admin/taxonomies/_list.html.erb +4 -4
  134. data/app/views/admin/taxonomies/_yui_head.html.erb +2 -16
  135. data/app/views/admin/taxonomies/edit.html.erb +13 -12
  136. data/app/views/admin/taxonomies/index.html.erb +11 -2
  137. data/app/views/admin/taxonomies/new.html.erb +7 -4
  138. data/app/views/admin/taxons/_taxon_table.html.erb +9 -9
  139. data/app/views/admin/taxons/available.js.erb +8 -8
  140. data/app/views/admin/taxons/selected.html.erb +10 -9
  141. data/app/views/admin/users/_form.html.erb +35 -36
  142. data/app/views/admin/users/edit.html.erb +3 -3
  143. data/app/views/admin/users/index.html.erb +45 -47
  144. data/app/views/admin/users/new.html.erb +5 -5
  145. data/app/views/admin/users/show.html.erb +8 -5
  146. data/app/views/admin/variants/_form.html.erb +36 -31
  147. data/app/views/admin/variants/edit.html.erb +5 -4
  148. data/app/views/admin/variants/index.html.erb +52 -50
  149. data/app/views/admin/variants/new.html.erb +3 -3
  150. data/app/views/admin/zones/_country_member.html.erb +5 -0
  151. data/app/views/admin/zones/_form.html.erb +26 -65
  152. data/app/views/admin/zones/_member_type.html.erb +15 -0
  153. data/app/views/admin/zones/_state_member.html.erb +5 -0
  154. data/app/views/admin/zones/_zone_member.html.erb +5 -0
  155. data/app/views/admin/zones/edit.html.erb +6 -4
  156. data/app/views/admin/zones/index.html.erb +18 -7
  157. data/app/views/admin/zones/new.html.erb +6 -4
  158. data/app/views/{checkout → content}/cvv.html.erb +0 -2
  159. data/app/views/layouts/admin.html.erb +75 -60
  160. data/app/views/layouts/application.html.erb +51 -75
  161. data/app/views/orders/_billing.html.erb +53 -0
  162. data/app/views/orders/_checkout_form.html.erb +14 -0
  163. data/app/views/{checkout/_confirm_order.erb → orders/_confirmation.html.erb} +3 -1
  164. data/app/views/orders/_form.html.erb +1 -2
  165. data/app/views/orders/_line_item.html.erb +15 -16
  166. data/app/views/orders/_payment.html.erb +30 -0
  167. data/app/views/orders/_registration.html.erb +60 -0
  168. data/app/views/orders/_shipping.html.erb +54 -0
  169. data/app/views/orders/_shipping_method.html.erb +10 -0
  170. data/app/views/orders/checkout.html.erb +15 -0
  171. data/app/views/orders/edit.html.erb +20 -20
  172. data/app/views/orders/new.html.erb +9 -8
  173. data/app/views/orders/show.html.erb +2 -4
  174. data/app/views/password_resets/edit.html.erb +12 -0
  175. data/app/views/password_resets/new.html.erb +11 -0
  176. data/app/views/products/_cart_form.html.erb +46 -0
  177. data/app/views/products/_properties.html.erb +8 -0
  178. data/app/views/products/_thumbnails.html.erb +27 -5
  179. data/app/views/products/index.html.erb +3 -8
  180. data/app/views/products/show.html.erb +23 -68
  181. data/app/views/shared/_footer.html.erb +8 -3
  182. data/app/views/shared/_login.html.erb +17 -16
  183. data/app/views/shared/_login_bar.html.erb +6 -0
  184. data/app/views/shared/_new_resource_links.html.erb +1 -1
  185. data/app/views/shared/_order_details.html.erb +8 -8
  186. data/app/views/shared/_products.html.erb +21 -17
  187. data/app/views/shared/_store_menu.html.erb +2 -5
  188. data/app/views/shared/_taxonomies.html.erb +8 -5
  189. data/app/views/states/index.js.erb +1 -10
  190. data/app/views/taxons/_taxon.html.erb +2 -3
  191. data/app/views/taxons/show.html.erb +10 -6
  192. data/app/views/user_mailer/password_reset_instructions.erb +9 -0
  193. data/app/views/{account → user_sessions}/authorization_failure.html.erb +0 -0
  194. data/app/views/user_sessions/new.html.erb +6 -0
  195. data/app/views/users/_form.html.erb +16 -23
  196. data/app/views/users/new.html.erb +11 -19
  197. data/config/boot.rb +1 -1
  198. data/config/database.yml +5 -5
  199. data/config/database.yml.example +2 -2
  200. data/config/environment.rb +11 -24
  201. data/config/initializers/backtrace_silencers.rb +7 -0
  202. data/config/initializers/compass.rb +8 -0
  203. data/config/initializers/inflections.rb +10 -0
  204. data/config/initializers/mime_types.rb +0 -3
  205. data/config/initializers/new_rails_defaults.rb +19 -0
  206. data/config/initializers/session_store.rb +15 -0
  207. data/config/locales/de.yml +57 -2
  208. data/config/locales/de_rails.yml +27 -7
  209. data/config/locales/en-GB.yml +59 -4
  210. data/config/locales/en-GB_rails.yml +6 -6
  211. data/config/locales/en-US.yml +60 -5
  212. data/config/locales/en-US_rails.yml +80 -39
  213. data/config/locales/es.yml +318 -263
  214. data/config/locales/es_rails.yml +26 -8
  215. data/config/locales/fr-FR.yml +55 -0
  216. data/config/locales/fr-FR_rails.yml +51 -43
  217. data/config/locales/it.yml +57 -2
  218. data/config/locales/it_rails.yml +60 -18
  219. data/config/locales/nb-NO.yml +67 -469
  220. data/config/locales/nl-BE.yml +522 -0
  221. data/config/locales/nl-BE_rails.yml +155 -0
  222. data/config/locales/pl.yml +57 -2
  223. data/config/locales/pt-BR.yml +272 -217
  224. data/config/locales/pt-BR_rails.yml +132 -98
  225. data/config/locales/pt-PT.yml +56 -1
  226. data/config/locales/pt-PT_rails.yml +25 -4
  227. data/config/locales/ru-RU.yml +56 -1
  228. data/config/locales/ru-RU_rails.yml +156 -110
  229. data/config/routes.rb +17 -8
  230. data/config/spree_permissions.yml +8 -5
  231. data/{vendor/extensions/shipping/db → db}/migrate/20081003211336_create_shipping_methods.rb +0 -0
  232. data/{vendor/extensions/shipping/db → db}/migrate/20081003233427_create_shipping_categories.rb +0 -0
  233. data/{vendor/extensions/shipping/db → db}/migrate/20081015001711_create_shipments.rb +0 -0
  234. data/{vendor/extensions/shipping/db → db}/migrate/20081023134446_add_product_dimensions.rb +0 -0
  235. data/{vendor/extensions/shipping/db → db}/migrate/20081205155619_add_shipped_at_property.rb +0 -0
  236. data/{vendor/extensions/shipping/db → db}/migrate/20081221201510_create_shipping_addresses.rb +0 -0
  237. data/db/migrate/20090302221152_give_all_users_user_role.rb +1 -0
  238. data/db/migrate/20090320113300_authlogic_changes.rb +24 -0
  239. data/db/migrate/20090324164010_create_option_types_prototypes.rb +12 -0
  240. data/db/migrate/20090401120636_meta_data_fields_for_products.rb +11 -0
  241. data/db/migrate/20090401203712_remove_hmp_stuff_in_zones.rb +12 -0
  242. data/db/migrate/{20080706233224_create_eu_vat_zone.rb → 20090401223217_create_eu_vat_zone_again.rb} +8 -3
  243. data/db/migrate/20090402002244_add_user_login.rb +17 -0
  244. data/db/migrate/20090402161055_add_order_token.rb +13 -0
  245. data/db/migrate/20090402200317_add_email_to_order.rb +19 -0
  246. data/db/migrate/20090406174645_refactor_addresses.rb +53 -0
  247. data/db/migrate/20090420021303_remove_viewable_id_from_products.rb +10 -0
  248. data/db/migrate/20090427000000_upgrade_taxons.rb +14 -0
  249. data/db/sample/addresses.yml +24 -14
  250. data/db/sample/creditcards.yml +2 -1
  251. data/db/sample/orders.yml +4 -1
  252. data/db/sample/products.yml +9 -9
  253. data/{vendor/extensions/shipping/db → db}/sample/shipments.yml +2 -1
  254. data/{vendor/extensions/shipping/db → db}/sample/shipping_categories.yml +0 -0
  255. data/{vendor/extensions/shipping/db → db}/sample/shipping_methods.yml +0 -0
  256. data/db/sample/users.yml +2 -1
  257. data/db/sample/zone_members.yml +16 -0
  258. data/{vendor/extensions/shipping/db → db}/sample/zones.yml +0 -0
  259. data/lib/easy_role_requirement_system.rb +32 -1
  260. data/lib/generators/generator_base_extension.rb +2 -2
  261. data/lib/generators/instance/instance_generator.rb +13 -9
  262. data/lib/generators/instance/templates/session_store.rb +15 -0
  263. data/lib/plugins/extension_patches/lib/fixture_loading_extension.rb +3 -1
  264. data/lib/plugins/monkey_patches/init.rb +1 -0
  265. data/lib/plugins/monkey_patches/lib/monkey_patches.rb +59 -0
  266. data/{vendor/plugins/calendar_date_select → lib/plugins/option_tags_with_disable}/MIT-LICENSE +20 -20
  267. data/lib/plugins/option_tags_with_disable/README.rdoc +35 -0
  268. data/lib/plugins/option_tags_with_disable/Rakefile +23 -0
  269. data/lib/plugins/option_tags_with_disable/init.rb +1 -0
  270. data/lib/plugins/option_tags_with_disable/lib/option_tags_will_disable.rb +85 -0
  271. data/lib/plugins/option_tags_with_disable/test/option_tags_will_disable_test.rb +72 -0
  272. data/lib/plugins/option_tags_with_disable/test/test_helper.rb +8 -0
  273. data/lib/role_requirement_system.rb +2 -2
  274. data/lib/spree.rb +2 -2
  275. data/lib/spree/checkout.rb +74 -0
  276. data/lib/spree/initializer.rb +0 -1
  277. data/lib/spree/setup.rb +2 -1
  278. data/{vendor/extensions/shipping/lib → lib}/spree/shipping_error.rb +0 -0
  279. data/lib/tasks/database.rake +2 -0
  280. data/lib/tasks/release.rake +8 -6
  281. data/lib/tasks/upgrade.rake +3 -0
  282. data/public/assets/products/1009/large/IMG_3408.jpg +0 -0
  283. data/public/assets/products/1009/mini/IMG_3408.jpg +0 -0
  284. data/public/assets/products/1009/original/IMG_3408.jpg +0 -0
  285. data/public/assets/products/1009/product/IMG_3408.jpg +0 -0
  286. data/public/assets/products/1009/small/IMG_3408.jpg +0 -0
  287. data/public/images/add-to-cart.png +0 -0
  288. data/public/images/admin/bg/active-tab.png +0 -0
  289. data/public/images/admin/bg/admin_tab_back.png +0 -0
  290. data/public/images/admin/bg/admin_tab_selected_back.png +0 -0
  291. data/public/images/admin/bg/content-back-blue.png +0 -0
  292. data/public/images/admin/bg/content-back-green.png +0 -0
  293. data/public/images/admin/bg/content-back.png +0 -0
  294. data/public/images/admin/bg/flash-error.png +0 -0
  295. data/public/images/admin/bg/flash-notice.png +0 -0
  296. data/public/images/admin/bg/green-stripes.gif +0 -0
  297. data/public/images/admin/bg/green-stripes.png +0 -0
  298. data/public/images/admin/bg/grid_header_back.png +0 -0
  299. data/public/images/admin/bg/grid_header_back_green.png +0 -0
  300. data/public/images/admin/bg/header-bg.png +0 -0
  301. data/public/images/admin/bg/header_bg.jpg +0 -0
  302. data/public/images/admin/bg/menu-current.png +0 -0
  303. data/public/images/admin/bg/red-stripes.gif +0 -0
  304. data/public/images/admin/bg/red-stripes.png +0 -0
  305. data/public/images/admin/bg/spree_50.png +0 -0
  306. data/public/images/admin/bg/subnav-divider.png +0 -0
  307. data/public/images/admin/bg/subnav.png +0 -0
  308. data/public/images/admin/bg/tab-back.png +0 -0
  309. data/public/images/admin/buttons/blue/left_01.png +0 -0
  310. data/public/images/admin/buttons/blue/right_01.png +0 -0
  311. data/public/images/admin/buttons/drag-handle-green.png +0 -0
  312. data/public/images/admin/buttons/green/left_01.png +0 -0
  313. data/public/images/admin/buttons/green/right_01.png +0 -0
  314. data/public/images/admin/buttons/left_01.png +0 -0
  315. data/public/images/admin/buttons/left_01_small.png +0 -0
  316. data/public/images/admin/buttons/orange/left_03.png +0 -0
  317. data/public/images/admin/buttons/orange/right_03.png +0 -0
  318. data/public/images/admin/buttons/right_01.png +0 -0
  319. data/public/images/admin/buttons/right_01_small.png +0 -0
  320. data/public/images/admin/icons/16x16/1.png +0 -0
  321. data/public/images/admin/icons/16x16/10.png +0 -0
  322. data/public/images/admin/icons/16x16/2.png +0 -0
  323. data/public/images/admin/icons/16x16/3.png +0 -0
  324. data/public/images/admin/icons/16x16/4.png +0 -0
  325. data/public/images/admin/icons/16x16/5.png +0 -0
  326. data/public/images/admin/icons/16x16/6.png +0 -0
  327. data/public/images/admin/icons/16x16/7.png +0 -0
  328. data/public/images/admin/icons/16x16/8.png +0 -0
  329. data/public/images/admin/icons/16x16/9.png +0 -0
  330. data/public/images/admin/icons/32x32/1.png +0 -0
  331. data/public/images/admin/icons/32x32/10.png +0 -0
  332. data/public/images/admin/icons/32x32/11.png +0 -0
  333. data/public/images/admin/icons/32x32/2.png +0 -0
  334. data/public/images/admin/icons/32x32/3.png +0 -0
  335. data/public/images/admin/icons/32x32/4.png +0 -0
  336. data/public/images/admin/icons/32x32/5.png +0 -0
  337. data/public/images/admin/icons/32x32/6.png +0 -0
  338. data/public/images/admin/icons/32x32/7.png +0 -0
  339. data/public/images/admin/icons/32x32/8.png +0 -0
  340. data/public/images/admin/icons/32x32/9.png +0 -0
  341. data/public/images/admin/icons/accept.png +0 -0
  342. data/public/images/admin/icons/add.gif +0 -0
  343. data/public/images/admin/icons/add.png +0 -0
  344. data/public/images/admin/icons/arrow-down.gif +0 -0
  345. data/public/images/admin/icons/cross.png +0 -0
  346. data/public/images/admin/icons/delete.gif +0 -0
  347. data/public/images/admin/icons/delete.png +0 -0
  348. data/public/images/admin/icons/drag.gif +0 -0
  349. data/public/images/admin/icons/edit.gif +0 -0
  350. data/public/images/admin/icons/edit.png +0 -0
  351. data/public/images/admin/icons/email.png +0 -0
  352. data/public/images/admin/icons/error.png +0 -0
  353. data/public/images/admin/icons/exclamation.png +0 -0
  354. data/public/images/admin/icons/feed.png +0 -0
  355. data/public/images/admin/icons/pdf.png +0 -0
  356. data/public/images/admin/icons/reorder.gif +0 -0
  357. data/public/images/admin/icons/search.gif +0 -0
  358. data/public/images/admin/icons/send-email.png +0 -0
  359. data/public/images/admin/icons/stop.png +0 -0
  360. data/public/images/admin/icons/tick.png +0 -0
  361. data/public/images/admin/icons/up.gif +0 -0
  362. data/public/images/admin/icons/xls.png +0 -0
  363. data/public/images/admin/tabs/off-left.png +0 -0
  364. data/public/images/admin/tabs/off-right.png +0 -0
  365. data/public/images/admin/tabs/on-left.png +0 -0
  366. data/public/images/admin/tabs/on-right.png +0 -0
  367. data/public/images/bg-button-hover.png +0 -0
  368. data/public/images/bg-button-pressed.png +0 -0
  369. data/public/images/bg-button.gif +0 -0
  370. data/public/images/bg-button.png +0 -0
  371. data/public/images/blue/left_01.png +0 -0
  372. data/public/images/blue/right_01.png +0 -0
  373. data/public/images/body-back.png +0 -0
  374. data/public/images/bottom_shine.png +0 -0
  375. data/public/images/button-dark-hover.png +0 -0
  376. data/public/images/button-dark.png +0 -0
  377. data/public/images/buttons/bg-button-hover.png +0 -0
  378. data/public/images/buttons/bg-button-pressed.png +0 -0
  379. data/public/images/buttons/bg-button.gif +0 -0
  380. data/public/images/buttons/bg-button.png +0 -0
  381. data/public/images/buttons/blue/left_01.png +0 -0
  382. data/public/images/buttons/blue/right_01.png +0 -0
  383. data/public/images/buttons/button-dark-hover.png +0 -0
  384. data/public/images/buttons/button-dark.png +0 -0
  385. data/public/images/buttons/drag-handle-green.png +0 -0
  386. data/public/images/buttons/green/left_01.png +0 -0
  387. data/public/images/buttons/green/right_01.png +0 -0
  388. data/public/images/buttons/left_01.png +0 -0
  389. data/public/images/buttons/left_01_small.png +0 -0
  390. data/public/images/buttons/orange/left_03.png +0 -0
  391. data/public/images/buttons/orange/right_03.png +0 -0
  392. data/public/images/buttons/right_01.png +0 -0
  393. data/public/images/buttons/right_01_small.png +0 -0
  394. data/public/images/buttons/sxsw-ribbon-v1.png +0 -0
  395. data/public/images/buttons/top-shine.png +0 -0
  396. data/public/images/cart-empty.png +0 -0
  397. data/public/images/cart-empty_x32.png +0 -0
  398. data/public/images/cart-full.png +0 -0
  399. data/public/images/cart-full_x32.png +0 -0
  400. data/public/images/checkout.png +0 -0
  401. data/public/images/drag-handle-green.png +0 -0
  402. data/public/images/green/left_01.png +0 -0
  403. data/public/images/green/right_01.png +0 -0
  404. data/public/images/grid.png +0 -0
  405. data/public/images/left_01.png +0 -0
  406. data/public/images/left_01_small.png +0 -0
  407. data/public/images/menu-current.png +0 -0
  408. data/public/images/menu-hover.png +0 -0
  409. data/public/images/orange/left_03.png +0 -0
  410. data/public/images/orange/right_03.png +0 -0
  411. data/public/images/right_01.png +0 -0
  412. data/public/images/right_01_small.png +0 -0
  413. data/public/images/separator.png +0 -0
  414. data/public/images/shadow-top.png +0 -0
  415. data/public/images/shadow_top.png +0 -0
  416. data/public/images/steps/1.png +0 -0
  417. data/public/images/steps/1_small.png +0 -0
  418. data/public/images/steps/2.png +0 -0
  419. data/public/images/steps/2_small.png +0 -0
  420. data/public/images/steps/3.png +0 -0
  421. data/public/images/steps/3_small.png +0 -0
  422. data/public/images/steps/4.png +0 -0
  423. data/public/images/steps/4_small.png +0 -0
  424. data/public/images/steps/5.png +0 -0
  425. data/public/images/steps/5_small.png +0 -0
  426. data/public/images/steps/6.png +0 -0
  427. data/public/images/steps/6_small.png +0 -0
  428. data/public/images/sxsw-ribbon-v1.png +0 -0
  429. data/public/images/top-shine.png +0 -0
  430. data/public/images/tree-nav-icons/treeview-loading.gif +0 -0
  431. data/public/images/tree-nav-icons/treeview-sprite.gif +0 -0
  432. data/public/images/update.png +0 -0
  433. data/public/images/wrapper-back-2.png +0 -0
  434. data/public/images/wrapper-back.png +0 -0
  435. data/public/images/yui-menubaritem_submenuindicator.png +0 -0
  436. data/public/images/yui-menubaritem_submenuindicator_disabled.png +0 -0
  437. data/public/images/yui-menuitem_checkbox.png +0 -0
  438. data/public/images/yui-menuitem_checkbox_disabled.png +0 -0
  439. data/public/images/yui-menuitem_submenuindicator.png +0 -0
  440. data/public/images/yui-menuitem_submenuindicator_disabled.png +0 -0
  441. data/public/images/yui-sprite.png +0 -0
  442. data/public/javascripts/checkout.js +191 -55
  443. data/public/javascripts/nested-attribute.js +25 -0
  444. data/public/javascripts/spree-yui.js +1 -1
  445. data/public/javascripts/yui-includes.js +57 -0
  446. data/public/javascripts/zone.js +48 -0
  447. data/public/stylesheets/admin/admin-forms.css +159 -0
  448. data/public/stylesheets/admin/admin-reset.css +67 -0
  449. data/public/stylesheets/admin/admin-tables.css +31 -0
  450. data/public/stylesheets/admin/admin-typography.css +117 -0
  451. data/public/stylesheets/admin/admin.css +426 -0
  452. data/public/stylesheets/admin/david-admin.css +210 -0
  453. data/public/stylesheets/admin/grids.css +314 -0
  454. data/public/stylesheets/admin/reset-fonts-grids-2-6-0.css +7 -0
  455. data/public/stylesheets/admin/yui-includes.css +14 -0
  456. data/public/stylesheets/compiled/ie.css +25 -0
  457. data/public/stylesheets/compiled/print.css +62 -0
  458. data/public/stylesheets/compiled/screen.css +1615 -0
  459. data/public/stylesheets/sass/ie.sass +3 -0
  460. data/public/stylesheets/sass/print.sass +3 -0
  461. data/public/stylesheets/sass/screen.sass +565 -0
  462. data/{vendor/extensions/shipping/spec/controllers → spec/controllers/admin}/shipments_controller_spec.rb +3 -3
  463. data/{vendor/extensions/shipping/spec → spec}/controllers/admin/shipping_categories_controller_spec.rb +0 -0
  464. data/{vendor/extensions/shipping/spec → spec}/controllers/admin/shipping_methods_controller_spec.rb +0 -0
  465. data/spec/controllers/countries_controller_spec.rb +3 -3
  466. data/spec/controllers/orders_controller_spec.rb +11 -9
  467. data/spec/controllers/states_controller_spec.rb +3 -3
  468. data/spec/helpers/spree/base_helper_spec.rb +5 -5
  469. data/spec/lib/easy_role_requirement_system_spec.rb +2 -2
  470. data/spec/models/address_spec.rb +3 -3
  471. data/spec/models/order_spec.rb +43 -1
  472. data/spec/models/product_property_spec.rb +0 -7
  473. data/spec/models/product_spec.rb +1 -1
  474. data/{vendor/extensions/shipping/spec → spec}/models/shipment_spec.rb +0 -0
  475. data/{vendor/extensions/shipping/spec → spec}/models/shipping_category_spec.rb +0 -0
  476. data/{vendor/extensions/shipping/spec → spec}/models/shipping_method_spec.rb +0 -0
  477. data/{vendor/extensions/shipping/spec → spec}/models/shipping_order_spec.rb +13 -6
  478. data/spec/models/tax_category_spec.rb +1 -1
  479. data/spec/models/zone_spec.rb +46 -42
  480. data/vendor/extensions/localization/app/views/shared/_language_bar.html.erb +8 -10
  481. data/vendor/extensions/localization/localization_extension.rb +2 -2
  482. data/vendor/extensions/payment_gateway/app/views/admin/gateway_configurations/_form.html.erb +5 -4
  483. data/vendor/extensions/payment_gateway/app/views/admin/gateway_configurations/edit.html.erb +4 -2
  484. data/vendor/extensions/payment_gateway/app/views/admin/gateway_option_values/_options.html.erb +4 -4
  485. data/vendor/extensions/payment_gateway/lib/spree/payment_gateway.rb +2 -2
  486. data/vendor/extensions/tax_calculator/app/controllers/admin/tax_settings_controller.rb +13 -0
  487. data/vendor/extensions/tax_calculator/app/views/admin/tax_rates/index.html.erb +27 -25
  488. data/vendor/extensions/tax_calculator/app/views/admin/tax_settings/edit.html.erb +17 -0
  489. data/vendor/extensions/tax_calculator/app/views/admin/tax_settings/show.html.erb +14 -0
  490. data/vendor/extensions/tax_calculator/config/locales/en-US.yml +2 -0
  491. data/vendor/extensions/tax_calculator/config/routes.rb +1 -0
  492. data/vendor/extensions/tax_calculator/lib/spree/vat_calculator.rb +3 -8
  493. data/vendor/extensions/tax_calculator/tax_calculator_extension.rb +1 -0
  494. data/vendor/gems/haml-2.1.0/FAQ +138 -0
  495. data/vendor/gems/haml-2.1.0/MIT-LICENSE +20 -0
  496. data/vendor/gems/haml-2.1.0/README.rdoc +332 -0
  497. data/vendor/gems/haml-2.1.0/REVISION +1 -0
  498. data/vendor/gems/haml-2.1.0/Rakefile +185 -0
  499. data/vendor/gems/haml-2.1.0/VERSION +1 -0
  500. data/vendor/gems/haml-2.1.0/bin/css2sass +7 -0
  501. data/vendor/gems/haml-2.1.0/bin/haml +9 -0
  502. data/vendor/gems/haml-2.1.0/bin/html2haml +7 -0
  503. data/vendor/gems/haml-2.1.0/bin/sass +8 -0
  504. data/vendor/gems/haml-2.1.0/extra/haml-mode.el +434 -0
  505. data/vendor/gems/haml-2.1.0/extra/sass-mode.el +98 -0
  506. data/vendor/gems/haml-2.1.0/init.rb +8 -0
  507. data/vendor/gems/haml-2.1.0/lib/haml.rb +1042 -0
  508. data/vendor/gems/haml-2.1.0/lib/haml/buffer.rb +255 -0
  509. data/vendor/gems/haml-2.1.0/lib/haml/engine.rb +268 -0
  510. data/vendor/gems/haml-2.1.0/lib/haml/error.rb +22 -0
  511. data/vendor/gems/haml-2.1.0/lib/haml/exec.rb +395 -0
  512. data/vendor/gems/haml-2.1.0/lib/haml/filters.rb +276 -0
  513. data/vendor/gems/haml-2.1.0/lib/haml/helpers.rb +468 -0
  514. data/vendor/gems/haml-2.1.0/lib/haml/helpers/action_view_extensions.rb +45 -0
  515. data/vendor/gems/haml-2.1.0/lib/haml/helpers/action_view_mods.rb +181 -0
  516. data/vendor/gems/haml-2.1.0/lib/haml/html.rb +218 -0
  517. data/vendor/gems/haml-2.1.0/lib/haml/precompiler.rb +889 -0
  518. data/vendor/gems/haml-2.1.0/lib/haml/shared.rb +45 -0
  519. data/vendor/gems/haml-2.1.0/lib/haml/template.rb +51 -0
  520. data/vendor/gems/haml-2.1.0/lib/haml/template/patch.rb +58 -0
  521. data/vendor/gems/haml-2.1.0/lib/haml/template/plugin.rb +72 -0
  522. data/vendor/gems/haml-2.1.0/lib/haml/util.rb +77 -0
  523. data/vendor/gems/haml-2.1.0/lib/haml/version.rb +47 -0
  524. data/vendor/gems/haml-2.1.0/lib/sass.rb +1062 -0
  525. data/vendor/gems/haml-2.1.0/lib/sass/css.rb +388 -0
  526. data/vendor/gems/haml-2.1.0/lib/sass/engine.rb +499 -0
  527. data/vendor/gems/haml-2.1.0/lib/sass/environment.rb +33 -0
  528. data/vendor/gems/haml-2.1.0/lib/sass/error.rb +35 -0
  529. data/vendor/gems/haml-2.1.0/lib/sass/plugin.rb +203 -0
  530. data/vendor/gems/haml-2.1.0/lib/sass/plugin/merb.rb +56 -0
  531. data/vendor/gems/haml-2.1.0/lib/sass/plugin/rails.rb +24 -0
  532. data/vendor/gems/haml-2.1.0/lib/sass/repl.rb +51 -0
  533. data/vendor/gems/haml-2.1.0/lib/sass/script.rb +38 -0
  534. data/vendor/gems/haml-2.1.0/lib/sass/script/bool.rb +13 -0
  535. data/vendor/gems/haml-2.1.0/lib/sass/script/color.rb +97 -0
  536. data/vendor/gems/haml-2.1.0/lib/sass/script/funcall.rb +28 -0
  537. data/vendor/gems/haml-2.1.0/lib/sass/script/functions.rb +122 -0
  538. data/vendor/gems/haml-2.1.0/lib/sass/script/lexer.rb +152 -0
  539. data/vendor/gems/haml-2.1.0/lib/sass/script/literal.rb +60 -0
  540. data/vendor/gems/haml-2.1.0/lib/sass/script/number.rb +231 -0
  541. data/vendor/gems/haml-2.1.0/lib/sass/script/operation.rb +30 -0
  542. data/vendor/gems/haml-2.1.0/lib/sass/script/parser.rb +142 -0
  543. data/vendor/gems/haml-2.1.0/lib/sass/script/string.rb +42 -0
  544. data/vendor/gems/haml-2.1.0/lib/sass/script/unary_operation.rb +21 -0
  545. data/vendor/gems/haml-2.1.0/lib/sass/script/variable.rb +20 -0
  546. data/vendor/gems/haml-2.1.0/lib/sass/tree/attr_node.rb +64 -0
  547. data/vendor/gems/haml-2.1.0/lib/sass/tree/comment_node.rb +34 -0
  548. data/vendor/gems/haml-2.1.0/lib/sass/tree/debug_node.rb +22 -0
  549. data/vendor/gems/haml-2.1.0/lib/sass/tree/directive_node.rb +50 -0
  550. data/vendor/gems/haml-2.1.0/lib/sass/tree/file_node.rb +27 -0
  551. data/vendor/gems/haml-2.1.0/lib/sass/tree/for_node.rb +29 -0
  552. data/vendor/gems/haml-2.1.0/lib/sass/tree/if_node.rb +27 -0
  553. data/vendor/gems/haml-2.1.0/lib/sass/tree/mixin_def_node.rb +18 -0
  554. data/vendor/gems/haml-2.1.0/lib/sass/tree/mixin_node.rb +34 -0
  555. data/vendor/gems/haml-2.1.0/lib/sass/tree/node.rb +99 -0
  556. data/vendor/gems/haml-2.1.0/lib/sass/tree/rule_node.rb +120 -0
  557. data/vendor/gems/haml-2.1.0/lib/sass/tree/variable_node.rb +24 -0
  558. data/vendor/gems/haml-2.1.0/lib/sass/tree/while_node.rb +20 -0
  559. data/vendor/gems/haml-2.1.0/rails/init.rb +1 -0
  560. data/vendor/gems/haml-2.1.0/test/benchmark.rb +99 -0
  561. data/vendor/gems/haml-2.1.0/test/haml/engine_test.rb +734 -0
  562. data/vendor/gems/haml-2.1.0/test/haml/helper_test.rb +224 -0
  563. data/vendor/gems/haml-2.1.0/test/haml/html2haml_test.rb +92 -0
  564. data/vendor/gems/haml-2.1.0/test/haml/markaby/standard.mab +52 -0
  565. data/vendor/gems/haml-2.1.0/test/haml/mocks/article.rb +6 -0
  566. data/vendor/gems/haml-2.1.0/test/haml/results/content_for_layout.xhtml +15 -0
  567. data/vendor/gems/haml-2.1.0/test/haml/results/eval_suppressed.xhtml +9 -0
  568. data/vendor/gems/haml-2.1.0/test/haml/results/filters.xhtml +62 -0
  569. data/vendor/gems/haml-2.1.0/test/haml/results/helpers.xhtml +93 -0
  570. data/vendor/gems/haml-2.1.0/test/haml/results/helpful.xhtml +10 -0
  571. data/vendor/gems/haml-2.1.0/test/haml/results/just_stuff.xhtml +68 -0
  572. data/vendor/gems/haml-2.1.0/test/haml/results/list.xhtml +12 -0
  573. data/vendor/gems/haml-2.1.0/test/haml/results/nuke_inner_whitespace.xhtml +40 -0
  574. data/vendor/gems/haml-2.1.0/test/haml/results/nuke_outer_whitespace.xhtml +148 -0
  575. data/vendor/gems/haml-2.1.0/test/haml/results/original_engine.xhtml +20 -0
  576. data/vendor/gems/haml-2.1.0/test/haml/results/partial_layout.xhtml +5 -0
  577. data/vendor/gems/haml-2.1.0/test/haml/results/partials.xhtml +21 -0
  578. data/vendor/gems/haml-2.1.0/test/haml/results/render_layout.xhtml +3 -0
  579. data/vendor/gems/haml-2.1.0/test/haml/results/silent_script.xhtml +74 -0
  580. data/vendor/gems/haml-2.1.0/test/haml/results/standard.xhtml +42 -0
  581. data/vendor/gems/haml-2.1.0/test/haml/results/tag_parsing.xhtml +23 -0
  582. data/vendor/gems/haml-2.1.0/test/haml/results/very_basic.xhtml +5 -0
  583. data/vendor/gems/haml-2.1.0/test/haml/results/whitespace_handling.xhtml +89 -0
  584. data/vendor/gems/haml-2.1.0/test/haml/rhtml/_av_partial_1.rhtml +12 -0
  585. data/vendor/gems/haml-2.1.0/test/haml/rhtml/_av_partial_2.rhtml +8 -0
  586. data/vendor/gems/haml-2.1.0/test/haml/rhtml/action_view.rhtml +62 -0
  587. data/vendor/gems/haml-2.1.0/test/haml/rhtml/standard.rhtml +54 -0
  588. data/vendor/gems/haml-2.1.0/test/haml/template_test.rb +204 -0
  589. data/vendor/gems/haml-2.1.0/test/haml/templates/_av_partial_1.haml +9 -0
  590. data/vendor/gems/haml-2.1.0/test/haml/templates/_av_partial_1_ugly.haml +9 -0
  591. data/vendor/gems/haml-2.1.0/test/haml/templates/_av_partial_2.haml +5 -0
  592. data/vendor/gems/haml-2.1.0/test/haml/templates/_av_partial_2_ugly.haml +5 -0
  593. data/vendor/gems/haml-2.1.0/test/haml/templates/_layout.erb +3 -0
  594. data/vendor/gems/haml-2.1.0/test/haml/templates/_layout_for_partial.haml +3 -0
  595. data/vendor/gems/haml-2.1.0/test/haml/templates/_partial.haml +8 -0
  596. data/vendor/gems/haml-2.1.0/test/haml/templates/_text_area.haml +3 -0
  597. data/vendor/gems/haml-2.1.0/test/haml/templates/action_view.haml +47 -0
  598. data/vendor/gems/haml-2.1.0/test/haml/templates/action_view_ugly.haml +47 -0
  599. data/vendor/gems/haml-2.1.0/test/haml/templates/breakage.haml +8 -0
  600. data/vendor/gems/haml-2.1.0/test/haml/templates/content_for_layout.haml +10 -0
  601. data/vendor/gems/haml-2.1.0/test/haml/templates/eval_suppressed.haml +11 -0
  602. data/vendor/gems/haml-2.1.0/test/haml/templates/filters.haml +66 -0
  603. data/vendor/gems/haml-2.1.0/test/haml/templates/helpers.haml +95 -0
  604. data/vendor/gems/haml-2.1.0/test/haml/templates/helpful.haml +11 -0
  605. data/vendor/gems/haml-2.1.0/test/haml/templates/just_stuff.haml +83 -0
  606. data/vendor/gems/haml-2.1.0/test/haml/templates/list.haml +12 -0
  607. data/vendor/gems/haml-2.1.0/test/haml/templates/nuke_inner_whitespace.haml +32 -0
  608. data/vendor/gems/haml-2.1.0/test/haml/templates/nuke_outer_whitespace.haml +144 -0
  609. data/vendor/gems/haml-2.1.0/test/haml/templates/original_engine.haml +17 -0
  610. data/vendor/gems/haml-2.1.0/test/haml/templates/partial_layout.haml +3 -0
  611. data/vendor/gems/haml-2.1.0/test/haml/templates/partialize.haml +1 -0
  612. data/vendor/gems/haml-2.1.0/test/haml/templates/partials.haml +12 -0
  613. data/vendor/gems/haml-2.1.0/test/haml/templates/render_layout.haml +2 -0
  614. data/vendor/gems/haml-2.1.0/test/haml/templates/silent_script.haml +40 -0
  615. data/vendor/gems/haml-2.1.0/test/haml/templates/standard.haml +42 -0
  616. data/vendor/gems/haml-2.1.0/test/haml/templates/standard_ugly.haml +42 -0
  617. data/vendor/gems/haml-2.1.0/test/haml/templates/tag_parsing.haml +21 -0
  618. data/vendor/gems/haml-2.1.0/test/haml/templates/very_basic.haml +4 -0
  619. data/vendor/gems/haml-2.1.0/test/haml/templates/whitespace_handling.haml +87 -0
  620. data/vendor/gems/haml-2.1.0/test/linked_rails.rb +12 -0
  621. data/vendor/gems/haml-2.1.0/test/sass/css2sass_test.rb +193 -0
  622. data/vendor/gems/haml-2.1.0/test/sass/engine_test.rb +769 -0
  623. data/vendor/gems/haml-2.1.0/test/sass/functions_test.rb +96 -0
  624. data/vendor/gems/haml-2.1.0/test/sass/more_results/more1.css +9 -0
  625. data/vendor/gems/haml-2.1.0/test/sass/more_results/more1_with_line_comments.css +26 -0
  626. data/vendor/gems/haml-2.1.0/test/sass/more_results/more_import.css +29 -0
  627. data/vendor/gems/haml-2.1.0/test/sass/more_templates/_more_partial.sass +2 -0
  628. data/vendor/gems/haml-2.1.0/test/sass/more_templates/more1.sass +23 -0
  629. data/vendor/gems/haml-2.1.0/test/sass/more_templates/more_import.sass +11 -0
  630. data/vendor/gems/haml-2.1.0/test/sass/plugin_test.rb +208 -0
  631. data/vendor/gems/haml-2.1.0/test/sass/results/alt.css +4 -0
  632. data/vendor/gems/haml-2.1.0/test/sass/results/basic.css +9 -0
  633. data/vendor/gems/haml-2.1.0/test/sass/results/compact.css +5 -0
  634. data/vendor/gems/haml-2.1.0/test/sass/results/complex.css +87 -0
  635. data/vendor/gems/haml-2.1.0/test/sass/results/compressed.css +1 -0
  636. data/vendor/gems/haml-2.1.0/test/sass/results/expanded.css +19 -0
  637. data/vendor/gems/haml-2.1.0/test/sass/results/import.css +29 -0
  638. data/vendor/gems/haml-2.1.0/test/sass/results/line_numbers.css +49 -0
  639. data/vendor/gems/haml-2.1.0/test/sass/results/mixins.css +95 -0
  640. data/vendor/gems/haml-2.1.0/test/sass/results/multiline.css +24 -0
  641. data/vendor/gems/haml-2.1.0/test/sass/results/nested.css +22 -0
  642. data/vendor/gems/haml-2.1.0/test/sass/results/parent_ref.css +13 -0
  643. data/vendor/gems/haml-2.1.0/test/sass/results/script.css +16 -0
  644. data/vendor/gems/haml-2.1.0/test/sass/results/subdir/nested_subdir/nested_subdir.css +1 -0
  645. data/vendor/gems/haml-2.1.0/test/sass/results/subdir/subdir.css +3 -0
  646. data/vendor/gems/haml-2.1.0/test/sass/results/units.css +11 -0
  647. data/vendor/gems/haml-2.1.0/test/sass/script_test.rb +153 -0
  648. data/vendor/gems/haml-2.1.0/test/sass/templates/_partial.sass +2 -0
  649. data/vendor/gems/haml-2.1.0/test/sass/templates/alt.sass +16 -0
  650. data/vendor/gems/haml-2.1.0/test/sass/templates/basic.sass +23 -0
  651. data/vendor/gems/haml-2.1.0/test/sass/templates/bork.sass +2 -0
  652. data/vendor/gems/haml-2.1.0/test/sass/templates/bork2.sass +2 -0
  653. data/vendor/gems/haml-2.1.0/test/sass/templates/compact.sass +17 -0
  654. data/vendor/gems/haml-2.1.0/test/sass/templates/complex.sass +309 -0
  655. data/vendor/gems/haml-2.1.0/test/sass/templates/compressed.sass +15 -0
  656. data/vendor/gems/haml-2.1.0/test/sass/templates/expanded.sass +17 -0
  657. data/vendor/gems/haml-2.1.0/test/sass/templates/import.sass +11 -0
  658. data/vendor/gems/haml-2.1.0/test/sass/templates/importee.sass +19 -0
  659. data/vendor/gems/haml-2.1.0/test/sass/templates/line_numbers.sass +13 -0
  660. data/vendor/gems/haml-2.1.0/test/sass/templates/mixins.sass +76 -0
  661. data/vendor/gems/haml-2.1.0/test/sass/templates/multiline.sass +20 -0
  662. data/vendor/gems/haml-2.1.0/test/sass/templates/nested.sass +25 -0
  663. data/vendor/gems/haml-2.1.0/test/sass/templates/parent_ref.sass +25 -0
  664. data/vendor/gems/haml-2.1.0/test/sass/templates/script.sass +101 -0
  665. data/vendor/gems/haml-2.1.0/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
  666. data/vendor/gems/haml-2.1.0/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +3 -0
  667. data/vendor/gems/haml-2.1.0/test/sass/templates/subdir/subdir.sass +6 -0
  668. data/vendor/gems/haml-2.1.0/test/sass/templates/units.sass +11 -0
  669. data/vendor/gems/haml-2.1.0/test/test_helper.rb +21 -0
  670. data/vendor/plugins/enumerable_constants/lib/enumerable_constants.rb +1 -1
  671. data/vendor/plugins/find_by_param/README.markdown +1 -1
  672. metadata +544 -427
  673. data/app/controllers/account_controller.rb +0 -31
  674. data/app/controllers/checkout_controller.rb +0 -96
  675. data/app/helpers/payments_helper.rb +0 -2
  676. data/app/helpers/store_helper.rb +0 -3
  677. data/app/helpers/tax_categories_helper.rb +0 -2
  678. data/app/helpers/users_helper.rb +0 -2
  679. data/app/presenters/checkout_presenter.rb +0 -58
  680. data/app/presenters/payment_presenter.rb +0 -3
  681. data/app/views/admin/zones/_country.html.erb +0 -15
  682. data/app/views/admin/zones/_function.rjs +0 -11
  683. data/app/views/admin/zones/_state.html.erb +0 -15
  684. data/app/views/admin/zones/_zone.html.erb +0 -15
  685. data/app/views/admin/zones/index.js.erb +0 -1
  686. data/app/views/admin/zones/show.html.erb +0 -4
  687. data/app/views/checkout/_billing.html.erb +0 -49
  688. data/app/views/checkout/_form.html.erb +0 -33
  689. data/app/views/checkout/_payment.erb +0 -24
  690. data/app/views/checkout/_shipping.html.erb +0 -50
  691. data/app/views/checkout/_shipping_method.html.erb +0 -5
  692. data/app/views/checkout/new.html.erb +0 -6
  693. data/app/views/shared/_address.html.erb +0 -35
  694. data/app/views/shared/_form_address.html.erb +0 -46
  695. data/app/views/shared/_states.html.erb +0 -14
  696. data/app/views/users/index.html.erb +0 -21
  697. data/lib/authenticated_system.rb +0 -124
  698. data/lib/authenticated_test_helper.rb +0 -10
  699. data/public/stylesheets/checkout.css +0 -25
  700. data/public/stylesheets/fullscreen.css +0 -63
  701. data/public/stylesheets/orders/_controller.css +0 -82
  702. data/public/stylesheets/prototypes/_controller.css +0 -9
  703. data/public/stylesheets/spree-admin.css +0 -563
  704. data/public/stylesheets/spree.css +0 -420
  705. data/spec/helpers/tax_categories_helper_spec.rb +0 -11
  706. data/spec/views/admin/mail_settings/edit.html.erb_spec.rb +0 -14
  707. data/spec/views/admin/mail_settings/show.html.erb_spec.rb +0 -12
  708. data/spec/views/admin/products/edit.html.erb_spec.rb +0 -88
  709. data/spec/views/admin/variants/eidt.html.erb_spec.rb +0 -90
  710. data/vendor/extensions/shipping/README.markdown +0 -3
  711. data/vendor/extensions/shipping/Rakefile +0 -120
  712. data/vendor/extensions/shipping/app/controllers/admin/shipments_controller.rb +0 -68
  713. data/vendor/extensions/shipping/app/models/shipment_presenter.rb +0 -3
  714. data/vendor/extensions/shipping/app/views/admin/shipments/_form.html.erb +0 -35
  715. data/vendor/extensions/shipping/app/views/admin/shipments/edit.html.erb +0 -11
  716. data/vendor/extensions/shipping/app/views/admin/shipments/new.html.erb +0 -12
  717. data/vendor/extensions/shipping/app/views/admin/shipping_categories/index.html.erb +0 -24
  718. data/vendor/extensions/shipping/app/views/admin/shipping_methods/index.html.erb +0 -28
  719. data/vendor/extensions/shipping/config/locales/de.yml +0 -25
  720. data/vendor/extensions/shipping/config/locales/en-GB.yml +0 -25
  721. data/vendor/extensions/shipping/config/locales/en-US.yml +0 -25
  722. data/vendor/extensions/shipping/config/locales/es.yml +0 -25
  723. data/vendor/extensions/shipping/config/locales/it.yml +0 -25
  724. data/vendor/extensions/shipping/config/locales/nb-NO.yml +0 -25
  725. data/vendor/extensions/shipping/config/locales/pl.yml +0 -25
  726. data/vendor/extensions/shipping/config/locales/pt-BR.yml +0 -25
  727. data/vendor/extensions/shipping/config/locales/ru-RU.yml +0 -25
  728. data/vendor/extensions/shipping/config/routes.rb +0 -10
  729. data/vendor/extensions/shipping/db/sample/addresses.yml +0 -14
  730. data/vendor/extensions/shipping/db/sample/zone_members.yml +0 -16
  731. data/vendor/extensions/shipping/lib/spree/shipping_calculator.rb +0 -28
  732. data/vendor/extensions/shipping/lib/tasks/shipping_extension_tasks.rake +0 -29
  733. data/vendor/extensions/shipping/shipping_extension.rb +0 -40
  734. data/vendor/extensions/shipping/spec/spec.opts +0 -6
  735. data/vendor/extensions/shipping/spec/spec_helper.rb +0 -37
  736. data/vendor/extensions/tax_calculator/spec/controllers/admin/tax_rates_controller_spec.rb +0 -22
  737. data/vendor/extensions/tax_calculator/spec/models/order_tax_calc_spec.rb +0 -22
  738. data/vendor/gems/active_presenter-0.0.6/.specification +0 -64
  739. data/vendor/gems/active_presenter-0.0.6/LICENSE +0 -22
  740. data/vendor/gems/active_presenter-0.0.6/README +0 -82
  741. data/vendor/gems/active_presenter-0.0.6/Rakefile +0 -10
  742. data/vendor/gems/active_presenter-0.0.6/lib/active_presenter.rb +0 -7
  743. data/vendor/gems/active_presenter-0.0.6/lib/active_presenter/base.rb +0 -204
  744. data/vendor/gems/active_presenter-0.0.6/lib/active_presenter/version.rb +0 -9
  745. data/vendor/gems/active_presenter-0.0.6/lib/tasks/doc.rake +0 -19
  746. data/vendor/gems/active_presenter-0.0.6/lib/tasks/gem.rake +0 -62
  747. data/vendor/gems/active_presenter-0.0.6/test/base_test.rb +0 -188
  748. data/vendor/gems/active_presenter-0.0.6/test/test_helper.rb +0 -74
  749. data/vendor/plugins/calendar_date_select/History.txt +0 -231
  750. data/vendor/plugins/calendar_date_select/Manifest.txt +0 -42
  751. data/vendor/plugins/calendar_date_select/Rakefile +0 -31
  752. data/vendor/plugins/calendar_date_select/Readme.txt +0 -16
  753. data/vendor/plugins/calendar_date_select/calendar_date_select.gemspec +0 -33
  754. data/vendor/plugins/calendar_date_select/init.rb +0 -1
  755. data/vendor/plugins/calendar_date_select/js_test/functional/cds_test.html +0 -334
  756. data/vendor/plugins/calendar_date_select/js_test/prototype.js +0 -4184
  757. data/vendor/plugins/calendar_date_select/js_test/test.css +0 -40
  758. data/vendor/plugins/calendar_date_select/js_test/unit/cds_helper_methods.html +0 -46
  759. data/vendor/plugins/calendar_date_select/js_test/unittest.js +0 -564
  760. data/vendor/plugins/calendar_date_select/lib/calendar_date_select.rb +0 -33
  761. data/vendor/plugins/calendar_date_select/lib/calendar_date_select/calendar_date_select.rb +0 -116
  762. data/vendor/plugins/calendar_date_select/lib/calendar_date_select/form_helpers.rb +0 -223
  763. data/vendor/plugins/calendar_date_select/lib/calendar_date_select/includes_helper.rb +0 -29
  764. data/vendor/plugins/calendar_date_select/public/blank_iframe.html +0 -2
  765. data/vendor/plugins/calendar_date_select/public/images/calendar_date_select/calendar.gif +0 -0
  766. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/calendar_date_select.js +0 -443
  767. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_american.js +0 -34
  768. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_db.js +0 -27
  769. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_euro_24hr.js +0 -7
  770. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js +0 -7
  771. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_finnish.js +0 -32
  772. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_hyphen_ampm.js +0 -36
  773. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_iso_date.js +0 -46
  774. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_italian.js +0 -24
  775. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/de.js +0 -11
  776. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/fi.js +0 -10
  777. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/fr.js +0 -10
  778. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/pl.js +0 -10
  779. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/pt.js +0 -11
  780. data/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/ru.js +0 -10
  781. data/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/blue.css +0 -130
  782. data/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/default.css +0 -135
  783. data/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/plain.css +0 -128
  784. data/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/red.css +0 -135
  785. data/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/silver.css +0 -133
  786. data/vendor/plugins/calendar_date_select/spec/calendar_date_select/calendar_date_select_spec.rb +0 -14
  787. data/vendor/plugins/calendar_date_select/spec/calendar_date_select/form_helpers_spec.rb +0 -161
  788. data/vendor/plugins/calendar_date_select/spec/spec_helper.rb +0 -26
  789. data/vendor/plugins/has_many_polymorphs/CHANGELOG +0 -83
  790. data/vendor/plugins/has_many_polymorphs/LICENSE +0 -184
  791. data/vendor/plugins/has_many_polymorphs/Manifest +0 -174
  792. data/vendor/plugins/has_many_polymorphs/README +0 -205
  793. data/vendor/plugins/has_many_polymorphs/Rakefile +0 -28
  794. data/vendor/plugins/has_many_polymorphs/TODO +0 -2
  795. data/vendor/plugins/has_many_polymorphs/examples/hmph.rb +0 -69
  796. data/vendor/plugins/has_many_polymorphs/generators/tagging/tagging_generator.rb +0 -97
  797. data/vendor/plugins/has_many_polymorphs/generators/tagging/templates/migration.rb +0 -28
  798. data/vendor/plugins/has_many_polymorphs/generators/tagging/templates/tag.rb +0 -39
  799. data/vendor/plugins/has_many_polymorphs/generators/tagging/templates/tag_test.rb +0 -15
  800. data/vendor/plugins/has_many_polymorphs/generators/tagging/templates/tagging.rb +0 -16
  801. data/vendor/plugins/has_many_polymorphs/generators/tagging/templates/tagging_extensions.rb +0 -159
  802. data/vendor/plugins/has_many_polymorphs/generators/tagging/templates/tagging_test.rb +0 -85
  803. data/vendor/plugins/has_many_polymorphs/generators/tagging/templates/taggings.yml +0 -23
  804. data/vendor/plugins/has_many_polymorphs/generators/tagging/templates/tags.yml +0 -7
  805. data/vendor/plugins/has_many_polymorphs/init.rb +0 -2
  806. data/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs.rb +0 -27
  807. data/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs/association.rb +0 -159
  808. data/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs/autoload.rb +0 -70
  809. data/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs/base.rb +0 -60
  810. data/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs/class_methods.rb +0 -600
  811. data/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs/configuration.rb +0 -19
  812. data/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs/debugging_tools.rb +0 -103
  813. data/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs/rake_task_redefine_task.rb +0 -35
  814. data/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs/reflection.rb +0 -58
  815. data/vendor/plugins/has_many_polymorphs/lib/has_many_polymorphs/support_methods.rb +0 -84
  816. data/vendor/plugins/has_many_polymorphs/test/fixtures/bow_wows.yml +0 -10
  817. data/vendor/plugins/has_many_polymorphs/test/fixtures/cats.yml +0 -18
  818. data/vendor/plugins/has_many_polymorphs/test/fixtures/fish.yml +0 -12
  819. data/vendor/plugins/has_many_polymorphs/test/fixtures/frogs.yml +0 -5
  820. data/vendor/plugins/has_many_polymorphs/test/fixtures/keep_your_enemies_close.yml +0 -0
  821. data/vendor/plugins/has_many_polymorphs/test/fixtures/little_whale_pupils.yml +0 -0
  822. data/vendor/plugins/has_many_polymorphs/test/fixtures/people.yml +0 -7
  823. data/vendor/plugins/has_many_polymorphs/test/fixtures/petfoods.yml +0 -11
  824. data/vendor/plugins/has_many_polymorphs/test/fixtures/whales.yml +0 -5
  825. data/vendor/plugins/has_many_polymorphs/test/fixtures/wild_boars.yml +0 -10
  826. data/vendor/plugins/has_many_polymorphs/test/generator/tagging_generator_test.rb +0 -42
  827. data/vendor/plugins/has_many_polymorphs/test/integration/app/README +0 -182
  828. data/vendor/plugins/has_many_polymorphs/test/integration/app/Rakefile +0 -19
  829. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/controllers/application.rb +0 -7
  830. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/controllers/bones_controller.rb +0 -5
  831. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/helpers/addresses_helper.rb +0 -2
  832. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/helpers/application_helper.rb +0 -3
  833. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/helpers/bones_helper.rb +0 -2
  834. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/helpers/sellers_helper.rb +0 -28
  835. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/helpers/states_helper.rb +0 -2
  836. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/helpers/users_helper.rb +0 -2
  837. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/models/bone.rb +0 -2
  838. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/models/double_sti_parent.rb +0 -2
  839. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/models/double_sti_parent_relationship.rb +0 -2
  840. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/models/organic_substance.rb +0 -2
  841. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/models/single_sti_parent.rb +0 -4
  842. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/models/single_sti_parent_relationship.rb +0 -4
  843. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/models/stick.rb +0 -2
  844. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/models/stone.rb +0 -2
  845. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/addresses/edit.html.erb +0 -12
  846. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/addresses/index.html.erb +0 -18
  847. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/addresses/new.html.erb +0 -11
  848. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/addresses/show.html.erb +0 -3
  849. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/bones/index.rhtml +0 -5
  850. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/layouts/addresses.html.erb +0 -17
  851. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/layouts/sellers.html.erb +0 -17
  852. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/layouts/states.html.erb +0 -17
  853. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/layouts/users.html.erb +0 -17
  854. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/sellers/edit.html.erb +0 -12
  855. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/sellers/index.html.erb +0 -20
  856. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/sellers/new.html.erb +0 -11
  857. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/sellers/show.html.erb +0 -3
  858. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/states/edit.html.erb +0 -12
  859. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/states/index.html.erb +0 -19
  860. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/states/new.html.erb +0 -11
  861. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/states/show.html.erb +0 -3
  862. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/users/edit.html.erb +0 -12
  863. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/users/index.html.erb +0 -22
  864. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/users/new.html.erb +0 -11
  865. data/vendor/plugins/has_many_polymorphs/test/integration/app/app/views/users/show.html.erb +0 -3
  866. data/vendor/plugins/has_many_polymorphs/test/integration/app/config/boot.rb +0 -110
  867. data/vendor/plugins/has_many_polymorphs/test/integration/app/config/database.yml +0 -17
  868. data/vendor/plugins/has_many_polymorphs/test/integration/app/config/environment.rb +0 -19
  869. data/vendor/plugins/has_many_polymorphs/test/integration/app/config/environment.rb.canonical +0 -19
  870. data/vendor/plugins/has_many_polymorphs/test/integration/app/config/environments/development.rb +0 -8
  871. data/vendor/plugins/has_many_polymorphs/test/integration/app/config/environments/production.rb +0 -18
  872. data/vendor/plugins/has_many_polymorphs/test/integration/app/config/environments/test.rb +0 -19
  873. data/vendor/plugins/has_many_polymorphs/test/integration/app/config/routes.rb +0 -33
  874. data/vendor/plugins/has_many_polymorphs/test/integration/app/config/ultrasphinx/default.base +0 -56
  875. data/vendor/plugins/has_many_polymorphs/test/integration/app/config/ultrasphinx/development.conf.canonical +0 -155
  876. data/vendor/plugins/has_many_polymorphs/test/integration/app/db/migrate/001_create_sticks.rb +0 -11
  877. data/vendor/plugins/has_many_polymorphs/test/integration/app/db/migrate/002_create_stones.rb +0 -11
  878. data/vendor/plugins/has_many_polymorphs/test/integration/app/db/migrate/003_create_organic_substances.rb +0 -11
  879. data/vendor/plugins/has_many_polymorphs/test/integration/app/db/migrate/004_create_bones.rb +0 -8
  880. data/vendor/plugins/has_many_polymorphs/test/integration/app/db/migrate/005_create_single_sti_parents.rb +0 -11
  881. data/vendor/plugins/has_many_polymorphs/test/integration/app/db/migrate/006_create_double_sti_parents.rb +0 -11
  882. data/vendor/plugins/has_many_polymorphs/test/integration/app/db/migrate/007_create_single_sti_parent_relationships.rb +0 -13
  883. data/vendor/plugins/has_many_polymorphs/test/integration/app/db/migrate/008_create_double_sti_parent_relationships.rb +0 -14
  884. data/vendor/plugins/has_many_polymorphs/test/integration/app/db/migrate/009_create_library_model.rb +0 -11
  885. data/vendor/plugins/has_many_polymorphs/test/integration/app/doc/README_FOR_APP +0 -2
  886. data/vendor/plugins/has_many_polymorphs/test/integration/app/generators/commenting_generator_test.rb +0 -83
  887. data/vendor/plugins/has_many_polymorphs/test/integration/app/lib/library_model.rb +0 -2
  888. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/404.html +0 -30
  889. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/500.html +0 -30
  890. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/dispatch.cgi +0 -10
  891. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/dispatch.fcgi +0 -24
  892. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/dispatch.rb +0 -10
  893. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/favicon.ico +0 -0
  894. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/images/rails.png +0 -0
  895. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/index.html +0 -277
  896. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/javascripts/application.js +0 -2
  897. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/javascripts/controls.js +0 -833
  898. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/javascripts/dragdrop.js +0 -942
  899. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/javascripts/effects.js +0 -1088
  900. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/javascripts/prototype.js +0 -2515
  901. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/robots.txt +0 -1
  902. data/vendor/plugins/has_many_polymorphs/test/integration/app/public/stylesheets/scaffold.css +0 -74
  903. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/about +0 -3
  904. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/breakpointer +0 -3
  905. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/console +0 -3
  906. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/destroy +0 -3
  907. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/generate +0 -3
  908. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/performance/benchmarker +0 -3
  909. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/performance/profiler +0 -3
  910. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/plugin +0 -3
  911. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/process/inspector +0 -3
  912. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/process/reaper +0 -3
  913. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/process/spawner +0 -3
  914. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/runner +0 -3
  915. data/vendor/plugins/has_many_polymorphs/test/integration/app/script/server +0 -3
  916. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/fixtures/double_sti_parent_relationships.yml +0 -7
  917. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/fixtures/double_sti_parents.yml +0 -7
  918. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/fixtures/organic_substances.yml +0 -5
  919. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/fixtures/single_sti_parent_relationships.yml +0 -7
  920. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/fixtures/single_sti_parents.yml +0 -7
  921. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/fixtures/sticks.yml +0 -7
  922. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/fixtures/stones.yml +0 -7
  923. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/functional/addresses_controller_test.rb +0 -57
  924. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/functional/bones_controller_test.rb +0 -8
  925. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/functional/sellers_controller_test.rb +0 -57
  926. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/functional/states_controller_test.rb +0 -57
  927. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/functional/users_controller_test.rb +0 -57
  928. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/test_helper.rb +0 -8
  929. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/unit/bone_test.rb +0 -8
  930. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/unit/double_sti_parent_relationship_test.rb +0 -8
  931. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/unit/double_sti_parent_test.rb +0 -8
  932. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/unit/organic_substance_test.rb +0 -8
  933. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/unit/single_sti_parent_relationship_test.rb +0 -8
  934. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/unit/single_sti_parent_test.rb +0 -8
  935. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/unit/stick_test.rb +0 -8
  936. data/vendor/plugins/has_many_polymorphs/test/integration/app/test/unit/stone_test.rb +0 -8
  937. data/vendor/plugins/has_many_polymorphs/test/integration/server_test.rb +0 -43
  938. data/vendor/plugins/has_many_polymorphs/test/models/aquatic/fish.rb +0 -5
  939. data/vendor/plugins/has_many_polymorphs/test/models/aquatic/pupils_whale.rb +0 -7
  940. data/vendor/plugins/has_many_polymorphs/test/models/aquatic/whale.rb +0 -15
  941. data/vendor/plugins/has_many_polymorphs/test/models/beautiful_fight_relationship.rb +0 -26
  942. data/vendor/plugins/has_many_polymorphs/test/models/canine.rb +0 -9
  943. data/vendor/plugins/has_many_polymorphs/test/models/cat.rb +0 -5
  944. data/vendor/plugins/has_many_polymorphs/test/models/dog.rb +0 -18
  945. data/vendor/plugins/has_many_polymorphs/test/models/eaters_foodstuff.rb +0 -10
  946. data/vendor/plugins/has_many_polymorphs/test/models/frog.rb +0 -4
  947. data/vendor/plugins/has_many_polymorphs/test/models/kitten.rb +0 -3
  948. data/vendor/plugins/has_many_polymorphs/test/models/parentship.rb +0 -4
  949. data/vendor/plugins/has_many_polymorphs/test/models/person.rb +0 -9
  950. data/vendor/plugins/has_many_polymorphs/test/models/petfood.rb +0 -39
  951. data/vendor/plugins/has_many_polymorphs/test/models/tabby.rb +0 -2
  952. data/vendor/plugins/has_many_polymorphs/test/models/wild_boar.rb +0 -3
  953. data/vendor/plugins/has_many_polymorphs/test/modules/extension_module.rb +0 -9
  954. data/vendor/plugins/has_many_polymorphs/test/modules/other_extension_module.rb +0 -9
  955. data/vendor/plugins/has_many_polymorphs/test/patches/symlinked_plugins_1.2.6.diff +0 -46
  956. data/vendor/plugins/has_many_polymorphs/test/schema.rb +0 -87
  957. data/vendor/plugins/has_many_polymorphs/test/setup.rb +0 -14
  958. data/vendor/plugins/has_many_polymorphs/test/test_helper.rb +0 -51
  959. data/vendor/plugins/has_many_polymorphs/test/unit/has_many_polymorphs_test.rb +0 -714
@@ -0,0 +1,24 @@
1
+ module Sass
2
+ module Tree
3
+ class VariableNode < Node
4
+ def initialize(name, expr, guarded, options)
5
+ @name = name
6
+ @expr = expr
7
+ @guarded = guarded
8
+ super(options)
9
+ end
10
+
11
+ protected
12
+
13
+ def _perform(environment)
14
+ if @guarded && environment.var(@name).nil?
15
+ environment.set_var(@name, @expr.perform(environment))
16
+ elsif !@guarded
17
+ environment.set_var(@name, @expr.perform(environment))
18
+ end
19
+
20
+ []
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ require 'sass/tree/node'
2
+
3
+ module Sass::Tree
4
+ class WhileNode < Node
5
+ def initialize(expr, options)
6
+ @expr = expr
7
+ super(options)
8
+ end
9
+
10
+ private
11
+
12
+ def _perform(environment)
13
+ children = []
14
+ while @expr.perform(environment).to_bool
15
+ children += perform_children(Sass::Environment.new(environment))
16
+ end
17
+ children
18
+ end
19
+ end
20
+ end
@@ -0,0 +1 @@
1
+ Kernel.load File.join(File.dirname(__FILE__), '..', 'init.rb')
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ times = (ARGV.first || 1000).to_i
4
+
5
+ if times == 0 # Invalid parameter
6
+ puts <<END
7
+ ruby #$0 [times=1000]
8
+ Benchmark Haml against various other templating languages and Sass
9
+ on its own.
10
+ END
11
+ exit 1
12
+ end
13
+
14
+ require File.dirname(__FILE__) + '/../lib/haml'
15
+ require File.dirname(__FILE__) + '/linked_rails'
16
+ %w[sass rubygems erb erubis markaby active_support action_controller
17
+ action_view action_pack haml/template rbench].each {|dep| require(dep)}
18
+
19
+ def view
20
+ unless Haml::Util.has?(:instance_method, ActionView::Base, :finder)
21
+ return ActionView::Base.new(File.dirname(__FILE__), {})
22
+ end
23
+
24
+ # Rails >=2.1.0
25
+ base = ActionView::Base.new
26
+ base.finder.append_view_path(File.dirname(__FILE__))
27
+ base
28
+ end
29
+
30
+ def render(view, file)
31
+ view.render :file => file
32
+ end
33
+
34
+ RBench.run(times) do
35
+ column :haml, :title => "Haml"
36
+ column :haml_ugly, :title => "Haml :ugly"
37
+ column :erb, :title => "ERB"
38
+ column :erubis, :title => "Erubis"
39
+
40
+ template_name = 'standard'
41
+ directory = File.dirname(__FILE__) + '/haml'
42
+ haml_template = File.read("#{directory}/templates/#{template_name}.haml")
43
+ erb_template = File.read("#{directory}/rhtml/#{template_name}.rhtml")
44
+ markaby_template = File.read("#{directory}/markaby/#{template_name}.mab")
45
+
46
+ report "Cached" do
47
+ obj = Object.new
48
+
49
+ Haml::Engine.new(haml_template).def_method(obj, :haml)
50
+ Haml::Engine.new(haml_template, :ugly => true).def_method(obj, :haml_ugly)
51
+ Erubis::Eruby.new(erb_template).def_method(obj, :erubis)
52
+ obj.instance_eval("def erb; #{ERB.new(erb_template, nil, '-').src}; end")
53
+
54
+ haml { obj.haml }
55
+ haml_ugly { obj.haml_ugly }
56
+ erb { obj.erb }
57
+ erubis { obj.erubis }
58
+ end
59
+
60
+ report "ActionView" do
61
+ @base = view
62
+
63
+ @base.unmemoize_all
64
+ Haml::Template.options[:ugly] = false
65
+ # To cache the template
66
+ render @base, 'haml/templates/standard'
67
+ render @base, 'haml/rhtml/standard'
68
+
69
+ haml { render @base, 'haml/templates/standard' }
70
+ erb { render @base, 'haml/rhtml/standard' }
71
+
72
+ Haml::Template.options[:ugly] = true
73
+ render @base, 'haml/templates/standard_ugly'
74
+ haml_ugly { render @base, 'haml/templates/standard_ugly' }
75
+ end
76
+
77
+ report "ActionView with deep partials" do
78
+ @base = view
79
+
80
+ @base.unmemoize_all
81
+ Haml::Template.options[:ugly] = false
82
+ # To cache the template
83
+ render @base, 'haml/templates/action_view'
84
+ render @base, 'haml/rhtml/action_view'
85
+
86
+ haml { render @base, 'haml/templates/action_view' }
87
+ erb { render @base, 'haml/rhtml/action_view' }
88
+
89
+ Haml::Template.options[:ugly] = true
90
+ render @base, 'haml/templates/action_view_ugly'
91
+ haml_ugly { render @base, 'haml/templates/action_view_ugly' }
92
+ end
93
+ end
94
+
95
+ RBench.run(times) do
96
+ sass_template = File.read("#{File.dirname(__FILE__)}/sass/templates/complex.sass")
97
+
98
+ report("Sass") { Sass::Engine.new(sass_template).render }
99
+ end
@@ -0,0 +1,734 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+
4
+ class EngineTest < Test::Unit::TestCase
5
+ # A map of erroneous Haml documents to the error messages they should produce.
6
+ # The error messages may be arrays;
7
+ # if so, the second element should be the line number that should be reported for the error.
8
+ # If this isn't provided, the tests will assume the line number should be the last line of the document.
9
+ EXCEPTION_MAP = {
10
+ "!!!\n a" => "Illegal nesting: nesting within a header command is illegal.",
11
+ "a\n b" => "Illegal nesting: nesting within plain text is illegal.",
12
+ "/ a\n b" => "Illegal nesting: nesting within a tag that already has content is illegal.",
13
+ "% a" => 'Invalid tag: "% a".',
14
+ "%p a\n b" => "Illegal nesting: content can't be both given on the same line as %p and nested within it.",
15
+ "%p=" => "There's no Ruby code for = to evaluate.",
16
+ "%p~" => "There's no Ruby code for ~ to evaluate.",
17
+ "~" => "There's no Ruby code for ~ to evaluate.",
18
+ "=" => "There's no Ruby code for = to evaluate.",
19
+ "%p/\n a" => "Illegal nesting: nesting within a self-closing tag is illegal.",
20
+ ":a\n b" => ['Filter "a" is not defined.', 1],
21
+ ":a= b" => 'Invalid filter name ":a= b".',
22
+ "." => "Illegal element: classes and ids must have values.",
23
+ ".#" => "Illegal element: classes and ids must have values.",
24
+ ".{} a" => "Illegal element: classes and ids must have values.",
25
+ ".= a" => "Illegal element: classes and ids must have values.",
26
+ "%p..a" => "Illegal element: classes and ids must have values.",
27
+ "%a/ b" => "Self-closing tags can't have content.",
28
+ "%p{:a => 'b',\n:c => 'd'}/ e" => ["Self-closing tags can't have content.", 2],
29
+ "%p{:a => 'b',\n:c => 'd'}=" => ["There's no Ruby code for = to evaluate.", 2],
30
+ "%p.{:a => 'b',\n:c => 'd'} e" => ["Illegal element: classes and ids must have values.", 1],
31
+ "%p{:a => 'b',\n:c => 'd',\n:e => 'f'}\n%p/ a" => ["Self-closing tags can't have content.", 4],
32
+ "%p{:a => 'b',\n:c => 'd',\n:e => 'f'}\n- raise 'foo'" => ["foo", 4],
33
+ "%p{:a => 'b',\n:c => raise('foo'),\n:e => 'f'}" => ["foo", 2],
34
+ "%p{:a => 'b',\n:c => 'd',\n:e => raise('foo')}" => ["foo", 3],
35
+ " %p foo" => "Indenting at the beginning of the document is illegal.",
36
+ " %p foo" => "Indenting at the beginning of the document is illegal.",
37
+ "- 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
+ " \n\t\n %p foo" => ["Indenting at the beginning of the document is illegal.", 3],
39
+ "\n\n %p foo" => ["Indenting at the beginning of the document is illegal.", 3],
40
+ "%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],
41
+ "%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],
42
+ "%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],
43
+ "%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],
44
+ "%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],
45
+ "%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],
46
+ "%p\n foo\n%p\n bar" => ["The line was indented 2 levels deeper than the previous line.", 4],
47
+ "%p\n foo\n %p\n bar" => ["The line was indented 3 levels deeper than the previous line.", 4],
48
+ "%p\n \tfoo" => ["Indentation can't use both tabs and spaces.", 2],
49
+
50
+ # Regression tests
51
+ "- raise 'foo'\n\n\n\nbar" => ["foo", 1],
52
+ "= 'foo'\n-raise 'foo'" => ["foo", 2],
53
+ "\n\n\n- raise 'foo'" => ["foo", 4],
54
+ "%p foo |\n bar |\n baz |\nbop\n- raise 'foo'" => ["foo", 5],
55
+ "foo\n\n\n bar" => ["Illegal nesting: nesting within plain text is illegal.", 4],
56
+ "%p/\n\n bar" => ["Illegal nesting: nesting within a self-closing tag is illegal.", 3],
57
+ "%p foo\n\n bar" => ["Illegal nesting: content can't be both given on the same line as %p and nested within it.", 3],
58
+ "/ foo\n\n bar" => ["Illegal nesting: nesting within a tag that already has content is illegal.", 3],
59
+ "!!!\n\n bar" => ["Illegal nesting: nesting within a header command is illegal.", 3],
60
+ "foo\n:ruby\n 1\n 2\n 3\n- raise 'foo'" => ["foo", 6],
61
+ }
62
+
63
+ User = Struct.new('User', :id)
64
+
65
+ def render(text, options = {}, &block)
66
+ scope = options.delete(:scope) || Object.new
67
+ locals = options.delete(:locals) || {}
68
+ engine(text, options).to_html(scope, locals, &block)
69
+ end
70
+
71
+ def engine(text, options = {})
72
+ unless options[:filename]
73
+ # use caller method name as fake filename. useful for debugging
74
+ i = -1
75
+ caller[i+=1] =~ /`(.+?)'/ until $1 and $1.index('test_') == 0
76
+ options[:filename] = "(#{$1})"
77
+ end
78
+ Haml::Engine.new(text, options)
79
+ end
80
+
81
+ def test_empty_render
82
+ assert_equal "", render("")
83
+ end
84
+
85
+ def test_flexible_tabulation
86
+ assert_equal("<p>\n foo\n</p>\n<q>\n bar\n <a>\n baz\n </a>\n</q>\n",
87
+ render("%p\n foo\n%q\n bar\n %a\n baz"))
88
+ assert_equal("<p>\n foo\n</p>\n<q>\n bar\n <a>\n baz\n </a>\n</q>\n",
89
+ render("%p\n\tfoo\n%q\n\tbar\n\t%a\n\t\tbaz"))
90
+ assert_equal("<p>\n \t \t bar\n baz\n</p>\n",
91
+ render("%p\n :plain\n \t \t bar\n baz"))
92
+ end
93
+
94
+ def test_empty_render_should_remain_empty
95
+ assert_equal('', render(''))
96
+ end
97
+
98
+ def test_attributes_should_render_correctly
99
+ assert_equal("<div class='atlantis' style='ugly'></div>", render(".atlantis{:style => 'ugly'}").chomp)
100
+ end
101
+
102
+ def test_ruby_code_should_work_inside_attributes
103
+ author = 'hcatlin'
104
+ assert_equal("<p class='3'>foo</p>", render("%p{:class => 1+2} foo").chomp)
105
+ end
106
+
107
+ def test_nil_should_render_empty_tag
108
+ assert_equal("<div class='no_attributes'></div>",
109
+ render(".no_attributes{:nil => nil}").chomp)
110
+ end
111
+
112
+ def test_strings_should_get_stripped_inside_tags
113
+ assert_equal("<div class='stripped'>This should have no spaces in front of it</div>",
114
+ render(".stripped This should have no spaces in front of it").chomp)
115
+ end
116
+
117
+ def test_one_liner_should_be_one_line
118
+ assert_equal("<p>Hello</p>", render('%p Hello').chomp)
119
+ end
120
+
121
+ def test_one_liner_with_newline_shouldnt_be_one_line
122
+ assert_equal("<p>\n foo\n bar\n</p>", render('%p= "foo\nbar"').chomp)
123
+ end
124
+
125
+ def test_multi_render
126
+ engine = engine("%strong Hi there!")
127
+ assert_equal("<strong>Hi there!</strong>\n", engine.to_html)
128
+ assert_equal("<strong>Hi there!</strong>\n", engine.to_html)
129
+ assert_equal("<strong>Hi there!</strong>\n", engine.to_html)
130
+ end
131
+
132
+ def test_double_equals
133
+ assert_equal("<p>Hello World</p>\n", render('%p== Hello #{who}', :locals => {:who => 'World'}))
134
+ assert_equal("<p>\n Hello World\n</p>\n", render("%p\n == Hello \#{who}", :locals => {:who => 'World'}))
135
+ end
136
+
137
+ def test_double_equals_in_the_middle_of_a_string
138
+ assert_equal("\"title 'Title'. \"\n",
139
+ render("== \"title '\#{\"Title\"}'. \""))
140
+ end
141
+
142
+ def test_nil_tag_value_should_render_as_empty
143
+ assert_equal("<p></p>\n", render("%p= nil"))
144
+ end
145
+
146
+ def test_tag_with_failed_if_should_render_as_empty
147
+ assert_equal("<p></p>\n", render("%p= 'Hello' if false"))
148
+ end
149
+
150
+ def test_static_attributes_with_empty_attr
151
+ assert_equal("<img alt='' src='/foo.png' />\n", render("%img{:src => '/foo.png', :alt => ''}"))
152
+ end
153
+
154
+ def test_dynamic_attributes_with_empty_attr
155
+ assert_equal("<img alt='' src='/foo.png' />\n", render("%img{:width => nil, :src => '/foo.png', :alt => String.new}"))
156
+ end
157
+
158
+ def test_attribute_hash_with_newlines
159
+ assert_equal("<p a='b' c='d'>foop</p>\n", render("%p{:a => 'b',\n :c => 'd'} foop"))
160
+ assert_equal("<p a='b' c='d'>\n foop\n</p>\n", render("%p{:a => 'b',\n :c => 'd'}\n foop"))
161
+ assert_equal("<p a='b' c='d' />\n", render("%p{:a => 'b',\n :c => 'd'}/"))
162
+ assert_equal("<p a='b' c='d' e='f'></p>\n", render("%p{:a => 'b',\n :c => 'd',\n :e => 'f'}"))
163
+ end
164
+
165
+ def test_attr_hashes_not_modified
166
+ hash = {:color => 'red'}
167
+ assert_equal(<<HTML, render(<<HAML, :locals => {:hash => hash}))
168
+ <div color='red'></div>
169
+ <div class='special' color='red'></div>
170
+ <div color='red'></div>
171
+ HTML
172
+ %div{hash}
173
+ .special{hash}
174
+ %div{hash}
175
+ HAML
176
+ assert_equal(hash, {:color => 'red'})
177
+ end
178
+
179
+ def test_end_of_file_multiline
180
+ assert_equal("<p>0</p>\n<p>1</p>\n<p>2</p>\n", render("- for i in (0...3)\n %p= |\n i |"))
181
+ end
182
+
183
+ def test_cr_newline
184
+ assert_equal("<p>foo</p>\n<p>bar</p>\n<p>baz</p>\n<p>boom</p>\n", render("%p foo\r%p bar\r\n%p baz\n\r%p boom"))
185
+ end
186
+
187
+ def test_textareas
188
+ assert_equal("<textarea>Foo&#x000A; bar&#x000A; baz</textarea>\n",
189
+ render('%textarea= "Foo\n bar\n baz"'))
190
+
191
+ assert_equal("<pre>Foo&#x000A; bar&#x000A; baz</pre>\n",
192
+ render('%pre= "Foo\n bar\n baz"'))
193
+
194
+ assert_equal("<textarea>#{'a' * 100}</textarea>\n",
195
+ render("%textarea #{'a' * 100}"))
196
+
197
+ assert_equal("<p>\n <textarea>Foo\n Bar\n Baz</textarea>\n</p>\n", render(<<SOURCE))
198
+ %p
199
+ %textarea
200
+ Foo
201
+ Bar
202
+ Baz
203
+ SOURCE
204
+ end
205
+
206
+ def test_boolean_attributes
207
+ assert_equal("<p bar baz='true' foo='bar'></p>\n",
208
+ render("%p{:foo => 'bar', :bar => true, :baz => 'true'}", :format => :html4))
209
+ assert_equal("<p bar='bar' baz='true' foo='bar'></p>\n",
210
+ render("%p{:foo => 'bar', :bar => true, :baz => 'true'}", :format => :xhtml))
211
+
212
+ assert_equal("<p baz='false' foo='bar'></p>\n",
213
+ render("%p{:foo => 'bar', :bar => false, :baz => 'false'}", :format => :html4))
214
+ assert_equal("<p baz='false' foo='bar'></p>\n",
215
+ render("%p{:foo => 'bar', :bar => false, :baz => 'false'}", :format => :xhtml))
216
+ end
217
+
218
+ def test_both_whitespace_nukes_work_together
219
+ assert_equal(<<RESULT, render(<<SOURCE))
220
+ <p><q>Foo
221
+ Bar</q></p>
222
+ RESULT
223
+ %p
224
+ %q><= "Foo\\nBar"
225
+ SOURCE
226
+ end
227
+
228
+ # Regression tests
229
+
230
+ def test_whitespace_nuke_with_both_newlines
231
+ assert_equal("<p>foo</p>\n", render('%p<= "\nfoo\n"'))
232
+ assert_equal(<<HTML, render(<<HAML))
233
+ <p>
234
+ <p>foo</p>
235
+ </p>
236
+ HTML
237
+ %p
238
+ %p<= "\\nfoo\\n"
239
+ HAML
240
+ end
241
+
242
+ def test_both_case_indentation_work_with_deeply_nested_code
243
+ result = <<RESULT
244
+ <h2>
245
+ other
246
+ </h2>
247
+ RESULT
248
+ assert_equal(result, render(<<HAML))
249
+ - case 'other'
250
+ - when 'test'
251
+ %h2
252
+ hi
253
+ - when 'other'
254
+ %h2
255
+ other
256
+ HAML
257
+ assert_equal(result, render(<<HAML))
258
+ - case 'other'
259
+ - when 'test'
260
+ %h2
261
+ hi
262
+ - when 'other'
263
+ %h2
264
+ other
265
+ HAML
266
+ end
267
+
268
+ def test_equals_block_with_ugly
269
+ assert_equal("foo\n", render(<<HAML, :ugly => true))
270
+ = capture_haml do
271
+ foo
272
+ HAML
273
+ end
274
+
275
+ def test_plain_equals_with_ugly
276
+ assert_equal("foo\nbar\n", render(<<HAML, :ugly => true))
277
+ = "foo"
278
+ bar
279
+ HAML
280
+ end
281
+
282
+ def test_inline_if
283
+ assert_equal(<<HTML, render(<<HAML))
284
+ <p>One</p>
285
+ <p></p>
286
+ <p>Three</p>
287
+ HTML
288
+ - for name in ["One", "Two", "Three"]
289
+ %p= name unless name == "Two"
290
+ HAML
291
+ end
292
+
293
+ # HTML escaping tests
294
+
295
+ def test_ampersand_equals_should_escape
296
+ assert_equal("<p>\n foo &amp; bar\n</p>\n", render("%p\n &= 'foo & bar'", :escape_html => false))
297
+ end
298
+
299
+ def test_ampersand_equals_inline_should_escape
300
+ assert_equal("<p>foo &amp; bar</p>\n", render("%p&= 'foo & bar'", :escape_html => false))
301
+ end
302
+
303
+ def test_ampersand_equals_should_escape_before_preserve
304
+ assert_equal("<textarea>foo&#x000A;bar</textarea>\n", render('%textarea&= "foo\nbar"', :escape_html => false))
305
+ end
306
+
307
+ def test_bang_equals_should_not_escape
308
+ assert_equal("<p>\n foo & bar\n</p>\n", render("%p\n != 'foo & bar'", :escape_html => true))
309
+ end
310
+
311
+ def test_bang_equals_inline_should_not_escape
312
+ assert_equal("<p>foo & bar</p>\n", render("%p!= 'foo & bar'", :escape_html => true))
313
+ end
314
+
315
+ def test_static_attributes_should_be_escaped
316
+ assert_equal("<img class='atlantis' style='ugly&amp;stupid' />\n",
317
+ render("%img.atlantis{:style => 'ugly&stupid'}"))
318
+ assert_equal("<div class='atlantis' style='ugly&amp;stupid'>foo</div>\n",
319
+ render(".atlantis{:style => 'ugly&stupid'} foo"))
320
+ assert_equal("<p class='atlantis' style='ugly&amp;stupid'>foo</p>\n",
321
+ render("%p.atlantis{:style => 'ugly&stupid'}= 'foo'"))
322
+ assert_equal("<p class='atlantis' style='ugly&#x000A;stupid'></p>\n",
323
+ render("%p.atlantis{:style => \"ugly\\nstupid\"}"))
324
+ end
325
+
326
+ def test_dynamic_attributes_should_be_escaped
327
+ assert_equal("<img alt='' src='&amp;foo.png' />\n",
328
+ render("%img{:width => nil, :src => '&foo.png', :alt => String.new}"))
329
+ assert_equal("<p alt='' src='&amp;foo.png'>foo</p>\n",
330
+ render("%p{:width => nil, :src => '&foo.png', :alt => String.new} foo"))
331
+ assert_equal("<div alt='' src='&amp;foo.png'>foo</div>\n",
332
+ render("%div{:width => nil, :src => '&foo.png', :alt => String.new}= 'foo'"))
333
+ assert_equal("<img alt='' src='foo&#x000A;.png' />\n",
334
+ render("%img{:width => nil, :src => \"foo\\n.png\", :alt => String.new}"))
335
+ end
336
+
337
+ def test_string_double_equals_should_be_esaped
338
+ assert_equal("<p>4&amp;3</p>\n", render("%p== \#{2+2}&\#{2+1}", :escape_html => true))
339
+ assert_equal("<p>4&3</p>\n", render("%p== \#{2+2}&\#{2+1}", :escape_html => false))
340
+ end
341
+
342
+ def test_escaped_inline_string_double_equals
343
+ assert_equal("<p>4&amp;3</p>\n", render("%p&== \#{2+2}&\#{2+1}", :escape_html => true))
344
+ assert_equal("<p>4&amp;3</p>\n", render("%p&== \#{2+2}&\#{2+1}", :escape_html => false))
345
+ end
346
+
347
+ def test_unescaped_inline_string_double_equals
348
+ assert_equal("<p>4&3</p>\n", render("%p!== \#{2+2}&\#{2+1}", :escape_html => true))
349
+ assert_equal("<p>4&3</p>\n", render("%p!== \#{2+2}&\#{2+1}", :escape_html => false))
350
+ end
351
+
352
+ def test_escaped_string_double_equals
353
+ assert_equal("<p>\n 4&amp;3\n</p>\n", render("%p\n &== \#{2+2}&\#{2+1}", :escape_html => true))
354
+ assert_equal("<p>\n 4&amp;3\n</p>\n", render("%p\n &== \#{2+2}&\#{2+1}", :escape_html => false))
355
+ end
356
+
357
+ def test_unescaped_string_double_equals
358
+ assert_equal("<p>\n 4&3\n</p>\n", render("%p\n !== \#{2+2}&\#{2+1}", :escape_html => true))
359
+ assert_equal("<p>\n 4&3\n</p>\n", render("%p\n !== \#{2+2}&\#{2+1}", :escape_html => false))
360
+ end
361
+
362
+ def test_string_interpolation_should_be_esaped
363
+ assert_equal("<p>4&amp;3</p>\n", render("%p \#{2+2}&\#{2+1}", :escape_html => true))
364
+ assert_equal("<p>4&3</p>\n", render("%p \#{2+2}&\#{2+1}", :escape_html => false))
365
+ end
366
+
367
+ def test_escaped_inline_string_interpolation
368
+ assert_equal("<p>4&amp;3</p>\n", render("%p& \#{2+2}&\#{2+1}", :escape_html => true))
369
+ assert_equal("<p>4&amp;3</p>\n", render("%p& \#{2+2}&\#{2+1}", :escape_html => false))
370
+ end
371
+
372
+ def test_unescaped_inline_string_interpolation
373
+ assert_equal("<p>4&3</p>\n", render("%p! \#{2+2}&\#{2+1}", :escape_html => true))
374
+ assert_equal("<p>4&3</p>\n", render("%p! \#{2+2}&\#{2+1}", :escape_html => false))
375
+ end
376
+
377
+ def test_escaped_string_interpolation
378
+ assert_equal("<p>\n 4&amp;3\n</p>\n", render("%p\n & \#{2+2}&\#{2+1}", :escape_html => true))
379
+ assert_equal("<p>\n 4&amp;3\n</p>\n", render("%p\n & \#{2+2}&\#{2+1}", :escape_html => false))
380
+ end
381
+
382
+ def test_unescaped_string_interpolation
383
+ assert_equal("<p>\n 4&3\n</p>\n", render("%p\n ! \#{2+2}&\#{2+1}", :escape_html => true))
384
+ assert_equal("<p>\n 4&3\n</p>\n", render("%p\n ! \#{2+2}&\#{2+1}", :escape_html => false))
385
+ end
386
+
387
+ def test_scripts_should_respect_escape_html_option
388
+ assert_equal("<p>\n foo &amp; bar\n</p>\n", render("%p\n = 'foo & bar'", :escape_html => true))
389
+ assert_equal("<p>\n foo & bar\n</p>\n", render("%p\n = 'foo & bar'", :escape_html => false))
390
+ end
391
+
392
+ def test_inline_scripts_should_respect_escape_html_option
393
+ assert_equal("<p>foo &amp; bar</p>\n", render("%p= 'foo & bar'", :escape_html => true))
394
+ assert_equal("<p>foo & bar</p>\n", render("%p= 'foo & bar'", :escape_html => false))
395
+ end
396
+
397
+ def test_script_ending_in_comment_should_render_when_html_is_escaped
398
+ assert_equal("foo&amp;bar\n", render("= 'foo&bar' #comment", :escape_html => true))
399
+ end
400
+
401
+ def test_script_with_if_shouldnt_output
402
+ assert_equal(<<HTML, render(<<HAML))
403
+ <p>foo</p>
404
+ <p></p>
405
+ HTML
406
+ %p= "foo"
407
+ %p= "bar" if false
408
+ HAML
409
+ end
410
+
411
+ # Options tests
412
+
413
+ def test_filename_and_line
414
+ begin
415
+ render("\n\n = abc", :filename => 'test', :line => 2)
416
+ rescue Exception => e
417
+ assert_kind_of Haml::SyntaxError, e
418
+ assert_match(/test:4/, e.backtrace.first)
419
+ end
420
+
421
+ begin
422
+ render("\n\n= 123\n\n= nil[]", :filename => 'test', :line => 2)
423
+ rescue Exception => e
424
+ assert_kind_of NoMethodError, e
425
+ assert_match(/test:6/, e.backtrace.first)
426
+ end
427
+ end
428
+
429
+ def test_stop_eval
430
+ assert_equal("", render("= 'Hello'", :suppress_eval => true))
431
+ assert_equal("", render("- haml_concat 'foo'", :suppress_eval => true))
432
+ assert_equal("<div id='foo' yes='no' />\n", render("#foo{:yes => 'no'}/", :suppress_eval => true))
433
+ assert_equal("<div id='foo' />\n", render("#foo{:yes => 'no', :call => a_function() }/", :suppress_eval => true))
434
+ assert_equal("<div />\n", render("%div[1]/", :suppress_eval => true))
435
+ assert_equal("", render(":ruby\n Kernel.puts 'hello'", :suppress_eval => true))
436
+ end
437
+
438
+ def test_doctypes
439
+ assert_equal('<!DOCTYPE html>',
440
+ render('!!!', :format => :html5).strip)
441
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
442
+ render('!!! strict').strip)
443
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
444
+ render('!!! frameset').strip)
445
+ assert_equal('<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">',
446
+ render('!!! mobile').strip)
447
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">',
448
+ render('!!! basic').strip)
449
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
450
+ render('!!! transitional').strip)
451
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
452
+ render('!!!').strip)
453
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',
454
+ render('!!! strict', :format => :html4).strip)
455
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">',
456
+ render('!!! frameset', :format => :html4).strip)
457
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
458
+ render('!!! transitional', :format => :html4).strip)
459
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
460
+ render('!!!', :format => :html4).strip)
461
+ end
462
+
463
+ def test_attr_wrapper
464
+ assert_equal("<p strange=*attrs*></p>\n", render("%p{ :strange => 'attrs'}", :attr_wrapper => '*'))
465
+ assert_equal("<p escaped='quo\"te'></p>\n", render("%p{ :escaped => 'quo\"te'}", :attr_wrapper => '"'))
466
+ assert_equal("<p escaped=\"quo'te\"></p>\n", render("%p{ :escaped => 'quo\\'te'}", :attr_wrapper => '"'))
467
+ assert_equal("<p escaped=\"q'uo&quot;te\"></p>\n", render("%p{ :escaped => 'q\\'uo\"te'}", :attr_wrapper => '"'))
468
+ assert_equal("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n", render("!!! XML", :attr_wrapper => '"'))
469
+ end
470
+
471
+ def test_attrs_parsed_correctly
472
+ assert_equal("<p boom=>biddly='bar =&gt; baz'></p>\n", render("%p{'boom=>biddly' => 'bar => baz'}"))
473
+ assert_equal("<p foo,bar='baz, qux'></p>\n", render("%p{'foo,bar' => 'baz, qux'}"))
474
+ assert_equal("<p escaped='quo&#x000A;te'></p>\n", render("%p{ :escaped => \"quo\\nte\"}"))
475
+ assert_equal("<p escaped='quo4te'></p>\n", render("%p{ :escaped => \"quo\#{2 + 2}te\"}"))
476
+ end
477
+
478
+ def test_correct_parsing_with_brackets
479
+ assert_equal("<p class='foo'>{tada} foo</p>\n", render("%p{:class => 'foo'} {tada} foo"))
480
+ assert_equal("<p class='foo'>deep {nested { things }}</p>\n", render("%p{:class => 'foo'} deep {nested { things }}"))
481
+ assert_equal("<p class='bar foo'>{a { d</p>\n", render("%p{{:class => 'foo'}, :class => 'bar'} {a { d"))
482
+ assert_equal("<p foo='bar'>a}</p>\n", render("%p{:foo => 'bar'} a}"))
483
+
484
+ foo = []
485
+ foo[0] = Struct.new('Foo', :id).new
486
+ assert_equal("<p class='struct_foo' id='struct_foo_new'>New User]</p>\n",
487
+ render("%p[foo[0]] New User]", :locals => {:foo => foo}))
488
+ assert_equal("<p class='prefix_struct_foo' id='prefix_struct_foo_new'>New User]</p>\n",
489
+ render("%p[foo[0], :prefix] New User]", :locals => {:foo => foo}))
490
+
491
+ foo[0].id = 1
492
+ assert_equal("<p class='struct_foo' id='struct_foo_1'>New User]</p>\n",
493
+ render("%p[foo[0]] New User]", :locals => {:foo => foo}))
494
+ assert_equal("<p class='prefix_struct_foo' id='prefix_struct_foo_1'>New User]</p>\n",
495
+ render("%p[foo[0], :prefix] New User]", :locals => {:foo => foo}))
496
+ end
497
+
498
+ def test_empty_attrs
499
+ assert_equal("<p attr=''>empty</p>\n", render("%p{ :attr => '' } empty"))
500
+ assert_equal("<p attr=''>empty</p>\n", render("%p{ :attr => x } empty", :locals => {:x => ''}))
501
+ end
502
+
503
+ def test_nil_attrs
504
+ assert_equal("<p>nil</p>\n", render("%p{ :attr => nil } nil"))
505
+ assert_equal("<p>nil</p>\n", render("%p{ :attr => x } nil", :locals => {:x => nil}))
506
+ end
507
+
508
+ def test_nil_id_with_syntactic_id
509
+ assert_equal("<p id='foo'>nil</p>\n", render("%p#foo{:id => nil} nil"))
510
+ assert_equal("<p id='foo_bar'>nil</p>\n", render("%p#foo{{:id => 'bar'}, :id => nil} nil"))
511
+ assert_equal("<p id='foo_bar'>nil</p>\n", render("%p#foo{{:id => nil}, :id => 'bar'} nil"))
512
+ end
513
+
514
+ def test_nil_class_with_syntactic_class
515
+ assert_equal("<p class='foo'>nil</p>\n", render("%p.foo{:class => nil} nil"))
516
+ assert_equal("<p class='bar foo'>nil</p>\n", render("%p.bar.foo{:class => nil} nil"))
517
+ assert_equal("<p class='bar foo'>nil</p>\n", render("%p.foo{{:class => 'bar'}, :class => nil} nil"))
518
+ assert_equal("<p class='bar foo'>nil</p>\n", render("%p.foo{{:class => nil}, :class => 'bar'} nil"))
519
+ end
520
+
521
+ def test_locals
522
+ assert_equal("<p>Paragraph!</p>\n", render("%p= text", :locals => { :text => "Paragraph!" }))
523
+ end
524
+
525
+ def test_dynamic_attrs_shouldnt_register_as_literal_values
526
+ assert_equal("<p a='b2c'></p>\n", render('%p{:a => "b#{1 + 1}c"}'))
527
+ assert_equal("<p a='b2c'></p>\n", render("%p{:a => 'b' + (1 + 1).to_s + 'c'}"))
528
+ end
529
+
530
+ def test_dynamic_attrs_with_self_closed_tag
531
+ assert_equal("<a b='2' />\nc\n", render("%a{'b' => 1 + 1}/\n= 'c'\n"))
532
+ end
533
+
534
+ def test_exceptions
535
+ EXCEPTION_MAP.each do |key, value|
536
+ begin
537
+ render(key, :filename => "(exception test for #{key.inspect})")
538
+ rescue Exception => err
539
+ value = [value] unless value.is_a?(Array)
540
+ expected_message, line_no = value
541
+ line_no ||= key.split("\n").length
542
+ line_reported = err.backtrace[0].gsub(/\(.+\):/, '').to_i
543
+
544
+ assert_equal(expected_message, err.message, "Line: #{key}")
545
+ assert_equal(line_no, line_reported, "Line: #{key}")
546
+ else
547
+ assert(false, "Exception not raised for\n#{key}")
548
+ end
549
+ end
550
+ end
551
+
552
+ def test_exception_line
553
+ render("a\nb\n!!!\n c\nd")
554
+ rescue Haml::SyntaxError => e
555
+ assert_equal("(test_exception_line):4", e.backtrace[0])
556
+ else
557
+ assert(false, '"a\nb\n!!!\n c\nd" doesn\'t produce an exception')
558
+ end
559
+
560
+ def test_exception
561
+ render("%p\n hi\n %a= undefined\n= 12")
562
+ rescue Exception => e
563
+ assert_match("(test_exception):3", e.backtrace[0])
564
+ else
565
+ # Test failed... should have raised an exception
566
+ assert(false)
567
+ end
568
+
569
+ def test_compile_error
570
+ render("a\nb\n- fee)\nc")
571
+ rescue Exception => e
572
+ assert_match(/\(test_compile_error\):3: syntax error/i, e.message)
573
+ else
574
+ assert(false,
575
+ '"a\nb\n- fee)\nc" doesn\'t produce an exception!')
576
+ end
577
+
578
+ def test_unbalanced_brackets
579
+ render('foo #{1 + 5} foo #{6 + 7 bar #{8 + 9}')
580
+ rescue Haml::SyntaxError => e
581
+ assert_equal("Unbalanced brackets.", e.message)
582
+ end
583
+
584
+ def test_balanced_conditional_comments
585
+ assert_equal("<!--[if !(IE 6)|(IE 7)]> Bracket: ] <![endif]-->\n",
586
+ render("/[if !(IE 6)|(IE 7)] Bracket: ]"))
587
+ end
588
+
589
+ def test_empty_filter
590
+ assert_equal(<<END, render(':javascript'))
591
+ <script type='text/javascript'>
592
+ //<![CDATA[
593
+
594
+ //]]>
595
+ </script>
596
+ END
597
+ end
598
+
599
+ def test_ugly_filter
600
+ assert_equal(<<END, render(":sass\n #foo\n bar: baz", :ugly => true))
601
+ #foo {
602
+ bar: baz; }
603
+ END
604
+ end
605
+
606
+ def test_local_assigns_dont_modify_class
607
+ assert_equal("bar\n", render("= foo", :locals => {:foo => 'bar'}))
608
+ assert_equal(nil, defined?(foo))
609
+ end
610
+
611
+ def test_object_ref_with_nil_id
612
+ user = User.new
613
+ assert_equal("<p class='struct_user' id='struct_user_new'>New User</p>\n",
614
+ render("%p[user] New User", :locals => {:user => user}))
615
+ end
616
+
617
+ def test_object_ref_before_attrs
618
+ user = User.new 42
619
+ assert_equal("<p class='struct_user' id='struct_user_42' style='width: 100px;'>New User</p>\n",
620
+ render("%p[user]{:style => 'width: 100px;'} New User", :locals => {:user => user}))
621
+ end
622
+
623
+ def test_non_literal_attributes
624
+ assert_equal("<p a1='foo' a2='bar' a3='baz' />\n",
625
+ render("%p{a2, a1, :a3 => 'baz'}/",
626
+ :locals => {:a1 => {:a1 => 'foo'}, :a2 => {:a2 => 'bar'}}))
627
+ end
628
+
629
+ def test_render_should_accept_a_binding_as_scope
630
+ string = "This is a string!"
631
+ string.instance_variable_set("@var", "Instance variable")
632
+ b = string.instance_eval do
633
+ var = "Local variable"
634
+ binding
635
+ end
636
+
637
+ assert_equal("<p>THIS IS A STRING!</p>\n<p>Instance variable</p>\n<p>Local variable</p>\n",
638
+ render("%p= upcase\n%p= @var\n%p= var", :scope => b))
639
+ end
640
+
641
+ def test_yield_should_work_with_binding
642
+ assert_equal("12\nFOO\n", render("= yield\n= upcase", :scope => "foo".instance_eval{binding}) { 12 })
643
+ end
644
+
645
+ def test_yield_should_work_with_def_method
646
+ s = "foo"
647
+ engine("= yield\n= upcase").def_method(s, :render)
648
+ assert_equal("12\nFOO\n", s.render { 12 })
649
+ end
650
+
651
+ def test_def_method_with_module
652
+ engine("= yield\n= upcase").def_method(String, :render_haml)
653
+ assert_equal("12\nFOO\n", "foo".render_haml { 12 })
654
+ end
655
+
656
+ def test_def_method_locals
657
+ obj = Object.new
658
+ engine("%p= foo\n.bar{:baz => baz}= boom").def_method(obj, :render, :foo, :baz, :boom)
659
+ assert_equal("<p>1</p>\n<div baz='2' class='bar'>3</div>\n", obj.render(:foo => 1, :baz => 2, :boom => 3))
660
+ end
661
+
662
+ def test_render_proc_locals
663
+ proc = engine("%p= foo\n.bar{:baz => baz}= boom").render_proc(Object.new, :foo, :baz, :boom)
664
+ assert_equal("<p>1</p>\n<div baz='2' class='bar'>3</div>\n", proc[:foo => 1, :baz => 2, :boom => 3])
665
+ end
666
+
667
+ def test_render_proc_with_binding
668
+ assert_equal("FOO\n", engine("= upcase").render_proc("foo".instance_eval{binding}).call)
669
+ end
670
+
671
+ def test_ugly_true
672
+ assert_equal("<div id='outer'>\n<div id='inner'>\n<p>hello world</p>\n</div>\n</div>\n",
673
+ render("#outer\n #inner\n %p hello world", :ugly => true))
674
+
675
+ assert_equal("<p>#{'s' * 75}</p>\n",
676
+ render("%p #{'s' * 75}", :ugly => true))
677
+
678
+ assert_equal("<p>#{'s' * 75}</p>\n",
679
+ render("%p= 's' * 75", :ugly => true))
680
+ end
681
+
682
+ def test_auto_preserve_unless_ugly
683
+ assert_equal("<pre>foo&#x000A;bar</pre>\n", render('%pre="foo\nbar"'))
684
+ assert_equal("<pre>foo\nbar</pre>\n", render("%pre\n foo\n bar"))
685
+ assert_equal("<pre>foo\nbar</pre>\n", render('%pre="foo\nbar"', :ugly => true))
686
+ assert_equal("<pre>foo\nbar</pre>\n", render("%pre\n foo\n bar", :ugly => true))
687
+ end
688
+
689
+ def test_xhtml_output_option
690
+ assert_equal "<p>\n <br />\n</p>\n", render("%p\n %br", :format => :xhtml)
691
+ assert_equal "<a />\n", render("%a/", :format => :xhtml)
692
+ end
693
+
694
+ def test_arbitrary_output_option
695
+ assert_raise(Haml::Error, "Invalid output format :html1") { engine("%br", :format => :html1) }
696
+ end
697
+
698
+ # HTML 4.0
699
+
700
+ def test_html_has_no_self_closing_tags
701
+ assert_equal "<p>\n <br>\n</p>\n", render("%p\n %br", :format => :html4)
702
+ assert_equal "<br>\n", render("%br/", :format => :html4)
703
+ end
704
+
705
+ def test_html_renders_empty_node_with_closing_tag
706
+ assert_equal "<div class='foo'></div>\n", render(".foo", :format => :html4)
707
+ end
708
+
709
+ def test_html_doesnt_add_slash_to_self_closing_tags
710
+ assert_equal "<a>\n", render("%a/", :format => :html4)
711
+ assert_equal "<a foo='2'>\n", render("%a{:foo => 1 + 1}/", :format => :html4)
712
+ assert_equal "<meta>\n", render("%meta", :format => :html4)
713
+ assert_equal "<meta foo='2'>\n", render("%meta{:foo => 1 + 1}", :format => :html4)
714
+ end
715
+
716
+ def test_html_ignores_xml_prolog_declaration
717
+ assert_equal "", render('!!! XML', :format => :html4)
718
+ end
719
+
720
+ def test_html_has_different_doctype
721
+ assert_equal %{<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n},
722
+ render('!!!', :format => :html4)
723
+ end
724
+
725
+ # because anything before the doctype triggers quirks mode in IE
726
+ def test_xml_prolog_and_doctype_dont_result_in_a_leading_whitespace_in_html
727
+ assert_no_match(/^\s+/, render("!!! xml\n!!!", :format => :html4))
728
+ end
729
+
730
+ # HTML5
731
+ def test_html5_doctype
732
+ assert_equal %{<!DOCTYPE html>\n}, render('!!!', :format => :html5)
733
+ end
734
+ end