radiant 1.0.0.rc1 → 1.0.0.rc2

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

Potentially problematic release.


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

Files changed (623) hide show
  1. data/app/controllers/admin/resource_controller.rb +1 -0
  2. data/app/controllers/application_controller.rb +1 -1
  3. data/app/models/deprecated_tags.rb +5 -48
  4. data/app/models/user_action_observer.rb +8 -2
  5. data/app/views/layouts/application.html.haml +1 -1
  6. data/config/boot.rb +2 -2
  7. data/config/environment.rb +5 -3
  8. data/config/initializers/compass.rb +5 -0
  9. data/config/locales/en.yml +2 -2
  10. data/features/step_definitions/admin/pages_management_steps.rb +6 -1
  11. data/features/support/paths.rb +13 -0
  12. data/lib/generators/extension/templates/cucumber_env.rb +5 -1
  13. data/lib/generators/extension/templates/cucumber_paths.rb +20 -12
  14. data/lib/generators/extension/templates/gemspec.rb +10 -5
  15. data/lib/generators/instance/templates/instance_environment.rb +4 -2
  16. data/lib/radiant.rb +1 -1
  17. data/lib/radiant/gem_dependency_fix.rb +1 -1
  18. data/lib/radiant/taggable.rb +42 -3
  19. data/lib/tasks/framework.rake +6 -6
  20. data/{vendor/plugins/haml/test/sass/results/warn.css → log/.keep} +0 -0
  21. data/radiant.gemspec +3 -2
  22. data/script/console +2 -2
  23. data/spec/controllers/admin/pages_controller_spec.rb +1 -1
  24. data/spec/lib/radiant/taggable_spec.rb +53 -0
  25. data/vendor/extensions/archive/Rakefile +3 -3
  26. data/vendor/extensions/archive/features/support/env.rb +5 -1
  27. data/vendor/extensions/archive/features/support/paths.rb +20 -12
  28. data/vendor/extensions/archive/radiant-archive-extension.gemspec +10 -5
  29. data/vendor/extensions/archive/tmp/cache/meta/0e/da69d02186242cdfda62e46044566f2bc50f3a +0 -0
  30. data/vendor/extensions/{assets → clipped}/LICENSE +0 -0
  31. data/vendor/extensions/{assets → clipped}/README.md +21 -21
  32. data/vendor/extensions/{assets → clipped}/Rakefile +29 -31
  33. data/vendor/extensions/{assets → clipped}/app/controllers/admin/assets_controller.rb +16 -11
  34. data/vendor/extensions/clipped/app/controllers/admin/page_attachments_controller.rb +18 -0
  35. data/vendor/extensions/clipped/app/helpers/admin/assets_helper.rb +16 -0
  36. data/vendor/extensions/{assets → clipped}/app/models/asset.rb +12 -9
  37. data/vendor/extensions/{assets → clipped}/app/models/asset_tags.rb +36 -53
  38. data/vendor/extensions/{assets → clipped}/app/models/asset_type.rb +1 -7
  39. data/vendor/extensions/{assets → clipped}/app/models/old_page_attachment.rb +0 -0
  40. data/vendor/extensions/clipped/app/models/page_attachment.rb +21 -0
  41. data/vendor/extensions/{assets → clipped}/app/views/admin/assets/_asset.html.haml +2 -2
  42. data/vendor/extensions/{assets → clipped}/app/views/admin/assets/_asset_table.html.haml +4 -4
  43. data/vendor/extensions/clipped/app/views/admin/assets/_errors.html.haml +3 -0
  44. data/vendor/extensions/{assets → clipped}/app/views/admin/assets/_form.html.haml +2 -2
  45. data/vendor/extensions/{assets → clipped}/app/views/admin/assets/_page_assets.html.haml +1 -1
  46. data/vendor/extensions/{assets → clipped}/app/views/admin/assets/_search.html.haml +0 -0
  47. data/vendor/extensions/{assets → clipped}/app/views/admin/assets/_search_results.html.haml +1 -1
  48. data/vendor/extensions/{assets → clipped}/app/views/admin/assets/edit.html.haml +7 -8
  49. data/vendor/extensions/{assets → clipped}/app/views/admin/assets/index.html.haml +3 -2
  50. data/vendor/extensions/{assets → clipped}/app/views/admin/assets/new.html.haml +2 -2
  51. data/vendor/extensions/clipped/app/views/admin/assets/refresh.html.haml +14 -0
  52. data/vendor/extensions/{assets → clipped}/app/views/admin/assets/remove.html.haml +3 -3
  53. data/vendor/extensions/{assets → clipped}/app/views/admin/configuration/_edit.html.haml +1 -1
  54. data/vendor/extensions/{assets → clipped}/app/views/admin/configuration/_show.html.haml +1 -1
  55. data/vendor/extensions/clipped/app/views/admin/page_attachments/_attachment.html.haml +25 -0
  56. data/vendor/extensions/{assets → clipped}/app/views/admin/page_parts/_page_part.html.haml +3 -2
  57. data/vendor/extensions/{assets → clipped}/app/views/admin/pages/_asset_popups.html.haml +7 -7
  58. data/vendor/extensions/clipped/app/views/admin/pages/_assets.html.haml +11 -0
  59. data/vendor/extensions/{assets → clipped}/app/views/admin/removed/_assets_bucket.html.haml +1 -1
  60. data/vendor/extensions/{assets → clipped}/app/views/admin/removed/_assets_container.html.haml +9 -9
  61. data/vendor/extensions/{assets → clipped}/app/views/admin/removed/_bucket.html.haml +1 -1
  62. data/vendor/extensions/{assets → clipped}/app/views/admin/removed/_bucket_asset.html.haml +2 -2
  63. data/vendor/extensions/clipped/app/views/admin/removed/_show_bucket_link.html.haml +4 -0
  64. data/vendor/extensions/{assets → clipped}/app/views/admin/removed/_upload_to_page.html.haml +2 -2
  65. data/vendor/extensions/{assets → clipped}/app/views/admin/removed/bucket/_iframe.html.haml +0 -0
  66. data/vendor/extensions/{assets → clipped}/artwork/icons.png +0 -0
  67. data/vendor/extensions/{assets/assets_extension.rb → clipped/clipped_extension.rb} +10 -10
  68. data/vendor/extensions/{assets → clipped}/config/initializers/interpolation.rb +0 -0
  69. data/vendor/extensions/clipped/config/initializers/processors.rb +12 -0
  70. data/vendor/extensions/{assets → clipped}/config/initializers/radiant_config.rb +5 -4
  71. data/vendor/extensions/{assets → clipped}/config/locales/en.yml +6 -3
  72. data/vendor/extensions/{assets → clipped}/config/locales/nl.yml +1 -1
  73. data/vendor/extensions/{assets → clipped}/config/routes.rb +2 -2
  74. data/vendor/extensions/clipped/cucumber.yml +1 -0
  75. data/vendor/extensions/{assets → clipped}/db/migrate/001_create_assets.rb +0 -0
  76. data/vendor/extensions/{assets → clipped}/db/migrate/002_create_paperclip_attributes.rb +0 -0
  77. data/vendor/extensions/{assets → clipped}/db/migrate/003_create_user_observer.rb +0 -0
  78. data/vendor/extensions/{assets → clipped}/db/migrate/004_create_page_attachments.rb +0 -0
  79. data/vendor/extensions/{assets → clipped}/db/migrate/005_rename_users.rb +0 -0
  80. data/vendor/extensions/{assets → clipped}/db/migrate/20090316132151_disable_file_types.rb +0 -0
  81. data/vendor/extensions/{assets → clipped}/db/migrate/20110513205050_asset_uuid.rb +0 -0
  82. data/vendor/extensions/clipped/features/support/env.rb +11 -0
  83. data/vendor/extensions/clipped/features/support/paths.rb +22 -0
  84. data/vendor/extensions/{assets/lib/assets_admin_ui.rb → clipped/lib/clipped_admin_ui.rb} +1 -1
  85. data/vendor/extensions/{assets → clipped}/lib/page_asset_associations.rb +1 -1
  86. data/vendor/extensions/{assets → clipped}/lib/paperclip/frame_grab.rb +0 -0
  87. data/vendor/extensions/clipped/lib/radiant-clipped-extension.rb +2 -0
  88. data/vendor/extensions/clipped/lib/radiant-clipped-extension/version.rb +3 -0
  89. data/vendor/extensions/{assets/lib/tasks/assets_extension_tasks.rake → clipped/lib/tasks/clipped_extension_tasks.rake} +22 -16
  90. data/vendor/extensions/{assets → clipped}/lib/tasks/paperclip_tasks.rake +0 -0
  91. data/{public → vendor/extensions/clipped/public}/flash/ZeroClipboard.swf +0 -0
  92. data/{public → vendor/extensions/clipped/public}/images/admin/assets/add.png +0 -0
  93. data/{public → vendor/extensions/clipped/public}/images/admin/assets/archive_icon.png +0 -0
  94. data/{public → vendor/extensions/clipped/public}/images/admin/assets/audio_icon.png +0 -0
  95. data/{public → vendor/extensions/clipped/public}/images/admin/assets/audio_thumbnail.png +0 -0
  96. data/{public → vendor/extensions/clipped/public}/images/admin/assets/c_icon.png +0 -0
  97. data/{public → vendor/extensions/clipped/public}/images/admin/assets/copy.png +0 -0
  98. data/{public → vendor/extensions/clipped/public}/images/admin/assets/css_icon.png +0 -0
  99. data/{public → vendor/extensions/clipped/public}/images/admin/assets/database_icon.png +0 -0
  100. data/{public → vendor/extensions/clipped/public}/images/admin/assets/delete.png +0 -0
  101. data/{public → vendor/extensions/clipped/public}/images/admin/assets/document_icon.png +0 -0
  102. data/{public → vendor/extensions/clipped/public}/images/admin/assets/document_thumbnail.png +0 -0
  103. data/{public → vendor/extensions/clipped/public}/images/admin/assets/flash_icon.png +0 -0
  104. data/{public → vendor/extensions/clipped/public}/images/admin/assets/flash_thumbnail.png +0 -0
  105. data/{public → vendor/extensions/clipped/public}/images/admin/assets/font_icon.png +0 -0
  106. data/{public → vendor/extensions/clipped/public}/images/admin/assets/gzip_icon.png +0 -0
  107. data/{public → vendor/extensions/clipped/public}/images/admin/assets/html_icon.png +0 -0
  108. data/{public → vendor/extensions/clipped/public}/images/admin/assets/image_icon.png +0 -0
  109. data/{public → vendor/extensions/clipped/public}/images/admin/assets/image_thumbnail.png +0 -0
  110. data/{public → vendor/extensions/clipped/public}/images/admin/assets/java_icon.png +0 -0
  111. data/{public → vendor/extensions/clipped/public}/images/admin/assets/page_edit.png +0 -0
  112. data/{public → vendor/extensions/clipped/public}/images/admin/assets/perl_icon.png +0 -0
  113. data/{public → vendor/extensions/clipped/public}/images/admin/assets/php_icon.png +0 -0
  114. data/{public → vendor/extensions/clipped/public}/images/admin/assets/presentation_icon.png +0 -0
  115. data/{public → vendor/extensions/clipped/public}/images/admin/assets/python_icon.png +0 -0
  116. data/{public → vendor/extensions/clipped/public}/images/admin/assets/reorder_assets.png +0 -0
  117. data/{public → vendor/extensions/clipped/public}/images/admin/assets/ruby_icon.png +0 -0
  118. data/{public → vendor/extensions/clipped/public}/images/admin/assets/script_icon.png +0 -0
  119. data/{public → vendor/extensions/clipped/public}/images/admin/assets/spreadsheet_icon.png +0 -0
  120. data/{public → vendor/extensions/clipped/public}/images/admin/assets/tar_icon.png +0 -0
  121. data/{public → vendor/extensions/clipped/public}/images/admin/assets/unknown_icon.png +0 -0
  122. data/{public → vendor/extensions/clipped/public}/images/admin/assets/unknown_thumbnail.png +0 -0
  123. data/{public → vendor/extensions/clipped/public}/images/admin/assets/video_icon.png +0 -0
  124. data/{public → vendor/extensions/clipped/public}/images/admin/assets/video_thumbnail.png +0 -0
  125. data/{public → vendor/extensions/clipped/public}/images/admin/assets/xml_icon.png +0 -0
  126. data/{public → vendor/extensions/clipped/public}/images/admin/assets/zip_icon.png +0 -0
  127. data/vendor/extensions/{assets → clipped}/public/javascripts/admin/assets.js +66 -8
  128. data/vendor/extensions/{assets → clipped}/public/stylesheets/sass/admin/assets.sass +12 -6
  129. data/vendor/extensions/clipped/radiant-clipped-extension.gemspec +33 -0
  130. data/vendor/extensions/{assets → clipped}/spec/controllers/admin/assets_controller_spec.rb +0 -0
  131. data/vendor/extensions/clipped/spec/controllers/admin/page_attachments_controller_spec.rb +50 -0
  132. data/vendor/extensions/{assets → clipped}/spec/datasets/assets_dataset.rb +2 -1
  133. data/vendor/extensions/{assets/spec/lib/tag_deprecation_spec.rb → clipped/spec/lib/asset_tags_spec.rb} +3 -15
  134. data/vendor/extensions/{assets → clipped}/spec/models/asset_spec.rb +3 -2
  135. data/vendor/extensions/{assets → clipped}/spec/models/asset_type_spec.rb +0 -0
  136. data/vendor/extensions/{assets → clipped}/spec/spec.opts +0 -0
  137. data/vendor/extensions/{assets → clipped}/spec/spec_helper.rb +0 -0
  138. data/vendor/extensions/{assets → clipped}/wireframes/edit-page-assets-2.bmml +0 -0
  139. data/vendor/extensions/{assets → clipped}/wireframes/edit-page-assets-2.png +0 -0
  140. data/vendor/extensions/{assets → clipped}/wireframes/edit-page-assets-3.bmml +0 -0
  141. data/vendor/extensions/{assets → clipped}/wireframes/edit-page-assets-3.png +0 -0
  142. data/vendor/extensions/{assets → clipped}/wireframes/edit-page-assets.bmml +0 -0
  143. data/vendor/extensions/{assets → clipped}/wireframes/edit-page-assets.png +0 -0
  144. data/vendor/extensions/{assets → clipped}/wireframes/edit-page.bmml +0 -0
  145. data/vendor/extensions/{assets → clipped}/wireframes/edit-page.png +0 -0
  146. data/vendor/extensions/sheets/Rakefile +30 -18
  147. data/vendor/extensions/sheets/app/controllers/admin/sheet_resource_controller.rb +1 -1
  148. data/vendor/extensions/sheets/app/models/sheet.rb +4 -0
  149. data/vendor/extensions/sheets/app/views/admin/scripts/index.html.haml +9 -5
  150. data/vendor/extensions/sheets/app/views/admin/styles/index.html.haml +1 -1
  151. data/vendor/extensions/sheets/config/locales/en.yml +3 -1
  152. data/vendor/extensions/sheets/features/admin/managing_javascripts.feature +65 -0
  153. data/vendor/extensions/sheets/features/admin/managing_stylesheets.feature +65 -0
  154. data/vendor/extensions/sheets/features/support/env.rb +2 -7
  155. data/vendor/extensions/sheets/features/support/paths.rb +9 -12
  156. data/vendor/extensions/sheets/lib/radiant-sheets-extension/version.rb +1 -1
  157. data/vendor/extensions/sheets/radiant-sheets-extension.gemspec +9 -4
  158. data/vendor/extensions/sheets/spec/datasets/javascripts_dataset.rb +3 -1
  159. data/vendor/extensions/sheets/spec/datasets/stylesheets_dataset.rb +3 -1
  160. data/vendor/extensions/sheets/spec/lib/javascript_tags_spec.rb +4 -4
  161. data/vendor/extensions/sheets/spec/lib/stylesheet_tags_spec.rb +4 -4
  162. metadata +189 -599
  163. data/Gemfile +0 -3
  164. data/lib/generators/extension/templates/cucumber_datasets_loader.rb +0 -3
  165. data/public/assets/1/2375_1115822414591_1197894784_30347214_1109_n.jpg +0 -0
  166. data/public/assets/1/2375_1115822414591_1197894784_30347214_1109_n_icon.png +0 -0
  167. data/public/assets/1/2375_1115822414591_1197894784_30347214_1109_n_normal.jpg +0 -0
  168. data/public/assets/1/2375_1115822414591_1197894784_30347214_1109_n_thumbnail.png +0 -0
  169. data/public/images/roasters/banner.jpg +0 -0
  170. data/public/images/roasters/closelabel.gif +0 -0
  171. data/public/images/roasters/comment.png +0 -0
  172. data/public/images/roasters/gallery1.jpg +0 -0
  173. data/public/images/roasters/gallery2.jpg +0 -0
  174. data/public/images/roasters/gallery3.jpg +0 -0
  175. data/public/images/roasters/gallery4.jpg +0 -0
  176. data/public/images/roasters/gift.gif +0 -0
  177. data/public/images/roasters/green.gif +0 -0
  178. data/public/images/roasters/nav-background.gif +0 -0
  179. data/public/images/roasters/nav-divider.gif +0 -0
  180. data/public/images/roasters/nextlabel.gif +0 -0
  181. data/public/images/roasters/open.gif +0 -0
  182. data/public/images/roasters/preview-1.jpg +0 -0
  183. data/public/images/roasters/preview.jpg +0 -0
  184. data/public/images/roasters/prevlabel.gif +0 -0
  185. data/public/images/roasters/prize.gif +0 -0
  186. data/public/images/roasters/recycle.gif +0 -0
  187. data/public/images/roasters/rss.gif +0 -0
  188. data/public/images/roasters/thumb-grinder.jpg +0 -0
  189. data/public/images/roasters/thumb-grower.jpg +0 -0
  190. data/public/images/roasters/thumb-roaster.jpg +0 -0
  191. data/public/images/roasters/truck.gif +0 -0
  192. data/vendor/extensions/assets/HELP_admin.markdown +0 -69
  193. data/vendor/extensions/assets/VERSION +0 -1
  194. data/vendor/extensions/assets/app/controllers/admin/page_attachments_controller.rb +0 -45
  195. data/vendor/extensions/assets/app/helpers/admin/assets_helper.rb +0 -11
  196. data/vendor/extensions/assets/app/models/page_attachment.rb +0 -14
  197. data/vendor/extensions/assets/app/views/admin/assets/_errors.html.haml +0 -3
  198. data/vendor/extensions/assets/app/views/admin/page_attachments/_attachment.html.haml +0 -22
  199. data/vendor/extensions/assets/app/views/admin/page_attachments/_new_attachment.html.haml +0 -18
  200. data/vendor/extensions/assets/app/views/admin/pages/_assets.html.haml +0 -13
  201. data/vendor/extensions/assets/app/views/admin/removed/_show_bucket_link.html.haml +0 -4
  202. data/vendor/extensions/assets/lib/tag_deprecation.rb +0 -73
  203. data/vendor/extensions/assets/public/flash/ZeroClipboard.swf +0 -0
  204. data/vendor/extensions/assets/public/images/admin/assets/add.png +0 -0
  205. data/vendor/extensions/assets/public/images/admin/assets/archive_icon.png +0 -0
  206. data/vendor/extensions/assets/public/images/admin/assets/audio_icon.png +0 -0
  207. data/vendor/extensions/assets/public/images/admin/assets/audio_thumbnail.png +0 -0
  208. data/vendor/extensions/assets/public/images/admin/assets/c_icon.png +0 -0
  209. data/vendor/extensions/assets/public/images/admin/assets/copy.png +0 -0
  210. data/vendor/extensions/assets/public/images/admin/assets/css_icon.png +0 -0
  211. data/vendor/extensions/assets/public/images/admin/assets/database_icon.png +0 -0
  212. data/vendor/extensions/assets/public/images/admin/assets/delete.png +0 -0
  213. data/vendor/extensions/assets/public/images/admin/assets/document_icon.png +0 -0
  214. data/vendor/extensions/assets/public/images/admin/assets/document_thumbnail.png +0 -0
  215. data/vendor/extensions/assets/public/images/admin/assets/flash_icon.png +0 -0
  216. data/vendor/extensions/assets/public/images/admin/assets/flash_thumbnail.png +0 -0
  217. data/vendor/extensions/assets/public/images/admin/assets/font_icon.png +0 -0
  218. data/vendor/extensions/assets/public/images/admin/assets/gzip_icon.png +0 -0
  219. data/vendor/extensions/assets/public/images/admin/assets/html_icon.png +0 -0
  220. data/vendor/extensions/assets/public/images/admin/assets/image_icon.png +0 -0
  221. data/vendor/extensions/assets/public/images/admin/assets/image_thumbnail.png +0 -0
  222. data/vendor/extensions/assets/public/images/admin/assets/java_icon.png +0 -0
  223. data/vendor/extensions/assets/public/images/admin/assets/page_edit.png +0 -0
  224. data/vendor/extensions/assets/public/images/admin/assets/perl_icon.png +0 -0
  225. data/vendor/extensions/assets/public/images/admin/assets/php_icon.png +0 -0
  226. data/vendor/extensions/assets/public/images/admin/assets/presentation_icon.png +0 -0
  227. data/vendor/extensions/assets/public/images/admin/assets/python_icon.png +0 -0
  228. data/vendor/extensions/assets/public/images/admin/assets/reorder_assets.png +0 -0
  229. data/vendor/extensions/assets/public/images/admin/assets/ruby_icon.png +0 -0
  230. data/vendor/extensions/assets/public/images/admin/assets/script_icon.png +0 -0
  231. data/vendor/extensions/assets/public/images/admin/assets/spreadsheet_icon.png +0 -0
  232. data/vendor/extensions/assets/public/images/admin/assets/tar_icon.png +0 -0
  233. data/vendor/extensions/assets/public/images/admin/assets/unknown_icon.png +0 -0
  234. data/vendor/extensions/assets/public/images/admin/assets/unknown_thumbnail.png +0 -0
  235. data/vendor/extensions/assets/public/images/admin/assets/video_icon.png +0 -0
  236. data/vendor/extensions/assets/public/images/admin/assets/video_thumbnail.png +0 -0
  237. data/vendor/extensions/assets/public/images/admin/assets/xml_icon.png +0 -0
  238. data/vendor/extensions/assets/public/images/admin/assets/zip_icon.png +0 -0
  239. data/vendor/extensions/assets/spec/controllers/admin/page_attachment_controller_spec.rb +0 -51
  240. data/vendor/extensions/assets/spec/lib/asset_tags_spec.rb +0 -9
  241. data/vendor/plugins/haml/CONTRIBUTING +0 -4
  242. data/vendor/plugins/haml/MIT-LICENSE +0 -20
  243. data/vendor/plugins/haml/README.md +0 -298
  244. data/vendor/plugins/haml/Rakefile +0 -436
  245. data/vendor/plugins/haml/TODO +0 -53
  246. data/vendor/plugins/haml/VERSION +0 -1
  247. data/vendor/plugins/haml/VERSION_NAME +0 -1
  248. data/vendor/plugins/haml/bin/css2sass +0 -13
  249. data/vendor/plugins/haml/bin/haml +0 -9
  250. data/vendor/plugins/haml/bin/html2haml +0 -7
  251. data/vendor/plugins/haml/bin/sass +0 -8
  252. data/vendor/plugins/haml/bin/sass-convert +0 -7
  253. data/vendor/plugins/haml/doc-src/FAQ.md +0 -187
  254. data/vendor/plugins/haml/doc-src/HAML_CHANGELOG.md +0 -1091
  255. data/vendor/plugins/haml/doc-src/HAML_REFERENCE.md +0 -1344
  256. data/vendor/plugins/haml/doc-src/INDENTED_SYNTAX.md +0 -210
  257. data/vendor/plugins/haml/doc-src/SASS_CHANGELOG.md +0 -1914
  258. data/vendor/plugins/haml/doc-src/SASS_REFERENCE.md +0 -1680
  259. data/vendor/plugins/haml/doc-src/SCSS_FOR_SASS_USERS.md +0 -155
  260. data/vendor/plugins/haml/ext/extconf.rb +0 -10
  261. data/vendor/plugins/haml/extra/haml-mode.el +0 -753
  262. data/vendor/plugins/haml/extra/sass-mode.el +0 -207
  263. data/vendor/plugins/haml/extra/update_watch.rb +0 -13
  264. data/vendor/plugins/haml/haml.gemspec +0 -35
  265. data/vendor/plugins/haml/init.rb +0 -18
  266. data/vendor/plugins/haml/init.rbc +0 -404
  267. data/vendor/plugins/haml/lib/haml.rb +0 -44
  268. data/vendor/plugins/haml/lib/haml.rbc +0 -569
  269. data/vendor/plugins/haml/lib/haml/buffer.rb +0 -320
  270. data/vendor/plugins/haml/lib/haml/buffer.rbc +0 -4048
  271. data/vendor/plugins/haml/lib/haml/engine.rb +0 -308
  272. data/vendor/plugins/haml/lib/haml/engine.rbc +0 -3852
  273. data/vendor/plugins/haml/lib/haml/error.rb +0 -22
  274. data/vendor/plugins/haml/lib/haml/error.rbc +0 -339
  275. data/vendor/plugins/haml/lib/haml/exec.rb +0 -862
  276. data/vendor/plugins/haml/lib/haml/filters.rb +0 -371
  277. data/vendor/plugins/haml/lib/haml/filters.rbc +0 -5617
  278. data/vendor/plugins/haml/lib/haml/helpers.rb +0 -605
  279. data/vendor/plugins/haml/lib/haml/helpers.rbc +0 -7086
  280. data/vendor/plugins/haml/lib/haml/helpers/action_view_extensions.rb +0 -57
  281. data/vendor/plugins/haml/lib/haml/helpers/action_view_extensions.rbc +0 -522
  282. data/vendor/plugins/haml/lib/haml/helpers/action_view_mods.rb +0 -244
  283. data/vendor/plugins/haml/lib/haml/helpers/action_view_mods.rbc +0 -5515
  284. data/vendor/plugins/haml/lib/haml/helpers/xss_mods.rb +0 -165
  285. data/vendor/plugins/haml/lib/haml/html.rb +0 -428
  286. data/vendor/plugins/haml/lib/haml/html/erb.rb +0 -141
  287. data/vendor/plugins/haml/lib/haml/precompiler.rb +0 -1104
  288. data/vendor/plugins/haml/lib/haml/precompiler.rbc +0 -22247
  289. data/vendor/plugins/haml/lib/haml/railtie.rb +0 -21
  290. data/vendor/plugins/haml/lib/haml/railtie.rbc +0 -409
  291. data/vendor/plugins/haml/lib/haml/root.rb +0 -7
  292. data/vendor/plugins/haml/lib/haml/root.rbc +0 -160
  293. data/vendor/plugins/haml/lib/haml/shared.rb +0 -78
  294. data/vendor/plugins/haml/lib/haml/shared.rbc +0 -1137
  295. data/vendor/plugins/haml/lib/haml/template.rb +0 -97
  296. data/vendor/plugins/haml/lib/haml/template.rbc +0 -1838
  297. data/vendor/plugins/haml/lib/haml/template/options.rb +0 -16
  298. data/vendor/plugins/haml/lib/haml/template/options.rbc +0 -235
  299. data/vendor/plugins/haml/lib/haml/template/patch.rb +0 -58
  300. data/vendor/plugins/haml/lib/haml/template/plugin.rb +0 -122
  301. data/vendor/plugins/haml/lib/haml/template/plugin.rbc +0 -2720
  302. data/vendor/plugins/haml/lib/haml/util.rb +0 -809
  303. data/vendor/plugins/haml/lib/haml/util.rbc +0 -12059
  304. data/vendor/plugins/haml/lib/haml/util/subset_map.rb +0 -101
  305. data/vendor/plugins/haml/lib/haml/util/subset_map.rbc +0 -1316
  306. data/vendor/plugins/haml/lib/haml/version.rb +0 -102
  307. data/vendor/plugins/haml/lib/haml/version.rbc +0 -1671
  308. data/vendor/plugins/haml/lib/sass.rb +0 -29
  309. data/vendor/plugins/haml/lib/sass.rbc +0 -492
  310. data/vendor/plugins/haml/lib/sass/callbacks.rb +0 -52
  311. data/vendor/plugins/haml/lib/sass/callbacks.rbc +0 -388
  312. data/vendor/plugins/haml/lib/sass/css.rb +0 -294
  313. data/vendor/plugins/haml/lib/sass/engine.rb +0 -720
  314. data/vendor/plugins/haml/lib/sass/engine.rbc +0 -17020
  315. data/vendor/plugins/haml/lib/sass/environment.rb +0 -143
  316. data/vendor/plugins/haml/lib/sass/environment.rbc +0 -1751
  317. data/vendor/plugins/haml/lib/sass/error.rb +0 -198
  318. data/vendor/plugins/haml/lib/sass/error.rbc +0 -2801
  319. data/vendor/plugins/haml/lib/sass/files.rb +0 -160
  320. data/vendor/plugins/haml/lib/sass/files.rbc +0 -3118
  321. data/vendor/plugins/haml/lib/sass/less.rb +0 -382
  322. data/vendor/plugins/haml/lib/sass/plugin.rb +0 -276
  323. data/vendor/plugins/haml/lib/sass/plugin.rbc +0 -4356
  324. data/vendor/plugins/haml/lib/sass/plugin/configuration.rb +0 -221
  325. data/vendor/plugins/haml/lib/sass/plugin/configuration.rbc +0 -1343
  326. data/vendor/plugins/haml/lib/sass/plugin/generic.rb +0 -15
  327. data/vendor/plugins/haml/lib/sass/plugin/merb.rb +0 -37
  328. data/vendor/plugins/haml/lib/sass/plugin/rack.rb +0 -47
  329. data/vendor/plugins/haml/lib/sass/plugin/rack.rbc +0 -446
  330. data/vendor/plugins/haml/lib/sass/plugin/rails.rb +0 -32
  331. data/vendor/plugins/haml/lib/sass/plugin/rails.rbc +0 -879
  332. data/vendor/plugins/haml/lib/sass/plugin/staleness_checker.rb +0 -123
  333. data/vendor/plugins/haml/lib/sass/plugin/staleness_checker.rbc +0 -2019
  334. data/vendor/plugins/haml/lib/sass/repl.rb +0 -58
  335. data/vendor/plugins/haml/lib/sass/script.rb +0 -63
  336. data/vendor/plugins/haml/lib/sass/script.rbc +0 -1188
  337. data/vendor/plugins/haml/lib/sass/script/bool.rb +0 -18
  338. data/vendor/plugins/haml/lib/sass/script/bool.rbc +0 -366
  339. data/vendor/plugins/haml/lib/sass/script/color.rb +0 -491
  340. data/vendor/plugins/haml/lib/sass/script/color.rbc +0 -8148
  341. data/vendor/plugins/haml/lib/sass/script/css_lexer.rb +0 -29
  342. data/vendor/plugins/haml/lib/sass/script/css_lexer.rbc +0 -809
  343. data/vendor/plugins/haml/lib/sass/script/css_parser.rb +0 -31
  344. data/vendor/plugins/haml/lib/sass/script/css_parser.rbc +0 -628
  345. data/vendor/plugins/haml/lib/sass/script/funcall.rb +0 -77
  346. data/vendor/plugins/haml/lib/sass/script/funcall.rbc +0 -1805
  347. data/vendor/plugins/haml/lib/sass/script/functions.rb +0 -861
  348. data/vendor/plugins/haml/lib/sass/script/functions.rbc +0 -8418
  349. data/vendor/plugins/haml/lib/sass/script/interpolation.rb +0 -70
  350. data/vendor/plugins/haml/lib/sass/script/interpolation.rbc +0 -1225
  351. data/vendor/plugins/haml/lib/sass/script/lexer.rb +0 -337
  352. data/vendor/plugins/haml/lib/sass/script/lexer.rbc +0 -7231
  353. data/vendor/plugins/haml/lib/sass/script/literal.rb +0 -236
  354. data/vendor/plugins/haml/lib/sass/script/literal.rbc +0 -3365
  355. data/vendor/plugins/haml/lib/sass/script/node.rb +0 -112
  356. data/vendor/plugins/haml/lib/sass/script/node.rbc +0 -1418
  357. data/vendor/plugins/haml/lib/sass/script/number.rb +0 -423
  358. data/vendor/plugins/haml/lib/sass/script/number.rbc +0 -6024
  359. data/vendor/plugins/haml/lib/sass/script/operation.rb +0 -95
  360. data/vendor/plugins/haml/lib/sass/script/operation.rbc +0 -1856
  361. data/vendor/plugins/haml/lib/sass/script/parser.rb +0 -401
  362. data/vendor/plugins/haml/lib/sass/script/parser.rbc +0 -8418
  363. data/vendor/plugins/haml/lib/sass/script/string.rb +0 -67
  364. data/vendor/plugins/haml/lib/sass/script/string.rbc +0 -1357
  365. data/vendor/plugins/haml/lib/sass/script/string_interpolation.rb +0 -93
  366. data/vendor/plugins/haml/lib/sass/script/string_interpolation.rbc +0 -1643
  367. data/vendor/plugins/haml/lib/sass/script/unary_operation.rb +0 -57
  368. data/vendor/plugins/haml/lib/sass/script/unary_operation.rbc +0 -1144
  369. data/vendor/plugins/haml/lib/sass/script/variable.rb +0 -48
  370. data/vendor/plugins/haml/lib/sass/script/variable.rbc +0 -844
  371. data/vendor/plugins/haml/lib/sass/scss.rb +0 -17
  372. data/vendor/plugins/haml/lib/sass/scss.rbc +0 -242
  373. data/vendor/plugins/haml/lib/sass/scss/css_parser.rb +0 -46
  374. data/vendor/plugins/haml/lib/sass/scss/css_parser.rbc +0 -1106
  375. data/vendor/plugins/haml/lib/sass/scss/parser.rb +0 -846
  376. data/vendor/plugins/haml/lib/sass/scss/parser.rbc +0 -19348
  377. data/vendor/plugins/haml/lib/sass/scss/rx.rb +0 -126
  378. data/vendor/plugins/haml/lib/sass/scss/rx.rbc +0 -2849
  379. data/vendor/plugins/haml/lib/sass/scss/sass_parser.rb +0 -11
  380. data/vendor/plugins/haml/lib/sass/scss/sass_parser.rbc +0 -287
  381. data/vendor/plugins/haml/lib/sass/scss/script_lexer.rb +0 -15
  382. data/vendor/plugins/haml/lib/sass/scss/script_lexer.rbc +0 -439
  383. data/vendor/plugins/haml/lib/sass/scss/script_parser.rb +0 -25
  384. data/vendor/plugins/haml/lib/sass/scss/script_parser.rbc +0 -482
  385. data/vendor/plugins/haml/lib/sass/scss/static_parser.rb +0 -40
  386. data/vendor/plugins/haml/lib/sass/scss/static_parser.rbc +0 -971
  387. data/vendor/plugins/haml/lib/sass/selector.rb +0 -361
  388. data/vendor/plugins/haml/lib/sass/selector.rbc +0 -4193
  389. data/vendor/plugins/haml/lib/sass/selector/abstract_sequence.rb +0 -62
  390. data/vendor/plugins/haml/lib/sass/selector/abstract_sequence.rbc +0 -798
  391. data/vendor/plugins/haml/lib/sass/selector/comma_sequence.rb +0 -82
  392. data/vendor/plugins/haml/lib/sass/selector/comma_sequence.rbc +0 -1814
  393. data/vendor/plugins/haml/lib/sass/selector/sequence.rb +0 -237
  394. data/vendor/plugins/haml/lib/sass/selector/sequence.rbc +0 -4928
  395. data/vendor/plugins/haml/lib/sass/selector/simple.rb +0 -113
  396. data/vendor/plugins/haml/lib/sass/selector/simple.rbc +0 -1553
  397. data/vendor/plugins/haml/lib/sass/selector/simple_sequence.rb +0 -136
  398. data/vendor/plugins/haml/lib/sass/selector/simple_sequence.rbc +0 -2346
  399. data/vendor/plugins/haml/lib/sass/tree/charset_node.rb +0 -37
  400. data/vendor/plugins/haml/lib/sass/tree/charset_node.rbc +0 -606
  401. data/vendor/plugins/haml/lib/sass/tree/comment_node.rb +0 -128
  402. data/vendor/plugins/haml/lib/sass/tree/comment_node.rbc +0 -2397
  403. data/vendor/plugins/haml/lib/sass/tree/debug_node.rb +0 -36
  404. data/vendor/plugins/haml/lib/sass/tree/debug_node.rbc +0 -740
  405. data/vendor/plugins/haml/lib/sass/tree/directive_node.rb +0 -75
  406. data/vendor/plugins/haml/lib/sass/tree/directive_node.rbc +0 -1302
  407. data/vendor/plugins/haml/lib/sass/tree/extend_node.rb +0 -65
  408. data/vendor/plugins/haml/lib/sass/tree/extend_node.rbc +0 -1276
  409. data/vendor/plugins/haml/lib/sass/tree/for_node.rb +0 -67
  410. data/vendor/plugins/haml/lib/sass/tree/for_node.rbc +0 -1145
  411. data/vendor/plugins/haml/lib/sass/tree/if_node.rb +0 -81
  412. data/vendor/plugins/haml/lib/sass/tree/if_node.rbc +0 -1119
  413. data/vendor/plugins/haml/lib/sass/tree/import_node.rb +0 -102
  414. data/vendor/plugins/haml/lib/sass/tree/import_node.rbc +0 -2242
  415. data/vendor/plugins/haml/lib/sass/tree/mixin_def_node.rb +0 -60
  416. data/vendor/plugins/haml/lib/sass/tree/mixin_def_node.rbc +0 -1001
  417. data/vendor/plugins/haml/lib/sass/tree/mixin_node.rb +0 -123
  418. data/vendor/plugins/haml/lib/sass/tree/mixin_node.rbc +0 -3355
  419. data/vendor/plugins/haml/lib/sass/tree/node.rb +0 -465
  420. data/vendor/plugins/haml/lib/sass/tree/node.rbc +0 -5533
  421. data/vendor/plugins/haml/lib/sass/tree/prop_node.rb +0 -220
  422. data/vendor/plugins/haml/lib/sass/tree/prop_node.rbc +0 -3949
  423. data/vendor/plugins/haml/lib/sass/tree/root_node.rb +0 -157
  424. data/vendor/plugins/haml/lib/sass/tree/root_node.rbc +0 -3112
  425. data/vendor/plugins/haml/lib/sass/tree/rule_node.rb +0 -273
  426. data/vendor/plugins/haml/lib/sass/tree/rule_node.rbc +0 -5636
  427. data/vendor/plugins/haml/lib/sass/tree/variable_node.rb +0 -39
  428. data/vendor/plugins/haml/lib/sass/tree/variable_node.rbc +0 -845
  429. data/vendor/plugins/haml/lib/sass/tree/warn_node.rb +0 -42
  430. data/vendor/plugins/haml/lib/sass/tree/warn_node.rbc +0 -1043
  431. data/vendor/plugins/haml/lib/sass/tree/while_node.rb +0 -48
  432. data/vendor/plugins/haml/lib/sass/tree/while_node.rbc +0 -722
  433. data/vendor/plugins/haml/rails/init.rb +0 -1
  434. data/vendor/plugins/haml/test/benchmark.rb +0 -99
  435. data/vendor/plugins/haml/test/haml/engine_test.rb +0 -1805
  436. data/vendor/plugins/haml/test/haml/erb/_av_partial_1.erb +0 -12
  437. data/vendor/plugins/haml/test/haml/erb/_av_partial_2.erb +0 -8
  438. data/vendor/plugins/haml/test/haml/erb/action_view.erb +0 -62
  439. data/vendor/plugins/haml/test/haml/erb/standard.erb +0 -54
  440. data/vendor/plugins/haml/test/haml/helper_test.rb +0 -450
  441. data/vendor/plugins/haml/test/haml/html2haml/erb_tests.rb +0 -426
  442. data/vendor/plugins/haml/test/haml/html2haml_test.rb +0 -336
  443. data/vendor/plugins/haml/test/haml/markaby/standard.mab +0 -52
  444. data/vendor/plugins/haml/test/haml/mocks/article.rb +0 -6
  445. data/vendor/plugins/haml/test/haml/results/content_for_layout.xhtml +0 -12
  446. data/vendor/plugins/haml/test/haml/results/eval_suppressed.xhtml +0 -9
  447. data/vendor/plugins/haml/test/haml/results/filters.xhtml +0 -62
  448. data/vendor/plugins/haml/test/haml/results/helpers.xhtml +0 -70
  449. data/vendor/plugins/haml/test/haml/results/helpful.xhtml +0 -10
  450. data/vendor/plugins/haml/test/haml/results/just_stuff.xhtml +0 -70
  451. data/vendor/plugins/haml/test/haml/results/list.xhtml +0 -12
  452. data/vendor/plugins/haml/test/haml/results/nuke_inner_whitespace.xhtml +0 -40
  453. data/vendor/plugins/haml/test/haml/results/nuke_outer_whitespace.xhtml +0 -148
  454. data/vendor/plugins/haml/test/haml/results/original_engine.xhtml +0 -20
  455. data/vendor/plugins/haml/test/haml/results/partial_layout.xhtml +0 -5
  456. data/vendor/plugins/haml/test/haml/results/partials.xhtml +0 -21
  457. data/vendor/plugins/haml/test/haml/results/render_layout.xhtml +0 -3
  458. data/vendor/plugins/haml/test/haml/results/silent_script.xhtml +0 -74
  459. data/vendor/plugins/haml/test/haml/results/standard.xhtml +0 -162
  460. data/vendor/plugins/haml/test/haml/results/tag_parsing.xhtml +0 -23
  461. data/vendor/plugins/haml/test/haml/results/very_basic.xhtml +0 -5
  462. data/vendor/plugins/haml/test/haml/results/whitespace_handling.xhtml +0 -89
  463. data/vendor/plugins/haml/test/haml/spec/LICENSE +0 -14
  464. data/vendor/plugins/haml/test/haml/spec/README.md +0 -106
  465. data/vendor/plugins/haml/test/haml/spec/lua_haml_spec.lua +0 -38
  466. data/vendor/plugins/haml/test/haml/spec/perl_haml_test.pl +0 -81
  467. data/vendor/plugins/haml/test/haml/spec/ruby_haml_test.rb +0 -19
  468. data/vendor/plugins/haml/test/haml/spec/tests.json +0 -603
  469. data/vendor/plugins/haml/test/haml/spec_test.rb +0 -44
  470. data/vendor/plugins/haml/test/haml/template_test.rb +0 -417
  471. data/vendor/plugins/haml/test/haml/templates/_av_partial_1.haml +0 -9
  472. data/vendor/plugins/haml/test/haml/templates/_av_partial_1_ugly.haml +0 -9
  473. data/vendor/plugins/haml/test/haml/templates/_av_partial_2.haml +0 -5
  474. data/vendor/plugins/haml/test/haml/templates/_av_partial_2_ugly.haml +0 -5
  475. data/vendor/plugins/haml/test/haml/templates/_layout.erb +0 -3
  476. data/vendor/plugins/haml/test/haml/templates/_layout_for_partial.haml +0 -3
  477. data/vendor/plugins/haml/test/haml/templates/_partial.haml +0 -8
  478. data/vendor/plugins/haml/test/haml/templates/_text_area.haml +0 -3
  479. data/vendor/plugins/haml/test/haml/templates/action_view.haml +0 -47
  480. data/vendor/plugins/haml/test/haml/templates/action_view_ugly.haml +0 -47
  481. data/vendor/plugins/haml/test/haml/templates/breakage.haml +0 -8
  482. data/vendor/plugins/haml/test/haml/templates/content_for_layout.haml +0 -8
  483. data/vendor/plugins/haml/test/haml/templates/eval_suppressed.haml +0 -11
  484. data/vendor/plugins/haml/test/haml/templates/filters.haml +0 -66
  485. data/vendor/plugins/haml/test/haml/templates/helpers.haml +0 -55
  486. data/vendor/plugins/haml/test/haml/templates/helpful.haml +0 -11
  487. data/vendor/plugins/haml/test/haml/templates/just_stuff.haml +0 -85
  488. data/vendor/plugins/haml/test/haml/templates/list.haml +0 -12
  489. data/vendor/plugins/haml/test/haml/templates/nuke_inner_whitespace.haml +0 -32
  490. data/vendor/plugins/haml/test/haml/templates/nuke_outer_whitespace.haml +0 -144
  491. data/vendor/plugins/haml/test/haml/templates/original_engine.haml +0 -17
  492. data/vendor/plugins/haml/test/haml/templates/partial_layout.haml +0 -7
  493. data/vendor/plugins/haml/test/haml/templates/partialize.haml +0 -1
  494. data/vendor/plugins/haml/test/haml/templates/partials.haml +0 -12
  495. data/vendor/plugins/haml/test/haml/templates/render_layout.haml +0 -2
  496. data/vendor/plugins/haml/test/haml/templates/silent_script.haml +0 -40
  497. data/vendor/plugins/haml/test/haml/templates/standard.haml +0 -42
  498. data/vendor/plugins/haml/test/haml/templates/standard_ugly.haml +0 -42
  499. data/vendor/plugins/haml/test/haml/templates/tag_parsing.haml +0 -21
  500. data/vendor/plugins/haml/test/haml/templates/very_basic.haml +0 -4
  501. data/vendor/plugins/haml/test/haml/templates/whitespace_handling.haml +0 -87
  502. data/vendor/plugins/haml/test/haml/util/subset_map_test.rb +0 -91
  503. data/vendor/plugins/haml/test/haml/util_test.rb +0 -268
  504. data/vendor/plugins/haml/test/linked_rails.rb +0 -42
  505. data/vendor/plugins/haml/test/sass/callbacks_test.rb +0 -61
  506. data/vendor/plugins/haml/test/sass/conversion_test.rb +0 -1218
  507. data/vendor/plugins/haml/test/sass/css2sass_test.rb +0 -364
  508. data/vendor/plugins/haml/test/sass/data/hsl-rgb.txt +0 -319
  509. data/vendor/plugins/haml/test/sass/engine_test.rb +0 -2263
  510. data/vendor/plugins/haml/test/sass/extend_test.rb +0 -1348
  511. data/vendor/plugins/haml/test/sass/functions_test.rb +0 -556
  512. data/vendor/plugins/haml/test/sass/less_conversion_test.rb +0 -653
  513. data/vendor/plugins/haml/test/sass/more_results/more1.css +0 -9
  514. data/vendor/plugins/haml/test/sass/more_results/more1_with_line_comments.css +0 -26
  515. data/vendor/plugins/haml/test/sass/more_results/more_import.css +0 -29
  516. data/vendor/plugins/haml/test/sass/more_templates/_more_partial.sass +0 -2
  517. data/vendor/plugins/haml/test/sass/more_templates/more1.sass +0 -23
  518. data/vendor/plugins/haml/test/sass/more_templates/more_import.sass +0 -11
  519. data/vendor/plugins/haml/test/sass/plugin_test.rb +0 -433
  520. data/vendor/plugins/haml/test/sass/results/alt.css +0 -4
  521. data/vendor/plugins/haml/test/sass/results/basic.css +0 -9
  522. data/vendor/plugins/haml/test/sass/results/compact.css +0 -5
  523. data/vendor/plugins/haml/test/sass/results/complex.css +0 -86
  524. data/vendor/plugins/haml/test/sass/results/compressed.css +0 -1
  525. data/vendor/plugins/haml/test/sass/results/expanded.css +0 -19
  526. data/vendor/plugins/haml/test/sass/results/import.css +0 -31
  527. data/vendor/plugins/haml/test/sass/results/import_charset.css +0 -4
  528. data/vendor/plugins/haml/test/sass/results/import_charset_1_8.css +0 -4
  529. data/vendor/plugins/haml/test/sass/results/import_charset_ibm866.css +0 -4
  530. data/vendor/plugins/haml/test/sass/results/line_numbers.css +0 -49
  531. data/vendor/plugins/haml/test/sass/results/mixins.css +0 -95
  532. data/vendor/plugins/haml/test/sass/results/multiline.css +0 -24
  533. data/vendor/plugins/haml/test/sass/results/nested.css +0 -22
  534. data/vendor/plugins/haml/test/sass/results/options.css +0 -1
  535. data/vendor/plugins/haml/test/sass/results/parent_ref.css +0 -13
  536. data/vendor/plugins/haml/test/sass/results/script.css +0 -16
  537. data/vendor/plugins/haml/test/sass/results/scss_import.css +0 -31
  538. data/vendor/plugins/haml/test/sass/results/scss_importee.css +0 -2
  539. data/vendor/plugins/haml/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
  540. data/vendor/plugins/haml/test/sass/results/subdir/subdir.css +0 -3
  541. data/vendor/plugins/haml/test/sass/results/units.css +0 -11
  542. data/vendor/plugins/haml/test/sass/results/warn_imported.css +0 -0
  543. data/vendor/plugins/haml/test/sass/script_conversion_test.rb +0 -314
  544. data/vendor/plugins/haml/test/sass/script_test.rb +0 -470
  545. data/vendor/plugins/haml/test/sass/scss/css_test.rb +0 -916
  546. data/vendor/plugins/haml/test/sass/scss/rx_test.rb +0 -156
  547. data/vendor/plugins/haml/test/sass/scss/scss_test.rb +0 -1088
  548. data/vendor/plugins/haml/test/sass/scss/test_helper.rb +0 -37
  549. data/vendor/plugins/haml/test/sass/templates/_imported_charset_ibm866.sass +0 -4
  550. data/vendor/plugins/haml/test/sass/templates/_imported_charset_utf8.sass +0 -4
  551. data/vendor/plugins/haml/test/sass/templates/_partial.sass +0 -2
  552. data/vendor/plugins/haml/test/sass/templates/alt.sass +0 -16
  553. data/vendor/plugins/haml/test/sass/templates/basic.sass +0 -23
  554. data/vendor/plugins/haml/test/sass/templates/bork1.sass +0 -2
  555. data/vendor/plugins/haml/test/sass/templates/bork2.sass +0 -2
  556. data/vendor/plugins/haml/test/sass/templates/bork3.sass +0 -2
  557. data/vendor/plugins/haml/test/sass/templates/bork4.sass +0 -2
  558. data/vendor/plugins/haml/test/sass/templates/compact.sass +0 -17
  559. data/vendor/plugins/haml/test/sass/templates/complex.sass +0 -305
  560. data/vendor/plugins/haml/test/sass/templates/compressed.sass +0 -15
  561. data/vendor/plugins/haml/test/sass/templates/expanded.sass +0 -17
  562. data/vendor/plugins/haml/test/sass/templates/import.sass +0 -12
  563. data/vendor/plugins/haml/test/sass/templates/import_charset.sass +0 -7
  564. data/vendor/plugins/haml/test/sass/templates/import_charset_1_8.sass +0 -4
  565. data/vendor/plugins/haml/test/sass/templates/import_charset_ibm866.sass +0 -9
  566. data/vendor/plugins/haml/test/sass/templates/importee.less +0 -2
  567. data/vendor/plugins/haml/test/sass/templates/importee.sass +0 -19
  568. data/vendor/plugins/haml/test/sass/templates/line_numbers.sass +0 -13
  569. data/vendor/plugins/haml/test/sass/templates/mixin_bork.sass +0 -5
  570. data/vendor/plugins/haml/test/sass/templates/mixins.sass +0 -76
  571. data/vendor/plugins/haml/test/sass/templates/multiline.sass +0 -20
  572. data/vendor/plugins/haml/test/sass/templates/nested.sass +0 -25
  573. data/vendor/plugins/haml/test/sass/templates/nested_bork1.sass +0 -2
  574. data/vendor/plugins/haml/test/sass/templates/nested_bork2.sass +0 -2
  575. data/vendor/plugins/haml/test/sass/templates/nested_bork3.sass +0 -2
  576. data/vendor/plugins/haml/test/sass/templates/nested_bork4.sass +0 -2
  577. data/vendor/plugins/haml/test/sass/templates/nested_mixin_bork.sass +0 -6
  578. data/vendor/plugins/haml/test/sass/templates/options.sass +0 -2
  579. data/vendor/plugins/haml/test/sass/templates/parent_ref.sass +0 -25
  580. data/vendor/plugins/haml/test/sass/templates/script.sass +0 -101
  581. data/vendor/plugins/haml/test/sass/templates/scss_import.scss +0 -11
  582. data/vendor/plugins/haml/test/sass/templates/scss_importee.scss +0 -1
  583. data/vendor/plugins/haml/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
  584. data/vendor/plugins/haml/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
  585. data/vendor/plugins/haml/test/sass/templates/subdir/subdir.sass +0 -6
  586. data/vendor/plugins/haml/test/sass/templates/units.sass +0 -11
  587. data/vendor/plugins/haml/test/sass/templates/warn.sass +0 -3
  588. data/vendor/plugins/haml/test/sass/templates/warn_imported.sass +0 -4
  589. data/vendor/plugins/haml/test/test_helper.rb +0 -98
  590. data/vendor/plugins/haml/vendor/fssm/LICENSE +0 -20
  591. data/vendor/plugins/haml/vendor/fssm/README.markdown +0 -55
  592. data/vendor/plugins/haml/vendor/fssm/Rakefile +0 -59
  593. data/vendor/plugins/haml/vendor/fssm/VERSION.yml +0 -5
  594. data/vendor/plugins/haml/vendor/fssm/example.rb +0 -9
  595. data/vendor/plugins/haml/vendor/fssm/fssm.gemspec +0 -77
  596. data/vendor/plugins/haml/vendor/fssm/lib/fssm.rb +0 -33
  597. data/vendor/plugins/haml/vendor/fssm/lib/fssm/backends/fsevents.rb +0 -36
  598. data/vendor/plugins/haml/vendor/fssm/lib/fssm/backends/inotify.rb +0 -26
  599. data/vendor/plugins/haml/vendor/fssm/lib/fssm/backends/polling.rb +0 -25
  600. data/vendor/plugins/haml/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +0 -131
  601. data/vendor/plugins/haml/vendor/fssm/lib/fssm/monitor.rb +0 -26
  602. data/vendor/plugins/haml/vendor/fssm/lib/fssm/path.rb +0 -91
  603. data/vendor/plugins/haml/vendor/fssm/lib/fssm/pathname.rb +0 -502
  604. data/vendor/plugins/haml/vendor/fssm/lib/fssm/state/directory.rb +0 -57
  605. data/vendor/plugins/haml/vendor/fssm/lib/fssm/state/file.rb +0 -24
  606. data/vendor/plugins/haml/vendor/fssm/lib/fssm/support.rb +0 -63
  607. data/vendor/plugins/haml/vendor/fssm/lib/fssm/tree.rb +0 -176
  608. data/vendor/plugins/haml/vendor/fssm/profile/prof-cache.rb +0 -40
  609. data/vendor/plugins/haml/vendor/fssm/profile/prof-fssm-pathname.html +0 -1231
  610. data/vendor/plugins/haml/vendor/fssm/profile/prof-pathname.rb +0 -68
  611. data/vendor/plugins/haml/vendor/fssm/profile/prof-plain-pathname.html +0 -988
  612. data/vendor/plugins/haml/vendor/fssm/profile/prof.html +0 -2379
  613. data/vendor/plugins/haml/vendor/fssm/spec/path_spec.rb +0 -75
  614. data/vendor/plugins/haml/vendor/fssm/spec/root/duck/quack.txt +0 -0
  615. data/vendor/plugins/haml/vendor/fssm/spec/root/file.css +0 -0
  616. data/vendor/plugins/haml/vendor/fssm/spec/root/file.rb +0 -0
  617. data/vendor/plugins/haml/vendor/fssm/spec/root/file.yml +0 -0
  618. data/vendor/plugins/haml/vendor/fssm/spec/root/moo/cow.txt +0 -0
  619. data/vendor/plugins/haml/vendor/fssm/spec/spec_helper.rb +0 -14
  620. data/vendor/plugins/haml/yard/callbacks.rb +0 -29
  621. data/vendor/plugins/haml/yard/default/fulldoc/html/css/common.sass +0 -26
  622. data/vendor/plugins/haml/yard/default/layout/html/footer.erb +0 -12
  623. data/vendor/plugins/haml/yard/inherited_hash.rb +0 -41
