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,809 +0,0 @@
1
- require 'erb'
2
- require 'set'
3
- require 'enumerator'
4
- require 'stringio'
5
- require 'strscan'
6
- require 'rbconfig'
7
-
8
- require 'haml/root'
9
- require 'haml/util/subset_map'
10
-
11
- module Haml
12
- # A module containing various useful functions.
13
- module Util
14
- extend self
15
-
16
- # An array of ints representing the Ruby version number.
17
- # @api public
18
- RUBY_VERSION = ::RUBY_VERSION.split(".").map {|s| s.to_i}
19
-
20
- # Returns the path of a file relative to the Haml root directory.
21
- #
22
- # @param file [String] The filename relative to the Haml root
23
- # @return [String] The filename relative to the the working directory
24
- def scope(file)
25
- File.join(Haml::ROOT_DIR, file)
26
- end
27
-
28
- # Converts an array of `[key, value]` pairs to a hash.
29
- # For example:
30
- #
31
- # to_hash([[:foo, "bar"], [:baz, "bang"]])
32
- # #=> {:foo => "bar", :baz => "bang"}
33
- #
34
- # @param arr [Array<(Object, Object)>] An array of pairs
35
- # @return [Hash] A hash
36
- def to_hash(arr)
37
- arr.compact.inject({}) {|h, (k, v)| h[k] = v; h}
38
- end
39
-
40
- # Maps the keys in a hash according to a block.
41
- # For example:
42
- #
43
- # map_keys({:foo => "bar", :baz => "bang"}) {|k| k.to_s}
44
- # #=> {"foo" => "bar", "baz" => "bang"}
45
- #
46
- # @param hash [Hash] The hash to map
47
- # @yield [key] A block in which the keys are transformed
48
- # @yieldparam key [Object] The key that should be mapped
49
- # @yieldreturn [Object] The new value for the key
50
- # @return [Hash] The mapped hash
51
- # @see #map_vals
52
- # @see #map_hash
53
- def map_keys(hash)
54
- to_hash(hash.map {|k, v| [yield(k), v]})
55
- end
56
-
57
- # Maps the values in a hash according to a block.
58
- # For example:
59
- #
60
- # map_values({:foo => "bar", :baz => "bang"}) {|v| v.to_sym}
61
- # #=> {:foo => :bar, :baz => :bang}
62
- #
63
- # @param hash [Hash] The hash to map
64
- # @yield [value] A block in which the values are transformed
65
- # @yieldparam value [Object] The value that should be mapped
66
- # @yieldreturn [Object] The new value for the value
67
- # @return [Hash] The mapped hash
68
- # @see #map_keys
69
- # @see #map_hash
70
- def map_vals(hash)
71
- to_hash(hash.map {|k, v| [k, yield(v)]})
72
- end
73
-
74
- # Maps the key-value pairs of a hash according to a block.
75
- # For example:
76
- #
77
- # map_hash({:foo => "bar", :baz => "bang"}) {|k, v| [k.to_s, v.to_sym]}
78
- # #=> {"foo" => :bar, "baz" => :bang}
79
- #
80
- # @param hash [Hash] The hash to map
81
- # @yield [key, value] A block in which the key-value pairs are transformed
82
- # @yieldparam [key] The hash key
83
- # @yieldparam [value] The hash value
84
- # @yieldreturn [(Object, Object)] The new value for the `[key, value]` pair
85
- # @return [Hash] The mapped hash
86
- # @see #map_keys
87
- # @see #map_vals
88
- def map_hash(hash, &block)
89
- to_hash(hash.map(&block))
90
- end
91
-
92
- # Computes the powerset of the given array.
93
- # This is the set of all subsets of the array.
94
- # For example:
95
- #
96
- # powerset([1, 2, 3]) #=>
97
- # Set[Set[], Set[1], Set[2], Set[3], Set[1, 2], Set[2, 3], Set[1, 3], Set[1, 2, 3]]
98
- #
99
- # @param arr [Enumerable]
100
- # @return [Set<Set>] The subsets of `arr`
101
- def powerset(arr)
102
- arr.inject([Set.new].to_set) do |powerset, el|
103
- new_powerset = Set.new
104
- powerset.each do |subset|
105
- new_powerset << subset
106
- new_powerset << subset + [el]
107
- end
108
- new_powerset
109
- end
110
- end
111
-
112
- # Restricts a number to falling within a given range.
113
- # Returns the number if it falls within the range,
114
- # or the closest value in the range if it doesn't.
115
- #
116
- # @param value [Numeric]
117
- # @param range [Range<Numeric>]
118
- # @return [Numeric]
119
- def restrict(value, range)
120
- [[value, range.first].max, range.last].min
121
- end
122
-
123
- # Concatenates all strings that are adjacent in an array,
124
- # while leaving other elements as they are.
125
- # For example:
126
- #
127
- # merge_adjacent_strings([1, "foo", "bar", 2, "baz"])
128
- # #=> [1, "foobar", 2, "baz"]
129
- #
130
- # @param enum [Enumerable]
131
- # @return [Array] The enumerable with strings merged
132
- def merge_adjacent_strings(enum)
133
- enum.inject([]) do |a, e|
134
- if e.is_a?(String)
135
- if a.last.is_a?(String)
136
- a.last << e
137
- else
138
- a << e.dup
139
- end
140
- else
141
- a << e
142
- end
143
- a
144
- end
145
- end
146
-
147
- # Intersperses a value in an enumerable, as would be done with `Array#join`
148
- # but without concatenating the array together afterwards.
149
- #
150
- # @param enum [Enumerable]
151
- # @param val
152
- # @return [Array]
153
- def intersperse(enum, val)
154
- enum.inject([]) {|a, e| a << e << val}[0...-1]
155
- end
156
-
157
- # Substitutes a sub-array of one array with another sub-array.
158
- #
159
- # @param ary [Array] The array in which to make the substitution
160
- # @param from [Array] The sequence of elements to replace with `to`
161
- # @param to [Array] The sequence of elements to replace `from` with
162
- def substitute(ary, from, to)
163
- res = ary.dup
164
- i = 0
165
- while i < res.size
166
- if res[i...i+from.size] == from
167
- res[i...i+from.size] = to
168
- end
169
- i += 1
170
- end
171
- res
172
- end
173
-
174
- # Destructively strips whitespace from the beginning and end
175
- # of the first and last elements, respectively,
176
- # in the array (if those elements are strings).
177
- #
178
- # @param arr [Array]
179
- # @return [Array] `arr`
180
- def strip_string_array(arr)
181
- arr.first.lstrip! if arr.first.is_a?(String)
182
- arr.last.rstrip! if arr.last.is_a?(String)
183
- arr
184
- end
185
-
186
- # Return an array of all possible paths through the given arrays.
187
- #
188
- # @param arrs [Array<Array>]
189
- # @return [Array<Arrays>]
190
- #
191
- # @example
192
- # paths([[1, 2], [3, 4], [5]]) #=>
193
- # # [[1, 3, 5],
194
- # # [2, 3, 5],
195
- # # [1, 4, 5],
196
- # # [2, 4, 5]]
197
- def paths(arrs)
198
- arrs.inject([[]]) do |paths, arr|
199
- flatten(arr.map {|e| paths.map {|path| path + [e]}}, 1)
200
- end
201
- end
202
-
203
- # Computes a single longest common subsequence for `x` and `y`.
204
- # If there are more than one longest common subsequences,
205
- # the one returned is that which starts first in `x`.
206
- #
207
- # @param x [Array]
208
- # @param y [Array]
209
- # @yield [a, b] An optional block to use in place of a check for equality
210
- # between elements of `x` and `y`.
211
- # @yieldreturn [Object, nil] If the two values register as equal,
212
- # this will return the value to use in the LCS array.
213
- # @return [Array] The LCS
214
- def lcs(x, y, &block)
215
- x = [nil, *x]
216
- y = [nil, *y]
217
- block ||= proc {|a, b| a == b && a}
218
- lcs_backtrace(lcs_table(x, y, &block), x, y, x.size-1, y.size-1, &block)
219
- end
220
-
221
- # Returns information about the caller of the previous method.
222
- #
223
- # @param entry [String] An entry in the `#caller` list, or a similarly formatted string
224
- # @return [[String, Fixnum, (String, nil)]] An array containing the filename, line, and method name of the caller.
225
- # The method name may be nil
226
- def caller_info(entry = caller[1])
227
- info = entry.scan(/^(.*?):(-?.*?)(?::.*`(.+)')?$/).first
228
- info[1] = info[1].to_i
229
- # This is added by Rubinius to designate a block, but we don't care about it.
230
- info[2].sub!(/ \{\}\Z/, '') if info[2]
231
- info
232
- end
233
-
234
- # Returns whether one version string represents a more recent version than another.
235
- #
236
- # @param v1 [String] A version string.
237
- # @param v2 [String] Another version string.
238
- # @return [Boolean]
239
- def version_gt(v1, v2)
240
- # Construct an array to make sure the shorter version is padded with nil
241
- Array.new([v1.length, v2.length].max).zip(v1.split("."), v2.split(".")) do |_, p1, p2|
242
- p1 ||= "0"
243
- p2 ||= "0"
244
- release1 = p1 =~ /^[0-9]+$/
245
- release2 = p2 =~ /^[0-9]+$/
246
- if release1 && release2
247
- # Integer comparison if both are full releases
248
- p1, p2 = p1.to_i, p2.to_i
249
- next if p1 == p2
250
- return p1 > p2
251
- elsif !release1 && !release2
252
- # String comparison if both are prereleases
253
- next if p1 == p2
254
- return p1 > p2
255
- else
256
- # If only one is a release, that one is newer
257
- return release1
258
- end
259
- end
260
- end
261
-
262
- # Returns whether one version string represents the same or a more
263
- # recent version than another.
264
- #
265
- # @param v1 [String] A version string.
266
- # @param v2 [String] Another version string.
267
- # @return [Boolean]
268
- def version_geq(v1, v2)
269
- version_gt(v1, v2) || !version_gt(v2, v1)
270
- end
271
-
272
- # Silence all output to STDERR within a block.
273
- #
274
- # @yield A block in which no output will be printed to STDERR
275
- def silence_warnings
276
- the_real_stderr, $stderr = $stderr, StringIO.new
277
- yield
278
- ensure
279
- $stderr = the_real_stderr
280
- end
281
-
282
- @@silence_warnings = false
283
- # Silences all Haml warnings within a block.
284
- #
285
- # @yield A block in which no Haml warnings will be printed
286
- def silence_haml_warnings
287
- old_silence_warnings = @@silence_warnings
288
- @@silence_warnings = true
289
- yield
290
- ensure
291
- @@silence_warnings = old_silence_warnings
292
- end
293
-
294
- # The same as `Kernel#warn`, but is silenced by \{#silence\_haml\_warnings}.
295
- #
296
- # @param msg [String]
297
- def haml_warn(msg)
298
- return if @@silence_warnings
299
- warn(msg)
300
- end
301
-
302
- ## Cross Rails Version Compatibility
303
-
304
- # Returns the root of the Rails application,
305
- # if this is running in a Rails context.
306
- # Returns `nil` if no such root is defined.
307
- #
308
- # @return [String, nil]
309
- def rails_root
310
- if defined?(::Rails.root)
311
- return ::Rails.root.to_s if ::Rails.root
312
- raise "ERROR: Rails.root is nil!"
313
- end
314
- return RAILS_ROOT.to_s if defined?(RAILS_ROOT)
315
- return nil
316
- end
317
-
318
- # Returns the environment of the Rails application,
319
- # if this is running in a Rails context.
320
- # Returns `nil` if no such environment is defined.
321
- #
322
- # @return [String, nil]
323
- def rails_env
324
- return ::Rails.env.to_s if defined?(::Rails.env)
325
- return RAILS_ENV.to_s if defined?(RAILS_ENV)
326
- return nil
327
- end
328
-
329
- # Returns whether this environment is using ActionPack
330
- # version 3.0.0 or greater.
331
- #
332
- # @return [Boolean]
333
- def ap_geq_3?
334
- ap_geq?("3.0.0.beta1")
335
- end
336
-
337
- # Returns whether this environment is using ActionPack
338
- # of a version greater than or equal to that specified.
339
- #
340
- # @param version [String] The string version number to check against.
341
- # Should be greater than or equal to Rails 3,
342
- # because otherwise ActionPack::VERSION isn't autoloaded
343
- # @return [Boolean]
344
- def ap_geq?(version)
345
- # The ActionPack module is always loaded automatically in Rails >= 3
346
- return false unless defined?(ActionPack) && defined?(ActionPack::VERSION) &&
347
- defined?(ActionPack::VERSION::STRING)
348
-
349
- version_geq(ActionPack::VERSION::STRING, version)
350
- end
351
-
352
- # Returns an ActionView::Template* class.
353
- # In pre-3.0 versions of Rails, most of these classes
354
- # were of the form `ActionView::TemplateFoo`,
355
- # while afterwards they were of the form `ActionView;:Template::Foo`.
356
- #
357
- # @param name [#to_s] The name of the class to get.
358
- # For example, `:Error` will return `ActionView::TemplateError`
359
- # or `ActionView::Template::Error`.
360
- def av_template_class(name)
361
- return ActionView.const_get("Template#{name}") if ActionView.const_defined?("Template#{name}")
362
- return ActionView::Template.const_get(name.to_s)
363
- end
364
-
365
- ## Rails XSS Safety
366
-
367
- # Whether or not ActionView's XSS protection is available and enabled,
368
- # as is the default for Rails 3.0+, and optional for version 2.3.5+.
369
- # Overridden in haml/template.rb if this is the case.
370
- #
371
- # @return [Boolean]
372
- def rails_xss_safe?
373
- false
374
- end
375
-
376
- # Returns the given text, marked as being HTML-safe.
377
- # With older versions of the Rails XSS-safety mechanism,
378
- # this destructively modifies the HTML-safety of `text`.
379
- #
380
- # @param text [String, nil]
381
- # @return [String, nil] `text`, marked as HTML-safe
382
- def html_safe(text)
383
- return unless text
384
- return text.html_safe if defined?(ActiveSupport::SafeBuffer)
385
- text.html_safe!
386
- end
387
-
388
- # Assert that a given object (usually a String) is HTML safe
389
- # according to Rails' XSS handling, if it's loaded.
390
- #
391
- # @param text [Object]
392
- def assert_html_safe!(text)
393
- return unless rails_xss_safe? && text && !text.to_s.html_safe?
394
- raise Haml::Error.new("Expected #{text.inspect} to be HTML-safe.")
395
- end
396
-
397
- # The class for the Rails SafeBuffer XSS protection class.
398
- # This varies depending on Rails version.
399
- #
400
- # @return [Class]
401
- def rails_safe_buffer_class
402
- # It's important that we check ActiveSupport first,
403
- # because in Rails 2.3.6 ActionView::SafeBuffer exists
404
- # but is a deprecated proxy object.
405
- return ActiveSupport::SafeBuffer if defined?(ActiveSupport::SafeBuffer)
406
- return ActionView::SafeBuffer
407
- end
408
-
409
- ## Cross-OS Compatibility
410
-
411
- # Whether or not this is running on Windows.
412
- #
413
- # @return [Boolean]
414
- def windows?
415
- RbConfig::CONFIG['host_os'] =~ /mswin|windows|mingw/i
416
- end
417
-
418
- ## Cross-Ruby-Version Compatibility
419
-
420
- # Whether or not this is running under Ruby 1.8 or lower.
421
- #
422
- # @return [Boolean]
423
- def ruby1_8?
424
- Haml::Util::RUBY_VERSION[0] == 1 && Haml::Util::RUBY_VERSION[1] < 9
425
- end
426
-
427
- # Whether or not this is running under Ruby 1.8.6 or lower.
428
- # Note that lower versions are not officially supported.
429
- #
430
- # @return [Boolean]
431
- def ruby1_8_6?
432
- ruby1_8? && Haml::Util::RUBY_VERSION[2] < 7
433
- end
434
-
435
- # Checks that the encoding of a string is valid in Ruby 1.9
436
- # and cleans up potential encoding gotchas like the UTF-8 BOM.
437
- # If it's not, yields an error string describing the invalid character
438
- # and the line on which it occurrs.
439
- #
440
- # @param str [String] The string of which to check the encoding
441
- # @yield [msg] A block in which an encoding error can be raised.
442
- # Only yields if there is an encoding error
443
- # @yieldparam msg [String] The error message to be raised
444
- # @return [String] `str`, potentially with encoding gotchas like BOMs removed
445
- def check_encoding(str)
446
- if ruby1_8?
447
- return str.gsub(/\A\xEF\xBB\xBF/, '') # Get rid of the UTF-8 BOM
448
- elsif str.valid_encoding?
449
- # Get rid of the Unicode BOM if possible
450
- if str.encoding.name =~ /^UTF-(8|16|32)(BE|LE)?$/
451
- return str.gsub(Regexp.new("\\A\uFEFF".encode(str.encoding.name)), '')
452
- else
453
- return str
454
- end
455
- end
456
-
457
- encoding = str.encoding
458
- newlines = Regexp.new("\r\n|\r|\n".encode(encoding).force_encoding("binary"))
459
- str.force_encoding("binary").split(newlines).each_with_index do |line, i|
460
- begin
461
- line.encode(encoding)
462
- rescue Encoding::UndefinedConversionError => e
463
- yield <<MSG.rstrip, i + 1
464
- Invalid #{encoding.name} character #{e.error_char.dump}
465
- MSG
466
- end
467
- end
468
- return str
469
- end
470
-
471
- # Like {\#check\_encoding}, but also checks for a Ruby-style `-# coding:` comment
472
- # at the beginning of the template and uses that encoding if it exists.
473
- #
474
- # The Sass encoding rules are simple.
475
- # If a `-# coding:` comment exists,
476
- # we assume that that's the original encoding of the document.
477
- # Otherwise, we use whatever encoding Ruby has.
478
- #
479
- # Haml uses the same rules for parsing coding comments as Ruby.
480
- # This means that it can understand Emacs-style comments
481
- # (e.g. `-*- encoding: "utf-8" -*-`),
482
- # and also that it cannot understand non-ASCII-compatible encodings
483
- # such as `UTF-16` and `UTF-32`.
484
- #
485
- # @param str [String] The Haml template of which to check the encoding
486
- # @yield [msg] A block in which an encoding error can be raised.
487
- # Only yields if there is an encoding error
488
- # @yieldparam msg [String] The error message to be raised
489
- # @return [String] The original string encoded properly
490
- # @raise [ArgumentError] if the document declares an unknown encoding
491
- def check_haml_encoding(str, &block)
492
- return check_encoding(str, &block) if ruby1_8?
493
- str = str.dup if str.frozen?
494
-
495
- bom, encoding = parse_haml_magic_comment(str)
496
- if encoding; str.force_encoding(encoding)
497
- elsif bom; str.force_encoding("UTF-8")
498
- end
499
-
500
- return check_encoding(str, &block)
501
- end
502
-
503
- # Like {\#check\_encoding}, but also checks for a `@charset` declaration
504
- # at the beginning of the file and uses that encoding if it exists.
505
- #
506
- # The Sass encoding rules are simple.
507
- # If a `@charset` declaration exists,
508
- # we assume that that's the original encoding of the document.
509
- # Otherwise, we use whatever encoding Ruby has.
510
- # Then we convert that to UTF-8 to process internally.
511
- # The UTF-8 end result is what's returned by this method.
512
- #
513
- # @param str [String] The string of which to check the encoding
514
- # @yield [msg] A block in which an encoding error can be raised.
515
- # Only yields if there is an encoding error
516
- # @yieldparam msg [String] The error message to be raised
517
- # @return [(String, Encoding)] The original string encoded as UTF-8,
518
- # and the source encoding of the string (or `nil` under Ruby 1.8)
519
- # @raise [Encoding::UndefinedConversionError] if the source encoding
520
- # cannot be converted to UTF-8
521
- # @raise [ArgumentError] if the document uses an unknown encoding with `@charset`
522
- def check_sass_encoding(str, &block)
523
- return check_encoding(str, &block), nil if ruby1_8?
524
- # We allow any printable ASCII characters but double quotes in the charset decl
525
- bin = str.dup.force_encoding("BINARY")
526
- encoding = Haml::Util::ENCODINGS_TO_CHECK.find do |enc|
527
- bin =~ Haml::Util::CHARSET_REGEXPS[enc]
528
- end
529
- charset, bom = $1, $2
530
- if charset
531
- charset = charset.force_encoding(encoding).encode("UTF-8")
532
- if endianness = encoding[/[BL]E$/]
533
- begin
534
- Encoding.find(charset + endianness)
535
- charset << endianness
536
- rescue ArgumentError # Encoding charset + endianness doesn't exist
537
- end
538
- end
539
- str.force_encoding(charset)
540
- elsif bom
541
- str.force_encoding(encoding)
542
- end
543
-
544
- str = check_encoding(str, &block)
545
- return str.encode("UTF-8"), str.encoding
546
- end
547
-
548
- unless ruby1_8?
549
- # @private
550
- def _enc(string, encoding)
551
- string.encode(encoding).force_encoding("BINARY")
552
- end
553
-
554
- # We could automatically add in any non-ASCII-compatible encodings here,
555
- # but there's not really a good way to do that
556
- # without manually checking that each encoding
557
- # encodes all ASCII characters properly,
558
- # which takes long enough to affect the startup time of the CLI.
559
- ENCODINGS_TO_CHECK = %w[UTF-8 UTF-16BE UTF-16LE UTF-32BE UTF-32LE]
560
-
561
- CHARSET_REGEXPS = Hash.new do |h, e|
562
- h[e] =
563
- begin
564
- # /\A(?:\uFEFF)?@charset "(.*?)"|\A(\uFEFF)/
565
- Regexp.new(/\A(?:#{_enc("\uFEFF", e)})?#{
566
- _enc('@charset "', e)}(.*?)#{_enc('"', e)}|\A(#{
567
- _enc("\uFEFF", e)})/)
568
- rescue
569
- # /\A@charset "(.*?)"/
570
- Regexp.new(/\A#{_enc('@charset "', e)}(.*?)#{_enc('"', e)}/)
571
- end
572
- end
573
- end
574
-
575
- # Checks to see if a class has a given method.
576
- # For example:
577
- #
578
- # Haml::Util.has?(:public_instance_method, String, :gsub) #=> true
579
- #
580
- # Method collections like `Class#instance_methods`
581
- # return strings in Ruby 1.8 and symbols in Ruby 1.9 and on,
582
- # so this handles checking for them in a compatible way.
583
- #
584
- # @param attr [#to_s] The (singular) name of the method-collection method
585
- # (e.g. `:instance_methods`, `:private_methods`)
586
- # @param klass [Module] The class to check the methods of which to check
587
- # @param method [String, Symbol] The name of the method do check for
588
- # @return [Boolean] Whether or not the given collection has the given method
589
- def has?(attr, klass, method)
590
- klass.send("#{attr}s").include?(ruby1_8? ? method.to_s : method.to_sym)
591
- end
592
-
593
- # A version of `Enumerable#enum_with_index` that works in Ruby 1.8 and 1.9.
594
- #
595
- # @param enum [Enumerable] The enumerable to get the enumerator for
596
- # @return [Enumerator] The with-index enumerator
597
- def enum_with_index(enum)
598
- ruby1_8? ? enum.enum_with_index : enum.each_with_index
599
- end
600
-
601
- # A version of `Enumerable#enum_cons` that works in Ruby 1.8 and 1.9.
602
- #
603
- # @param enum [Enumerable] The enumerable to get the enumerator for
604
- # @param n [Fixnum] The size of each cons
605
- # @return [Enumerator] The consed enumerator
606
- def enum_cons(enum, n)
607
- ruby1_8? ? enum.enum_cons(n) : enum.each_cons(n)
608
- end
609
-
610
- # A version of `Enumerable#enum_slice` that works in Ruby 1.8 and 1.9.
611
- #
612
- # @param enum [Enumerable] The enumerable to get the enumerator for
613
- # @param n [Fixnum] The size of each slice
614
- # @return [Enumerator] The consed enumerator
615
- def enum_slice(enum, n)
616
- ruby1_8? ? enum.enum_slice(n) : enum.each_slice(n)
617
- end
618
-
619
- # Returns the ASCII code of the given character.
620
- #
621
- # @param c [String] All characters but the first are ignored.
622
- # @return [Fixnum] The ASCII code of `c`.
623
- def ord(c)
624
- ruby1_8? ? c[0] : c.ord
625
- end
626
-
627
- # Flattens the first `n` nested arrays in a cross-version manner.
628
- #
629
- # @param arr [Array] The array to flatten
630
- # @param n [Fixnum] The number of levels to flatten
631
- # @return [Array] The flattened array
632
- def flatten(arr, n)
633
- return arr.flatten(n) unless ruby1_8_6?
634
- return arr if n == 0
635
- arr.inject([]) {|res, e| e.is_a?(Array) ? res.concat(flatten(e, n - 1)) : res << e}
636
- end
637
-
638
- # Returns the hash code for a set in a cross-version manner.
639
- # Aggravatingly, this is order-dependent in Ruby 1.8.6.
640
- #
641
- # @param set [Set]
642
- # @return [Fixnum] The order-independent hashcode of `set`
643
- def set_hash(set)
644
- return set.hash unless ruby1_8_6?
645
- set.map {|e| e.hash}.uniq.sort.hash
646
- end
647
-
648
- # Tests the hash-equality of two sets in a cross-version manner.
649
- # Aggravatingly, this is order-dependent in Ruby 1.8.6.
650
- #
651
- # @param set1 [Set]
652
- # @param set2 [Set]
653
- # @return [Boolean] Whether or not the sets are hashcode equal
654
- def set_eql?(set1, set2)
655
- return set1.eql?(set2) unless ruby1_8_6?
656
- set1.to_a.uniq.sort_by {|e| e.hash}.eql?(set2.to_a.uniq.sort_by {|e| e.hash})
657
- end
658
-
659
- # Like `Object#inspect`, but preserves non-ASCII characters rather than escaping them under Ruby 1.9.2.
660
- # This is necessary so that the precompiled Haml template can be `#encode`d into `@options[:encoding]`
661
- # before being evaluated.
662
- #
663
- # @param obj {Object}
664
- # @return {String}
665
- def inspect_obj(obj)
666
- return obj.inspect unless version_geq(::RUBY_VERSION, "1.9.2")
667
- return ':' + inspect_obj(obj.to_s) if obj.is_a?(Symbol)
668
- return obj.inspect unless obj.is_a?(String)
669
- '"' + obj.gsub(/[\x00-\x7F]+/) {|s| s.inspect[1...-1]} + '"'
670
- end
671
-
672
- ## Static Method Stuff
673
-
674
- # The context in which the ERB for \{#def\_static\_method} will be run.
675
- class StaticConditionalContext
676
- # @param set [#include?] The set of variables that are defined for this context.
677
- def initialize(set)
678
- @set = set
679
- end
680
-
681
- # Checks whether or not a variable is defined for this context.
682
- #
683
- # @param name [Symbol] The name of the variable
684
- # @return [Boolean]
685
- def method_missing(name, *args, &block)
686
- super unless args.empty? && block.nil?
687
- @set.include?(name)
688
- end
689
- end
690
-
691
- # This is used for methods in {Haml::Buffer} that need to be very fast,
692
- # and take a lot of boolean parameters
693
- # that are known at compile-time.
694
- # Instead of passing the parameters in normally,
695
- # a separate method is defined for every possible combination of those parameters;
696
- # these are then called using \{#static\_method\_name}.
697
- #
698
- # To define a static method, an ERB template for the method is provided.
699
- # All conditionals based on the static parameters
700
- # are done as embedded Ruby within this template.
701
- # For example:
702
- #
703
- # def_static_method(Foo, :my_static_method, [:foo, :bar], :baz, :bang, <<RUBY)
704
- # <% if baz && bang %>
705
- # return foo + bar
706
- # <% elsif baz || bang %>
707
- # return foo - bar
708
- # <% else %>
709
- # return 17
710
- # <% end %>
711
- # RUBY
712
- #
713
- # \{#static\_method\_name} can be used to call static methods.
714
- #
715
- # @overload def_static_method(klass, name, args, *vars, erb)
716
- # @param klass [Module] The class on which to define the static method
717
- # @param name [#to_s] The (base) name of the static method
718
- # @param args [Array<Symbol>] The names of the arguments to the defined methods
719
- # (**not** to the ERB template)
720
- # @param vars [Array<Symbol>] The names of the static boolean variables
721
- # to be made available to the ERB template
722
- # @param erb [String] The template for the method code
723
- def def_static_method(klass, name, args, *vars)
724
- erb = vars.pop
725
- info = caller_info
726
- powerset(vars).each do |set|
727
- context = StaticConditionalContext.new(set).instance_eval {binding}
728
- klass.class_eval(<<METHOD, info[0], info[1])
729
- def #{static_method_name(name, *vars.map {|v| set.include?(v)})}(#{args.join(', ')})
730
- #{ERB.new(erb).result(context)}
731
- end
732
- METHOD
733
- end
734
- end
735
-
736
- # Computes the name for a method defined via \{#def\_static\_method}.
737
- #
738
- # @param name [String] The base name of the static method
739
- # @param vars [Array<Boolean>] The static variable assignment
740
- # @return [String] The real name of the static method
741
- def static_method_name(name, *vars)
742
- "#{name}_#{vars.map {|v| !!v}.join('_')}"
743
- end
744
-
745
- private
746
-
747
- # Calculates the memoization table for the Least Common Subsequence algorithm.
748
- # Algorithm from [Wikipedia](http://en.wikipedia.org/wiki/Longest_common_subsequence_problem#Computing_the_length_of_the_LCS)
749
- def lcs_table(x, y)
750
- c = Array.new(x.size) {[]}
751
- x.size.times {|i| c[i][0] = 0}
752
- y.size.times {|j| c[0][j] = 0}
753
- (1...x.size).each do |i|
754
- (1...y.size).each do |j|
755
- c[i][j] =
756
- if yield x[i], y[j]
757
- c[i-1][j-1] + 1
758
- else
759
- [c[i][j-1], c[i-1][j]].max
760
- end
761
- end
762
- end
763
- return c
764
- end
765
-
766
- # Computes a single longest common subsequence for arrays x and y.
767
- # Algorithm from [Wikipedia](http://en.wikipedia.org/wiki/Longest_common_subsequence_problem#Reading_out_an_LCS)
768
- def lcs_backtrace(c, x, y, i, j, &block)
769
- return [] if i == 0 || j == 0
770
- if v = yield(x[i], y[j])
771
- return lcs_backtrace(c, x, y, i-1, j-1, &block) << v
772
- end
773
-
774
- return lcs_backtrace(c, x, y, i, j-1, &block) if c[i][j-1] > c[i-1][j]
775
- return lcs_backtrace(c, x, y, i-1, j, &block)
776
- end
777
-
778
- # Parses a magic comment at the beginning of a Haml file.
779
- # The parsing rules are basically the same as Ruby's.
780
- #
781
- # @return [(Boolean, String or nil)]
782
- # Whether the document begins with a UTF-8 BOM,
783
- # and the declared encoding of the document (or nil if none is declared)
784
- def parse_haml_magic_comment(str)
785
- scanner = StringScanner.new(str.dup.force_encoding("BINARY"))
786
- bom = scanner.scan(/\xEF\xBB\xBF/n)
787
- return bom unless scanner.scan(/-\s*#\s*/n)
788
- if coding = try_parse_haml_emacs_magic_comment(scanner)
789
- return bom, coding
790
- end
791
-
792
- return bom unless scanner.scan(/.*?coding[=:]\s*([\w-]+)/in)
793
- return bom, scanner[1]
794
- end
795
-
796
- def try_parse_haml_emacs_magic_comment(scanner)
797
- pos = scanner.pos
798
- return unless scanner.scan(/.*?-\*-\s*/n)
799
- # From Ruby's parse.y
800
- return unless scanner.scan(/([^\s'":;]+)\s*:\s*("(?:\\.|[^"])*"|[^"\s;]+?)[\s;]*-\*-/n)
801
- name, val = scanner[1], scanner[2]
802
- return unless name =~ /(en)?coding/in
803
- val = $1 if val =~ /^"(.*)"$/n
804
- return val
805
- ensure
806
- scanner.pos = pos
807
- end
808
- end
809
- end