@@ -1,2263 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require File.dirname(__FILE__) + '/../test_helper'
4
- require 'sass/engine'
5
- require 'stringio'
6
-
7
- module Sass::Script::Functions::UserFunctions
8
- def option(name)
9
- Sass::Script::String.new(@options[name.value.to_sym].to_s)
10
- end
11
- end
12
-
13
- class SassEngineTest < Test::Unit::TestCase
14
- # A map of erroneous Sass documents to the error messages they should produce.
15
- # The error messages may be arrays;
16
- # if so, the second element should be the line number that should be reported for the error.
17
- # If this isn't provided, the tests will assume the line number should be the last line of the document.
18
- EXCEPTION_MAP = {
19
- "$a: 1 + " => 'Invalid CSS after "1 +": expected expression (e.g. 1px, bold), was ""',
20
- "$a: 1 + 2 +" => 'Invalid CSS after "1 + 2 +": expected expression (e.g. 1px, bold), was ""',
21
- "$a: 1 + 2 + %" => 'Invalid CSS after "1 + 2 + ": expected expression (e.g. 1px, bold), was "%"',
22
- "$a: foo(\"bar\"" => 'Invalid CSS after "foo("bar"": expected ")", was ""',
23
- "$a: 1 }" => 'Invalid CSS after "1 ": expected expression (e.g. 1px, bold), was "}"',
24
- "$a: 1 }foo\"" => 'Invalid CSS after "1 ": expected expression (e.g. 1px, bold), was "}foo""',
25
- ":" => 'Invalid property: ":".',
26
- ": a" => 'Invalid property: ": a".',
27
- "a\n :b" => <<MSG,
28
- Invalid property: ":b" (no value).
29
- If ":b" should be a selector, use "\\:b" instead.
30
- MSG
31
- "a\n b:" => 'Invalid property: "b:" (no value).',
32
- "a\n :b: c" => 'Invalid property: ":b: c".',
33
- "a\n :b:c d" => 'Invalid property: ":b:c d".',
34
- "a\n :b c;" => 'Invalid CSS after "c": expected expression (e.g. 1px, bold), was ";"',
35
- "a\n b: c;" => 'Invalid CSS after "c": expected expression (e.g. 1px, bold), was ";"',
36
- ".foo ^bar\n a: b" => ['Invalid CSS after ".foo ": expected selector, was "^bar"', 1],
37
- "a\n @extend .foo ^bar" => 'Invalid CSS after ".foo ": expected selector, was "^bar"',
38
- "a: b" => 'Properties aren\'t allowed at the root of a document.',
39
- ":a b" => 'Properties aren\'t allowed at the root of a document.',
40
- "!" => 'Invalid variable: "!".',
41
- "$a" => 'Invalid variable: "$a".',
42
- "! a" => 'Invalid variable: "! a".',
43
- "$a b" => 'Invalid variable: "$a b".',
44
- "$a: 1b + 2c" => "Incompatible units: 'c' and 'b'.",
45
- "$a: 1b < 2c" => "Incompatible units: 'c' and 'b'.",
46
- "$a: 1b > 2c" => "Incompatible units: 'c' and 'b'.",
47
- "$a: 1b <= 2c" => "Incompatible units: 'c' and 'b'.",
48
- "$a: 1b >= 2c" => "Incompatible units: 'c' and 'b'.",
49
- "a\n b: 1b * 2c" => "2b*c isn't a valid CSS value.",
50
- "a\n b: 1b % 2c" => "Cannot modulo by a number with units: 2c.",
51
- "$a: 2px + #ccc" => "Cannot add a number with units (2px) to a color (#cccccc).",
52
- "$a: #ccc + 2px" => "Cannot add a number with units (2px) to a color (#cccccc).",
53
- "& a\n :b c" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1],
54
- "a\n :b\n c" => "Illegal nesting: Only properties may be nested beneath properties.",
55
- "a,\n :b c" => ["Rules can\'t end in commas.", 1],
56
- "a," => "Rules can\'t end in commas.",
57
- "a,\n$b: 1" => ["Rules can\'t end in commas.", 1],
58
- "$a: b\n :c d\n" => "Illegal nesting: Nothing may be nested beneath variable declarations.",
59
- "@import foo.sass" => "File to import not found or unreadable: foo.sass.",
60
- "a,\n$b: 1" => ["Rules can\'t end in commas.", 1],
61
- "$a: b\n :c d\n" => "Illegal nesting: Nothing may be nested beneath variable declarations.",
62
- "@import foo.sass" => <<MSG,
63
- File to import not found or unreadable: foo.sass.
64
- Load paths:
65
- #{File.dirname(__FILE__)}
66
- .
67
- MSG
68
- "@import templates/basic\n foo" => "Illegal nesting: Nothing may be nested beneath import directives.",
69
- "foo\n @import templates/basic" => "Import directives may only be used at the root of a document.",
70
- "foo\n @import #{File.dirname(__FILE__)}/templates/basic" => "Import directives may only be used at the root of a document.",
71
- '$foo: "bar" "baz" !' => %Q{Invalid CSS after ""bar" "baz" ": expected expression (e.g. 1px, bold), was "!"},
72
- "=foo\n :color red\n.bar\n +bang" => "Undefined mixin 'bang'.",
73
- "=foo\n :color red\n.bar\n +bang_bop" => "Undefined mixin 'bang_bop'.",
74
- "=foo\n :color red\n.bar\n +bang-bop" => "Undefined mixin 'bang-bop'.",
75
- ".bar\n =foo\n :color red\n" => ["Mixins may only be defined at the root of a document.", 2],
76
- "=foo\n :color red\n.bar\n +foo\n :color red" => "Illegal nesting: Nothing may be nested beneath mixin directives.",
77
- " a\n b: c" => ["Indenting at the beginning of the document is illegal.", 1],
78
- " \n \n\t\n a\n b: c" => ["Indenting at the beginning of the document is illegal.", 4],
79
- "a\n b: c\n b: c" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 3],
80
- "a\n b: c\na\n b: c" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 4],
81
- "a\n\t\tb: c\n\tb: c" => ["Inconsistent indentation: 1 tab was used for indentation, but the rest of the document was indented using 2 tabs.", 3],
82
- "a\n b: c\n b: c" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 3],
83
- "a\n b: c\n a\n d: e" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 4],
84
- "a\n b: c\na\n d: e" => ["The line was indented 2 levels deeper than the previous line.", 4],
85
- "a\n b: c\n a\n d: e" => ["The line was indented 3 levels deeper than the previous line.", 4],
86
- "a\n \tb: c" => ["Indentation can't use both tabs and spaces.", 2],
87
- "=a(" => 'Invalid CSS after "(": expected variable (e.g. $foo), was ""',
88
- "=a(b)" => 'Invalid CSS after "(": expected variable (e.g. $foo), was "b)"',
89
- "=a(,)" => 'Invalid CSS after "(": expected variable (e.g. $foo), was ",)"',
90
- "=a($)" => 'Invalid CSS after "(": expected variable (e.g. $foo), was "$)"',
91
- "=a($foo bar)" => 'Invalid CSS after "($foo ": expected ")", was "bar)"',
92
- "=foo\n bar: baz\n+foo" => ["Properties aren't allowed at the root of a document.", 2],
93
- "a-\#{$b\n c: d" => ['Invalid CSS after "a-#{$b": expected "}", was ""', 1],
94
- "=a($b = 1, $c)" => "Required argument $c must come before any optional arguments.",
95
- "=a($b = 1)\n a: $b\ndiv\n +a(1,2)" => "Mixin a takes 1 argument but 2 were passed.",
96
- "=a($b)\n a: $b\ndiv\n +a" => "Mixin a is missing parameter $b.",
97
- "@else\n a\n b: c" => ["@else must come after @if.", 1],
98
- "@if false\n@else foo" => "Invalid else directive '@else foo': expected 'if <expr>'.",
99
- "@if false\n@else if " => "Invalid else directive '@else if': expected 'if <expr>'.",
100
- "a\n !b: 12\nc\n d: !b" => 'Undefined variable: "$b".',
101
- "a\n $b: 12\nc\n d: $b" => 'Undefined variable: "$b".',
102
- "=foo\n $b: 12\nc\n +foo\n d: $b" => 'Undefined variable: "$b".',
103
- "c\n d: $b-foo" => 'Undefined variable: "$b-foo".',
104
- "c\n d: $b_foo" => 'Undefined variable: "$b_foo".',
105
- '@for $a from "foo" to 1' => '"foo" is not an integer.',
106
- '@for $a from 1 to "2"' => '"2" is not an integer.',
107
- '@for $a from 1 to "foo"' => '"foo" is not an integer.',
108
- '@for $a from 1 to 1.232323' => '1.232 is not an integer.',
109
- '@for $a from 1px to 3em' => "Incompatible units: 'em' and 'px'.",
110
- '@if' => "Invalid if directive '@if': expected expression.",
111
- '@while' => "Invalid while directive '@while': expected expression.",
112
- '@debug' => "Invalid debug directive '@debug': expected expression.",
113
- %Q{@debug "a message"\n "nested message"} => "Illegal nesting: Nothing may be nested beneath debug directives.",
114
- '@warn' => "Invalid warn directive '@warn': expected expression.",
115
- %Q{@warn "a message"\n "nested message"} => "Illegal nesting: Nothing may be nested beneath warn directives.",
116
- "/* foo\n bar\n baz" => "Inconsistent indentation: previous line was indented by 4 spaces, but this line was indented by 2 spaces.",
117
-
118
- # Regression tests
119
- "a\n b:\n c\n d" => ["Illegal nesting: Only properties may be nested beneath properties.", 3],
120
- "& foo\n bar: baz\n blat: bang" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1],
121
- "a\n b: c\n& foo\n bar: baz\n blat: bang" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 3],
122
- }
123
-
124
- def teardown
125
- clean_up_sassc
126
- end
127
-
128
- def test_basic_render
129
- renders_correctly "basic", { :style => :compact }
130
- end
131
-
132
- def test_empty_render
133
- assert_equal "", render("")
134
- end
135
-
136
- def test_multiple_calls_to_render
137
- sass = Sass::Engine.new("a\n b: c")
138
- assert_equal sass.render, sass.render
139
- end
140
-
141
- def test_alternate_styles
142
- renders_correctly "expanded", { :style => :expanded }
143
- renders_correctly "compact", { :style => :compact }
144
- renders_correctly "nested", { :style => :nested }
145
- renders_correctly "compressed", { :style => :compressed }
146
- end
147
-
148
- def test_flexible_tabulation
149
- assert_equal("p {\n a: b; }\n p q {\n c: d; }\n",
150
- render("p\n a: b\n q\n c: d\n"))
151
- assert_equal("p {\n a: b; }\n p q {\n c: d; }\n",
152
- render("p\n\ta: b\n\tq\n\t\tc: d\n"))
153
- end
154
-
155
- EXCEPTION_MAP.each do |key, value|
156
- define_method("test_exception (#{key.inspect})") do
157
- line = 10
158
- begin
159
- silence_warnings {Sass::Engine.new(key, :filename => __FILE__, :line => line).render}
160
- rescue Sass::SyntaxError => err
161
- value = [value] unless value.is_a?(Array)
162
-
163
- assert_equal(value.first.rstrip, err.message, "Line: #{key}")
164
- assert_equal(__FILE__, err.sass_filename)
165
- assert_equal((value[1] || key.split("\n").length) + line - 1, err.sass_line, "Line: #{key}")
166
- assert_match(/#{Regexp.escape(__FILE__)}:[0-9]+/, err.backtrace[0], "Line: #{key}")
167
- else
168
- assert(false, "Exception not raised for\n#{key}")
169
- end
170
- end
171
- end
172
-
173
- def test_exception_line
174
- to_render = <<SASS
175
- rule
176
- :prop val
177
- // comment!
178
-
179
- :broken
180
- SASS
181
- begin
182
- Sass::Engine.new(to_render).render
183
- rescue Sass::SyntaxError => err
184
- assert_equal(5, err.sass_line)
185
- else
186
- assert(false, "Exception not raised for '#{to_render}'!")
187
- end
188
- end
189
-
190
- def test_exception_location
191
- to_render = <<SASS
192
- rule
193
- :prop val
194
- // comment!
195
-
196
- :broken
197
- SASS
198
- begin
199
- Sass::Engine.new(to_render, :filename => __FILE__, :line => (__LINE__-7)).render
200
- rescue Sass::SyntaxError => err
201
- assert_equal(__FILE__, err.sass_filename)
202
- assert_equal((__LINE__-6), err.sass_line)
203
- else
204
- assert(false, "Exception not raised for '#{to_render}'!")
205
- end
206
- end
207
-
208
- def test_imported_exception
209
- [1, 2, 3, 4].each do |i|
210
- begin
211
- Sass::Engine.new("@import bork#{i}", :load_paths => [File.dirname(__FILE__) + '/templates/']).render
212
- rescue Sass::SyntaxError => err
213
- assert_equal(2, err.sass_line)
214
- assert_match(/(\/|^)bork#{i}\.sass$/, err.sass_filename)
215
-
216
- assert_hash_has(err.sass_backtrace.first,
217
- :filename => err.sass_filename, :line => err.sass_line)
218
-
219
- assert_nil(err.sass_backtrace[1][:filename])
220
- assert_equal(1, err.sass_backtrace[1][:line])
221
-
222
- assert_match(/(\/|^)bork#{i}\.sass:2$/, err.backtrace.first)
223
- assert_equal("(sass):1", err.backtrace[1])
224
- else
225
- assert(false, "Exception not raised for imported template: bork#{i}")
226
- end
227
- end
228
- end
229
-
230
- def test_double_imported_exception
231
- [1, 2, 3, 4].each do |i|
232
- begin
233
- Sass::Engine.new("@import nested_bork#{i}", :load_paths => [File.dirname(__FILE__) + '/templates/']).render
234
- rescue Sass::SyntaxError => err
235
- assert_equal(2, err.sass_line)
236
- assert_match(/(\/|^)bork#{i}\.sass$/, err.sass_filename)
237
-
238
- assert_hash_has(err.sass_backtrace.first,
239
- :filename => err.sass_filename, :line => err.sass_line)
240
-
241
- assert_match(/(\/|^)nested_bork#{i}\.sass$/, err.sass_backtrace[1][:filename])
242
- assert_equal(2, err.sass_backtrace[1][:line])
243
-
244
- assert_nil(err.sass_backtrace[2][:filename])
245
- assert_equal(1, err.sass_backtrace[2][:line])
246
-
247
- assert_match(/(\/|^)bork#{i}\.sass:2$/, err.backtrace.first)
248
- assert_match(/(\/|^)nested_bork#{i}\.sass:2$/, err.backtrace[1])
249
- assert_equal("(sass):1", err.backtrace[2])
250
- else
251
- assert(false, "Exception not raised for imported template: bork#{i}")
252
- end
253
- end
254
- end
255
-
256
- def test_mixin_exception
257
- render(<<SASS)
258
- =error-mixin($a)
259
- color: $a * 1em * 1px
260
-
261
- =outer-mixin($a)
262
- +error-mixin($a)
263
-
264
- .error
265
- +outer-mixin(12)
266
- SASS
267
- assert(false, "Exception not raised")
268
- rescue Sass::SyntaxError => err
269
- assert_equal(2, err.sass_line)
270
- assert_equal(filename_for_test, err.sass_filename)
271
- assert_equal("error-mixin", err.sass_mixin)
272
-
273
- assert_hash_has(err.sass_backtrace.first, :line => err.sass_line,
274
- :filename => err.sass_filename, :mixin => err.sass_mixin)
275
- assert_hash_has(err.sass_backtrace[1], :line => 5,
276
- :filename => filename_for_test, :mixin => "outer-mixin")
277
- assert_hash_has(err.sass_backtrace[2], :line => 8,
278
- :filename => filename_for_test, :mixin => nil)
279
-
280
- assert_equal("#{filename_for_test}:2:in `error-mixin'", err.backtrace.first)
281
- assert_equal("#{filename_for_test}:5:in `outer-mixin'", err.backtrace[1])
282
- assert_equal("#{filename_for_test}:8", err.backtrace[2])
283
- end
284
-
285
- def test_mixin_callsite_exception
286
- render(<<SASS)
287
- =one-arg-mixin($a)
288
- color: $a
289
-
290
- =outer-mixin($a)
291
- +one-arg-mixin($a, 12)
292
-
293
- .error
294
- +outer-mixin(12)
295
- SASS
296
- assert(false, "Exception not raised")
297
- rescue Sass::SyntaxError => err
298
- assert_hash_has(err.sass_backtrace.first, :line => 5,
299
- :filename => filename_for_test, :mixin => "one-arg-mixin")
300
- assert_hash_has(err.sass_backtrace[1], :line => 5,
301
- :filename => filename_for_test, :mixin => "outer-mixin")
302
- assert_hash_has(err.sass_backtrace[2], :line => 8,
303
- :filename => filename_for_test, :mixin => nil)
304
- end
305
-
306
- def test_mixin_exception_cssize
307
- render(<<SASS)
308
- =parent-ref-mixin
309
- & foo
310
- a: b
311
-
312
- =outer-mixin
313
- +parent-ref-mixin
314
-
315
- +outer-mixin
316
- SASS
317
- assert(false, "Exception not raised")
318
- rescue Sass::SyntaxError => err
319
- assert_hash_has(err.sass_backtrace.first, :line => 2,
320
- :filename => filename_for_test, :mixin => "parent-ref-mixin")
321
- assert_hash_has(err.sass_backtrace[1], :line => 6,
322
- :filename => filename_for_test, :mixin => "outer-mixin")
323
- assert_hash_has(err.sass_backtrace[2], :line => 8,
324
- :filename => filename_for_test, :mixin => nil)
325
- end
326
-
327
- def test_mixin_and_import_exception
328
- Sass::Engine.new("@import nested_mixin_bork", :load_paths => [File.dirname(__FILE__) + '/templates/']).render
329
- assert(false, "Exception not raised")
330
- rescue Sass::SyntaxError => err
331
- assert_match(/(\/|^)nested_mixin_bork\.sass$/, err.sass_backtrace.first[:filename])
332
- assert_hash_has(err.sass_backtrace.first, :mixin => "error-mixin", :line => 4)
333
-
334
- assert_match(/(\/|^)mixin_bork\.sass$/, err.sass_backtrace[1][:filename])
335
- assert_hash_has(err.sass_backtrace[1], :mixin => "outer-mixin", :line => 2)
336
-
337
- assert_match(/(\/|^)mixin_bork\.sass$/, err.sass_backtrace[2][:filename])
338
- assert_hash_has(err.sass_backtrace[2], :mixin => nil, :line => 5)
339
-
340
- assert_match(/(\/|^)nested_mixin_bork\.sass$/, err.sass_backtrace[3][:filename])
341
- assert_hash_has(err.sass_backtrace[3], :mixin => nil, :line => 6)
342
-
343
- assert_hash_has(err.sass_backtrace[4], :filename => nil, :mixin => nil, :line => 1)
344
- end
345
-
346
- def test_basic_mixin_loop_exception
347
- render <<SASS
348
- @mixin foo
349
- @include foo
350
- @include foo
351
- SASS
352
- assert(false, "Exception not raised")
353
- rescue Sass::SyntaxError => err
354
- assert_equal("An @include loop has been found: foo includes itself", err.message)
355
- assert_hash_has(err.sass_backtrace[0], :mixin => "foo", :line => 2)
356
- end
357
-
358
- def test_double_mixin_loop_exception
359
- render <<SASS
360
- @mixin foo
361
- @include bar
362
- @mixin bar
363
- @include foo
364
- @include foo
365
- SASS
366
- assert(false, "Exception not raised")
367
- rescue Sass::SyntaxError => err
368
- assert_equal(<<MESSAGE.rstrip, err.message)
369
- An @include loop has been found:
370
- foo includes bar
371
- bar includes foo
372
- MESSAGE
373
- assert_hash_has(err.sass_backtrace[0], :mixin => "bar", :line => 4)
374
- assert_hash_has(err.sass_backtrace[1], :mixin => "foo", :line => 2)
375
- end
376
-
377
- def test_deep_mixin_loop_exception
378
- render <<SASS
379
- @mixin foo
380
- @include bar
381
-
382
- @mixin bar
383
- @include baz
384
-
385
- @mixin baz
386
- @include foo
387
-
388
- @include foo
389
- SASS
390
- assert(false, "Exception not raised")
391
- rescue Sass::SyntaxError => err
392
- assert_equal(<<MESSAGE.rstrip, err.message)
393
- An @include loop has been found:
394
- foo includes bar
395
- bar includes baz
396
- baz includes foo
397
- MESSAGE
398
- assert_hash_has(err.sass_backtrace[0], :mixin => "baz", :line => 8)
399
- assert_hash_has(err.sass_backtrace[1], :mixin => "bar", :line => 5)
400
- assert_hash_has(err.sass_backtrace[2], :mixin => "foo", :line => 2)
401
- end
402
-
403
- def test_exception_css_with_offset
404
- opts = {:full_exception => true, :line => 362}
405
- render(("a\n b: c\n" * 10) + "d\n e:\n" + ("f\n g: h\n" * 10), opts)
406
- rescue Sass::SyntaxError => e
407
- assert_equal(<<CSS, Sass::SyntaxError.exception_to_css(e, opts).split("\n")[0..15].join("\n"))
408
- /*
409
- Syntax error: Invalid property: "e:" (no value).
410
- on line 383 of test_exception_css_with_offset_inline.sass
411
-
412
- 378: a
413
- 379: b: c
414
- 380: a
415
- 381: b: c
416
- 382: d
417
- 383: e:
418
- 384: f
419
- 385: g: h
420
- 386: f
421
- 387: g: h
422
- 388: f
423
- CSS
424
- else
425
- assert(false, "Exception not raised for test_exception_css_with_offset")
426
- end
427
-
428
- def test_exception_css_with_mixins
429
- opts = {:full_exception => true}
430
- render(<<SASS, opts)
431
- =error-mixin($a)
432
- color: $a * 1em * 1px
433
-
434
- =outer-mixin($a)
435
- +error-mixin($a)
436
-
437
- .error
438
- +outer-mixin(12)
439
- SASS
440
- rescue Sass::SyntaxError => e
441
- assert_equal(<<CSS, Sass::SyntaxError.exception_to_css(e, opts).split("\n")[0..13].join("\n"))
442
- /*
443
- Syntax error: 12em*px isn't a valid CSS value.
444
- on line 2 of test_exception_css_with_mixins_inline.sass, in `error-mixin'
445
- from line 5 of test_exception_css_with_mixins_inline.sass, in `outer-mixin'
446
- from line 8 of test_exception_css_with_mixins_inline.sass
447
-
448
- 1: =error-mixin($a)
449
- 2: color: $a * 1em * 1px
450
- 3:
451
- 4: =outer-mixin($a)
452
- 5: +error-mixin($a)
453
- 6:
454
- 7: .error
455
- CSS
456
- else
457
- assert(false, "Exception not raised")
458
- end
459
-
460
- def test_cssize_exception_css
461
- opts = {:full_exception => true}
462
- render(<<SASS, opts)
463
- .filler
464
- stuff: "stuff!"
465
-
466
- a: b
467
-
468
- .more.filler
469
- a: b
470
- SASS
471
- rescue Sass::SyntaxError => e
472
- assert_equal(<<CSS, Sass::SyntaxError.exception_to_css(e, opts).split("\n")[0..11].join("\n"))
473
- /*
474
- Syntax error: Properties aren't allowed at the root of a document.
475
- on line 4 of test_cssize_exception_css_inline.sass
476
-
477
- 1: .filler
478
- 2: stuff: "stuff!"
479
- 3:
480
- 4: a: b
481
- 5:
482
- 6: .more.filler
483
- 7: a: b
484
- CSS
485
- else
486
- assert(false, "Exception not raised")
487
- end
488
-
489
- def test_css_import
490
- assert_equal("@import url(./fonts.css);\n", render("@import \"./fonts.css\""))
491
- end
492
-
493
- def test_http_import
494
- assert_equal("@import url(http://fonts.googleapis.com/css?family=Droid+Sans);\n",
495
- render("@import \"http://fonts.googleapis.com/css?family=Droid+Sans\""))
496
- end
497
-
498
- def test_url_import
499
- assert_equal("@import url(fonts.sass);\n", render("@import url(fonts.sass)"))
500
- end
501
-
502
- def test_sass_import
503
- assert !File.exists?(sassc_path("importee"))
504
- renders_correctly "import", { :style => :compact, :load_paths => [File.dirname(__FILE__) + "/templates"] }
505
- assert File.exists?(sassc_path("importee"))
506
- end
507
-
508
- def test_nonexistent_extensionless_import
509
- assert_warning(<<WARN) do
510
- WARNING: Neither nonexistent.sass nor .scss found. Using nonexistent.css instead.
511
- This behavior is deprecated and will be removed in a future version.
512
- If you really need nonexistent.css, import it explicitly.
513
- WARN
514
- assert_equal("@import url(nonexistent.css);\n", render("@import nonexistent"))
515
- end
516
- end
517
-
518
- def test_no_cache
519
- assert !File.exists?(sassc_path("importee"))
520
- renders_correctly("import", {
521
- :style => :compact, :cache => false,
522
- :load_paths => [File.dirname(__FILE__) + "/templates"],
523
- })
524
- assert !File.exists?(sassc_path("importee"))
525
- end
526
-
527
- def test_units
528
- renders_correctly "units"
529
- end
530
-
531
- def test_default_function
532
- assert_equal(<<CSS, render(<<SASS))
533
- foo {
534
- bar: url("foo.png"); }
535
- CSS
536
- foo
537
- bar: url("foo.png")
538
- SASS
539
- assert_equal("foo {\n bar: url(); }\n", render("foo\n bar: url()\n"));
540
- end
541
-
542
- def test_string_minus
543
- assert_equal("foo {\n bar: baz-boom-bat; }\n", render(%Q{foo\n bar: baz-boom-bat}))
544
- assert_equal("foo {\n bar: -baz-boom; }\n", render(%Q{foo\n bar: -baz-boom}))
545
- end
546
-
547
- def test_string_div
548
- assert_equal("foo {\n bar: baz/boom/bat; }\n", render(%Q{foo\n bar: baz/boom/bat}))
549
- assert_equal("foo {\n bar: /baz/boom; }\n", render(%Q{foo\n bar: /baz/boom}))
550
- end
551
-
552
- def test_basic_multiline_selector
553
- assert_equal("#foo #bar,\n#baz #boom {\n foo: bar; }\n",
554
- render("#foo #bar,\n#baz #boom\n :foo bar"))
555
- assert_equal("#foo #bar,\n#foo #baz {\n foo: bar; }\n",
556
- render("#foo\n #bar,\n #baz\n :foo bar"))
557
- assert_equal("#foo,\n#bar {\n foo: bar; }\n #foo #baz,\n #bar #baz {\n foo: bar; }\n",
558
- render("#foo,\n#bar\n :foo bar\n #baz\n :foo bar"))
559
- assert_equal("#foo #bar, #baz #boom { foo: bar; }\n",
560
- render("#foo #bar,\n#baz #boom\n :foo bar", :style => :compact))
561
-
562
- assert_equal("#foo #bar,#baz #boom{foo:bar}\n",
563
- render("#foo #bar,\n#baz #boom\n :foo bar", :style => :compressed))
564
- end
565
-
566
- def test_complex_multiline_selector
567
- renders_correctly "multiline"
568
- end
569
-
570
- def test_colon_only
571
- begin
572
- render("a\n b: c", :property_syntax => :old)
573
- rescue Sass::SyntaxError => e
574
- assert_equal("Illegal property syntax: can't use new syntax when :property_syntax => :old is set.",
575
- e.message)
576
- assert_equal(2, e.sass_line)
577
- else
578
- assert(false, "SyntaxError not raised for :property_syntax => :old")
579
- end
580
-
581
- begin
582
- render("a\n :b c", :property_syntax => :new)
583
- assert_equal(2, e.sass_line)
584
- rescue Sass::SyntaxError => e
585
- assert_equal("Illegal property syntax: can't use old syntax when :property_syntax => :new is set.",
586
- e.message)
587
- else
588
- assert(false, "SyntaxError not raised for :property_syntax => :new")
589
- end
590
- end
591
-
592
- def test_pseudo_elements
593
- assert_equal(<<CSS, render(<<SASS))
594
- ::first-line {
595
- size: 10em; }
596
- CSS
597
- ::first-line
598
- size: 10em
599
- SASS
600
- end
601
-
602
- def test_directive
603
- assert_equal("@a b;\n", render("@a b"))
604
-
605
- assert_equal("@a {\n b: c; }\n", render("@a\n :b c"))
606
- assert_equal("@a { b: c; }\n", render("@a\n :b c", :style => :compact))
607
- assert_equal("@a {\n b: c;\n}\n", render("@a\n :b c", :style => :expanded))
608
- assert_equal("@a{b:c}\n", render("@a\n :b c", :style => :compressed))
609
-
610
- assert_equal("@a {\n b: c;\n d: e; }\n",
611
- render("@a\n :b c\n :d e"))
612
- assert_equal("@a { b: c; d: e; }\n",
613
- render("@a\n :b c\n :d e", :style => :compact))
614
- assert_equal("@a {\n b: c;\n d: e;\n}\n",
615
- render("@a\n :b c\n :d e", :style => :expanded))
616
- assert_equal("@a{b:c;d:e}\n",
617
- render("@a\n :b c\n :d e", :style => :compressed))
618
-
619
- assert_equal("@a {\n #b {\n c: d; } }\n",
620
- render("@a\n #b\n :c d"))
621
- assert_equal("@a { #b { c: d; } }\n",
622
- render("@a\n #b\n :c d", :style => :compact))
623
- assert_equal("@a {\n #b {\n c: d;\n }\n}\n",
624
- render("@a\n #b\n :c d", :style => :expanded))
625
- assert_equal("@a{#b{c:d}}\n",
626
- render("@a\n #b\n :c d", :style => :compressed))
627
-
628
- assert_equal("@a {\n #b {\n a: b; }\n #b #c {\n d: e; } }\n",
629
- render("@a\n #b\n :a b\n #c\n :d e"))
630
- assert_equal("@a { #b { a: b; }\n #b #c { d: e; } }\n",
631
- render("@a\n #b\n :a b\n #c\n :d e", :style => :compact))
632
- assert_equal("@a {\n #b {\n a: b;\n }\n #b #c {\n d: e;\n }\n}\n",
633
- render("@a\n #b\n :a b\n #c\n :d e", :style => :expanded))
634
- assert_equal("@a{#b{a:b}#b #c{d:e}}\n",
635
- render("@a\n #b\n :a b\n #c\n :d e", :style => :compressed))
636
-
637
- assert_equal("@a {\n #foo,\n #bar {\n b: c; } }\n",
638
- render("@a\n #foo, \n #bar\n :b c"))
639
- assert_equal("@a { #foo, #bar { b: c; } }\n",
640
- render("@a\n #foo, \n #bar\n :b c", :style => :compact))
641
- assert_equal("@a {\n #foo,\n #bar {\n b: c;\n }\n}\n",
642
- render("@a\n #foo, \n #bar\n :b c", :style => :expanded))
643
- assert_equal("@a{#foo,#bar{b:c}}\n",
644
- render("@a\n #foo, \n #bar\n :b c", :style => :compressed))
645
-
646
- to_render = <<END
647
- @a
648
- :b c
649
- #d
650
- :e f
651
- :g h
652
- END
653
- rendered = <<END
654
- @a { b: c;
655
- #d { e: f; }
656
- g: h; }
657
- END
658
- assert_equal(rendered, render(to_render, :style => :compact))
659
-
660
- assert_equal("@a{b:c;#d{e:f}g:h}\n", render(to_render, :style => :compressed))
661
- end
662
-
663
- def test_property_hacks
664
- assert_equal(<<CSS, render(<<SASS))
665
- foo {
666
- _name: val;
667
- *name: val;
668
- #name: val;
669
- .name: val;
670
- name/**/: val;
671
- name/*\\**/: val;
672
- name: val; }
673
- CSS
674
- foo
675
- _name: val
676
- *name: val
677
- #name: val
678
- .name: val
679
- name/**/: val
680
- name/*\\**/: val
681
- name: val
682
- SASS
683
- end
684
-
685
- def test_properties_with_space_after_colon
686
- assert_equal <<CSS, render(<<SASS)
687
- foo {
688
- bar: baz;
689
- bizz: bap; }
690
- CSS
691
- foo
692
- bar : baz
693
- bizz : bap
694
- SASS
695
- end
696
-
697
- def test_line_annotations
698
- assert_equal(<<CSS, render(<<SASS, :line_comments => true, :style => :compact))
699
- /* line 2, test_line_annotations_inline.sass */
700
- foo bar { foo: bar; }
701
- /* line 5, test_line_annotations_inline.sass */
702
- foo baz { blip: blop; }
703
-
704
- /* line 9, test_line_annotations_inline.sass */
705
- floodle { flop: blop; }
706
-
707
- /* line 18, test_line_annotations_inline.sass */
708
- bup { mix: on; }
709
- /* line 15, test_line_annotations_inline.sass */
710
- bup mixin { moop: mup; }
711
-
712
- /* line 22, test_line_annotations_inline.sass */
713
- bip hop, skip hop { a: b; }
714
- CSS
715
- foo
716
- bar
717
- foo: bar
718
-
719
- baz
720
- blip: blop
721
-
722
-
723
- floodle
724
-
725
- flop: blop
726
-
727
- =mxn
728
- mix: on
729
- mixin
730
- moop: mup
731
-
732
- bup
733
- +mxn
734
-
735
- bip, skip
736
- hop
737
- a: b
738
- SASS
739
- end
740
-
741
- def test_line_annotations_with_filename
742
- renders_correctly "line_numbers", :line_comments => true, :load_paths => [File.dirname(__FILE__) + "/templates"]
743
- end
744
-
745
- def test_debug_info
746
- esc_file_name = Sass::SCSS::RX.escape_ident(Haml::Util.scope("test_debug_info_inline.sass"))
747
-
748
- assert_equal(<<CSS, render(<<SASS, :debug_info => true, :style => :compact))
749
- @media -sass-debug-info{filename{font-family:file\\:\\/\\/#{esc_file_name}}line{font-family:\\000032}}
750
- foo bar { foo: bar; }
751
- @media -sass-debug-info{filename{font-family:file\\:\\/\\/#{esc_file_name}}line{font-family:\\000035}}
752
- foo baz { blip: blop; }
753
-
754
- @media -sass-debug-info{filename{font-family:file\\:\\/\\/#{esc_file_name}}line{font-family:\\000039}}
755
- floodle { flop: blop; }
756
-
757
- @media -sass-debug-info{filename{font-family:file\\:\\/\\/#{esc_file_name}}line{font-family:\\0000318}}
758
- bup { mix: on; }
759
- @media -sass-debug-info{filename{font-family:file\\:\\/\\/#{esc_file_name}}line{font-family:\\0000315}}
760
- bup mixin { moop: mup; }
761
-
762
- @media -sass-debug-info{filename{font-family:file\\:\\/\\/#{esc_file_name}}line{font-family:\\0000322}}
763
- bip hop, skip hop { a: b; }
764
- CSS
765
- foo
766
- bar
767
- foo: bar
768
-
769
- baz
770
- blip: blop
771
-
772
-
773
- floodle
774
-
775
- flop: blop
776
-
777
- =mxn
778
- mix: on
779
- mixin
780
- moop: mup
781
-
782
- bup
783
- +mxn
784
-
785
- bip, skip
786
- hop
787
- a: b
788
- SASS
789
- end
790
-
791
- def test_debug_info_without_filename
792
- assert_equal(<<CSS, Sass::Engine.new(<<SASS, :debug_info => true).render)
793
- @media -sass-debug-info{filename{font-family:}line{font-family:\\000031}}
794
- foo {
795
- a: b; }
796
- CSS
797
- foo
798
- a: b
799
- SASS
800
- end
801
-
802
- def test_debug_info_with_compressed
803
- assert_equal(<<CSS, render(<<SASS, :debug_info => true, :style => :compressed))
804
- foo{a:b}
805
- CSS
806
- foo
807
- a: b
808
- SASS
809
- end
810
-
811
- def test_debug_info_with_line_annotations
812
- esc_file_name = Sass::SCSS::RX.escape_ident(Haml::Util.scope("test_debug_info_with_line_annotations_inline.sass"))
813
-
814
- assert_equal(<<CSS, render(<<SASS, :debug_info => true, :line_comments => true))
815
- @media -sass-debug-info{filename{font-family:file\\:\\/\\/#{esc_file_name}}line{font-family:\\000031}}
816
- foo {
817
- a: b; }
818
- CSS
819
- foo
820
- a: b
821
- SASS
822
- end
823
-
824
- def test_empty_first_line
825
- assert_equal("#a {\n b: c; }\n", render("#a\n\n b: c"))
826
- end
827
-
828
- def test_escaped_rule
829
- assert_equal(":focus {\n a: b; }\n", render("\\:focus\n a: b"))
830
- assert_equal("a {\n b: c; }\n a :focus {\n d: e; }\n", render("\\a\n b: c\n \\:focus\n d: e"))
831
- end
832
-
833
- def test_cr_newline
834
- assert_equal("foo {\n a: b;\n c: d;\n e: f; }\n", render("foo\r a: b\r\n c: d\n\r e: f"))
835
- end
836
-
837
- def test_property_with_content_and_nested_props
838
- assert_equal(<<CSS, render(<<SASS))
839
- foo {
840
- a: b;
841
- a-c: d;
842
- a-c-e: f; }
843
- CSS
844
- foo
845
- a: b
846
- c: d
847
- e: f
848
- SASS
849
-
850
- assert_equal(<<CSS, render(<<SASS))
851
- foo {
852
- a: b;
853
- a-c-e: f; }
854
- CSS
855
- foo
856
- a: b
857
- c:
858
- e: f
859
- SASS
860
- end
861
-
862
- def test_equals_warning_for_properties
863
- assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
864
- DEPRECATION WARNING:
865
- On line 3, character 3 of 'test_equals_warning_for_properties_inline.sass'
866
- Setting properties with = has been deprecated and will be removed in version 3.2.
867
- Use "a: $var" instead.
868
-
869
- You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
870
- WARN
871
- foo {
872
- a: 2px 3px; }
873
- CSS
874
- $var: 2px 3px
875
- foo
876
- a = $var
877
- SASS
878
- end
879
-
880
- def test_equals_warning_for_dynamic_properties
881
- assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
882
- DEPRECATION WARNING:
883
- On line 4, character 3 of 'test_equals_warning_for_dynamic_properties_inline.sass'
884
- Setting properties with = has been deprecated and will be removed in version 3.2.
885
- Use "a-\#{$i}: $var" instead.
886
-
887
- You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
888
- WARN
889
- foo {
890
- a-12: 2px 3px; }
891
- CSS
892
- $var: 2px 3px
893
- $i: 12
894
- foo
895
- a-\#{$i} = $var
896
- SASS
897
- end
898
-
899
- def test_equals_warning_for_property_with_string
900
- assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
901
- DEPRECATION WARNING:
902
- On line 2, character 3 of 'test_equals_warning_for_property_with_string_inline.sass'
903
- Setting properties with = has been deprecated and will be removed in version 3.2.
904
- Use "a: foo" instead.
905
-
906
- You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
907
- WARN
908
- foo {
909
- a: foo; }
910
- CSS
911
- foo
912
- a = "foo"
913
- SASS
914
- end
915
-
916
- def test_equals_warning_for_property_with_division
917
- assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
918
- DEPRECATION WARNING:
919
- On line 2, character 3 of 'test_equals_warning_for_property_with_division_inline.sass'
920
- Setting properties with = has been deprecated and will be removed in version 3.2.
921
- Use "a: (1px / 2px)" instead.
922
-
923
- You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
924
- WARN
925
- foo {
926
- a: 0.5; }
927
- CSS
928
- foo
929
- a = 1px/2px
930
- SASS
931
- end
932
-
933
- def test_guarded_assign
934
- assert_equal("foo {\n a: b; }\n", render(%Q{$foo: b\n$foo: c !default\nfoo\n a: $foo}))
935
- assert_equal("foo {\n a: b; }\n", render(%Q{$foo: b !default\nfoo\n a: $foo}))
936
- end
937
-
938
- def test_mixins
939
- renders_correctly "mixins", { :style => :expanded }
940
- end
941
-
942
- def test_directive_style_mixins
943
- assert_equal <<CSS, render(<<SASS)
944
- bar {
945
- prop: baz; }
946
- CSS
947
- @mixin foo($arg)
948
- prop: $arg
949
-
950
- bar
951
- @include foo(baz)
952
- SASS
953
- end
954
-
955
- def test_mixins_dont_interfere_with_sibling_combinator
956
- assert_equal("foo + bar {\n a: b; }\nfoo + baz {\n c: d; }\n",
957
- render("foo\n +\n bar\n a: b\n baz\n c: d"))
958
- end
959
-
960
- def test_mixin_args
961
- assert_equal("blat {\n baz: hi; }\n", render(<<SASS))
962
- =foo($bar)
963
- baz: $bar
964
- blat
965
- +foo(hi)
966
- SASS
967
- assert_equal("blat {\n baz: 3; }\n", render(<<SASS))
968
- =foo($a, $b)
969
- baz: $a + $b
970
- blat
971
- +foo(1, 2)
972
- SASS
973
- assert_equal("blat {\n baz: 4;\n baz: 3;\n baz: 5;\n bang: 3; }\n", render(<<SASS))
974
- =foo($c: (6 + 4) / 2)
975
- baz: $c
976
- $c: 3
977
- blat
978
- +foo($c + 1)
979
- +foo(($c + 3)/2)
980
- +foo
981
- bang: $c
982
- SASS
983
- end
984
-
985
- def test_default_values_for_mixin_arguments
986
- assert_equal("white {\n color: white; }\n\nblack {\n color: black; }\n", render(<<SASS))
987
- =foo($a: #FFF)
988
- :color $a
989
- white
990
- +foo
991
- black
992
- +foo(#000)
993
- SASS
994
- assert_equal(<<CSS, render(<<SASS))
995
- one {
996
- color: white;
997
- padding: 1px;
998
- margin: 4px; }
999
-
1000
- two {
1001
- color: white;
1002
- padding: 2px;
1003
- margin: 5px; }
1004
-
1005
- three {
1006
- color: white;
1007
- padding: 2px;
1008
- margin: 3px; }
1009
- CSS
1010
- $a: 5px
1011
- =foo($a, $b: 1px, $c: 3px + $b)
1012
- :color $a
1013
- :padding $b
1014
- :margin $c
1015
- one
1016
- +foo(#fff)
1017
- two
1018
- +foo(#fff, 2px)
1019
- three
1020
- +foo(#fff, 2px, 3px)
1021
- SASS
1022
- end
1023
-
1024
- def test_hyphen_underscore_insensitive_mixins
1025
- assert_equal(<<CSS, render(<<SASS))
1026
- a {
1027
- b: 12;
1028
- c: foo; }
1029
- CSS
1030
- =mixin-hyphen
1031
- b: 12
1032
-
1033
- =mixin_under
1034
- c: foo
1035
-
1036
- a
1037
- +mixin_hyphen
1038
- +mixin-under
1039
- SASS
1040
- end
1041
-
1042
- def test_equals_warning_for_mixin_args
1043
- assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
1044
- DEPRECATION WARNING:
1045
- On line 1, character 10 of 'test_equals_warning_for_mixin_args_inline.sass'
1046
- Setting mixin argument defaults with = has been deprecated and will be removed in version 3.2.
1047
- Use "$arg: 1px" instead.
1048
-
1049
- You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
1050
- WARN
1051
- bar {
1052
- a: 1px; }
1053
- CSS
1054
- =foo($arg = 1px)
1055
- a: $arg
1056
-
1057
- bar
1058
- +foo
1059
- SASS
1060
- end
1061
-
1062
- def test_css_identifier_mixin
1063
- assert_equal(<<CSS, render(<<SASS))
1064
- a {
1065
- foo: 12; }
1066
- CSS
1067
- =\\{foo\\(12\\)($a)
1068
- foo: $a
1069
-
1070
- a
1071
- +\\{foo\\(12\\)(12)
1072
- SASS
1073
- end
1074
-
1075
- def test_interpolation
1076
- assert_equal("a-1 {\n b-2-3: c-3; }\n", render(<<SASS))
1077
- $a: 1
1078
- $b: 2
1079
- $c: 3
1080
- a-\#{$a}
1081
- b-\#{$b}-\#{$c}: c-\#{$a + $b}
1082
- SASS
1083
- end
1084
-
1085
- def test_complex_property_interpolation
1086
- assert_equal(<<CSS, render(<<SASS))
1087
- a-1 {
1088
- b-2 3-fizzap18: c-3; }
1089
- CSS
1090
- $a: 1
1091
- $b: 2
1092
- $c: 3
1093
- a-\#{$a}
1094
- b-\#{$b $c}-\#{fizzap + ($c + 15)}: c-\#{$a + $b}
1095
- SASS
1096
- end
1097
-
1098
- def test_if_directive
1099
- assert_equal("a {\n b: 1; }\n", render(<<SASS))
1100
- $var: true
1101
- a
1102
- @if $var
1103
- b: 1
1104
- @if not $var
1105
- b: 2
1106
- SASS
1107
- end
1108
-
1109
- def test_for
1110
- assert_equal(<<CSS, render(<<SASS))
1111
- a-0 {
1112
- two-i: 0; }
1113
-
1114
- a-1 {
1115
- two-i: 2; }
1116
-
1117
- a-2 {
1118
- two-i: 4; }
1119
-
1120
- a-3 {
1121
- two-i: 6; }
1122
-
1123
- b-1 {
1124
- j-1: 0; }
1125
-
1126
- b-2 {
1127
- j-1: 1; }
1128
-
1129
- b-3 {
1130
- j-1: 2; }
1131
-
1132
- b-4 {
1133
- j-1: 3; }
1134
- CSS
1135
- $a: 3
1136
- @for $i from 0 to $a + 1
1137
- a-\#{$i}
1138
- two-i: 2 * $i
1139
-
1140
- @for $j from 1 through 4
1141
- b-\#{$j}
1142
- j-1: $j - 1
1143
- SASS
1144
- end
1145
-
1146
- def test_for_with_bang_var
1147
- assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
1148
- DEPRECATION WARNING:
1149
- On line 1, character 6 of 'test_for_with_bang_var_inline.sass'
1150
- Variables with ! have been deprecated and will be removed in version 3.2.
1151
- Use "$bar" instead.
1152
-
1153
- You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
1154
- WARN
1155
- a-0 {
1156
- b: c; }
1157
-
1158
- a-1 {
1159
- b: c; }
1160
-
1161
- a-2 {
1162
- b: c; }
1163
- CSS
1164
- @for !bar from 0 to 3
1165
- a-\#{$bar}
1166
- b: c
1167
- SASS
1168
- end
1169
-
1170
- def test_while
1171
- assert_equal(<<CSS, render(<<SASS))
1172
- a-5 {
1173
- blooble: gloop; }
1174
-
1175
- a-4 {
1176
- blooble: gloop; }
1177
-
1178
- a-3 {
1179
- blooble: gloop; }
1180
-
1181
- a-2 {
1182
- blooble: gloop; }
1183
-
1184
- a-1 {
1185
- blooble: gloop; }
1186
- CSS
1187
- $a: 5
1188
- @while $a != 0
1189
- a-\#{$a}
1190
- blooble: gloop
1191
- $a: $a - 1
1192
- SASS
1193
- end
1194
-
1195
- def test_else
1196
- assert_equal(<<CSS, render(<<SASS))
1197
- a {
1198
- t1: t;
1199
- t2: t;
1200
- t3: t;
1201
- t4: t; }
1202
- CSS
1203
- a
1204
- @if true
1205
- t1: t
1206
- @else
1207
- f1: f
1208
-
1209
- @if false
1210
- f2: f
1211
- @else
1212
- t2: t
1213
-
1214
- @if false
1215
- f3: f1
1216
- @else if 1 + 1 == 3
1217
- f3: f2
1218
- @else
1219
- t3: t
1220
-
1221
- @if false
1222
- f4: f1
1223
- @else if 1 + 1 == 2
1224
- t4: t
1225
- @else
1226
- f4: f2
1227
-
1228
- @if false
1229
- f5: f1
1230
- @else if false
1231
- f5: f2
1232
- SASS
1233
- end
1234
-
1235
- def test_variable_reassignment
1236
- assert_equal(<<CSS, render(<<SASS))
1237
- a {
1238
- b: 1;
1239
- c: 2; }
1240
- CSS
1241
- $a: 1
1242
- a
1243
- b: $a
1244
- $a: 2
1245
- c: $a
1246
- SASS
1247
- end
1248
-
1249
- def test_bang_variables
1250
- assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
1251
- DEPRECATION WARNING:
1252
- On line 1, character 1 of 'test_bang_variables_inline.sass'
1253
- Variables with ! have been deprecated and will be removed in version 3.2.
1254
- Use "$bang-var" instead.
1255
-
1256
- You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
1257
- WARN
1258
- foo {
1259
- a: 1px; }
1260
- CSS
1261
- !bang-var: 1px
1262
- foo
1263
- a: $bang-var
1264
- SASS
1265
-
1266
- assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
1267
- DEPRECATION WARNING:
1268
- On line 3, character 6 of 'test_bang_variables_inline.sass'
1269
- Variables with ! have been deprecated and will be removed in version 3.2.
1270
- Use "$dollar-var" instead.
1271
-
1272
- You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
1273
- WARN
1274
- foo {
1275
- a: 1px; }
1276
- CSS
1277
- $dollar-var: 1px
1278
- foo
1279
- a: !dollar-var
1280
- SASS
1281
- end
1282
-
1283
- def test_equals_warning_for_variables
1284
- assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
1285
- DEPRECATION WARNING:
1286
- On line 2, character 1 of 'test_equals_warning_for_variables_inline.sass'
1287
- Setting variables with = has been deprecated and will be removed in version 3.2.
1288
- Use "$equals-var: 2px 3px" instead.
1289
-
1290
- You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
1291
- WARN
1292
- foo {
1293
- a: 2px 3px; }
1294
- CSS
1295
-
1296
- $equals-var = 2px 3px
1297
- foo
1298
- a: $equals-var
1299
- SASS
1300
- end
1301
-
1302
- def test_equals_warning_for_guarded_variables
1303
- assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SASS))}
1304
- DEPRECATION WARNING:
1305
- On line 2, character 1 of 'test_equals_warning_for_guarded_variables_inline.sass'
1306
- Setting variable defaults with ||= has been deprecated and will be removed in version 3.2.
1307
- Use "$equals-var: 2px 3px !default" instead.
1308
-
1309
- You can use `sass-convert --in-place --from sass2 file.sass' to convert files automatically.
1310
- WARN
1311
- foo {
1312
- a: 2px 3px; }
1313
- CSS
1314
-
1315
- $equals-var ||= 2px 3px
1316
- foo
1317
- a: $equals-var
1318
- SASS
1319
- end
1320
-
1321
- def test_variable_scope
1322
- assert_equal(<<CSS, render(<<SASS))
1323
- a {
1324
- b-1: c;
1325
- b-2: c;
1326
- d: 12; }
1327
-
1328
- b {
1329
- d: 17; }
1330
- CSS
1331
- $i: 12
1332
- a
1333
- @for $i from 1 through 2
1334
- b-\#{$i}: c
1335
- d: $i
1336
-
1337
- =foo
1338
- $i: 17
1339
-
1340
- b
1341
- +foo
1342
- d: $i
1343
- SASS
1344
- end
1345
-
1346
- def test_hyphen_underscore_insensitive_variables
1347
- assert_equal(<<CSS, render(<<SASS))
1348
- a {
1349
- b: c; }
1350
-
1351
- d {
1352
- e: 13;
1353
- f: foobar; }
1354
- CSS
1355
- $var-hyphen: 12
1356
- $var_under: foo
1357
-
1358
- a
1359
- $var_hyphen: 1 + $var_hyphen
1360
- $var-under: $var-under + bar
1361
- b: c
1362
-
1363
- d
1364
- e: $var-hyphen
1365
- f: $var_under
1366
- SASS
1367
- end
1368
-
1369
- def test_css_identifier_variable
1370
- assert_equal(<<CSS, render(<<SASS))
1371
- a {
1372
- b: 12; }
1373
- CSS
1374
- $\\{foo\\(12\\): 12
1375
-
1376
- a
1377
- b: $\\{foo\\(12\\)
1378
- SASS
1379
- end
1380
-
1381
- def test_important
1382
- assert_equal(<<CSS, render(<<SASS))
1383
- a {
1384
- b: 12px !important; }
1385
- CSS
1386
- $foo: 12px
1387
- a
1388
- b: $foo !important
1389
- SASS
1390
- end
1391
-
1392
- def test_argument_error
1393
- assert_raise(Sass::SyntaxError) { render("a\n b: hsl(1)") }
1394
- end
1395
-
1396
- def test_comments_at_the_top_of_a_document
1397
- render(<<SASS)
1398
- //
1399
- This is a comment that
1400
- continues to the second line.
1401
- foo
1402
- bar: baz
1403
- SASS
1404
- end
1405
-
1406
- def test_loud_comments_containing_a_comment_close
1407
- actual_css = render(<<SASS)
1408
- /*
1409
- This is a comment that
1410
- continues to the second line. */
1411
- foo
1412
- bar: baz
1413
- SASS
1414
- assert_equal(<<CSS, actual_css)
1415
- /* This is a comment that
1416
- * continues to the second line. */
1417
- foo {
1418
- bar: baz; }
1419
- CSS
1420
- end
1421
-
1422
- def test_loud_comments_with_starred_lines
1423
- assert_equal(<<CSS, render(<<SASS))
1424
- /* This is a comment that
1425
- * continues to the second line.
1426
- * And even to the third! */
1427
- CSS
1428
- /* This is a comment that
1429
- * continues to the second line.
1430
- * And even to the third!
1431
- SASS
1432
- end
1433
-
1434
- def test_loud_comments_with_no_space_after_starred_lines
1435
- assert_equal(<<CSS, render(<<SASS))
1436
- /*bip bop
1437
- *beep boop
1438
- *bap blimp */
1439
- CSS
1440
- /*bip bop
1441
- *beep boop
1442
- *bap blimp
1443
- SASS
1444
- end
1445
-
1446
- def test_comment_indentation_at_beginning_of_doc
1447
- assert_equal <<CSS, render(<<SASS)
1448
- /* foo
1449
- * bar
1450
- * baz */
1451
- foo {
1452
- a: b; }
1453
- CSS
1454
- /* foo
1455
- bar
1456
- baz
1457
- foo
1458
- a: b
1459
- SASS
1460
- end
1461
-
1462
- def test_unusual_comment_indentation
1463
- assert_equal <<CSS, render(<<SASS)
1464
- foo {
1465
- /* foo
1466
- * bar
1467
- * baz */ }
1468
- CSS
1469
- foo
1470
- /* foo
1471
- bar
1472
- baz
1473
- SASS
1474
- end
1475
-
1476
- def test_loud_comment_with_close
1477
- assert_equal <<CSS, render(<<SASS)
1478
- foo {
1479
- /* foo
1480
- * bar */ }
1481
- CSS
1482
- foo
1483
- /* foo
1484
- bar */
1485
- SASS
1486
- end
1487
-
1488
- def test_loud_comment_with_separate_line_close
1489
- assert_equal <<CSS, render(<<SASS)
1490
- foo {
1491
- /* foo
1492
- * bar
1493
- */ }
1494
- CSS
1495
- foo
1496
- /* foo
1497
- * bar
1498
- */
1499
- SASS
1500
- end
1501
-
1502
- def test_attribute_selector_with_spaces
1503
- assert_equal(<<CSS, render(<<SASS))
1504
- a b[foo=bar] {
1505
- c: d; }
1506
- CSS
1507
- a
1508
- b[foo = bar]
1509
- c: d
1510
- SASS
1511
- end
1512
-
1513
- def test_quoted_colon
1514
- assert_equal(<<CSS, render(<<SASS))
1515
- a b[foo="bar: baz"] {
1516
- c: d; }
1517
- CSS
1518
- a
1519
- b[foo="bar: baz"]
1520
- c: d
1521
- SASS
1522
- end
1523
-
1524
- def test_quoted_comma
1525
- assert_equal(<<CSS, render(<<SASS))
1526
- a b[foo="bar, baz"] {
1527
- c: d; }
1528
- CSS
1529
- a
1530
- b[foo="bar, baz"]
1531
- c: d
1532
- SASS
1533
- end
1534
-
1535
- def test_quoted_ampersand
1536
- assert_equal(<<CSS, render(<<SASS))
1537
- a b[foo="bar & baz"] {
1538
- c: d; }
1539
- CSS
1540
- a
1541
- b[foo="bar & baz"]
1542
- c: d
1543
- SASS
1544
- end
1545
-
1546
- def test_empty_selector_warning
1547
- assert_warning(<<END) {render("foo bar")}
1548
- WARNING on line 1 of test_empty_selector_warning_inline.sass:
1549
- This selector doesn't have any properties and will not be rendered.
1550
- END
1551
- end
1552
-
1553
- def test_root_level_pseudo_class_with_new_properties
1554
- assert_equal(<<CSS, render(<<SASS, :property_syntax => :new))
1555
- :focus {
1556
- outline: 0; }
1557
- CSS
1558
- :focus
1559
- outline: 0
1560
- SASS
1561
- end
1562
-
1563
- def test_pseudo_class_with_new_properties
1564
- assert_equal(<<CSS, render(<<SASS, :property_syntax => :new))
1565
- p :focus {
1566
- outline: 0; }
1567
- CSS
1568
- p
1569
- :focus
1570
- outline: 0
1571
- SASS
1572
- end
1573
-
1574
- def test_nil_option
1575
- assert_equal(<<CSS, render(<<SASS, :format => nil))
1576
- foo {
1577
- a: b; }
1578
- CSS
1579
- foo
1580
- a: b
1581
- SASS
1582
- end
1583
-
1584
- def test_interpolation_in_raw_functions
1585
- assert_equal(<<CSS, render(<<SASS))
1586
- foo {
1587
- filter: progid:Microsoft.foo.bar.Baz(flip=foobar, bang=#00ff00cc); }
1588
- CSS
1589
- foo
1590
- filter: progid:Microsoft.foo.bar.Baz(flip=\#{foo + bar}, bang=#00ff00cc)
1591
- SASS
1592
- end
1593
-
1594
- # SassScript string behavior
1595
-
1596
- def test_plus_preserves_quotedness
1597
- assert_equal(<<CSS, render(<<SASS))
1598
- foo {
1599
- a: "foo1";
1600
- b: "1foo";
1601
- c: foo1;
1602
- d: 1foo;
1603
- e: "foobar";
1604
- f: foobar; }
1605
- CSS
1606
- foo
1607
- a: "foo" + 1
1608
- b: 1 + "foo"
1609
- c: foo + 1
1610
- d: 1 + foo
1611
- e: "foo" + bar
1612
- f: foo + "bar"
1613
- SASS
1614
- end
1615
-
1616
- def test_colon_properties_preserve_quotedness
1617
- assert_equal(<<CSS, render(<<SASS))
1618
- foo {
1619
- a: "foo";
1620
- b: bar;
1621
- c: "foo" bar;
1622
- d: foo, "bar"; }
1623
- CSS
1624
- foo
1625
- a: "foo"
1626
- b: bar
1627
- c: "foo" bar
1628
- d: foo, "bar"
1629
- SASS
1630
- end
1631
-
1632
- def test_colon_variables_preserve_quotedness
1633
- assert_equal(<<CSS, render(<<SASS))
1634
- foo {
1635
- a: "foo";
1636
- b: bar; }
1637
- CSS
1638
- $a: "foo"
1639
- $b: bar
1640
-
1641
- foo
1642
- a: $a
1643
- b: $b
1644
- SASS
1645
- end
1646
-
1647
- def test_colon_args_preserve_quotedness
1648
- assert_equal(<<CSS, render(<<SASS))
1649
- foo {
1650
- a: "foo";
1651
- b: bar;
1652
- c: "foo" bar;
1653
- d: foo, "bar"; }
1654
- CSS
1655
- =foo($a: "foo", $b: bar, $c: "foo" bar, $d: (foo, "bar"))
1656
- foo
1657
- a: $a
1658
- b: $b
1659
- c: $c
1660
- d: $d
1661
-
1662
- +foo
1663
- SASS
1664
- end
1665
-
1666
- def test_interpolation_unquotes_strings
1667
- assert_equal(<<CSS, render(<<SASS))
1668
- .foo-bar {
1669
- a: b; }
1670
- CSS
1671
- .foo-\#{"bar"}
1672
- a: b
1673
- SASS
1674
-
1675
- assert_equal(<<CSS, render(<<SASS))
1676
- .foo {
1677
- a: b c; }
1678
- CSS
1679
- .foo
1680
- a: b \#{"c"}
1681
- SASS
1682
- end
1683
-
1684
- def test_interpolation_unquotes_strings_in_vars
1685
- assert_equal(<<CSS, render(<<SASS))
1686
- .foo-bar {
1687
- a: b; }
1688
- CSS
1689
- $var: "bar"
1690
-
1691
- .foo-\#{$var}
1692
- a: b
1693
- SASS
1694
- end
1695
-
1696
- def test_interpolation_doesnt_deep_unquote_strings
1697
- assert_equal(<<CSS, render(<<SASS))
1698
- .foo- "bar" "baz" {
1699
- a: b; }
1700
- CSS
1701
- .foo-\#{"bar" "baz"}
1702
- a: b
1703
- SASS
1704
- end
1705
-
1706
- # Deprecated equals behavior
1707
-
1708
- def test_equals_properties_unquote_strings
1709
- silence_warnings do
1710
- assert_equal(<<CSS, render(<<SASS))
1711
- foo {
1712
- a: foo;
1713
- b: bar;
1714
- c: foo bar;
1715
- d: foo, bar baz;
1716
- e: foo bar, bar; }
1717
- CSS
1718
- foo
1719
- a= "foo"
1720
- b= bar
1721
- c= "foo" bar
1722
- d= foo, "bar baz"
1723
- e= "foo bar", bar
1724
- SASS
1725
- end
1726
- end
1727
-
1728
- def test_equals_properties_unquote_value
1729
- silence_warnings do
1730
- assert_equal(<<CSS, render(<<SASS))
1731
- foo {
1732
- a: foo; }
1733
- CSS
1734
- $var: "foo"
1735
-
1736
- foo
1737
- a= $var
1738
- SASS
1739
- end
1740
- end
1741
-
1742
- def test_equals_properties_deep_unquote_vars
1743
- silence_warnings do
1744
- assert_equal(<<CSS, render(<<SASS))
1745
- foo {
1746
- a: foo bar;
1747
- b: bar foo; }
1748
- CSS
1749
- $var: "foo"
1750
-
1751
- foo
1752
- a= $var "bar"
1753
- b= "bar" $var
1754
- SASS
1755
- end
1756
- end
1757
-
1758
- def test_equals_vars_unquote_strings
1759
- silence_warnings do
1760
- assert_equal(<<CSS, render(<<SASS))
1761
- foo {
1762
- a: foo;
1763
- b: bar;
1764
- c: foo bar;
1765
- d: foo, bar; }
1766
- CSS
1767
- $a = "foo"
1768
- $b = bar
1769
- $c = "foo" bar
1770
- $d = foo, "bar"
1771
-
1772
- foo
1773
- a: $a
1774
- b: $b
1775
- c: $c
1776
- d: $d
1777
- SASS
1778
- end
1779
- end
1780
-
1781
- def test_equals_vars_unquote_value
1782
- silence_warnings do
1783
- assert_equal(<<CSS, render(<<SASS))
1784
- foo {
1785
- a: foo; }
1786
- CSS
1787
- $var1: "foo"
1788
- $var2 = $var1
1789
-
1790
- foo
1791
- a: $var2
1792
- SASS
1793
- end
1794
- end
1795
-
1796
- def test_equals_vars_deep_unquote_vars
1797
- silence_warnings do
1798
- assert_equal(<<CSS, render(<<SASS))
1799
- foo {
1800
- a: foo bar;
1801
- b: bar foo; }
1802
- CSS
1803
- $var: "foo"
1804
- $a = $var "bar"
1805
- $b = "bar" $var
1806
-
1807
- foo
1808
- a: $a
1809
- b: $b
1810
- SASS
1811
- end
1812
- end
1813
-
1814
- def test_equals_args_unquote_strings
1815
- silence_warnings do
1816
- assert_equal(<<CSS, render(<<SASS))
1817
- foo {
1818
- a: foo;
1819
- b: bar;
1820
- c: foo bar;
1821
- d: foo, bar; }
1822
- CSS
1823
- =foo($a = "foo", $b = bar, $c = "foo" bar, $d = (foo, "bar"))
1824
- foo
1825
- a: $a
1826
- b: $b
1827
- c: $c
1828
- d: $d
1829
-
1830
- +foo
1831
- SASS
1832
- end
1833
- end
1834
-
1835
- def test_equals_args_unquote_value
1836
- silence_warnings do
1837
- assert_equal(<<CSS, render(<<SASS))
1838
- foo {
1839
- a: foo; }
1840
- CSS
1841
- $var1: "foo"
1842
-
1843
- =foo($var2 = $var1)
1844
- foo
1845
- a: $var2
1846
-
1847
- +foo
1848
- SASS
1849
- end
1850
- end
1851
-
1852
- def test_equals_args_deep_unquote_vars
1853
- silence_warnings do
1854
- assert_equal(<<CSS, render(<<SASS))
1855
- foo {
1856
- a: foo bar;
1857
- b: bar foo; }
1858
- CSS
1859
- $var: "foo"
1860
- =foo($a = $var "bar", $b = "bar" $var)
1861
- foo
1862
- a: $a
1863
- b: $b
1864
-
1865
- +foo
1866
- SASS
1867
- end
1868
- end
1869
-
1870
- def test_equals_properties_force_division
1871
- silence_warnings do
1872
- assert_equal(<<CSS, render(<<SASS))
1873
- foo {
1874
- a: 0.5; }
1875
- CSS
1876
- foo
1877
- a = 1px/2px
1878
- SASS
1879
- end
1880
- end
1881
-
1882
- def test_warn_directive
1883
- expected_warning = <<EXPECTATION
1884
- WARNING: this is a warning
1885
- on line 4 of test_warn_directive_inline.sass
1886
-
1887
- WARNING: this is a mixin warning
1888
- on line 2 of test_warn_directive_inline.sass, in `foo'
1889
- from line 7 of test_warn_directive_inline.sass
1890
- EXPECTATION
1891
- assert_warning expected_warning do
1892
- assert_equal <<CSS, render(<<SASS)
1893
- bar {
1894
- c: d; }
1895
- CSS
1896
- =foo
1897
- @warn "this is a mixin warning"
1898
-
1899
- @warn "this is a warning"
1900
- bar
1901
- c: d
1902
- +foo
1903
- SASS
1904
- end
1905
- end
1906
-
1907
- def test_warn_directive_when_quiet
1908
- assert_warning "" do
1909
- assert_equal <<CSS, render(<<SASS, :quiet => true)
1910
- CSS
1911
- @warn "this is a warning"
1912
- SASS
1913
- end
1914
- end
1915
-
1916
- def test_warn_with_imports
1917
- expected_warning = <<WARN
1918
- WARNING: In the main file
1919
- on line 1 of #{File.dirname(__FILE__)}/templates/warn.sass
1920
-
1921
- WARNING: Imported
1922
- on line 1 of #{File.dirname(__FILE__)}/templates/warn_imported.sass
1923
- from line 2 of #{File.dirname(__FILE__)}/templates/warn.sass
1924
-
1925
- WARNING: In an imported mixin
1926
- on line 4 of #{File.dirname(__FILE__)}/templates/warn_imported.sass, in `emits-a-warning'
1927
- from line 3 of #{File.dirname(__FILE__)}/templates/warn.sass
1928
- WARN
1929
- assert_warning expected_warning do
1930
- renders_correctly "warn", :style => :compact, :load_paths => [File.dirname(__FILE__) + "/templates"]
1931
- end
1932
- end
1933
-
1934
- # Regression tests
1935
-
1936
- def test_parens_in_mixins
1937
- assert_equal(<<CSS, render(<<SASS))
1938
- .foo {
1939
- color: #01ff7f;
1940
- background-color: #000102; }
1941
- CSS
1942
- =foo($c1, $c2: rgb(0, 1, 2))
1943
- color: $c1
1944
- background-color: $c2
1945
-
1946
- .foo
1947
- +foo(rgb(1,255,127))
1948
- SASS
1949
- end
1950
-
1951
- def test_comment_beneath_prop
1952
- assert_equal(<<RESULT, render(<<SOURCE))
1953
- .box {
1954
- border-style: solid; }
1955
- RESULT
1956
- .box
1957
- :border
1958
- //:color black
1959
- :style solid
1960
- SOURCE
1961
-
1962
- assert_equal(<<RESULT, render(<<SOURCE))
1963
- .box {
1964
- /* :color black */
1965
- border-style: solid; }
1966
- RESULT
1967
- .box
1968
- :border
1969
- /* :color black
1970
- :style solid
1971
- SOURCE
1972
-
1973
- assert_equal(<<RESULT, render(<<SOURCE, :style => :compressed))
1974
- .box{border-style:solid}
1975
- RESULT
1976
- .box
1977
- :border
1978
- /*:color black
1979
- :style solid
1980
- SOURCE
1981
- end
1982
-
1983
- def test_compressed_comment_beneath_directive
1984
- assert_equal(<<RESULT, render(<<SOURCE, :style => :compressed))
1985
- @foo{a:b}
1986
- RESULT
1987
- @foo
1988
- a: b
1989
- /*b: c
1990
- SOURCE
1991
- end
1992
-
1993
- def test_comment_with_crazy_indentation
1994
- assert_equal(<<CSS, render(<<SASS))
1995
- /* This is a loud comment:
1996
- * Where the indentation is wonky. */
1997
- .comment {
1998
- width: 1px; }
1999
- CSS
2000
- /*
2001
- This is a loud comment:
2002
- Where the indentation is wonky.
2003
- //
2004
- This is a silent comment:
2005
- Where the indentation is wonky.
2006
- .comment
2007
- width: 1px
2008
- SASS
2009
- end
2010
-
2011
- def test_plus_with_space
2012
- assert_equal(<<CSS, render(<<SASS))
2013
- a + b {
2014
- color: green; }
2015
- CSS
2016
- a
2017
- + b
2018
- color: green
2019
- SASS
2020
- end
2021
-
2022
- def test_empty_line_comment
2023
- assert_equal(<<CSS, render(<<SASS))
2024
- /* Foo
2025
- *
2026
- * Bar */
2027
- CSS
2028
- /*
2029
- Foo
2030
-
2031
- Bar
2032
- SASS
2033
- end
2034
-
2035
- def test_empty_comment
2036
- assert_equal(<<CSS, render(<<SASS))
2037
- /* */
2038
- a {
2039
- /* */
2040
- b: c; }
2041
- CSS
2042
- /*
2043
- a
2044
- /*
2045
- b: c
2046
- SASS
2047
- end
2048
-
2049
- def test_options_available_in_environment
2050
- assert_equal(<<CSS, render(<<SASS))
2051
- a {
2052
- b: nested; }
2053
- CSS
2054
- a
2055
- b: option("style")
2056
- SASS
2057
- end
2058
-
2059
- def test_mixin_no_arg_error
2060
- assert_raise_message(Sass::SyntaxError, 'Invalid CSS after "($bar,": expected variable (e.g. $foo), was ")"') do
2061
- render(<<SASS)
2062
- =foo($bar,)
2063
- bip: bap
2064
- SASS
2065
- end
2066
- end
2067
-
2068
- def test_import_with_commas_in_url
2069
- assert_equal <<CSS, render(<<SASS)
2070
- @import url(foo.css?bar,baz);
2071
- CSS
2072
- @import url(foo.css?bar,baz)
2073
- SASS
2074
- end
2075
-
2076
- def test_function_output_with_comma
2077
- assert_equal <<CSS, render(<<SASS)
2078
- foo {
2079
- a: b(c), d(e); }
2080
- CSS
2081
- foo
2082
- a: b(c), d(e)
2083
- SASS
2084
- end
2085
-
2086
- def test_interpolation_with_comma
2087
- assert_equal <<CSS, render(<<SASS)
2088
- foo {
2089
- a: foo, bar; }
2090
- CSS
2091
- $foo: foo
2092
- foo
2093
- a: \#{$foo}, bar
2094
- SASS
2095
- end
2096
-
2097
- def test_string_interpolation_with_comma
2098
- assert_equal <<CSS, render(<<SASS)
2099
- foo {
2100
- a: "bip foo bap", bar; }
2101
- CSS
2102
- $foo: foo
2103
- foo
2104
- a: "bip \#{$foo} bap", bar
2105
- SASS
2106
- end
2107
-
2108
- # Encodings
2109
-
2110
- unless Haml::Util.ruby1_8?
2111
- def test_encoding_error
2112
- render("foo\nbar\nb\xFEaz".force_encoding("utf-8"))
2113
- assert(false, "Expected exception")
2114
- rescue Sass::SyntaxError => e
2115
- assert_equal(3, e.sass_line)
2116
- assert_equal('Invalid UTF-8 character "\xFE"', e.message)
2117
- end
2118
-
2119
- def test_ascii_incompatible_encoding_error
2120
- template = "foo\nbar\nb_z".encode("utf-16le")
2121
- template[9] = "\xFE".force_encoding("utf-16le")
2122
- render(template)
2123
- assert(false, "Expected exception")
2124
- rescue Sass::SyntaxError => e
2125
- assert_equal(3, e.sass_line)
2126
- assert_equal('Invalid UTF-16LE character "\xFE"', e.message)
2127
- end
2128
-
2129
- def test_same_charset_as_encoding
2130
- assert_renders_encoded(<<CSS, <<SASS)
2131
- @charset "UTF-8";
2132
- fóó {
2133
- a: b; }
2134
- CSS
2135
- @charset "utf-8"
2136
- fóó
2137
- a: b
2138
- SASS
2139
- end
2140
-
2141
- def test_different_charset_than_encoding
2142
- assert_renders_encoded(<<CSS.force_encoding("IBM866"), <<SASS)
2143
- @charset "IBM866";
2144
- fóó {
2145
- a: b; }
2146
- CSS
2147
- @charset "ibm866"
2148
- fóó
2149
- a: b
2150
- SASS
2151
- end
2152
-
2153
- def test_different_encoding_than_system
2154
- assert_renders_encoded(<<CSS.encode("IBM866"), <<SASS.encode("IBM866"))
2155
- @charset "IBM866";
2156
- тАЬ {
2157
- a: b; }
2158
- CSS
2159
- тАЬ
2160
- a: b
2161
- SASS
2162
- end
2163
-
2164
- def test_multibyte_charset
2165
- assert_renders_encoded(<<CSS.encode("UTF-16LE"), <<SASS.encode("UTF-16LE").force_encoding("UTF-8"))
2166
- @charset "UTF-16LE";
2167
- fóó {
2168
- a: b; }
2169
- CSS
2170
- @charset "utf-16le"
2171
- fóó
2172
- a: b
2173
- SASS
2174
- end
2175
-
2176
- def test_multibyte_charset_without_endian_specifier
2177
- assert_renders_encoded(<<CSS.encode("UTF-32BE"), <<SASS.encode("UTF-32BE").force_encoding("UTF-8"))
2178
- @charset "UTF-32BE";
2179
- fóó {
2180
- a: b; }
2181
- CSS
2182
- @charset "utf-32"
2183
- fóó
2184
- a: b
2185
- SASS
2186
- end
2187
-
2188
- def test_utf8_bom
2189
- assert_renders_encoded(<<CSS, <<SASS.force_encoding("BINARY"))
2190
- @charset "UTF-8";
2191
- fóó {
2192
- a: b; }
2193
- CSS
2194
- \uFEFFfóó
2195
- a: b
2196
- SASS
2197
- end
2198
-
2199
- def test_utf16le_bom
2200
- assert_renders_encoded(<<CSS.encode("UTF-16LE"), <<SASS.encode("UTF-16LE").force_encoding("BINARY"))
2201
- @charset "UTF-16LE";
2202
- fóó {
2203
- a: b; }
2204
- CSS
2205
- \uFEFFfóó
2206
- a: b
2207
- SASS
2208
- end
2209
-
2210
- def test_utf32be_bom
2211
- assert_renders_encoded(<<CSS.encode("UTF-32BE"), <<SASS.encode("UTF-32BE").force_encoding("BINARY"))
2212
- @charset "UTF-32BE";
2213
- fóó {
2214
- a: b; }
2215
- CSS
2216
- \uFEFFfóó
2217
- a: b
2218
- SASS
2219
- end
2220
- end
2221
-
2222
- private
2223
-
2224
- def assert_hash_has(hash, expected)
2225
- expected.each {|k, v| assert_equal(v, hash[k])}
2226
- end
2227
-
2228
- def assert_renders_encoded(css, sass)
2229
- result = render(sass)
2230
- assert_equal css.encoding, result.encoding
2231
- assert_equal css, result
2232
- end
2233
-
2234
- def render(sass, options = {})
2235
- munge_filename options
2236
- Sass::Engine.new(sass, options).render
2237
- end
2238
-
2239
- def renders_correctly(name, options={})
2240
- sass_file = load_file(name, "sass")
2241
- css_file = load_file(name, "css")
2242
- options[:filename] ||= filename(name, "sass")
2243
- options[:css_filename] ||= filename(name, "css")
2244
- css_result = Sass::Engine.new(sass_file, options).render
2245
- assert_equal css_file, css_result
2246
- end
2247
-
2248
- def load_file(name, type = "sass")
2249
- @result = ''
2250
- File.new(filename(name, type)).each_line { |l| @result += l }
2251
- @result
2252
- end
2253
-
2254
- def filename(name, type)
2255
- File.dirname(__FILE__) + "/#{type == 'sass' ? 'templates' : 'results'}/#{name}.#{type}"
2256
- end
2257
-
2258
- def sassc_path(template)
2259
- sassc_path = File.join(File.dirname(__FILE__) + "/templates/#{template}.sass")
2260
- Sass::Files.send(:sassc_filename, sassc_path, Sass::Engine::DEFAULT_OPTIONS)
2261
- end
2262
- end
2263
-