classiccms 0.2.4.pre → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1474) hide show
  1. data/.gitignore +1 -0
  2. data/README.md +11 -19
  3. data/classiccms.gemspec +10 -1
  4. data/lib/classiccms/application.rb +33 -3
  5. data/lib/classiccms/cli.rb +4 -10
  6. data/lib/classiccms/controllers/application.rb +4 -3
  7. data/lib/classiccms/controllers/cms.rb +36 -20
  8. data/lib/classiccms/controllers/website.rb +13 -5
  9. data/lib/classiccms/custom.rb +16 -0
  10. data/lib/classiccms/helpers.rb +20 -8
  11. data/lib/classiccms/lib/routing.rb +1 -1
  12. data/lib/classiccms/models/base.rb +14 -0
  13. data/lib/classiccms/models/image.rb +9 -0
  14. data/lib/classiccms/models/uploader.rb +17 -0
  15. data/lib/classiccms/public/css/images.sass +20 -0
  16. data/lib/classiccms/public/css/style.sass +115 -5
  17. data/lib/classiccms/public/images/image_delete.png +0 -0
  18. data/lib/classiccms/public/images/logout.png +0 -0
  19. data/lib/classiccms/public/images/logout_hover.png +0 -0
  20. data/lib/classiccms/public/js/images.coffee +46 -0
  21. data/lib/classiccms/public/js/index.coffee +61 -109
  22. data/lib/classiccms/public/js/uploadify/jquery.uploadify-3.1.js +975 -0
  23. data/lib/classiccms/public/js/uploadify/jquery.uploadify-3.1.min.js +16 -0
  24. data/lib/classiccms/public/js/uploadify/uploadify-cancel.png +0 -0
  25. data/lib/classiccms/public/js/uploadify/uploadify.css +88 -0
  26. data/lib/classiccms/public/js/uploadify/uploadify.swf +0 -0
  27. data/lib/classiccms/resque.yml +3 -0
  28. data/lib/classiccms/scaffold/Gemfile +2 -0
  29. data/lib/classiccms/scaffold/Rakefile +9 -0
  30. data/lib/classiccms/scaffold/app/controllers/form.rb +9 -0
  31. data/lib/classiccms/scaffold/app/models/Article.rb +4 -0
  32. data/lib/classiccms/scaffold/app/queue/mail.rb +11 -0
  33. data/lib/classiccms/scaffold/app/views/application/index.haml +16 -0
  34. data/lib/classiccms/scaffold/config/application.rb +2 -1
  35. data/lib/classiccms/scaffold/config/config.yml +1 -0
  36. data/lib/classiccms/scaffold/config.ru +7 -7
  37. data/lib/classiccms/scaffold/public/favicon.ico +0 -0
  38. data/lib/classiccms/scaffold/public/javascripts/index.coffee +1 -0
  39. data/lib/classiccms/scaffold/public/stylesheets/reset.sass +47 -0
  40. data/lib/classiccms/version.rb +1 -1
  41. data/lib/classiccms/views/cms/404.haml +16 -0
  42. data/lib/classiccms/views/cms/browse.haml +3 -0
  43. data/lib/classiccms/views/cms/ckeditor.haml +23 -0
  44. data/lib/classiccms/views/cms/form.haml +27 -24
  45. data/lib/classiccms/views/cms/header.haml +12 -7
  46. data/lib/classiccms/views/cms/images.haml +5 -0
  47. data/lib/classiccms/views/cms/login.haml +2 -1
  48. data/lib/classiccms/views/cms/logout.haml +1 -0
  49. data/lib/classiccms.rb +2 -2
  50. data/spec/assets/cat.jpg +0 -0
  51. data/spec/assets/cat.txt +1 -0
  52. data/spec/cli_spec.rb +8 -20
  53. data/spec/controllers/appliction_spec.rb +4 -4
  54. data/spec/controllers/cms_spec.rb +42 -19
  55. data/spec/controllers/website_spec.rb +24 -16
  56. data/spec/helpers_spec.rb +21 -10
  57. data/spec/methods.rb +4 -3
  58. data/spec/models/base_spec.rb +14 -0
  59. data/spec/models/connection_spec.rb +13 -1
  60. data/spec/models/image_spec.rb +28 -0
  61. data/spec/models/slug_spec.rb +13 -1
  62. data/spec/models/user_spec.rb +12 -1
  63. data/spec/queue_spec.rb +50 -0
  64. data/spec/spec_helper.rb +2 -1
  65. data/vendor/bundle/bin/classiccms +3 -3
  66. data/vendor/bundle/bin/resque +19 -0
  67. data/vendor/bundle/bin/resque-web +19 -0
  68. data/vendor/bundle/bin/tt +19 -0
  69. data/vendor/bundle/gems/carrierwave-0.6.2/README.md +785 -0
  70. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/compatibility/paperclip.rb +95 -0
  71. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/locale/en.yml +9 -0
  72. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/mount.rb +382 -0
  73. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb +66 -0
  74. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/processing/mime_types.rb +58 -0
  75. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/processing/mini_magick.rb +254 -0
  76. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/processing/rmagick.rb +284 -0
  77. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/sanitized_file.rb +315 -0
  78. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/storage/abstract.rb +30 -0
  79. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/storage/file.rb +56 -0
  80. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/storage/fog.rb +358 -0
  81. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/test/matchers.rb +241 -0
  82. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/cache.rb +169 -0
  83. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/callbacks.rb +35 -0
  84. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/configuration.rb +136 -0
  85. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/default_url.rb +19 -0
  86. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/download.rb +75 -0
  87. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/extension_whitelist.rb +49 -0
  88. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/mountable.rb +39 -0
  89. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/processing.rb +92 -0
  90. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/proxy.rb +77 -0
  91. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/remove.rb +23 -0
  92. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/serialization.rb +30 -0
  93. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/store.rb +111 -0
  94. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/url.rb +32 -0
  95. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader/versions.rb +254 -0
  96. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/uploader.rb +45 -0
  97. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/validations/active_model.rb +63 -0
  98. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/version.rb +3 -0
  99. data/vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave.rb +111 -0
  100. data/vendor/bundle/gems/carrierwave-0.6.2/lib/generators/templates/uploader.rb +55 -0
  101. data/vendor/bundle/gems/carrierwave-0.6.2/lib/generators/uploader_generator.rb +7 -0
  102. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/.gitignore +7 -0
  103. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/Gemfile +4 -0
  104. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/LICENSE +20 -0
  105. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/README.md +102 -0
  106. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/Rakefile +12 -0
  107. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/carrierwave-mongoid.gemspec +28 -0
  108. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/lib/carrierwave/mongoid/version.rb +5 -0
  109. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/lib/carrierwave/mongoid.rb +94 -0
  110. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/lib/carrierwave/storage/grid_fs.rb +134 -0
  111. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/spec/fixtures/new.jpeg +1 -0
  112. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/spec/fixtures/new.txt +1 -0
  113. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/spec/fixtures/old.jpeg +1 -0
  114. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/spec/fixtures/old.txt +1 -0
  115. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/spec/fixtures/portrait.jpg +0 -0
  116. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/spec/fixtures/test.jpeg +1 -0
  117. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/spec/fixtures/test.jpg +1 -0
  118. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/spec/mongoid_spec.rb +754 -0
  119. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/spec/spec_helper.rb +67 -0
  120. data/vendor/bundle/gems/carrierwave-mongoid-0.2.1/spec/storage/grid_fs_spec.rb +200 -0
  121. data/vendor/bundle/gems/coffee-script-source-1.3.3/lib/coffee_script/coffee-script.js +8 -0
  122. data/vendor/bundle/gems/coffee-script-source-1.3.3/lib/coffee_script/source.rb +7 -0
  123. data/vendor/bundle/gems/dragonfly-0.9.12/.yardopts +29 -0
  124. data/vendor/bundle/gems/dragonfly-0.9.12/Gemfile +31 -0
  125. data/vendor/bundle/gems/dragonfly-0.9.12/History.md +485 -0
  126. data/vendor/bundle/gems/dragonfly-0.9.12/LICENSE +20 -0
  127. data/vendor/bundle/gems/dragonfly-0.9.12/README.md +130 -0
  128. data/vendor/bundle/gems/dragonfly-0.9.12/Rakefile +49 -0
  129. data/vendor/bundle/gems/dragonfly-0.9.12/VERSION +1 -0
  130. data/vendor/bundle/gems/dragonfly-0.9.12/config.ru +14 -0
  131. data/vendor/bundle/gems/dragonfly-0.9.12/docs.watchr +1 -0
  132. data/vendor/bundle/gems/dragonfly-0.9.12/dragonfly.gemspec +311 -0
  133. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Analysers.md +68 -0
  134. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Caching.md +23 -0
  135. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Configuration.md +149 -0
  136. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Couch.md +49 -0
  137. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/DataStorage.md +226 -0
  138. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Encoding.md +67 -0
  139. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/ExampleUseCases.md +116 -0
  140. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/GeneralUsage.md +105 -0
  141. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Generators.md +68 -0
  142. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Heroku.md +57 -0
  143. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/ImageMagick.md +136 -0
  144. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Index.md +33 -0
  145. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/MimeTypes.md +40 -0
  146. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Models.md +441 -0
  147. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Mongo.md +42 -0
  148. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Processing.md +77 -0
  149. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Rack.md +52 -0
  150. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Rails2.md +57 -0
  151. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Rails3.md +56 -0
  152. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/ServingRemotely.md +104 -0
  153. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/Sinatra.md +25 -0
  154. data/vendor/bundle/gems/dragonfly-0.9.12/extra_docs/URLs.md +203 -0
  155. data/vendor/bundle/gems/dragonfly-0.9.12/features/images.feature +47 -0
  156. data/vendor/bundle/gems/dragonfly-0.9.12/features/no_processing.feature +14 -0
  157. data/vendor/bundle/gems/dragonfly-0.9.12/features/rails.feature +8 -0
  158. data/vendor/bundle/gems/dragonfly-0.9.12/features/steps/common_steps.rb +8 -0
  159. data/vendor/bundle/gems/dragonfly-0.9.12/features/steps/dragonfly_steps.rb +66 -0
  160. data/vendor/bundle/gems/dragonfly-0.9.12/features/steps/rails_steps.rb +40 -0
  161. data/vendor/bundle/gems/dragonfly-0.9.12/features/support/env.rb +13 -0
  162. data/vendor/bundle/gems/dragonfly-0.9.12/features/support/setup.rb +41 -0
  163. data/vendor/bundle/gems/dragonfly-0.9.12/fixtures/rails/files/app/models/album.rb +5 -0
  164. data/vendor/bundle/gems/dragonfly-0.9.12/fixtures/rails/files/app/views/albums/new.html.erb +7 -0
  165. data/vendor/bundle/gems/dragonfly-0.9.12/fixtures/rails/files/app/views/albums/show.html.erb +6 -0
  166. data/vendor/bundle/gems/dragonfly-0.9.12/fixtures/rails/files/config/initializers/dragonfly.rb +4 -0
  167. data/vendor/bundle/gems/dragonfly-0.9.12/fixtures/rails/files/features/manage_album_images.feature +38 -0
  168. data/vendor/bundle/gems/dragonfly-0.9.12/fixtures/rails/files/features/step_definitions/helper_steps.rb +7 -0
  169. data/vendor/bundle/gems/dragonfly-0.9.12/fixtures/rails/files/features/step_definitions/image_steps.rb +25 -0
  170. data/vendor/bundle/gems/dragonfly-0.9.12/fixtures/rails/files/features/support/paths.rb +17 -0
  171. data/vendor/bundle/gems/dragonfly-0.9.12/fixtures/rails/files/features/text_images.feature +7 -0
  172. data/vendor/bundle/gems/dragonfly-0.9.12/fixtures/rails/template.rb +20 -0
  173. data/vendor/bundle/gems/dragonfly-0.9.12/irbrc.rb +19 -0
  174. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/active_model_extensions/attachment.rb +279 -0
  175. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/active_model_extensions/attachment_class_methods.rb +144 -0
  176. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/active_model_extensions/class_methods.rb +98 -0
  177. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/active_model_extensions/instance_methods.rb +28 -0
  178. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/active_model_extensions/validations.rb +68 -0
  179. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/active_model_extensions.rb +13 -0
  180. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/analyser.rb +58 -0
  181. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/analysis/file_command_analyser.rb +33 -0
  182. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/analysis/image_magick_analyser.rb +6 -0
  183. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/app.rb +203 -0
  184. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/config/heroku.rb +26 -0
  185. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/config/image_magick.rb +6 -0
  186. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/config/rails.rb +20 -0
  187. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/configurable.rb +206 -0
  188. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/cookie_monster.rb +15 -0
  189. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/core_ext/array.rb +7 -0
  190. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/core_ext/hash.rb +7 -0
  191. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/core_ext/object.rb +12 -0
  192. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/data_storage/couch_data_store.rb +83 -0
  193. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/data_storage/file_data_store.rb +144 -0
  194. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/data_storage/mongo_data_store.rb +96 -0
  195. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/data_storage/s3data_store.rb +168 -0
  196. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/data_storage.rb +11 -0
  197. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/encoder.rb +13 -0
  198. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/encoding/image_magick_encoder.rb +6 -0
  199. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/function_manager.rb +67 -0
  200. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/generation/image_magick_generator.rb +6 -0
  201. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/generator.rb +9 -0
  202. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/has_filename.rb +24 -0
  203. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/hash_with_css_style_keys.rb +21 -0
  204. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/image_magick/analyser.rb +53 -0
  205. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/image_magick/config.rb +44 -0
  206. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/image_magick/encoder.rb +57 -0
  207. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/image_magick/generator.rb +145 -0
  208. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/image_magick/processor.rb +108 -0
  209. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/image_magick/utils.rb +46 -0
  210. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/image_magick_utils.rb +4 -0
  211. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/job.rb +427 -0
  212. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/job_builder.rb +39 -0
  213. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/job_definitions.rb +30 -0
  214. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/job_endpoint.rb +19 -0
  215. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/loggable.rb +28 -0
  216. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/middleware.rb +20 -0
  217. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/processing/image_magick_processor.rb +6 -0
  218. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/processor.rb +9 -0
  219. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/rails/images.rb +32 -0
  220. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/railtie.rb +10 -0
  221. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/response.rb +107 -0
  222. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/routed_endpoint.rb +44 -0
  223. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/serializer.rb +32 -0
  224. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/server.rb +120 -0
  225. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/shell.rb +44 -0
  226. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/simple_cache.rb +23 -0
  227. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/temp_object.rb +216 -0
  228. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/url_attributes.rb +30 -0
  229. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly/url_mapper.rb +78 -0
  230. data/vendor/bundle/gems/dragonfly-0.9.12/lib/dragonfly.rb +59 -0
  231. data/vendor/bundle/gems/dragonfly-0.9.12/samples/DSC02119.JPG +0 -0
  232. data/vendor/bundle/gems/dragonfly-0.9.12/samples/a.jp2 +0 -0
  233. data/vendor/bundle/gems/dragonfly-0.9.12/samples/beach.jpg +0 -0
  234. data/vendor/bundle/gems/dragonfly-0.9.12/samples/beach.png +0 -0
  235. data/vendor/bundle/gems/dragonfly-0.9.12/samples/egg.png +0 -0
  236. data/vendor/bundle/gems/dragonfly-0.9.12/samples/round.gif +0 -0
  237. data/vendor/bundle/gems/dragonfly-0.9.12/samples/sample.docx +0 -0
  238. data/vendor/bundle/gems/dragonfly-0.9.12/samples/taj.jpg +0 -0
  239. data/vendor/bundle/gems/dragonfly-0.9.12/samples/white pixel.png +0 -0
  240. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/model_spec.rb +1478 -0
  241. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/active_model_extensions/spec_helper.rb +95 -0
  242. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/analyser_spec.rb +123 -0
  243. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/analysis/file_command_analyser_spec.rb +49 -0
  244. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/app_spec.rb +173 -0
  245. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/configurable_spec.rb +479 -0
  246. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/cookie_monster_spec.rb +29 -0
  247. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/core_ext/array_spec.rb +19 -0
  248. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/core_ext/hash_spec.rb +19 -0
  249. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/data_storage/couch_data_store_spec.rb +84 -0
  250. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/data_storage/file_data_store_spec.rb +308 -0
  251. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/data_storage/mongo_data_store_spec.rb +81 -0
  252. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/data_storage/s3_data_store_spec.rb +277 -0
  253. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/data_storage/shared_data_store_examples.rb +77 -0
  254. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/function_manager_spec.rb +154 -0
  255. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/has_filename_spec.rb +88 -0
  256. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/hash_with_css_style_keys_spec.rb +24 -0
  257. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/image_magick/analyser_spec.rb +78 -0
  258. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/image_magick/encoder_spec.rb +41 -0
  259. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/image_magick/generator_spec.rb +167 -0
  260. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/image_magick/processor_spec.rb +293 -0
  261. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/job_builder_spec.rb +37 -0
  262. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/job_definitions_spec.rb +57 -0
  263. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/job_endpoint_spec.rb +235 -0
  264. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/job_spec.rb +1059 -0
  265. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/loggable_spec.rb +80 -0
  266. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/middleware_spec.rb +47 -0
  267. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/routed_endpoint_spec.rb +52 -0
  268. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/serializer_spec.rb +75 -0
  269. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/server_spec.rb +286 -0
  270. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/shell_spec.rb +34 -0
  271. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/simple_cache_spec.rb +27 -0
  272. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/temp_object_spec.rb +442 -0
  273. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/url_attributes.rb +47 -0
  274. data/vendor/bundle/gems/dragonfly-0.9.12/spec/dragonfly/url_mapper_spec.rb +138 -0
  275. data/vendor/bundle/gems/dragonfly-0.9.12/spec/functional/deprecations_spec.rb +51 -0
  276. data/vendor/bundle/gems/dragonfly-0.9.12/spec/functional/image_magick_app_spec.rb +27 -0
  277. data/vendor/bundle/gems/dragonfly-0.9.12/spec/functional/model_urls_spec.rb +120 -0
  278. data/vendor/bundle/gems/dragonfly-0.9.12/spec/functional/remote_on_the_fly_spec.rb +51 -0
  279. data/vendor/bundle/gems/dragonfly-0.9.12/spec/functional/shell_commands_spec.rb +23 -0
  280. data/vendor/bundle/gems/dragonfly-0.9.12/spec/functional/to_response_spec.rb +31 -0
  281. data/vendor/bundle/gems/dragonfly-0.9.12/spec/spec_helper.rb +55 -0
  282. data/vendor/bundle/gems/dragonfly-0.9.12/spec/support/argument_matchers.rb +19 -0
  283. data/vendor/bundle/gems/dragonfly-0.9.12/spec/support/image_matchers.rb +58 -0
  284. data/vendor/bundle/gems/dragonfly-0.9.12/spec/support/simple_matchers.rb +53 -0
  285. data/vendor/bundle/gems/dragonfly-0.9.12/spec/test_imagemagick.ru +49 -0
  286. data/vendor/bundle/gems/dragonfly-0.9.12/yard/handlers/configurable_attr_handler.rb +38 -0
  287. data/vendor/bundle/gems/dragonfly-0.9.12/yard/setup.rb +15 -0
  288. data/vendor/bundle/gems/dragonfly-0.9.12/yard/templates/default/fulldoc/html/css/common.css +109 -0
  289. data/vendor/bundle/gems/dragonfly-0.9.12/yard/templates/default/layout/html/layout.erb +93 -0
  290. data/vendor/bundle/gems/dragonfly-0.9.12/yard/templates/default/module/html/configuration_summary.erb +31 -0
  291. data/vendor/bundle/gems/dragonfly-0.9.12/yard/templates/default/module/setup.rb +17 -0
  292. data/vendor/bundle/gems/execjs-1.4.0/LICENSE +21 -0
  293. data/vendor/bundle/gems/execjs-1.4.0/README.md +42 -0
  294. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/disabled_runtime.rb +29 -0
  295. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/encoding.rb +33 -0
  296. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/external_runtime.rb +205 -0
  297. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/johnson_runtime.rb +106 -0
  298. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/json.rb +23 -0
  299. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/module.rb +38 -0
  300. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/mustang_runtime.rb +76 -0
  301. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/ruby_racer_runtime.rb +105 -0
  302. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/ruby_rhino_runtime.rb +89 -0
  303. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/runtime.rb +55 -0
  304. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/runtimes.rb +94 -0
  305. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/support/jsc_runner.js +19 -0
  306. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/support/jscript_runner.js +22 -0
  307. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/support/json2.js +481 -0
  308. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/support/node_runner.js +20 -0
  309. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/support/spidermonkey_runner.js +19 -0
  310. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs/version.rb +3 -0
  311. data/vendor/bundle/gems/execjs-1.4.0/lib/execjs.rb +6 -0
  312. data/vendor/bundle/gems/haml-3.1.6/.yardopts +11 -0
  313. data/vendor/bundle/gems/haml-3.1.6/CONTRIBUTING +3 -0
  314. data/vendor/bundle/gems/haml-3.1.6/MIT-LICENSE +20 -0
  315. data/vendor/bundle/gems/haml-3.1.6/README.md +133 -0
  316. data/vendor/bundle/gems/haml-3.1.6/REVISION +1 -0
  317. data/vendor/bundle/gems/haml-3.1.6/Rakefile +419 -0
  318. data/vendor/bundle/gems/haml-3.1.6/VERSION +1 -0
  319. data/vendor/bundle/gems/haml-3.1.6/VERSION_NAME +1 -0
  320. data/vendor/bundle/gems/haml-3.1.6/bin/haml +9 -0
  321. data/vendor/bundle/gems/haml-3.1.6/bin/html2haml +7 -0
  322. data/vendor/bundle/gems/haml-3.1.6/extra/update_watch.rb +13 -0
  323. data/vendor/bundle/gems/haml-3.1.6/init.rb +18 -0
  324. data/vendor/bundle/gems/haml-3.1.6/lib/haml/buffer.rb +301 -0
  325. data/vendor/bundle/gems/haml-3.1.6/lib/haml/compiler.rb +452 -0
  326. data/vendor/bundle/gems/haml-3.1.6/lib/haml/engine.rb +312 -0
  327. data/vendor/bundle/gems/haml-3.1.6/lib/haml/error.rb +22 -0
  328. data/vendor/bundle/gems/haml-3.1.6/lib/haml/exec.rb +362 -0
  329. data/vendor/bundle/gems/haml-3.1.6/lib/haml/filters.rb +385 -0
  330. data/vendor/bundle/gems/haml-3.1.6/lib/haml/helpers/action_view_extensions.rb +57 -0
  331. data/vendor/bundle/gems/haml-3.1.6/lib/haml/helpers/action_view_mods.rb +260 -0
  332. data/vendor/bundle/gems/haml-3.1.6/lib/haml/helpers/rails_323_textarea_fix.rb +41 -0
  333. data/vendor/bundle/gems/haml-3.1.6/lib/haml/helpers/xss_mods.rb +165 -0
  334. data/vendor/bundle/gems/haml-3.1.6/lib/haml/helpers.rb +608 -0
  335. data/vendor/bundle/gems/haml-3.1.6/lib/haml/html/erb.rb +141 -0
  336. data/vendor/bundle/gems/haml-3.1.6/lib/haml/html.rb +412 -0
  337. data/vendor/bundle/gems/haml-3.1.6/lib/haml/parser.rb +711 -0
  338. data/vendor/bundle/gems/haml-3.1.6/lib/haml/railtie.rb +19 -0
  339. data/vendor/bundle/gems/haml-3.1.6/lib/haml/root.rb +7 -0
  340. data/vendor/bundle/gems/haml-3.1.6/lib/haml/shared.rb +78 -0
  341. data/vendor/bundle/gems/haml-3.1.6/lib/haml/template/options.rb +16 -0
  342. data/vendor/bundle/gems/haml-3.1.6/lib/haml/template/patch.rb +58 -0
  343. data/vendor/bundle/gems/haml-3.1.6/lib/haml/template/plugin.rb +123 -0
  344. data/vendor/bundle/gems/haml-3.1.6/lib/haml/template.rb +99 -0
  345. data/vendor/bundle/gems/haml-3.1.6/lib/haml/util.rb +842 -0
  346. data/vendor/bundle/gems/haml-3.1.6/lib/haml/version.rb +109 -0
  347. data/vendor/bundle/gems/haml-3.1.6/lib/haml.rb +47 -0
  348. data/vendor/bundle/gems/haml-3.1.6/lib/sass/plugin.rb +10 -0
  349. data/vendor/bundle/gems/haml-3.1.6/lib/sass/rails2_shim.rb +9 -0
  350. data/vendor/bundle/gems/haml-3.1.6/lib/sass/rails3_shim.rb +16 -0
  351. data/vendor/bundle/gems/haml-3.1.6/lib/sass.rb +8 -0
  352. data/vendor/bundle/gems/haml-3.1.6/rails/init.rb +1 -0
  353. data/vendor/bundle/gems/haml-3.1.6/test/benchmark.rb +91 -0
  354. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-2.0.x +8 -0
  355. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-2.0.x.lock +38 -0
  356. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-2.1.x +8 -0
  357. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-2.1.x.lock +38 -0
  358. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-2.2.x +8 -0
  359. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-2.2.x.lock +38 -0
  360. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-2.3.x +8 -0
  361. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-2.3.x.lock +40 -0
  362. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-3.0.x +8 -0
  363. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-3.0.x.lock +85 -0
  364. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-3.1.x +8 -0
  365. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-3.1.x.lock +97 -0
  366. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-3.2.x +8 -0
  367. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-3.2.x.lock +95 -0
  368. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-xss-2.3.x +9 -0
  369. data/vendor/bundle/gems/haml-3.1.6/test/gemfiles/Gemfile.rails-xss-2.3.x.lock +42 -0
  370. data/vendor/bundle/gems/haml-3.1.6/test/haml/engine_test.rb +1944 -0
  371. data/vendor/bundle/gems/haml-3.1.6/test/haml/erb/_av_partial_1.erb +12 -0
  372. data/vendor/bundle/gems/haml-3.1.6/test/haml/erb/_av_partial_2.erb +8 -0
  373. data/vendor/bundle/gems/haml-3.1.6/test/haml/erb/action_view.erb +62 -0
  374. data/vendor/bundle/gems/haml-3.1.6/test/haml/erb/standard.erb +55 -0
  375. data/vendor/bundle/gems/haml-3.1.6/test/haml/helper_test.rb +467 -0
  376. data/vendor/bundle/gems/haml-3.1.6/test/haml/html2haml/erb_tests.rb +440 -0
  377. data/vendor/bundle/gems/haml-3.1.6/test/haml/html2haml_test.rb +336 -0
  378. data/vendor/bundle/gems/haml-3.1.6/test/haml/markaby/standard.mab +52 -0
  379. data/vendor/bundle/gems/haml-3.1.6/test/haml/mocks/article.rb +6 -0
  380. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/content_for_layout.xhtml +12 -0
  381. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/eval_suppressed.xhtml +9 -0
  382. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/filters.xhtml +62 -0
  383. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/helpers.xhtml +70 -0
  384. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/helpful.xhtml +10 -0
  385. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/just_stuff.xhtml +70 -0
  386. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/list.xhtml +12 -0
  387. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/nuke_inner_whitespace.xhtml +40 -0
  388. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/nuke_outer_whitespace.xhtml +148 -0
  389. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/original_engine.xhtml +20 -0
  390. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/partial_layout.xhtml +5 -0
  391. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/partials.xhtml +21 -0
  392. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/render_layout.xhtml +3 -0
  393. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/silent_script.xhtml +74 -0
  394. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/standard.xhtml +162 -0
  395. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/tag_parsing.xhtml +23 -0
  396. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/very_basic.xhtml +5 -0
  397. data/vendor/bundle/gems/haml-3.1.6/test/haml/results/whitespace_handling.xhtml +85 -0
  398. data/vendor/bundle/gems/haml-3.1.6/test/haml/spec/README.md +97 -0
  399. data/vendor/bundle/gems/haml-3.1.6/test/haml/spec/lua_haml_spec.lua +30 -0
  400. data/vendor/bundle/gems/haml-3.1.6/test/haml/spec/ruby_haml_test.rb +19 -0
  401. data/vendor/bundle/gems/haml-3.1.6/test/haml/spec/tests.json +534 -0
  402. data/vendor/bundle/gems/haml-3.1.6/test/haml/spec_test.rb +44 -0
  403. data/vendor/bundle/gems/haml-3.1.6/test/haml/template_test.rb +443 -0
  404. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/_av_partial_1.haml +9 -0
  405. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/_av_partial_1_ugly.haml +9 -0
  406. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/_av_partial_2.haml +5 -0
  407. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/_av_partial_2_ugly.haml +5 -0
  408. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/_layout.erb +3 -0
  409. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/_layout_for_partial.haml +3 -0
  410. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/_partial.haml +8 -0
  411. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/_text_area.haml +3 -0
  412. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/action_view.haml +47 -0
  413. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/action_view_ugly.haml +47 -0
  414. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/breakage.haml +8 -0
  415. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/content_for_layout.haml +8 -0
  416. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/eval_suppressed.haml +11 -0
  417. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/filters.haml +66 -0
  418. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/helpers.haml +55 -0
  419. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/helpful.haml +11 -0
  420. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/just_stuff.haml +85 -0
  421. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/list.haml +12 -0
  422. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/nuke_inner_whitespace.haml +32 -0
  423. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/nuke_outer_whitespace.haml +144 -0
  424. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/original_engine.haml +17 -0
  425. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/partial_layout.haml +10 -0
  426. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/partialize.haml +1 -0
  427. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/partials.haml +12 -0
  428. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/render_layout.haml +2 -0
  429. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/silent_script.haml +40 -0
  430. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/standard.haml +43 -0
  431. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/standard_ugly.haml +43 -0
  432. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/tag_parsing.haml +21 -0
  433. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/very_basic.haml +4 -0
  434. data/vendor/bundle/gems/haml-3.1.6/test/haml/templates/whitespace_handling.haml +87 -0
  435. data/vendor/bundle/gems/haml-3.1.6/test/haml/util_test.rb +300 -0
  436. data/vendor/bundle/gems/haml-3.1.6/test/linked_rails.rb +42 -0
  437. data/vendor/bundle/gems/haml-3.1.6/test/test_helper.rb +75 -0
  438. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/CONTRIBUTING +3 -0
  439. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/MIT-LICENSE +20 -0
  440. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/README.md +201 -0
  441. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/Rakefile +339 -0
  442. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/TODO +39 -0
  443. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/VERSION +1 -0
  444. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/VERSION_NAME +1 -0
  445. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/bin/sass +8 -0
  446. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/bin/sass-convert +7 -0
  447. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/bin/scss +8 -0
  448. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/doc-src/FAQ.md +35 -0
  449. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/doc-src/INDENTED_SYNTAX.md +210 -0
  450. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/doc-src/SASS_CHANGELOG.md +2327 -0
  451. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/doc-src/SASS_REFERENCE.md +1965 -0
  452. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/doc-src/SCSS_FOR_SASS_USERS.md +155 -0
  453. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/ext/extconf.rb +10 -0
  454. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/extra/update_watch.rb +13 -0
  455. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/init.rb +18 -0
  456. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/cache_stores/base.rb +86 -0
  457. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/cache_stores/chain.rb +33 -0
  458. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/cache_stores/filesystem.rb +60 -0
  459. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/cache_stores/memory.rb +47 -0
  460. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/cache_stores/null.rb +25 -0
  461. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/cache_stores.rb +15 -0
  462. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/callbacks.rb +66 -0
  463. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/css.rb +295 -0
  464. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/engine.rb +878 -0
  465. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/environment.rb +166 -0
  466. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/error.rb +201 -0
  467. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/exec.rb +672 -0
  468. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/importers/base.rb +139 -0
  469. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/importers/filesystem.rb +149 -0
  470. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/importers.rb +22 -0
  471. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/less.rb +382 -0
  472. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/logger/base.rb +32 -0
  473. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/logger/log_level.rb +49 -0
  474. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/logger.rb +15 -0
  475. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/plugin/compiler.rb +383 -0
  476. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/plugin/configuration.rb +123 -0
  477. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/plugin/generic.rb +15 -0
  478. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/plugin/merb.rb +48 -0
  479. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/plugin/rack.rb +60 -0
  480. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/plugin/rails.rb +47 -0
  481. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/plugin/staleness_checker.rb +173 -0
  482. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/plugin.rb +132 -0
  483. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/railtie.rb +9 -0
  484. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/repl.rb +58 -0
  485. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/root.rb +7 -0
  486. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/bool.rb +18 -0
  487. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/color.rb +480 -0
  488. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/css_lexer.rb +29 -0
  489. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/css_parser.rb +31 -0
  490. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/funcall.rb +175 -0
  491. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/functions.rb +1386 -0
  492. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/interpolation.rb +79 -0
  493. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/lexer.rb +339 -0
  494. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/list.rb +83 -0
  495. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/literal.rb +250 -0
  496. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/node.rb +99 -0
  497. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/number.rb +452 -0
  498. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/operation.rb +99 -0
  499. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/parser.rb +474 -0
  500. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/string.rb +51 -0
  501. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/string_interpolation.rb +103 -0
  502. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/unary_operation.rb +64 -0
  503. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script/variable.rb +59 -0
  504. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/script.rb +40 -0
  505. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/scss/css_parser.rb +46 -0
  506. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/scss/parser.rb +960 -0
  507. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/scss/rx.rb +128 -0
  508. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/scss/sass_parser.rb +11 -0
  509. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/scss/script_lexer.rb +15 -0
  510. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/scss/script_parser.rb +25 -0
  511. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/scss/static_parser.rb +40 -0
  512. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/scss.rb +17 -0
  513. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/selector/abstract_sequence.rb +62 -0
  514. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/selector/comma_sequence.rb +81 -0
  515. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/selector/sequence.rb +233 -0
  516. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/selector/simple.rb +113 -0
  517. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/selector/simple_sequence.rb +134 -0
  518. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/selector.rb +361 -0
  519. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/shared.rb +78 -0
  520. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/charset_node.rb +22 -0
  521. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/comment_node.rb +90 -0
  522. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/debug_node.rb +18 -0
  523. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/directive_node.rb +23 -0
  524. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/each_node.rb +24 -0
  525. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/extend_node.rb +29 -0
  526. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/for_node.rb +36 -0
  527. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/function_node.rb +27 -0
  528. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/if_node.rb +52 -0
  529. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/import_node.rb +68 -0
  530. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/media_node.rb +32 -0
  531. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/mixin_def_node.rb +27 -0
  532. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/mixin_node.rb +32 -0
  533. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/node.rb +201 -0
  534. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/prop_node.rb +148 -0
  535. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/return_node.rb +18 -0
  536. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/root_node.rb +28 -0
  537. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/rule_node.rb +136 -0
  538. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/variable_node.rb +30 -0
  539. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/visitors/base.rb +75 -0
  540. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/visitors/check_nesting.rb +133 -0
  541. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/visitors/convert.rb +260 -0
  542. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/visitors/cssize.rb +175 -0
  543. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/visitors/deep_copy.rb +87 -0
  544. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/visitors/perform.rb +332 -0
  545. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/visitors/set_options.rb +97 -0
  546. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/visitors/to_css.rb +210 -0
  547. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/warn_node.rb +18 -0
  548. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/tree/while_node.rb +18 -0
  549. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/util/subset_map.rb +101 -0
  550. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/util.rb +721 -0
  551. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass/version.rb +112 -0
  552. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/lib/sass.rb +73 -0
  553. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/rails/init.rb +1 -0
  554. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/sass.gemspec +33 -0
  555. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/Gemfile +4 -0
  556. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/cache_test.rb +89 -0
  557. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/callbacks_test.rb +61 -0
  558. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/conversion_test.rb +1199 -0
  559. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/css2sass_test.rb +373 -0
  560. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/data/hsl-rgb.txt +319 -0
  561. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/engine_test.rb +2567 -0
  562. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/extend_test.rb +1348 -0
  563. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.css +1 -0
  564. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.scss +1 -0
  565. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/functions_test.rb +1038 -0
  566. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/importer_test.rb +192 -0
  567. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/less_conversion_test.rb +653 -0
  568. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/logger_test.rb +58 -0
  569. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/mock_importer.rb +49 -0
  570. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/more_results/more1.css +9 -0
  571. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/more_results/more1_with_line_comments.css +26 -0
  572. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/more_results/more_import.css +29 -0
  573. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/more_templates/_more_partial.sass +2 -0
  574. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/more_templates/more1.sass +23 -0
  575. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/more_templates/more_import.sass +11 -0
  576. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/plugin_test.rb +472 -0
  577. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/alt.css +4 -0
  578. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/basic.css +9 -0
  579. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/compact.css +5 -0
  580. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/complex.css +86 -0
  581. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/compressed.css +1 -0
  582. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/expanded.css +19 -0
  583. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/if.css +3 -0
  584. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/import.css +31 -0
  585. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/import_charset.css +4 -0
  586. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/import_charset_1_8.css +4 -0
  587. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/import_charset_ibm866.css +4 -0
  588. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/line_numbers.css +49 -0
  589. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/mixins.css +95 -0
  590. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/multiline.css +24 -0
  591. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/nested.css +22 -0
  592. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/options.css +1 -0
  593. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/parent_ref.css +13 -0
  594. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/script.css +16 -0
  595. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/scss_import.css +31 -0
  596. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/scss_importee.css +2 -0
  597. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/subdir/nested_subdir/nested_subdir.css +1 -0
  598. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/subdir/subdir.css +3 -0
  599. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/units.css +11 -0
  600. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/warn.css +0 -0
  601. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/results/warn_imported.css +0 -0
  602. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/script_conversion_test.rb +285 -0
  603. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/script_test.rb +514 -0
  604. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/scss/css_test.rb +922 -0
  605. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/scss/rx_test.rb +156 -0
  606. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/scss/scss_test.rb +1273 -0
  607. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/scss/test_helper.rb +37 -0
  608. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/_imported_charset_ibm866.sass +4 -0
  609. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/_imported_charset_utf8.sass +4 -0
  610. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/_partial.sass +2 -0
  611. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/alt.sass +16 -0
  612. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/basic.sass +23 -0
  613. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/bork1.sass +2 -0
  614. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/bork2.sass +2 -0
  615. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/bork3.sass +2 -0
  616. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/bork4.sass +2 -0
  617. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/bork5.sass +3 -0
  618. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/compact.sass +17 -0
  619. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/complex.sass +305 -0
  620. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/compressed.sass +15 -0
  621. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/expanded.sass +17 -0
  622. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/if.sass +11 -0
  623. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/import.sass +12 -0
  624. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/import_charset.sass +7 -0
  625. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/import_charset_1_8.sass +4 -0
  626. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/import_charset_ibm866.sass +9 -0
  627. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/importee.less +2 -0
  628. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/importee.sass +19 -0
  629. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/line_numbers.sass +13 -0
  630. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/mixin_bork.sass +5 -0
  631. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/mixins.sass +76 -0
  632. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/multiline.sass +20 -0
  633. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/nested.sass +25 -0
  634. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/nested_bork1.sass +2 -0
  635. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/nested_bork2.sass +2 -0
  636. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/nested_bork3.sass +2 -0
  637. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/nested_bork4.sass +2 -0
  638. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/nested_bork5.sass +2 -0
  639. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/nested_import.sass +2 -0
  640. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/nested_mixin_bork.sass +6 -0
  641. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/options.sass +2 -0
  642. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/parent_ref.sass +25 -0
  643. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/script.sass +101 -0
  644. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/scss_import.scss +11 -0
  645. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/scss_importee.scss +1 -0
  646. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
  647. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +3 -0
  648. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/subdir/subdir.sass +6 -0
  649. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/units.sass +11 -0
  650. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/warn.sass +3 -0
  651. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/templates/warn_imported.sass +4 -0
  652. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/test_helper.rb +8 -0
  653. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/util/subset_map_test.rb +91 -0
  654. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/sass/util_test.rb +266 -0
  655. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/test/test_helper.rb +69 -0
  656. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/Gemfile +3 -0
  657. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/LICENSE +20 -0
  658. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/README.markdown +83 -0
  659. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/Rakefile +11 -0
  660. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/example.rb +12 -0
  661. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/fssm.gemspec +24 -0
  662. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/backends/fsevents.rb +36 -0
  663. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/backends/inotify.rb +26 -0
  664. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/backends/polling.rb +25 -0
  665. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/backends/rbfsevent.rb +42 -0
  666. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +131 -0
  667. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/monitor.rb +36 -0
  668. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/path.rb +94 -0
  669. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/pathname.rb +36 -0
  670. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/state/directory.rb +75 -0
  671. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/state/file.rb +24 -0
  672. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/support.rb +92 -0
  673. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/tree.rb +176 -0
  674. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm/version.rb +3 -0
  675. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/lib/fssm.rb +37 -0
  676. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/profile/prof-cache.rb +40 -0
  677. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/profile/prof-fssm-pathname.html +1231 -0
  678. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/profile/prof-pathname-rubinius.rb +35 -0
  679. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/profile/prof-pathname.rb +68 -0
  680. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/profile/prof-plain-pathname.html +988 -0
  681. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/profile/prof.html +2379 -0
  682. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/spec/count_down_latch.rb +151 -0
  683. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/spec/monitor_spec.rb +202 -0
  684. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/spec/path_spec.rb +96 -0
  685. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/spec/root/duck/quack.txt +0 -0
  686. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/spec/root/file.css +0 -0
  687. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/spec/root/file.rb +0 -0
  688. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/spec/root/file.yml +0 -0
  689. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/spec/root/moo/cow.txt +0 -0
  690. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/vendor/fssm/spec/spec_helper.rb +14 -0
  691. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/yard/callbacks.rb +29 -0
  692. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/yard/default/fulldoc/html/css/common.sass +26 -0
  693. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/yard/default/layout/html/footer.erb +12 -0
  694. data/vendor/bundle/gems/haml-3.1.6/vendor/sass/yard/inherited_hash.rb +41 -0
  695. data/vendor/bundle/gems/json-1.7.3/.gitignore +12 -0
  696. data/vendor/bundle/gems/json-1.7.3/.travis.yml +16 -0
  697. data/vendor/bundle/gems/json-1.7.3/CHANGES +250 -0
  698. data/vendor/bundle/gems/json-1.7.3/COPYING +58 -0
  699. data/vendor/bundle/gems/json-1.7.3/COPYING-json-jruby +57 -0
  700. data/vendor/bundle/gems/json-1.7.3/GPL +340 -0
  701. data/vendor/bundle/gems/json-1.7.3/Gemfile +15 -0
  702. data/vendor/bundle/gems/json-1.7.3/README-json-jruby.markdown +33 -0
  703. data/vendor/bundle/gems/json-1.7.3/README.rdoc +358 -0
  704. data/vendor/bundle/gems/json-1.7.3/Rakefile +401 -0
  705. data/vendor/bundle/gems/json-1.7.3/TODO +1 -0
  706. data/vendor/bundle/gems/json-1.7.3/VERSION +1 -0
  707. data/vendor/bundle/gems/json-1.7.3/data/example.json +1 -0
  708. data/vendor/bundle/gems/json-1.7.3/data/index.html +38 -0
  709. data/vendor/bundle/gems/json-1.7.3/data/prototype.js +4184 -0
  710. data/vendor/bundle/gems/json-1.7.3/diagrams/.keep +0 -0
  711. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/fbuffer/fbuffer.h +164 -0
  712. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/generator/Makefile +214 -0
  713. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/generator/depend +1 -0
  714. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/generator/extconf.rb +14 -0
  715. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/generator/generator.bundle +0 -0
  716. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/generator/generator.c +1393 -0
  717. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/generator/generator.h +162 -0
  718. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/generator/generator.o +0 -0
  719. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/parser/Makefile +214 -0
  720. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/parser/depend +1 -0
  721. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/parser/extconf.rb +13 -0
  722. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/parser/parser.bundle +0 -0
  723. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/parser/parser.c +2204 -0
  724. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/parser/parser.h +77 -0
  725. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/parser/parser.o +0 -0
  726. data/vendor/bundle/gems/json-1.7.3/ext/json/ext/parser/parser.rl +927 -0
  727. data/vendor/bundle/gems/json-1.7.3/install.rb +23 -0
  728. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/ByteListTranscoder.java +167 -0
  729. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/Generator.java +444 -0
  730. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/GeneratorMethods.java +232 -0
  731. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/GeneratorService.java +43 -0
  732. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/GeneratorState.java +526 -0
  733. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/OptionsReader.java +113 -0
  734. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/Parser.java +2644 -0
  735. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/Parser.rl +968 -0
  736. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/ParserService.java +35 -0
  737. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/RuntimeInfo.java +121 -0
  738. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/StringDecoder.java +167 -0
  739. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/StringEncoder.java +106 -0
  740. data/vendor/bundle/gems/json-1.7.3/java/src/json/ext/Utils.java +89 -0
  741. data/vendor/bundle/gems/json-1.7.3/json-java.gemspec +22 -0
  742. data/vendor/bundle/gems/json-1.7.3/json.gemspec +37 -0
  743. data/vendor/bundle/gems/json-1.7.3/json_pure.gemspec +39 -0
  744. data/vendor/bundle/gems/json-1.7.3/lib/json/add/bigdecimal.rb +21 -0
  745. data/vendor/bundle/gems/json-1.7.3/lib/json/add/complex.rb +22 -0
  746. data/vendor/bundle/gems/json-1.7.3/lib/json/add/core.rb +11 -0
  747. data/vendor/bundle/gems/json-1.7.3/lib/json/add/date.rb +34 -0
  748. data/vendor/bundle/gems/json-1.7.3/lib/json/add/date_time.rb +50 -0
  749. data/vendor/bundle/gems/json-1.7.3/lib/json/add/exception.rb +31 -0
  750. data/vendor/bundle/gems/json-1.7.3/lib/json/add/ostruct.rb +31 -0
  751. data/vendor/bundle/gems/json-1.7.3/lib/json/add/range.rb +29 -0
  752. data/vendor/bundle/gems/json-1.7.3/lib/json/add/rational.rb +22 -0
  753. data/vendor/bundle/gems/json-1.7.3/lib/json/add/regexp.rb +30 -0
  754. data/vendor/bundle/gems/json-1.7.3/lib/json/add/struct.rb +30 -0
  755. data/vendor/bundle/gems/json-1.7.3/lib/json/add/symbol.rb +25 -0
  756. data/vendor/bundle/gems/json-1.7.3/lib/json/add/time.rb +38 -0
  757. data/vendor/bundle/gems/json-1.7.3/lib/json/common.rb +480 -0
  758. data/vendor/bundle/gems/json-1.7.3/lib/json/ext/.keep +0 -0
  759. data/vendor/bundle/gems/json-1.7.3/lib/json/ext/generator.bundle +0 -0
  760. data/vendor/bundle/gems/json-1.7.3/lib/json/ext/parser.bundle +0 -0
  761. data/vendor/bundle/gems/json-1.7.3/lib/json/ext.rb +21 -0
  762. data/vendor/bundle/gems/json-1.7.3/lib/json/generic_object.rb +39 -0
  763. data/vendor/bundle/gems/json-1.7.3/lib/json/pure/generator.rb +472 -0
  764. data/vendor/bundle/gems/json-1.7.3/lib/json/pure/parser.rb +359 -0
  765. data/vendor/bundle/gems/json-1.7.3/lib/json/pure.rb +21 -0
  766. data/vendor/bundle/gems/json-1.7.3/lib/json/version.rb +8 -0
  767. data/vendor/bundle/gems/json-1.7.3/lib/json.rb +62 -0
  768. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail1.json +1 -0
  769. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail10.json +1 -0
  770. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail11.json +1 -0
  771. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail12.json +1 -0
  772. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail13.json +1 -0
  773. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail14.json +1 -0
  774. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail18.json +1 -0
  775. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail19.json +1 -0
  776. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail2.json +1 -0
  777. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail20.json +1 -0
  778. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail21.json +1 -0
  779. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail22.json +1 -0
  780. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail23.json +1 -0
  781. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail24.json +1 -0
  782. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail25.json +1 -0
  783. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail27.json +2 -0
  784. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail28.json +2 -0
  785. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail3.json +1 -0
  786. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail4.json +1 -0
  787. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail5.json +1 -0
  788. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail6.json +1 -0
  789. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail7.json +1 -0
  790. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail8.json +1 -0
  791. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/fail9.json +1 -0
  792. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/pass1.json +56 -0
  793. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/pass15.json +1 -0
  794. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/pass16.json +1 -0
  795. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/pass17.json +1 -0
  796. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/pass2.json +1 -0
  797. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/pass26.json +1 -0
  798. data/vendor/bundle/gems/json-1.7.3/tests/fixtures/pass3.json +6 -0
  799. data/vendor/bundle/gems/json-1.7.3/tests/setup_variant.rb +11 -0
  800. data/vendor/bundle/gems/json-1.7.3/tests/test_json.rb +539 -0
  801. data/vendor/bundle/gems/json-1.7.3/tests/test_json_addition.rb +188 -0
  802. data/vendor/bundle/gems/json-1.7.3/tests/test_json_encoding.rb +65 -0
  803. data/vendor/bundle/gems/json-1.7.3/tests/test_json_fixtures.rb +35 -0
  804. data/vendor/bundle/gems/json-1.7.3/tests/test_json_generate.rb +251 -0
  805. data/vendor/bundle/gems/json-1.7.3/tests/test_json_generic_object.rb +35 -0
  806. data/vendor/bundle/gems/json-1.7.3/tests/test_json_string_matching.rb +40 -0
  807. data/vendor/bundle/gems/json-1.7.3/tests/test_json_unicode.rb +72 -0
  808. data/vendor/bundle/gems/json-1.7.3/tools/fuzz.rb +139 -0
  809. data/vendor/bundle/gems/json-1.7.3/tools/server.rb +62 -0
  810. data/vendor/bundle/gems/mail-2.4.4/CHANGELOG.rdoc +603 -0
  811. data/vendor/bundle/gems/mail-2.4.4/CONTRIBUTING.md +45 -0
  812. data/vendor/bundle/gems/mail-2.4.4/Dependencies.txt +3 -0
  813. data/vendor/bundle/gems/mail-2.4.4/Gemfile +26 -0
  814. data/vendor/bundle/gems/mail-2.4.4/README.md +663 -0
  815. data/vendor/bundle/gems/mail-2.4.4/Rakefile +40 -0
  816. data/vendor/bundle/gems/mail-2.4.4/TODO.rdoc +9 -0
  817. data/vendor/bundle/gems/mail-2.4.4/lib/VERSION +4 -0
  818. data/vendor/bundle/gems/mail-2.4.4/lib/mail/attachments_list.rb +104 -0
  819. data/vendor/bundle/gems/mail-2.4.4/lib/mail/body.rb +291 -0
  820. data/vendor/bundle/gems/mail-2.4.4/lib/mail/configuration.rb +75 -0
  821. data/vendor/bundle/gems/mail-2.4.4/lib/mail/core_extensions/nil.rb +17 -0
  822. data/vendor/bundle/gems/mail-2.4.4/lib/mail/core_extensions/object.rb +13 -0
  823. data/vendor/bundle/gems/mail-2.4.4/lib/mail/core_extensions/shell_escape.rb +56 -0
  824. data/vendor/bundle/gems/mail-2.4.4/lib/mail/core_extensions/smtp.rb +25 -0
  825. data/vendor/bundle/gems/mail-2.4.4/lib/mail/core_extensions/string/access.rb +145 -0
  826. data/vendor/bundle/gems/mail-2.4.4/lib/mail/core_extensions/string/multibyte.rb +78 -0
  827. data/vendor/bundle/gems/mail-2.4.4/lib/mail/core_extensions/string.rb +33 -0
  828. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/address.rb +306 -0
  829. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/address_list.rb +74 -0
  830. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/content_disposition_element.rb +30 -0
  831. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/content_location_element.rb +25 -0
  832. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/content_transfer_encoding_element.rb +24 -0
  833. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/content_type_element.rb +35 -0
  834. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/date_time_element.rb +26 -0
  835. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/envelope_from_element.rb +34 -0
  836. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/message_ids_element.rb +29 -0
  837. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/mime_version_element.rb +26 -0
  838. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/phrase_list.rb +21 -0
  839. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements/received_element.rb +30 -0
  840. data/vendor/bundle/gems/mail-2.4.4/lib/mail/elements.rb +14 -0
  841. data/vendor/bundle/gems/mail-2.4.4/lib/mail/encodings/7bit.rb +31 -0
  842. data/vendor/bundle/gems/mail-2.4.4/lib/mail/encodings/8bit.rb +31 -0
  843. data/vendor/bundle/gems/mail-2.4.4/lib/mail/encodings/base64.rb +33 -0
  844. data/vendor/bundle/gems/mail-2.4.4/lib/mail/encodings/binary.rb +31 -0
  845. data/vendor/bundle/gems/mail-2.4.4/lib/mail/encodings/quoted_printable.rb +38 -0
  846. data/vendor/bundle/gems/mail-2.4.4/lib/mail/encodings/transfer_encoding.rb +58 -0
  847. data/vendor/bundle/gems/mail-2.4.4/lib/mail/encodings.rb +274 -0
  848. data/vendor/bundle/gems/mail-2.4.4/lib/mail/envelope.rb +35 -0
  849. data/vendor/bundle/gems/mail-2.4.4/lib/mail/field.rb +234 -0
  850. data/vendor/bundle/gems/mail-2.4.4/lib/mail/field_list.rb +33 -0
  851. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/bcc_field.rb +56 -0
  852. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/cc_field.rb +55 -0
  853. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/comments_field.rb +41 -0
  854. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/common/address_container.rb +16 -0
  855. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/common/common_address.rb +125 -0
  856. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/common/common_date.rb +42 -0
  857. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/common/common_field.rb +51 -0
  858. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/common/common_message_id.rb +44 -0
  859. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/common/parameter_hash.rb +58 -0
  860. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/content_description_field.rb +19 -0
  861. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/content_disposition_field.rb +69 -0
  862. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/content_id_field.rb +63 -0
  863. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/content_location_field.rb +42 -0
  864. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/content_transfer_encoding_field.rb +50 -0
  865. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/content_type_field.rb +198 -0
  866. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/date_field.rb +57 -0
  867. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/from_field.rb +55 -0
  868. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/in_reply_to_field.rb +55 -0
  869. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/keywords_field.rb +44 -0
  870. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/message_id_field.rb +83 -0
  871. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/mime_version_field.rb +53 -0
  872. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/optional_field.rb +13 -0
  873. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/received_field.rb +75 -0
  874. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/references_field.rb +55 -0
  875. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/reply_to_field.rb +55 -0
  876. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/resent_bcc_field.rb +55 -0
  877. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/resent_cc_field.rb +55 -0
  878. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/resent_date_field.rb +35 -0
  879. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/resent_from_field.rb +55 -0
  880. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/resent_message_id_field.rb +34 -0
  881. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/resent_sender_field.rb +62 -0
  882. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/resent_to_field.rb +55 -0
  883. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/return_path_field.rb +65 -0
  884. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/sender_field.rb +67 -0
  885. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/structured_field.rb +51 -0
  886. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/subject_field.rb +16 -0
  887. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/to_field.rb +55 -0
  888. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields/unstructured_field.rb +191 -0
  889. data/vendor/bundle/gems/mail-2.4.4/lib/mail/fields.rb +35 -0
  890. data/vendor/bundle/gems/mail-2.4.4/lib/mail/header.rb +265 -0
  891. data/vendor/bundle/gems/mail-2.4.4/lib/mail/indifferent_hash.rb +146 -0
  892. data/vendor/bundle/gems/mail-2.4.4/lib/mail/mail.rb +255 -0
  893. data/vendor/bundle/gems/mail-2.4.4/lib/mail/matchers/has_sent_mail.rb +124 -0
  894. data/vendor/bundle/gems/mail-2.4.4/lib/mail/message.rb +2058 -0
  895. data/vendor/bundle/gems/mail-2.4.4/lib/mail/multibyte/chars.rb +474 -0
  896. data/vendor/bundle/gems/mail-2.4.4/lib/mail/multibyte/exceptions.rb +8 -0
  897. data/vendor/bundle/gems/mail-2.4.4/lib/mail/multibyte/unicode.rb +392 -0
  898. data/vendor/bundle/gems/mail-2.4.4/lib/mail/multibyte/utils.rb +60 -0
  899. data/vendor/bundle/gems/mail-2.4.4/lib/mail/multibyte.rb +42 -0
  900. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network/delivery_methods/exim.rb +53 -0
  901. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network/delivery_methods/file_delivery.rb +40 -0
  902. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network/delivery_methods/sendmail.rb +62 -0
  903. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network/delivery_methods/smtp.rb +153 -0
  904. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network/delivery_methods/smtp_connection.rb +74 -0
  905. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network/delivery_methods/test_mailer.rb +40 -0
  906. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network/retriever_methods/base.rb +63 -0
  907. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network/retriever_methods/imap.rb +160 -0
  908. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network/retriever_methods/pop3.rb +140 -0
  909. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network/retriever_methods/test_retriever.rb +47 -0
  910. data/vendor/bundle/gems/mail-2.4.4/lib/mail/network.rb +14 -0
  911. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/address_lists.rb +64 -0
  912. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/address_lists.treetop +19 -0
  913. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/content_disposition.rb +535 -0
  914. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/content_disposition.treetop +46 -0
  915. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/content_location.rb +139 -0
  916. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/content_location.treetop +20 -0
  917. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/content_transfer_encoding.rb +162 -0
  918. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/content_transfer_encoding.treetop +20 -0
  919. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/content_type.rb +967 -0
  920. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/content_type.treetop +68 -0
  921. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/date_time.rb +114 -0
  922. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/date_time.treetop +11 -0
  923. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/envelope_from.rb +194 -0
  924. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/envelope_from.treetop +32 -0
  925. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/message_ids.rb +45 -0
  926. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/message_ids.treetop +15 -0
  927. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/mime_version.rb +144 -0
  928. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/mime_version.treetop +19 -0
  929. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/phrase_lists.rb +45 -0
  930. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/phrase_lists.treetop +15 -0
  931. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/received.rb +71 -0
  932. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/received.treetop +11 -0
  933. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/rfc2045.rb +464 -0
  934. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/rfc2045.treetop +36 -0
  935. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/rfc2822.rb +5341 -0
  936. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/rfc2822.treetop +410 -0
  937. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/rfc2822_obsolete.rb +3768 -0
  938. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parsers/rfc2822_obsolete.treetop +241 -0
  939. data/vendor/bundle/gems/mail-2.4.4/lib/mail/part.rb +116 -0
  940. data/vendor/bundle/gems/mail-2.4.4/lib/mail/parts_list.rb +55 -0
  941. data/vendor/bundle/gems/mail-2.4.4/lib/mail/patterns.rb +35 -0
  942. data/vendor/bundle/gems/mail-2.4.4/lib/mail/utilities.rb +215 -0
  943. data/vendor/bundle/gems/mail-2.4.4/lib/mail/version.rb +24 -0
  944. data/vendor/bundle/gems/mail-2.4.4/lib/mail/version_specific/ruby_1_8.rb +98 -0
  945. data/vendor/bundle/gems/mail-2.4.4/lib/mail/version_specific/ruby_1_9.rb +113 -0
  946. data/vendor/bundle/gems/mail-2.4.4/lib/mail.rb +91 -0
  947. data/vendor/bundle/gems/mail-2.4.4/lib/tasks/corpus.rake +125 -0
  948. data/vendor/bundle/gems/mail-2.4.4/lib/tasks/treetop.rake +10 -0
  949. data/vendor/bundle/gems/mime-types-1.18/.gemtest +0 -0
  950. data/vendor/bundle/gems/mime-types-1.18/.gitignore +8 -0
  951. data/vendor/bundle/gems/mime-types-1.18/.hoerc +10 -0
  952. data/vendor/bundle/gems/mime-types-1.18/History.rdoc +132 -0
  953. data/vendor/bundle/gems/mime-types-1.18/Licence.rdoc +12 -0
  954. data/vendor/bundle/gems/mime-types-1.18/Manifest.txt +43 -0
  955. data/vendor/bundle/gems/mime-types-1.18/README.rdoc +19 -0
  956. data/vendor/bundle/gems/mime-types-1.18/Rakefile +198 -0
  957. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/application +943 -0
  958. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/application.mac +2 -0
  959. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/application.nonstandard +117 -0
  960. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/application.obsolete +40 -0
  961. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/audio +132 -0
  962. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/audio.nonstandard +10 -0
  963. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/audio.obsolete +1 -0
  964. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/image +43 -0
  965. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/image.nonstandard +17 -0
  966. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/image.obsolete +5 -0
  967. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/message +19 -0
  968. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/message.obsolete +1 -0
  969. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/model +15 -0
  970. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/multipart +14 -0
  971. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/multipart.nonstandard +1 -0
  972. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/multipart.obsolete +7 -0
  973. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/other.nonstandard +8 -0
  974. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/text +54 -0
  975. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/text.nonstandard +6 -0
  976. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/text.obsolete +7 -0
  977. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/text.vms +1 -0
  978. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/video +69 -0
  979. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/video.nonstandard +11 -0
  980. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types/video.obsolete +3 -0
  981. data/vendor/bundle/gems/mime-types-1.18/lib/mime/types.rb +853 -0
  982. data/vendor/bundle/gems/mime-types-1.18/mime-types.gemspec +57 -0
  983. data/vendor/bundle/gems/mime-types-1.18/test/test_mime_type.rb +318 -0
  984. data/vendor/bundle/gems/mime-types-1.18/test/test_mime_types.rb +99 -0
  985. data/vendor/bundle/gems/mime-types-1.18/type-lists/application.txt +951 -0
  986. data/vendor/bundle/gems/mime-types-1.18/type-lists/audio.txt +132 -0
  987. data/vendor/bundle/gems/mime-types-1.18/type-lists/image.txt +43 -0
  988. data/vendor/bundle/gems/mime-types-1.18/type-lists/message.txt +20 -0
  989. data/vendor/bundle/gems/mime-types-1.18/type-lists/model.txt +15 -0
  990. data/vendor/bundle/gems/mime-types-1.18/type-lists/multipart.txt +14 -0
  991. data/vendor/bundle/gems/mime-types-1.18/type-lists/text.txt +57 -0
  992. data/vendor/bundle/gems/mime-types-1.18/type-lists/video.txt +67 -0
  993. data/vendor/bundle/gems/polyglot-0.3.3/History.txt +72 -0
  994. data/vendor/bundle/gems/polyglot-0.3.3/License.txt +20 -0
  995. data/vendor/bundle/gems/polyglot-0.3.3/README.txt +87 -0
  996. data/vendor/bundle/gems/polyglot-0.3.3/Rakefile +42 -0
  997. data/vendor/bundle/gems/polyglot-0.3.3/lib/polyglot/version.rb +9 -0
  998. data/vendor/bundle/gems/polyglot-0.3.3/lib/polyglot.rb +74 -0
  999. data/vendor/bundle/gems/qu-0.1.4/.gitignore +4 -0
  1000. data/vendor/bundle/gems/qu-0.1.4/ChangeLog +53 -0
  1001. data/vendor/bundle/gems/qu-0.1.4/Gemfile +20 -0
  1002. data/vendor/bundle/gems/qu-0.1.4/Guardfile +12 -0
  1003. data/vendor/bundle/gems/qu-0.1.4/README.md +163 -0
  1004. data/vendor/bundle/gems/qu-0.1.4/Rakefile +50 -0
  1005. data/vendor/bundle/gems/qu-0.1.4/lib/qu/backend/base.rb +20 -0
  1006. data/vendor/bundle/gems/qu-0.1.4/lib/qu/backend/immediate.rb +18 -0
  1007. data/vendor/bundle/gems/qu-0.1.4/lib/qu/backend/spec.rb +288 -0
  1008. data/vendor/bundle/gems/qu-0.1.4/lib/qu/failure.rb +4 -0
  1009. data/vendor/bundle/gems/qu-0.1.4/lib/qu/logger.rb +20 -0
  1010. data/vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb +53 -0
  1011. data/vendor/bundle/gems/qu-0.1.4/lib/qu/railtie.rb +13 -0
  1012. data/vendor/bundle/gems/qu-0.1.4/lib/qu/tasks.rb +14 -0
  1013. data/vendor/bundle/gems/qu-0.1.4/lib/qu/version.rb +3 -0
  1014. data/vendor/bundle/gems/qu-0.1.4/lib/qu/worker.rb +77 -0
  1015. data/vendor/bundle/gems/qu-0.1.4/lib/qu-immediate.rb +4 -0
  1016. data/vendor/bundle/gems/qu-0.1.4/lib/qu.rb +45 -0
  1017. data/vendor/bundle/gems/qu-0.1.4/qu.gemspec +22 -0
  1018. data/vendor/bundle/gems/qu-0.1.4/spec/qu/backend/immediate_spec.rb +15 -0
  1019. data/vendor/bundle/gems/qu-0.1.4/spec/qu/payload_spec.rb +86 -0
  1020. data/vendor/bundle/gems/qu-0.1.4/spec/qu/worker_spec.rb +99 -0
  1021. data/vendor/bundle/gems/qu-0.1.4/spec/qu_spec.rb +37 -0
  1022. data/vendor/bundle/gems/qu-0.1.4/spec/spec_helper.rb +14 -0
  1023. data/vendor/bundle/gems/qu-mongo-0.1.4/lib/qu/backend/mongo.rb +156 -0
  1024. data/vendor/bundle/gems/qu-mongo-0.1.4/lib/qu-mongo.rb +4 -0
  1025. data/vendor/bundle/gems/redis-2.2.2/.gitignore +8 -0
  1026. data/vendor/bundle/gems/redis-2.2.2/CHANGELOG.md +49 -0
  1027. data/vendor/bundle/gems/redis-2.2.2/LICENSE +20 -0
  1028. data/vendor/bundle/gems/redis-2.2.2/README.md +208 -0
  1029. data/vendor/bundle/gems/redis-2.2.2/Rakefile +268 -0
  1030. data/vendor/bundle/gems/redis-2.2.2/TODO.md +4 -0
  1031. data/vendor/bundle/gems/redis-2.2.2/benchmarking/logging.rb +62 -0
  1032. data/vendor/bundle/gems/redis-2.2.2/benchmarking/pipeline.rb +51 -0
  1033. data/vendor/bundle/gems/redis-2.2.2/benchmarking/speed.rb +21 -0
  1034. data/vendor/bundle/gems/redis-2.2.2/benchmarking/suite.rb +24 -0
  1035. data/vendor/bundle/gems/redis-2.2.2/benchmarking/thread_safety.rb +38 -0
  1036. data/vendor/bundle/gems/redis-2.2.2/benchmarking/worker.rb +71 -0
  1037. data/vendor/bundle/gems/redis-2.2.2/examples/basic.rb +15 -0
  1038. data/vendor/bundle/gems/redis-2.2.2/examples/dist_redis.rb +43 -0
  1039. data/vendor/bundle/gems/redis-2.2.2/examples/incr-decr.rb +17 -0
  1040. data/vendor/bundle/gems/redis-2.2.2/examples/list.rb +26 -0
  1041. data/vendor/bundle/gems/redis-2.2.2/examples/pubsub.rb +31 -0
  1042. data/vendor/bundle/gems/redis-2.2.2/examples/sets.rb +36 -0
  1043. data/vendor/bundle/gems/redis-2.2.2/examples/unicorn/config.ru +3 -0
  1044. data/vendor/bundle/gems/redis-2.2.2/examples/unicorn/unicorn.rb +20 -0
  1045. data/vendor/bundle/gems/redis-2.2.2/lib/redis/client.rb +265 -0
  1046. data/vendor/bundle/gems/redis-2.2.2/lib/redis/compat.rb +21 -0
  1047. data/vendor/bundle/gems/redis-2.2.2/lib/redis/connection/command_helper.rb +45 -0
  1048. data/vendor/bundle/gems/redis-2.2.2/lib/redis/connection/hiredis.rb +49 -0
  1049. data/vendor/bundle/gems/redis-2.2.2/lib/redis/connection/registry.rb +12 -0
  1050. data/vendor/bundle/gems/redis-2.2.2/lib/redis/connection/ruby.rb +135 -0
  1051. data/vendor/bundle/gems/redis-2.2.2/lib/redis/connection/synchrony.rb +129 -0
  1052. data/vendor/bundle/gems/redis-2.2.2/lib/redis/connection.rb +9 -0
  1053. data/vendor/bundle/gems/redis-2.2.2/lib/redis/distributed.rb +694 -0
  1054. data/vendor/bundle/gems/redis-2.2.2/lib/redis/hash_ring.rb +131 -0
  1055. data/vendor/bundle/gems/redis-2.2.2/lib/redis/pipeline.rb +34 -0
  1056. data/vendor/bundle/gems/redis-2.2.2/lib/redis/subscribe.rb +94 -0
  1057. data/vendor/bundle/gems/redis-2.2.2/lib/redis/version.rb +3 -0
  1058. data/vendor/bundle/gems/redis-2.2.2/lib/redis.rb +1148 -0
  1059. data/vendor/bundle/gems/redis-2.2.2/redis.gemspec +24 -0
  1060. data/vendor/bundle/gems/redis-2.2.2/test/commands_on_hashes_test.rb +20 -0
  1061. data/vendor/bundle/gems/redis-2.2.2/test/commands_on_lists_test.rb +60 -0
  1062. data/vendor/bundle/gems/redis-2.2.2/test/commands_on_sets_test.rb +78 -0
  1063. data/vendor/bundle/gems/redis-2.2.2/test/commands_on_sorted_sets_test.rb +109 -0
  1064. data/vendor/bundle/gems/redis-2.2.2/test/commands_on_strings_test.rb +80 -0
  1065. data/vendor/bundle/gems/redis-2.2.2/test/commands_on_value_types_test.rb +88 -0
  1066. data/vendor/bundle/gems/redis-2.2.2/test/connection_handling_test.rb +88 -0
  1067. data/vendor/bundle/gems/redis-2.2.2/test/db/.gitignore +1 -0
  1068. data/vendor/bundle/gems/redis-2.2.2/test/distributed_blocking_commands_test.rb +53 -0
  1069. data/vendor/bundle/gems/redis-2.2.2/test/distributed_commands_on_hashes_test.rb +12 -0
  1070. data/vendor/bundle/gems/redis-2.2.2/test/distributed_commands_on_lists_test.rb +24 -0
  1071. data/vendor/bundle/gems/redis-2.2.2/test/distributed_commands_on_sets_test.rb +85 -0
  1072. data/vendor/bundle/gems/redis-2.2.2/test/distributed_commands_on_strings_test.rb +50 -0
  1073. data/vendor/bundle/gems/redis-2.2.2/test/distributed_commands_on_value_types_test.rb +73 -0
  1074. data/vendor/bundle/gems/redis-2.2.2/test/distributed_commands_requiring_clustering_test.rb +148 -0
  1075. data/vendor/bundle/gems/redis-2.2.2/test/distributed_connection_handling_test.rb +25 -0
  1076. data/vendor/bundle/gems/redis-2.2.2/test/distributed_internals_test.rb +27 -0
  1077. data/vendor/bundle/gems/redis-2.2.2/test/distributed_key_tags_test.rb +53 -0
  1078. data/vendor/bundle/gems/redis-2.2.2/test/distributed_persistence_control_commands_test.rb +24 -0
  1079. data/vendor/bundle/gems/redis-2.2.2/test/distributed_publish_subscribe_test.rb +101 -0
  1080. data/vendor/bundle/gems/redis-2.2.2/test/distributed_remote_server_control_commands_test.rb +43 -0
  1081. data/vendor/bundle/gems/redis-2.2.2/test/distributed_sorting_test.rb +21 -0
  1082. data/vendor/bundle/gems/redis-2.2.2/test/distributed_test.rb +59 -0
  1083. data/vendor/bundle/gems/redis-2.2.2/test/distributed_transactions_test.rb +34 -0
  1084. data/vendor/bundle/gems/redis-2.2.2/test/encoding_test.rb +16 -0
  1085. data/vendor/bundle/gems/redis-2.2.2/test/error_replies_test.rb +53 -0
  1086. data/vendor/bundle/gems/redis-2.2.2/test/helper.rb +145 -0
  1087. data/vendor/bundle/gems/redis-2.2.2/test/internals_test.rb +160 -0
  1088. data/vendor/bundle/gems/redis-2.2.2/test/lint/hashes.rb +126 -0
  1089. data/vendor/bundle/gems/redis-2.2.2/test/lint/internals.rb +37 -0
  1090. data/vendor/bundle/gems/redis-2.2.2/test/lint/lists.rb +93 -0
  1091. data/vendor/bundle/gems/redis-2.2.2/test/lint/sets.rb +66 -0
  1092. data/vendor/bundle/gems/redis-2.2.2/test/lint/sorted_sets.rb +167 -0
  1093. data/vendor/bundle/gems/redis-2.2.2/test/lint/strings.rb +137 -0
  1094. data/vendor/bundle/gems/redis-2.2.2/test/lint/value_types.rb +84 -0
  1095. data/vendor/bundle/gems/redis-2.2.2/test/persistence_control_commands_test.rb +22 -0
  1096. data/vendor/bundle/gems/redis-2.2.2/test/pipelining_commands_test.rb +123 -0
  1097. data/vendor/bundle/gems/redis-2.2.2/test/publish_subscribe_test.rb +158 -0
  1098. data/vendor/bundle/gems/redis-2.2.2/test/redis_mock.rb +80 -0
  1099. data/vendor/bundle/gems/redis-2.2.2/test/remote_server_control_commands_test.rb +82 -0
  1100. data/vendor/bundle/gems/redis-2.2.2/test/sorting_test.rb +44 -0
  1101. data/vendor/bundle/gems/redis-2.2.2/test/synchrony_driver.rb +57 -0
  1102. data/vendor/bundle/gems/redis-2.2.2/test/test.conf +8 -0
  1103. data/vendor/bundle/gems/redis-2.2.2/test/thread_safety_test.rb +30 -0
  1104. data/vendor/bundle/gems/redis-2.2.2/test/transactions_test.rb +100 -0
  1105. data/vendor/bundle/gems/redis-2.2.2/test/unknown_commands_test.rb +14 -0
  1106. data/vendor/bundle/gems/redis-2.2.2/test/url_param_test.rb +60 -0
  1107. data/vendor/bundle/gems/redis-namespace-1.0.3/LICENSE +20 -0
  1108. data/vendor/bundle/gems/redis-namespace-1.0.3/README.md +37 -0
  1109. data/vendor/bundle/gems/redis-namespace-1.0.3/Rakefile +7 -0
  1110. data/vendor/bundle/gems/redis-namespace-1.0.3/lib/redis/namespace.rb +248 -0
  1111. data/vendor/bundle/gems/redis-namespace-1.0.3/lib/redis-namespace.rb +1 -0
  1112. data/vendor/bundle/gems/redis-namespace-1.0.3/spec/redis_spec.rb +180 -0
  1113. data/vendor/bundle/gems/redis-namespace-1.0.3/spec/spec_helper.rb +18 -0
  1114. data/vendor/bundle/gems/resque-1.20.0/HISTORY.md +354 -0
  1115. data/vendor/bundle/gems/resque-1.20.0/LICENSE +20 -0
  1116. data/vendor/bundle/gems/resque-1.20.0/README.markdown +908 -0
  1117. data/vendor/bundle/gems/resque-1.20.0/Rakefile +78 -0
  1118. data/vendor/bundle/gems/resque-1.20.0/bin/resque +81 -0
  1119. data/vendor/bundle/gems/resque-1.20.0/bin/resque-web +27 -0
  1120. data/vendor/bundle/gems/resque-1.20.0/lib/resque/errors.rb +10 -0
  1121. data/vendor/bundle/gems/resque-1.20.0/lib/resque/failure/airbrake.rb +17 -0
  1122. data/vendor/bundle/gems/resque-1.20.0/lib/resque/failure/base.rb +64 -0
  1123. data/vendor/bundle/gems/resque-1.20.0/lib/resque/failure/hoptoad.rb +33 -0
  1124. data/vendor/bundle/gems/resque-1.20.0/lib/resque/failure/multiple.rb +54 -0
  1125. data/vendor/bundle/gems/resque-1.20.0/lib/resque/failure/redis.rb +51 -0
  1126. data/vendor/bundle/gems/resque-1.20.0/lib/resque/failure/thoughtbot.rb +33 -0
  1127. data/vendor/bundle/gems/resque-1.20.0/lib/resque/failure.rb +96 -0
  1128. data/vendor/bundle/gems/resque-1.20.0/lib/resque/helpers.rb +83 -0
  1129. data/vendor/bundle/gems/resque-1.20.0/lib/resque/job.rb +223 -0
  1130. data/vendor/bundle/gems/resque-1.20.0/lib/resque/plugin.rb +66 -0
  1131. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/public/favicon.ico +0 -0
  1132. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/public/idle.png +0 -0
  1133. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/public/jquery-1.3.2.min.js +19 -0
  1134. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/public/jquery.relatize_date.js +95 -0
  1135. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/public/poll.png +0 -0
  1136. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/public/ranger.js +73 -0
  1137. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/public/reset.css +44 -0
  1138. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/public/style.css +86 -0
  1139. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/public/working.png +0 -0
  1140. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/test_helper.rb +19 -0
  1141. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/error.erb +1 -0
  1142. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/failed.erb +67 -0
  1143. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/key_sets.erb +19 -0
  1144. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/key_string.erb +11 -0
  1145. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/layout.erb +44 -0
  1146. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/next_more.erb +10 -0
  1147. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/overview.erb +4 -0
  1148. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/queues.erb +49 -0
  1149. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/stats.erb +62 -0
  1150. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/workers.erb +109 -0
  1151. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server/views/working.erb +72 -0
  1152. data/vendor/bundle/gems/resque-1.20.0/lib/resque/server.rb +248 -0
  1153. data/vendor/bundle/gems/resque-1.20.0/lib/resque/stat.rb +53 -0
  1154. data/vendor/bundle/gems/resque-1.20.0/lib/resque/tasks.rb +61 -0
  1155. data/vendor/bundle/gems/resque-1.20.0/lib/resque/version.rb +3 -0
  1156. data/vendor/bundle/gems/resque-1.20.0/lib/resque/worker.rb +544 -0
  1157. data/vendor/bundle/gems/resque-1.20.0/lib/resque.rb +380 -0
  1158. data/vendor/bundle/gems/resque-1.20.0/lib/tasks/redis.rake +161 -0
  1159. data/vendor/bundle/gems/resque-1.20.0/lib/tasks/resque.rake +2 -0
  1160. data/vendor/bundle/gems/resque-1.20.0/test/airbrake_test.rb +27 -0
  1161. data/vendor/bundle/gems/resque-1.20.0/test/hoptoad_test.rb +26 -0
  1162. data/vendor/bundle/gems/resque-1.20.0/test/job_hooks_test.rb +423 -0
  1163. data/vendor/bundle/gems/resque-1.20.0/test/job_plugins_test.rb +230 -0
  1164. data/vendor/bundle/gems/resque-1.20.0/test/plugin_test.rb +116 -0
  1165. data/vendor/bundle/gems/resque-1.20.0/test/redis-test-cluster.conf +115 -0
  1166. data/vendor/bundle/gems/resque-1.20.0/test/redis-test.conf +115 -0
  1167. data/vendor/bundle/gems/resque-1.20.0/test/resque-web_test.rb +59 -0
  1168. data/vendor/bundle/gems/resque-1.20.0/test/resque_test.rb +278 -0
  1169. data/vendor/bundle/gems/resque-1.20.0/test/test_helper.rb +158 -0
  1170. data/vendor/bundle/gems/resque-1.20.0/test/worker_test.rb +405 -0
  1171. data/vendor/bundle/gems/resque-mongo-1.9.8.1/HISTORY.md +202 -0
  1172. data/vendor/bundle/gems/resque-mongo-1.9.8.1/LICENSE +20 -0
  1173. data/vendor/bundle/gems/resque-mongo-1.9.8.1/README.markdown +814 -0
  1174. data/vendor/bundle/gems/resque-mongo-1.9.8.1/Rakefile +60 -0
  1175. data/vendor/bundle/gems/resque-mongo-1.9.8.1/bin/resque +57 -0
  1176. data/vendor/bundle/gems/resque-mongo-1.9.8.1/bin/resque-web +23 -0
  1177. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/errors.rb +10 -0
  1178. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/failure/base.rb +61 -0
  1179. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/failure/hoptoad.rb +132 -0
  1180. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/failure/mongo.rb +41 -0
  1181. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/failure/multiple.rb +50 -0
  1182. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/failure.rb +66 -0
  1183. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/helpers.rb +71 -0
  1184. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/job.rb +209 -0
  1185. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/plugin.rb +46 -0
  1186. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/public/idle.png +0 -0
  1187. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/public/jquery-1.3.2.min.js +19 -0
  1188. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/public/jquery.relatize_date.js +95 -0
  1189. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/public/poll.png +0 -0
  1190. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/public/ranger.js +67 -0
  1191. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/public/reset.css +48 -0
  1192. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/public/style.css +82 -0
  1193. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/public/working.png +0 -0
  1194. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/test_helper.rb +19 -0
  1195. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/error.erb +1 -0
  1196. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/failed.erb +53 -0
  1197. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/key_sets.erb +20 -0
  1198. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/key_string.erb +11 -0
  1199. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/layout.erb +38 -0
  1200. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/next_more.erb +10 -0
  1201. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/overview.erb +4 -0
  1202. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/queues.erb +49 -0
  1203. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/stats.erb +62 -0
  1204. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/workers.erb +78 -0
  1205. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server/views/working.erb +69 -0
  1206. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/server.rb +201 -0
  1207. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/stat.rb +55 -0
  1208. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/tasks.rb +39 -0
  1209. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/version.rb +3 -0
  1210. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque/worker.rb +481 -0
  1211. data/vendor/bundle/gems/resque-mongo-1.9.8.1/lib/resque.rb +316 -0
  1212. data/vendor/bundle/gems/resque-mongo-1.9.8.1/tasks/redis.rake +159 -0
  1213. data/vendor/bundle/gems/resque-mongo-1.9.8.1/tasks/resque.rake +2 -0
  1214. data/vendor/bundle/gems/resque-mongo-1.9.8.1/test/dump.rdb +0 -0
  1215. data/vendor/bundle/gems/resque-mongo-1.9.8.1/test/job_hooks_test.rb +302 -0
  1216. data/vendor/bundle/gems/resque-mongo-1.9.8.1/test/job_plugins_test.rb +230 -0
  1217. data/vendor/bundle/gems/resque-mongo-1.9.8.1/test/plugin_test.rb +116 -0
  1218. data/vendor/bundle/gems/resque-mongo-1.9.8.1/test/redis-test.conf +115 -0
  1219. data/vendor/bundle/gems/resque-mongo-1.9.8.1/test/resque-mongo_benchmark.rb +62 -0
  1220. data/vendor/bundle/gems/resque-mongo-1.9.8.1/test/resque-web_test.rb +34 -0
  1221. data/vendor/bundle/gems/resque-mongo-1.9.8.1/test/resque_test.rb +225 -0
  1222. data/vendor/bundle/gems/resque-mongo-1.9.8.1/test/test_helper.rb +102 -0
  1223. data/vendor/bundle/gems/resque-mongo-1.9.8.1/test/worker_test.rb +302 -0
  1224. data/vendor/bundle/gems/slim-1.2.1/.gemtest +0 -0
  1225. data/vendor/bundle/gems/slim-1.2.1/.gitignore +17 -0
  1226. data/vendor/bundle/gems/slim-1.2.1/.travis.yml +27 -0
  1227. data/vendor/bundle/gems/slim-1.2.1/.yardopts +2 -0
  1228. data/vendor/bundle/gems/slim-1.2.1/CHANGES +219 -0
  1229. data/vendor/bundle/gems/slim-1.2.1/Gemfile +25 -0
  1230. data/vendor/bundle/gems/slim-1.2.1/LICENSE +21 -0
  1231. data/vendor/bundle/gems/slim-1.2.1/README.md +411 -0
  1232. data/vendor/bundle/gems/slim-1.2.1/Rakefile +57 -0
  1233. data/vendor/bundle/gems/slim-1.2.1/benchmarks/context.rb +11 -0
  1234. data/vendor/bundle/gems/slim-1.2.1/benchmarks/profile-parser.rb +10 -0
  1235. data/vendor/bundle/gems/slim-1.2.1/benchmarks/profile-render.rb +12 -0
  1236. data/vendor/bundle/gems/slim-1.2.1/benchmarks/run-benchmarks.rb +112 -0
  1237. data/vendor/bundle/gems/slim-1.2.1/benchmarks/view.erb +23 -0
  1238. data/vendor/bundle/gems/slim-1.2.1/benchmarks/view.haml +18 -0
  1239. data/vendor/bundle/gems/slim-1.2.1/benchmarks/view.slim +17 -0
  1240. data/vendor/bundle/gems/slim-1.2.1/bin/slimrb +7 -0
  1241. data/vendor/bundle/gems/slim-1.2.1/lib/slim/command.rb +100 -0
  1242. data/vendor/bundle/gems/slim-1.2.1/lib/slim/compiler.rb +199 -0
  1243. data/vendor/bundle/gems/slim-1.2.1/lib/slim/embedded_engine.rb +203 -0
  1244. data/vendor/bundle/gems/slim-1.2.1/lib/slim/end_inserter.rb +61 -0
  1245. data/vendor/bundle/gems/slim-1.2.1/lib/slim/engine.rb +79 -0
  1246. data/vendor/bundle/gems/slim-1.2.1/lib/slim/filter.rb +41 -0
  1247. data/vendor/bundle/gems/slim-1.2.1/lib/slim/grammar.rb +23 -0
  1248. data/vendor/bundle/gems/slim-1.2.1/lib/slim/interpolation.rb +55 -0
  1249. data/vendor/bundle/gems/slim-1.2.1/lib/slim/parser.rb +462 -0
  1250. data/vendor/bundle/gems/slim-1.2.1/lib/slim/sections.rb +97 -0
  1251. data/vendor/bundle/gems/slim-1.2.1/lib/slim/template.rb +19 -0
  1252. data/vendor/bundle/gems/slim-1.2.1/lib/slim/version.rb +5 -0
  1253. data/vendor/bundle/gems/slim-1.2.1/lib/slim/wrapper.rb +57 -0
  1254. data/vendor/bundle/gems/slim-1.2.1/lib/slim.rb +14 -0
  1255. data/vendor/bundle/gems/slim-1.2.1/slim.gemspec +31 -0
  1256. data/vendor/bundle/gems/slim-1.2.1/test/rails/Rakefile +7 -0
  1257. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/controllers/application_controller.rb +3 -0
  1258. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/controllers/parents_controller.rb +84 -0
  1259. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/controllers/slim_controller.rb +32 -0
  1260. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/helpers/application_helper.rb +2 -0
  1261. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/models/child.rb +3 -0
  1262. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/models/parent.rb +4 -0
  1263. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/layouts/application.html.slim +10 -0
  1264. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/parents/_form.html.slim +7 -0
  1265. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/parents/edit.html.slim +1 -0
  1266. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/parents/new.html.slim +1 -0
  1267. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/parents/show.html.slim +5 -0
  1268. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/slim/_partial.html.slim +1 -0
  1269. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/slim/content_for.html.slim +7 -0
  1270. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/slim/erb.html.erb +1 -0
  1271. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/slim/integers.html.slim +1 -0
  1272. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/slim/nil.html.slim +1 -0
  1273. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/slim/no_layout.html.slim +1 -0
  1274. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/slim/normal.html.slim +1 -0
  1275. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/slim/partial.html.slim +2 -0
  1276. data/vendor/bundle/gems/slim-1.2.1/test/rails/app/views/slim/variables.html.slim +1 -0
  1277. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/application.rb +44 -0
  1278. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/boot.rb +10 -0
  1279. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/database.yml +4 -0
  1280. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/environment.rb +5 -0
  1281. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/environments/development.rb +26 -0
  1282. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/environments/production.rb +49 -0
  1283. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/environments/test.rb +35 -0
  1284. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/initializers/backtrace_silencers.rb +7 -0
  1285. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/initializers/inflections.rb +10 -0
  1286. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/initializers/mime_types.rb +5 -0
  1287. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/initializers/secret_token.rb +7 -0
  1288. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/initializers/session_store.rb +8 -0
  1289. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/locales/en.yml +5 -0
  1290. data/vendor/bundle/gems/slim-1.2.1/test/rails/config/routes.rb +60 -0
  1291. data/vendor/bundle/gems/slim-1.2.1/test/rails/config.ru +4 -0
  1292. data/vendor/bundle/gems/slim-1.2.1/test/rails/db/migrate/20101220223037_parents_and_children.rb +17 -0
  1293. data/vendor/bundle/gems/slim-1.2.1/test/rails/script/rails +6 -0
  1294. data/vendor/bundle/gems/slim-1.2.1/test/rails/test/helper.rb +10 -0
  1295. data/vendor/bundle/gems/slim-1.2.1/test/rails/test/test_slim.rb +71 -0
  1296. data/vendor/bundle/gems/slim-1.2.1/test/slim/helper.rb +206 -0
  1297. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_chain_manipulation.rb +42 -0
  1298. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_code_blocks.rb +68 -0
  1299. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_code_escaping.rb +53 -0
  1300. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_code_evaluation.rb +289 -0
  1301. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_code_output.rb +168 -0
  1302. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_code_structure.rb +95 -0
  1303. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_embedded_engines.rb +145 -0
  1304. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_encoding.rb +9 -0
  1305. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_html_escaping.rb +40 -0
  1306. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_html_structure.rb +579 -0
  1307. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_parser_errors.rb +143 -0
  1308. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_pretty.rb +75 -0
  1309. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_ruby_errors.rb +210 -0
  1310. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_sections.rb +90 -0
  1311. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_slim_template.rb +118 -0
  1312. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_text_interpolation.rb +79 -0
  1313. data/vendor/bundle/gems/slim-1.2.1/test/slim/test_wrapper.rb +39 -0
  1314. data/vendor/bundle/gems/treetop-1.4.10/LICENSE +19 -0
  1315. data/vendor/bundle/gems/treetop-1.4.10/README.md +188 -0
  1316. data/vendor/bundle/gems/treetop-1.4.10/Rakefile +60 -0
  1317. data/vendor/bundle/gems/treetop-1.4.10/bin/tt +112 -0
  1318. data/vendor/bundle/gems/treetop-1.4.10/doc/contributing_and_planned_features.markdown +102 -0
  1319. data/vendor/bundle/gems/treetop-1.4.10/doc/grammar_composition.markdown +65 -0
  1320. data/vendor/bundle/gems/treetop-1.4.10/doc/index.markdown +88 -0
  1321. data/vendor/bundle/gems/treetop-1.4.10/doc/pitfalls_and_advanced_techniques.markdown +51 -0
  1322. data/vendor/bundle/gems/treetop-1.4.10/doc/semantic_interpretation.markdown +218 -0
  1323. data/vendor/bundle/gems/treetop-1.4.10/doc/site/contribute.html +124 -0
  1324. data/vendor/bundle/gems/treetop-1.4.10/doc/site/images/bottom_background.png +0 -0
  1325. data/vendor/bundle/gems/treetop-1.4.10/doc/site/images/middle_background.png +0 -0
  1326. data/vendor/bundle/gems/treetop-1.4.10/doc/site/images/paren_language_output.png +0 -0
  1327. data/vendor/bundle/gems/treetop-1.4.10/doc/site/images/pivotal.gif +0 -0
  1328. data/vendor/bundle/gems/treetop-1.4.10/doc/site/images/top_background.png +0 -0
  1329. data/vendor/bundle/gems/treetop-1.4.10/doc/site/index.html +102 -0
  1330. data/vendor/bundle/gems/treetop-1.4.10/doc/site/pitfalls_and_advanced_techniques.html +68 -0
  1331. data/vendor/bundle/gems/treetop-1.4.10/doc/site/robots.txt +5 -0
  1332. data/vendor/bundle/gems/treetop-1.4.10/doc/site/screen.css +134 -0
  1333. data/vendor/bundle/gems/treetop-1.4.10/doc/site/semantic_interpretation.html +245 -0
  1334. data/vendor/bundle/gems/treetop-1.4.10/doc/site/syntactic_recognition.html +278 -0
  1335. data/vendor/bundle/gems/treetop-1.4.10/doc/site/using_in_ruby.html +123 -0
  1336. data/vendor/bundle/gems/treetop-1.4.10/doc/site.rb +112 -0
  1337. data/vendor/bundle/gems/treetop-1.4.10/doc/sitegen.rb +65 -0
  1338. data/vendor/bundle/gems/treetop-1.4.10/doc/syntactic_recognition.markdown +215 -0
  1339. data/vendor/bundle/gems/treetop-1.4.10/doc/using_in_ruby.markdown +105 -0
  1340. data/vendor/bundle/gems/treetop-1.4.10/examples/lambda_calculus/arithmetic.rb +551 -0
  1341. data/vendor/bundle/gems/treetop-1.4.10/examples/lambda_calculus/arithmetic.treetop +98 -0
  1342. data/vendor/bundle/gems/treetop-1.4.10/examples/lambda_calculus/arithmetic_node_classes.rb +9 -0
  1343. data/vendor/bundle/gems/treetop-1.4.10/examples/lambda_calculus/arithmetic_test.rb +58 -0
  1344. data/vendor/bundle/gems/treetop-1.4.10/examples/lambda_calculus/lambda_calculus +0 -0
  1345. data/vendor/bundle/gems/treetop-1.4.10/examples/lambda_calculus/lambda_calculus.rb +718 -0
  1346. data/vendor/bundle/gems/treetop-1.4.10/examples/lambda_calculus/lambda_calculus.treetop +132 -0
  1347. data/vendor/bundle/gems/treetop-1.4.10/examples/lambda_calculus/lambda_calculus_node_classes.rb +5 -0
  1348. data/vendor/bundle/gems/treetop-1.4.10/examples/lambda_calculus/lambda_calculus_test.rb +89 -0
  1349. data/vendor/bundle/gems/treetop-1.4.10/examples/lambda_calculus/test_helper.rb +18 -0
  1350. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/bootstrap_gen_1_metagrammar.rb +42 -0
  1351. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/grammar_compiler.rb +44 -0
  1352. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/lexical_address_space.rb +17 -0
  1353. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/metagrammar.rb +3550 -0
  1354. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/metagrammar.treetop +448 -0
  1355. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/anything_symbol.rb +18 -0
  1356. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/atomic_expression.rb +14 -0
  1357. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/character_class.rb +28 -0
  1358. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/choice.rb +31 -0
  1359. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/declaration_sequence.rb +24 -0
  1360. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/grammar.rb +28 -0
  1361. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/inline_module.rb +27 -0
  1362. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/nonterminal.rb +13 -0
  1363. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/optional.rb +19 -0
  1364. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/parenthesized_expression.rb +9 -0
  1365. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/parsing_expression.rb +146 -0
  1366. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/parsing_rule.rb +58 -0
  1367. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/predicate.rb +45 -0
  1368. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/predicate_block.rb +16 -0
  1369. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/repetition.rb +89 -0
  1370. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/sequence.rb +71 -0
  1371. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/terminal.rb +20 -0
  1372. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/transient_prefix.rb +9 -0
  1373. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes/treetop_file.rb +9 -0
  1374. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/node_classes.rb +19 -0
  1375. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler/ruby_builder.rb +115 -0
  1376. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/compiler.rb +7 -0
  1377. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/polyglot.rb +9 -0
  1378. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/ruby_extensions/string.rb +42 -0
  1379. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/ruby_extensions.rb +1 -0
  1380. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/runtime/compiled_parser.rb +115 -0
  1381. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/runtime/interval_skip_list/head_node.rb +15 -0
  1382. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +200 -0
  1383. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/runtime/interval_skip_list/node.rb +164 -0
  1384. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/runtime/interval_skip_list.rb +3 -0
  1385. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/runtime/syntax_node.rb +114 -0
  1386. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/runtime/terminal_parse_failure.rb +16 -0
  1387. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/runtime/terminal_syntax_node.rb +17 -0
  1388. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/runtime.rb +6 -0
  1389. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop/version.rb +9 -0
  1390. data/vendor/bundle/gems/treetop-1.4.10/lib/treetop.rb +3 -0
  1391. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/and_predicate_spec.rb +36 -0
  1392. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/anything_symbol_spec.rb +44 -0
  1393. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/character_class_spec.rb +276 -0
  1394. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/choice_spec.rb +80 -0
  1395. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/circular_compilation_spec.rb +30 -0
  1396. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/failure_propagation_functional_spec.rb +21 -0
  1397. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/grammar_compiler_spec.rb +91 -0
  1398. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/grammar_spec.rb +41 -0
  1399. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/multibyte_chars_spec.rb +39 -0
  1400. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/namespace_spec.rb +42 -0
  1401. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/nonterminal_symbol_spec.rb +40 -0
  1402. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/not_predicate_spec.rb +38 -0
  1403. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/occurrence_range_spec.rb +189 -0
  1404. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/one_or_more_spec.rb +35 -0
  1405. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/optional_spec.rb +37 -0
  1406. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/parenthesized_expression_spec.rb +19 -0
  1407. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/parsing_rule_spec.rb +61 -0
  1408. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/repeated_subrule_spec.rb +29 -0
  1409. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/semantic_predicate_spec.rb +175 -0
  1410. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/sequence_spec.rb +115 -0
  1411. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/terminal_spec.rb +81 -0
  1412. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/terminal_symbol_spec.rb +37 -0
  1413. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/test_grammar.treetop +7 -0
  1414. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/test_grammar.tt +7 -0
  1415. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/test_grammar_do.treetop +7 -0
  1416. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/tt_compiler_spec.rb +217 -0
  1417. data/vendor/bundle/gems/treetop-1.4.10/spec/compiler/zero_or_more_spec.rb +56 -0
  1418. data/vendor/bundle/gems/treetop-1.4.10/spec/composition/a.treetop +11 -0
  1419. data/vendor/bundle/gems/treetop-1.4.10/spec/composition/b.treetop +11 -0
  1420. data/vendor/bundle/gems/treetop-1.4.10/spec/composition/c.treetop +10 -0
  1421. data/vendor/bundle/gems/treetop-1.4.10/spec/composition/d.treetop +10 -0
  1422. data/vendor/bundle/gems/treetop-1.4.10/spec/composition/f.treetop +17 -0
  1423. data/vendor/bundle/gems/treetop-1.4.10/spec/composition/grammar_composition_spec.rb +40 -0
  1424. data/vendor/bundle/gems/treetop-1.4.10/spec/composition/subfolder/e_includes_c.treetop +15 -0
  1425. data/vendor/bundle/gems/treetop-1.4.10/spec/ruby_extensions/string_spec.rb +32 -0
  1426. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/compiled_parser_spec.rb +123 -0
  1427. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/interval_skip_list/delete_spec.rb +147 -0
  1428. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/interval_skip_list/expire_range_spec.rb +349 -0
  1429. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/interval_skip_list/insert_and_delete_node_spec.rb +385 -0
  1430. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/interval_skip_list/insert_spec.rb +660 -0
  1431. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +6175 -0
  1432. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +58 -0
  1433. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/interval_skip_list/palindromic_fixture.rb +35 -0
  1434. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +163 -0
  1435. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/interval_skip_list/spec_helper.rb +91 -0
  1436. data/vendor/bundle/gems/treetop-1.4.10/spec/runtime/syntax_node_spec.rb +77 -0
  1437. data/vendor/bundle/gems/treetop-1.4.10/spec/spec_helper.rb +114 -0
  1438. data/vendor/bundle/gems/treetop-1.4.10/treetop.gemspec +186 -0
  1439. data/vendor/bundle/gems/vegas-0.1.11/History.txt +69 -0
  1440. data/vendor/bundle/gems/vegas-0.1.11/LICENSE +22 -0
  1441. data/vendor/bundle/gems/vegas-0.1.11/README.rdoc +47 -0
  1442. data/vendor/bundle/gems/vegas-0.1.11/Rakefile +47 -0
  1443. data/vendor/bundle/gems/vegas-0.1.11/lib/vegas/runner.rb +404 -0
  1444. data/vendor/bundle/gems/vegas-0.1.11/lib/vegas.rb +16 -0
  1445. data/vendor/bundle/gems/vegas-0.1.11/test/apps.rb +26 -0
  1446. data/vendor/bundle/gems/vegas-0.1.11/test/test_app/bin/test_app +9 -0
  1447. data/vendor/bundle/gems/vegas-0.1.11/test/test_app/bin/test_rack_app +12 -0
  1448. data/vendor/bundle/gems/vegas-0.1.11/test/test_app/test_app.rb +10 -0
  1449. data/vendor/bundle/gems/vegas-0.1.11/test/test_helper.rb +57 -0
  1450. data/vendor/bundle/gems/vegas-0.1.11/test/test_vegas_runner.rb +191 -0
  1451. data/vendor/bundle/gems/vegas-0.1.11/vegas.gemspec +61 -0
  1452. data/vendor/bundle/specifications/carrierwave-0.6.2.gemspec +65 -0
  1453. data/vendor/bundle/specifications/carrierwave-mongoid-0.2.1.gemspec +44 -0
  1454. data/vendor/bundle/specifications/coffee-script-source-1.3.3.gemspec +26 -0
  1455. data/vendor/bundle/specifications/dragonfly-0.9.12.gemspec +85 -0
  1456. data/vendor/bundle/specifications/execjs-1.4.0.gemspec +31 -0
  1457. data/vendor/bundle/specifications/haml-3.1.6.gemspec +34 -0
  1458. data/vendor/bundle/specifications/json-1.7.3.gemspec +36 -0
  1459. data/vendor/bundle/specifications/mail-2.4.4.gemspec +36 -0
  1460. data/vendor/bundle/specifications/mime-types-1.18.gemspec +56 -0
  1461. data/vendor/bundle/specifications/polyglot-0.3.3.gemspec +28 -0
  1462. data/vendor/bundle/specifications/qu-0.1.4.gemspec +28 -0
  1463. data/vendor/bundle/specifications/qu-mongo-0.1.4.gemspec +34 -0
  1464. data/vendor/bundle/specifications/redis-2.2.2.gemspec +27 -0
  1465. data/vendor/bundle/specifications/redis-namespace-1.0.3.gemspec +28 -0
  1466. data/vendor/bundle/specifications/resque-1.20.0.gemspec +41 -0
  1467. data/vendor/bundle/specifications/resque-mongo-1.9.8.1.gemspec +41 -0
  1468. data/vendor/bundle/specifications/slim-1.2.1.gemspec +54 -0
  1469. data/vendor/bundle/specifications/treetop-1.4.10.gemspec +53 -0
  1470. data/vendor/bundle/specifications/vegas-0.1.11.gemspec +40 -0
  1471. metadata +1495 -9
  1472. data/lib/classiccms/public/uploadify.swf +0 -0
  1473. data/lib/classiccms/scaffold/models/Article.rb +0 -3
  1474. data/lib/classiccms/scaffold/rackup.ru +0 -15
@@ -0,0 +1,1944 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+ require File.dirname(__FILE__) + '/../test_helper'
4
+
5
+ class EngineTest < Test::Unit::TestCase
6
+ # A map of erroneous Haml documents to the error messages they should produce.
7
+ # The error messages may be arrays;
8
+ # if so, the second element should be the line number that should be reported for the error.
9
+ # If this isn't provided, the tests will assume the line number should be the last line of the document.
10
+ EXCEPTION_MAP = {
11
+ "!!!\n a" => "Illegal nesting: nesting within a header command is illegal.",
12
+ "a\n b" => "Illegal nesting: nesting within plain text is illegal.",
13
+ "/ a\n b" => "Illegal nesting: nesting within a tag that already has content is illegal.",
14
+ "% a" => 'Invalid tag: "% a".',
15
+ "%p a\n b" => "Illegal nesting: content can't be both given on the same line as %p and nested within it.",
16
+ "%p=" => "There's no Ruby code for = to evaluate.",
17
+ "%p~" => "There's no Ruby code for ~ to evaluate.",
18
+ "~" => "There's no Ruby code for ~ to evaluate.",
19
+ "=" => "There's no Ruby code for = to evaluate.",
20
+ "%p/\n a" => "Illegal nesting: nesting within a self-closing tag is illegal.",
21
+ ":a\n b" => ['Filter "a" is not defined.', 1],
22
+ ":a= b" => 'Invalid filter name ":a= b".',
23
+ "." => "Illegal element: classes and ids must have values.",
24
+ ".#" => "Illegal element: classes and ids must have values.",
25
+ ".{} a" => "Illegal element: classes and ids must have values.",
26
+ ".() a" => "Illegal element: classes and ids must have values.",
27
+ ".= a" => "Illegal element: classes and ids must have values.",
28
+ "%p..a" => "Illegal element: classes and ids must have values.",
29
+ "%a/ b" => "Self-closing tags can't have content.",
30
+ "%p{:a => 'b',\n:c => 'd'}/ e" => ["Self-closing tags can't have content.", 2],
31
+ "%p{:a => 'b',\n:c => 'd'}=" => ["There's no Ruby code for = to evaluate.", 2],
32
+ "%p.{:a => 'b',\n:c => 'd'} e" => ["Illegal element: classes and ids must have values.", 1],
33
+ "%p{:a => 'b',\n:c => 'd',\n:e => 'f'}\n%p/ a" => ["Self-closing tags can't have content.", 4],
34
+ "%p{:a => 'b',\n:c => 'd',\n:e => 'f'}\n- raise 'foo'" => ["foo", 4],
35
+ "%p{:a => 'b',\n:c => raise('foo'),\n:e => 'f'}" => ["foo", 2],
36
+ "%p{:a => 'b',\n:c => 'd',\n:e => raise('foo')}" => ["foo", 3],
37
+ " %p foo" => "Indenting at the beginning of the document is illegal.",
38
+ " %p foo" => "Indenting at the beginning of the document is illegal.",
39
+ "- end" => <<MESSAGE.rstrip,
40
+ You don't need to use "- end" in Haml. Un-indent to close a block:
41
+ - if foo?
42
+ %strong Foo!
43
+ - else
44
+ Not foo.
45
+ %p This line is un-indented, so it isn't part of the "if" block
46
+ MESSAGE
47
+ " \n\t\n %p foo" => ["Indenting at the beginning of the document is illegal.", 3],
48
+ "\n\n %p foo" => ["Indenting at the beginning of the document is illegal.", 3],
49
+ "%p\n foo\n foo" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 3],
50
+ "%p\n foo\n%p\n foo" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 4],
51
+ "%p\n\t\tfoo\n\tfoo" => ["Inconsistent indentation: 1 tab was used for indentation, but the rest of the document was indented using 2 tabs.", 3],
52
+ "%p\n foo\n foo" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 3],
53
+ "%p\n foo\n %p\n bar" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 4],
54
+ "%p\n :plain\n bar\n \t baz" => ['Inconsistent indentation: " \t " was used for indentation, but the rest of the document was indented using 2 spaces.', 4],
55
+ "%p\n foo\n%p\n bar" => ["The line was indented 2 levels deeper than the previous line.", 4],
56
+ "%p\n foo\n %p\n bar" => ["The line was indented 3 levels deeper than the previous line.", 4],
57
+ "%p\n \tfoo" => ["Indentation can't use both tabs and spaces.", 2],
58
+ "%p(" => "Invalid attribute list: \"(\".",
59
+ "%p(foo=\nbar)" => ["Invalid attribute list: \"(foo=\".", 1],
60
+ "%p(foo=)" => "Invalid attribute list: \"(foo=)\".",
61
+ "%p(foo 'bar')" => "Invalid attribute list: \"(foo 'bar')\".",
62
+ "%p(foo 'bar'\nbaz='bang')" => ["Invalid attribute list: \"(foo 'bar'\".", 1],
63
+ "%p(foo='bar'\nbaz 'bang'\nbip='bop')" => ["Invalid attribute list: \"(foo='bar' baz 'bang'\".", 2],
64
+ "%p{:foo => 'bar' :bar => 'baz'}" => :compile,
65
+ "%p{:foo => }" => :compile,
66
+ "%p{=> 'bar'}" => :compile,
67
+ "%p{:foo => 'bar}" => :compile,
68
+ "%p{'foo => 'bar'}" => :compile,
69
+ "%p{:foo => 'bar\"}" => :compile,
70
+
71
+ # Regression tests
72
+ "- raise 'foo'\n\n\n\nbar" => ["foo", 1],
73
+ "= 'foo'\n-raise 'foo'" => ["foo", 2],
74
+ "\n\n\n- raise 'foo'" => ["foo", 4],
75
+ "%p foo |\n bar |\n baz |\nbop\n- raise 'foo'" => ["foo", 5],
76
+ "foo\n\n\n bar" => ["Illegal nesting: nesting within plain text is illegal.", 4],
77
+ "%p/\n\n bar" => ["Illegal nesting: nesting within a self-closing tag is illegal.", 3],
78
+ "%p foo\n\n bar" => ["Illegal nesting: content can't be both given on the same line as %p and nested within it.", 3],
79
+ "/ foo\n\n bar" => ["Illegal nesting: nesting within a tag that already has content is illegal.", 3],
80
+ "!!!\n\n bar" => ["Illegal nesting: nesting within a header command is illegal.", 3],
81
+ "foo\n:ruby\n 1\n 2\n 3\n- raise 'foo'" => ["foo", 6],
82
+ "foo\n:erb\n 1\n 2\n 3\n- raise 'foo'" => ["foo", 6],
83
+ "foo\n:plain\n 1\n 2\n 3\n- raise 'foo'" => ["foo", 6],
84
+ "foo\n:plain\n 1\n 2\n 3\n4\n- raise 'foo'" => ["foo", 7],
85
+ "foo\n:plain\n 1\n 2\n 3\#{''}\n- raise 'foo'" => ["foo", 6],
86
+ "foo\n:plain\n 1\n 2\n 3\#{''}\n4\n- raise 'foo'" => ["foo", 7],
87
+ "foo\n:plain\n 1\n 2\n \#{raise 'foo'}" => ["foo", 5],
88
+ "= raise 'foo'\nfoo\nbar\nbaz\nbang" => ["foo", 1],
89
+ "- case 1\n\n- when 1\n - raise 'foo'" => ["foo", 4],
90
+ }
91
+
92
+ User = Struct.new('User', :id)
93
+ class CustomHamlClass < Struct.new(:id)
94
+ def haml_object_ref
95
+ "my_thing"
96
+ end
97
+ end
98
+
99
+ def render(text, options = {}, &block)
100
+ scope = options.delete(:scope) || Object.new
101
+ locals = options.delete(:locals) || {}
102
+ engine(text, options).to_html(scope, locals, &block)
103
+ end
104
+
105
+ def engine(text, options = {})
106
+ unless options[:filename]
107
+ # use caller method name as fake filename. useful for debugging
108
+ i = -1
109
+ caller[i+=1] =~ /`(.+?)'/ until $1 and $1.index('test_') == 0
110
+ options[:filename] = "(#{$1})"
111
+ end
112
+ Haml::Engine.new(text, options)
113
+ end
114
+
115
+ def setup
116
+ return if Haml::Util.ruby1_8?
117
+ @old_default_internal = Encoding.default_internal
118
+ Encoding.default_internal = nil
119
+ end
120
+
121
+ def teardown
122
+ return if Haml::Util.ruby1_8?
123
+ Encoding.default_internal = @old_default_internal
124
+ end
125
+
126
+ def test_empty_render
127
+ assert_equal "", render("")
128
+ end
129
+
130
+ def test_flexible_tabulation
131
+ assert_equal("<p>\n foo\n</p>\n<q>\n bar\n <a>\n baz\n </a>\n</q>\n",
132
+ render("%p\n foo\n%q\n bar\n %a\n baz"))
133
+ assert_equal("<p>\n foo\n</p>\n<q>\n bar\n <a>\n baz\n </a>\n</q>\n",
134
+ render("%p\n\tfoo\n%q\n\tbar\n\t%a\n\t\tbaz"))
135
+ assert_equal("<p>\n \t \t bar\n baz\n</p>\n",
136
+ render("%p\n :plain\n \t \t bar\n baz"))
137
+ end
138
+
139
+ def test_empty_render_should_remain_empty
140
+ assert_equal('', render(''))
141
+ end
142
+
143
+ def test_attributes_should_render_correctly
144
+ assert_equal("<div class='atlantis' style='ugly'></div>", render(".atlantis{:style => 'ugly'}").chomp)
145
+ end
146
+
147
+ def test_css_id_as_attribute_should_be_appended_with_underscore
148
+ assert_equal("<div id='my_id_1'></div>", render("#my_id{:id => '1'}").chomp)
149
+ assert_equal("<div id='my_id_1'></div>", render("#my_id{:id => 1}").chomp)
150
+ end
151
+
152
+ def test_ruby_code_should_work_inside_attributes
153
+ author = 'hcatlin'
154
+ assert_equal("<p class='3'>foo</p>", render("%p{:class => 1+2} foo").chomp)
155
+ end
156
+
157
+ def test_class_attr_with_array
158
+ assert_equal("<p class='a b'>foo</p>\n", render("%p{:class => %w[a b]} foo")) # basic
159
+ assert_equal("<p class='a b css'>foo</p>\n", render("%p.css{:class => %w[a b]} foo")) # merge with css
160
+ assert_equal("<p class='b css'>foo</p>\n", render("%p.css{:class => %w[css b]} foo")) # merge uniquely
161
+ assert_equal("<p class='a b c d'>foo</p>\n", render("%p{:class => [%w[a b], %w[c d]]} foo")) # flatten
162
+ assert_equal("<p class='a b'>foo</p>\n", render("%p{:class => [:a, :b] } foo")) # stringify
163
+ assert_equal("<p>foo</p>\n", render("%p{:class => [nil, false] } foo")) # strip falsey
164
+ assert_equal("<p class='a'>foo</p>\n", render("%p{:class => :a} foo")) # single stringify
165
+ assert_equal("<p>foo</p>\n", render("%p{:class => false} foo")) # single falsey
166
+ assert_equal("<p class='a b html'>foo</p>\n", render("%p(class='html'){:class => %w[a b]} foo")) # html attrs
167
+ end
168
+
169
+ def test_id_attr_with_array
170
+ assert_equal("<p id='a_b'>foo</p>\n", render("%p{:id => %w[a b]} foo")) # basic
171
+ assert_equal("<p id='css_a_b'>foo</p>\n", render("%p#css{:id => %w[a b]} foo")) # merge with css
172
+ assert_equal("<p id='a_b_c_d'>foo</p>\n", render("%p{:id => [%w[a b], %w[c d]]} foo")) # flatten
173
+ assert_equal("<p id='a_b'>foo</p>\n", render("%p{:id => [:a, :b] } foo")) # stringify
174
+ assert_equal("<p>foo</p>\n", render("%p{:id => [nil, false] } foo")) # strip falsey
175
+ assert_equal("<p id='a'>foo</p>\n", render("%p{:id => :a} foo")) # single stringify
176
+ assert_equal("<p>foo</p>\n", render("%p{:id => false} foo")) # single falsey
177
+ assert_equal("<p id='html_a_b'>foo</p>\n", render("%p(id='html'){:id => %w[a b]} foo")) # html attrs
178
+ end
179
+
180
+ def test_colon_in_class_attr
181
+ assert_equal("<p class='foo:bar' />\n", render("%p.foo:bar/"))
182
+ end
183
+
184
+ def test_colon_in_id_attr
185
+ assert_equal("<p id='foo:bar' />\n", render("%p#foo:bar/"))
186
+ end
187
+
188
+ def test_dynamic_attributes_with_no_content
189
+ assert_equal(<<HTML, render(<<HAML))
190
+ <p>
191
+ <a href='http://haml.info'></a>
192
+ </p>
193
+ HTML
194
+ %p
195
+ %a{:href => "http://" + "haml.info"}
196
+ HAML
197
+ end
198
+
199
+ def test_attributes_with_to_s
200
+ assert_equal(<<HTML, render(<<HAML))
201
+ <p id='foo_2'></p>
202
+ <p class='2 foo'></p>
203
+ <p blaz='2'></p>
204
+ <p 2='2'></p>
205
+ HTML
206
+ %p#foo{:id => 1+1}
207
+ %p.foo{:class => 1+1}
208
+ %p{:blaz => 1+1}
209
+ %p{(1+1) => 1+1}
210
+ HAML
211
+ end
212
+
213
+ def test_nil_should_render_empty_tag
214
+ assert_equal("<div class='no_attributes'></div>",
215
+ render(".no_attributes{:nil => nil}").chomp)
216
+ end
217
+
218
+ def test_strings_should_get_stripped_inside_tags
219
+ assert_equal("<div class='stripped'>This should have no spaces in front of it</div>",
220
+ render(".stripped This should have no spaces in front of it").chomp)
221
+ end
222
+
223
+ def test_one_liner_should_be_one_line
224
+ assert_equal("<p>Hello</p>", render('%p Hello').chomp)
225
+ end
226
+
227
+ def test_one_liner_with_newline_shouldnt_be_one_line
228
+ assert_equal("<p>\n foo\n bar\n</p>", render('%p= "foo\nbar"').chomp)
229
+ end
230
+
231
+ def test_multi_render
232
+ engine = engine("%strong Hi there!")
233
+ assert_equal("<strong>Hi there!</strong>\n", engine.to_html)
234
+ assert_equal("<strong>Hi there!</strong>\n", engine.to_html)
235
+ assert_equal("<strong>Hi there!</strong>\n", engine.to_html)
236
+ end
237
+
238
+ def test_interpolation
239
+ assert_equal("<p>Hello World</p>\n", render('%p Hello #{who}', :locals => {:who => 'World'}))
240
+ assert_equal("<p>\n Hello World\n</p>\n", render("%p\n Hello \#{who}", :locals => {:who => 'World'}))
241
+ end
242
+
243
+ def test_interpolation_in_the_middle_of_a_string
244
+ assert_equal("\"title 'Title'. \"\n",
245
+ render("\"title '\#{\"Title\"}'. \""))
246
+ end
247
+
248
+ def test_interpolation_at_the_beginning_of_a_line
249
+ assert_equal("<p>2</p>\n", render('%p #{1 + 1}'))
250
+ assert_equal("<p>\n 2\n</p>\n", render("%p\n \#{1 + 1}"))
251
+ end
252
+
253
+ def test_escaped_interpolation
254
+ assert_equal("<p>Foo &amp; Bar & Baz</p>\n", render('%p& Foo #{"&"} Bar & Baz'))
255
+ end
256
+
257
+ def test_nil_tag_value_should_render_as_empty
258
+ assert_equal("<p></p>\n", render("%p= nil"))
259
+ end
260
+
261
+ def test_tag_with_failed_if_should_render_as_empty
262
+ assert_equal("<p></p>\n", render("%p= 'Hello' if false"))
263
+ end
264
+
265
+ def test_static_attributes_with_empty_attr
266
+ assert_equal("<img alt='' src='/foo.png' />\n", render("%img{:src => '/foo.png', :alt => ''}"))
267
+ end
268
+
269
+ def test_dynamic_attributes_with_empty_attr
270
+ assert_equal("<img alt='' src='/foo.png' />\n", render("%img{:width => nil, :src => '/foo.png', :alt => String.new}"))
271
+ end
272
+
273
+ def test_attribute_hash_with_newlines
274
+ assert_equal("<p a='b' c='d'>foop</p>\n", render("%p{:a => 'b',\n :c => 'd'} foop"))
275
+ assert_equal("<p a='b' c='d'>\n foop\n</p>\n", render("%p{:a => 'b',\n :c => 'd'}\n foop"))
276
+ assert_equal("<p a='b' c='d' />\n", render("%p{:a => 'b',\n :c => 'd'}/"))
277
+ assert_equal("<p a='b' c='d' e='f'></p>\n", render("%p{:a => 'b',\n :c => 'd',\n :e => 'f'}"))
278
+ end
279
+
280
+ def test_attr_hashes_not_modified
281
+ hash = {:color => 'red'}
282
+ assert_equal(<<HTML, render(<<HAML, :locals => {:hash => hash}))
283
+ <div color='red'></div>
284
+ <div class='special' color='red'></div>
285
+ <div color='red'></div>
286
+ HTML
287
+ %div{hash}
288
+ .special{hash}
289
+ %div{hash}
290
+ HAML
291
+ assert_equal(hash, {:color => 'red'})
292
+ end
293
+
294
+ def test_ugly_semi_prerendered_tags
295
+ assert_equal(<<HTML, render(<<HAML, :ugly => true))
296
+ <p a='2'></p>
297
+ <p a='2'>foo</p>
298
+ <p a='2' />
299
+ <p a='2'>foo</p>
300
+ <p a='2'>foo
301
+ bar</p>
302
+ <p a='2'>foo
303
+ bar</p>
304
+ <p a='2'>
305
+ foo
306
+ </p>
307
+ HTML
308
+ %p{:a => 1 + 1}
309
+ %p{:a => 1 + 1} foo
310
+ %p{:a => 1 + 1}/
311
+ %p{:a => 1 + 1}= "foo"
312
+ %p{:a => 1 + 1}= "foo\\nbar"
313
+ %p{:a => 1 + 1}~ "foo\\nbar"
314
+ %p{:a => 1 + 1}
315
+ foo
316
+ HAML
317
+ end
318
+
319
+ def test_end_of_file_multiline
320
+ assert_equal("<p>0</p>\n<p>1</p>\n<p>2</p>\n", render("- for i in (0...3)\n %p= |\n i |"))
321
+ end
322
+
323
+ def test_cr_newline
324
+ assert_equal("<p>foo</p>\n<p>bar</p>\n<p>baz</p>\n<p>boom</p>\n", render("%p foo\r%p bar\r\n%p baz\n\r%p boom"))
325
+ end
326
+
327
+ def test_textareas
328
+ assert_equal("<textarea>Foo&#x000A; bar&#x000A; baz</textarea>\n",
329
+ render('%textarea= "Foo\n bar\n baz"'))
330
+
331
+ assert_equal("<pre>Foo&#x000A; bar&#x000A; baz</pre>\n",
332
+ render('%pre= "Foo\n bar\n baz"'))
333
+
334
+ assert_equal("<textarea>#{'a' * 100}</textarea>\n",
335
+ render("%textarea #{'a' * 100}"))
336
+
337
+ assert_equal("<p>\n <textarea>Foo\n Bar\n Baz</textarea>\n</p>\n", render(<<SOURCE))
338
+ %p
339
+ %textarea
340
+ Foo
341
+ Bar
342
+ Baz
343
+ SOURCE
344
+ end
345
+
346
+ def test_pre_code
347
+ assert_equal(<<HTML, render(<<HAML))
348
+ <pre><code>Foo&#x000A; bar&#x000A; baz</code></pre>
349
+ HTML
350
+ %pre
351
+ %code
352
+ :preserve
353
+ Foo
354
+ bar
355
+ baz
356
+ HAML
357
+ end
358
+
359
+ def test_boolean_attributes
360
+ assert_equal("<p bar baz='true' foo='bar'></p>\n",
361
+ render("%p{:foo => 'bar', :bar => true, :baz => 'true'}", :format => :html4))
362
+ assert_equal("<p bar='bar' baz='true' foo='bar'></p>\n",
363
+ render("%p{:foo => 'bar', :bar => true, :baz => 'true'}", :format => :xhtml))
364
+
365
+ assert_equal("<p baz='false' foo='bar'></p>\n",
366
+ render("%p{:foo => 'bar', :bar => false, :baz => 'false'}", :format => :html4))
367
+ assert_equal("<p baz='false' foo='bar'></p>\n",
368
+ render("%p{:foo => 'bar', :bar => false, :baz => 'false'}", :format => :xhtml))
369
+ end
370
+
371
+ def test_both_whitespace_nukes_work_together
372
+ assert_equal(<<RESULT, render(<<SOURCE))
373
+ <p><q>Foo
374
+ Bar</q></p>
375
+ RESULT
376
+ %p
377
+ %q><= "Foo\\nBar"
378
+ SOURCE
379
+ end
380
+
381
+ def test_nil_option
382
+ assert_equal("<p foo='bar'></p>\n", render('%p{:foo => "bar"}', :attr_wrapper => nil))
383
+ end
384
+
385
+ def test_comment_with_crazy_nesting
386
+ assert_equal(<<HTML, render(<<HAML))
387
+ foo
388
+ bar
389
+ HTML
390
+ foo
391
+ -#
392
+ ul
393
+ %li{
394
+ foo
395
+ bar
396
+ HAML
397
+ end
398
+
399
+ # Regression tests
400
+
401
+ unless Haml::Util.ruby1_8?
402
+ def test_indentation_after_dynamic_attr_hash
403
+ assert_equal(<<HTML, render(<<HAML))
404
+ <html>
405
+ <body>
406
+ <img src='test' />
407
+ foo
408
+ bar
409
+ </body>
410
+ </html>
411
+ HTML
412
+ %html
413
+ %body
414
+ %img{:src => 'te'+'st'}
415
+ = "foo\\nbar"
416
+ HAML
417
+ end
418
+ end
419
+
420
+ def test_whitespace_nuke_with_both_newlines
421
+ assert_equal("<p>foo</p>\n", render('%p<= "\nfoo\n"'))
422
+ assert_equal(<<HTML, render(<<HAML))
423
+ <p>
424
+ <p>foo</p>
425
+ </p>
426
+ HTML
427
+ %p
428
+ %p<= "\\nfoo\\n"
429
+ HAML
430
+ end
431
+
432
+ def test_whitespace_nuke_with_tags_and_else
433
+ assert_equal(<<HTML, render(<<HAML))
434
+ <a>
435
+ <b>foo</b>
436
+ </a>
437
+ HTML
438
+ %a
439
+ %b<
440
+ - if false
441
+ = "foo"
442
+ - else
443
+ foo
444
+ HAML
445
+
446
+ assert_equal(<<HTML, render(<<HAML))
447
+ <a>
448
+ <b>
449
+ foo
450
+ </b>
451
+ </a>
452
+ HTML
453
+ %a
454
+ %b
455
+ - if false
456
+ = "foo"
457
+ - else
458
+ foo
459
+ HAML
460
+ end
461
+
462
+ def test_outer_whitespace_nuke_with_empty_script
463
+ assert_equal(<<HTML, render(<<HAML))
464
+ <p>
465
+ foo<a></a></p>
466
+ HTML
467
+ %p
468
+ foo
469
+ = " "
470
+ %a>
471
+ HAML
472
+ end
473
+
474
+ def test_both_case_indentation_work_with_deeply_nested_code
475
+ result = <<RESULT
476
+ <h2>
477
+ other
478
+ </h2>
479
+ RESULT
480
+ assert_equal(result, render(<<HAML))
481
+ - case 'other'
482
+ - when 'test'
483
+ %h2
484
+ hi
485
+ - when 'other'
486
+ %h2
487
+ other
488
+ HAML
489
+ assert_equal(result, render(<<HAML))
490
+ - case 'other'
491
+ - when 'test'
492
+ %h2
493
+ hi
494
+ - when 'other'
495
+ %h2
496
+ other
497
+ HAML
498
+ end
499
+
500
+ def test_equals_block_with_ugly
501
+ assert_equal("foo\n", render(<<HAML, :ugly => true))
502
+ = capture_haml do
503
+ foo
504
+ HAML
505
+ end
506
+
507
+ def test_plain_equals_with_ugly
508
+ assert_equal("foo\nbar\n", render(<<HAML, :ugly => true))
509
+ = "foo"
510
+ bar
511
+ HAML
512
+ end
513
+
514
+ def test_inline_if
515
+ assert_equal(<<HTML, render(<<HAML))
516
+ <p>One</p>
517
+ <p></p>
518
+ <p>Three</p>
519
+ HTML
520
+ - for name in ["One", "Two", "Three"]
521
+ %p= name unless name == "Two"
522
+ HAML
523
+ end
524
+
525
+ def test_end_with_method_call
526
+ assert_equal(<<HTML, render(<<HAML))
527
+ 2|3|4
528
+ b-a-r
529
+ HTML
530
+ = [1, 2, 3].map do |i|
531
+ - i + 1
532
+ - end.join("|")
533
+ = "bar".gsub(/./) do |s|
534
+ - s + "-"
535
+ - end.gsub(/-$/) do |s|
536
+ - ''
537
+ HAML
538
+ end
539
+
540
+ def test_nested_end_with_method_call
541
+ assert_equal(<<HTML, render(<<HAML))
542
+ <p>
543
+ 2|3|4
544
+ b-a-r
545
+ </p>
546
+ HTML
547
+ %p
548
+ = [1, 2, 3].map do |i|
549
+ - i + 1
550
+ - end.join("|")
551
+ = "bar".gsub(/./) do |s|
552
+ - s + "-"
553
+ - end.gsub(/-$/) do |s|
554
+ - ''
555
+ HAML
556
+ end
557
+
558
+ def test_silent_end_with_stuff
559
+ assert_equal(<<HTML, render(<<HAML))
560
+ e
561
+ d
562
+ c
563
+ b
564
+ a
565
+ HTML
566
+ - str = "abcde"
567
+ - if true
568
+ = str.slice!(-1).chr
569
+ - end until str.empty?
570
+ HAML
571
+
572
+ assert_equal(<<HTML, render(<<HAML))
573
+ <p>hi!</p>
574
+ HTML
575
+ - if true
576
+ %p hi!
577
+ - end if "foo".gsub(/f/) do
578
+ - "z"
579
+ - end + "bar"
580
+ HAML
581
+ end
582
+
583
+ def test_multiline_with_colon_after_filter
584
+ assert_equal(<<HTML, render(<<HAML))
585
+ Foo
586
+ Bar
587
+ HTML
588
+ :plain
589
+ Foo
590
+ = { :a => "Bar", |
591
+ :b => "Baz" }[:a] |
592
+ HAML
593
+ assert_equal(<<HTML, render(<<HAML))
594
+
595
+ Bar
596
+ HTML
597
+ :plain
598
+ = { :a => "Bar", |
599
+ :b => "Baz" }[:a] |
600
+ HAML
601
+ end
602
+
603
+ def test_multiline_in_filter
604
+ assert_equal(<<HTML, render(<<HAML))
605
+ Foo |
606
+ Bar |
607
+ Baz
608
+ HTML
609
+ :plain
610
+ Foo |
611
+ Bar |
612
+ Baz
613
+ HAML
614
+ end
615
+
616
+ def test_curly_brace
617
+ assert_equal(<<HTML, render(<<HAML))
618
+ Foo { Bar
619
+ HTML
620
+ == Foo { Bar
621
+ HAML
622
+ end
623
+
624
+ def test_escape_attrs_false
625
+ assert_equal(<<HTML, render(<<HAML, :escape_attrs => false))
626
+ <div class='<?php echo "&quot;" ?>' id='foo'>
627
+ bar
628
+ </div>
629
+ HTML
630
+ #foo{:class => '<?php echo "&quot;" ?>'}
631
+ bar
632
+ HAML
633
+ end
634
+
635
+ def test_escape_attrs_always
636
+ assert_equal(<<HTML, render(<<HAML, :escape_attrs => :always))
637
+ <div class='"&amp;lt;&amp;gt;&amp;amp;"' id='foo'>
638
+ bar
639
+ </div>
640
+ HTML
641
+ #foo{:class => '"&lt;&gt;&amp;"'}
642
+ bar
643
+ HAML
644
+ end
645
+
646
+ def test_escape_html
647
+ html = <<HTML
648
+ &amp;
649
+ &
650
+ &amp;
651
+ HTML
652
+
653
+ assert_equal(html, render(<<HAML, :escape_html => true))
654
+ &= "&"
655
+ != "&"
656
+ = "&"
657
+ HAML
658
+
659
+ assert_equal(html, render(<<HAML, :escape_html => true))
660
+ &~ "&"
661
+ !~ "&"
662
+ ~ "&"
663
+ HAML
664
+
665
+ assert_equal(html, render(<<HAML, :escape_html => true))
666
+ & \#{"&"}
667
+ ! \#{"&"}
668
+ \#{"&"}
669
+ HAML
670
+
671
+ assert_equal(html, render(<<HAML, :escape_html => true))
672
+ &== \#{"&"}
673
+ !== \#{"&"}
674
+ == \#{"&"}
675
+ HAML
676
+
677
+ tag_html = <<HTML
678
+ <p>&amp;</p>
679
+ <p>&</p>
680
+ <p>&amp;</p>
681
+ HTML
682
+
683
+ assert_equal(tag_html, render(<<HAML, :escape_html => true))
684
+ %p&= "&"
685
+ %p!= "&"
686
+ %p= "&"
687
+ HAML
688
+
689
+ assert_equal(tag_html, render(<<HAML, :escape_html => true))
690
+ %p&~ "&"
691
+ %p!~ "&"
692
+ %p~ "&"
693
+ HAML
694
+
695
+ assert_equal(tag_html, render(<<HAML, :escape_html => true))
696
+ %p& \#{"&"}
697
+ %p! \#{"&"}
698
+ %p \#{"&"}
699
+ HAML
700
+
701
+ assert_equal(tag_html, render(<<HAML, :escape_html => true))
702
+ %p&== \#{"&"}
703
+ %p!== \#{"&"}
704
+ %p== \#{"&"}
705
+ HAML
706
+ end
707
+
708
+ def test_new_attrs_with_hash
709
+ assert_equal("<a href='#'></a>\n", render('%a(href="#")'))
710
+ end
711
+
712
+ def test_javascript_filter_with_dynamic_interp_and_escape_html
713
+ assert_equal(<<HTML, render(<<HAML, :escape_html => true))
714
+ <script type='text/javascript'>
715
+ //<![CDATA[
716
+ & < > &
717
+ //]]>
718
+ </script>
719
+ HTML
720
+ :javascript
721
+ & < > \#{"&"}
722
+ HAML
723
+ end
724
+
725
+ def test_html5_javascript_filter
726
+ assert_equal(<<HTML, render(<<HAML, :format => :html5))
727
+ <script>
728
+ //<![CDATA[
729
+ foo bar
730
+ //]]>
731
+ </script>
732
+ HTML
733
+ :javascript
734
+ foo bar
735
+ HAML
736
+ end
737
+
738
+ def test_html5_css_filter
739
+ assert_equal(<<HTML, render(<<HAML, :format => :html5))
740
+ <style>
741
+ /*<![CDATA[*/
742
+ foo bar
743
+ /*]]>*/
744
+ </style>
745
+ HTML
746
+ :css
747
+ foo bar
748
+ HAML
749
+ end
750
+
751
+ def test_erb_filter_with_multiline_expr
752
+ assert_equal(<<HTML, render(<<HAML))
753
+ foobarbaz
754
+ HTML
755
+ :erb
756
+ <%= "foo" +
757
+ "bar" +
758
+ "baz" %>
759
+ HAML
760
+ end
761
+
762
+ def test_silent_script_with_hyphen_case
763
+ assert_equal("", render("- 'foo-case-bar-case'"))
764
+ end
765
+
766
+ def test_silent_script_with_hyphen_end
767
+ assert_equal("", render("- 'foo-end-bar-end'"))
768
+ end
769
+
770
+ def test_silent_script_with_hyphen_end_and_block
771
+ assert_equal(<<HTML, render(<<HAML))
772
+ <p>foo-end</p>
773
+ <p>bar-end</p>
774
+ HTML
775
+ - ("foo-end-bar-end".gsub(/\\w+-end/) do |s|
776
+ %p= s
777
+ - end; nil)
778
+ HAML
779
+ end
780
+
781
+ def test_if_without_content_and_else
782
+ assert_equal(<<HTML, render(<<HAML))
783
+ foo
784
+ HTML
785
+ - if false
786
+ - else
787
+ foo
788
+ HAML
789
+
790
+ assert_equal(<<HTML, render(<<HAML))
791
+ foo
792
+ HTML
793
+ - if true
794
+ - if false
795
+ - else
796
+ foo
797
+ HAML
798
+ end
799
+
800
+ def test_html_attributes_with_hash
801
+ assert_equal("<a href='#' rel='top'>Foo</a>\n",
802
+ render('%a(href="#" rel="top") Foo'))
803
+ assert_equal("<a href='#'>Foo</a>\n",
804
+ render('%a(href="#") #{"Foo"}'))
805
+
806
+ assert_equal("<a href='#\"'></a>\n", render('%a(href="#\\"")'))
807
+ end
808
+
809
+ def test_filter_with_newline_and_interp
810
+ assert_equal(<<HTML, render(<<HAML))
811
+ \\n
812
+ HTML
813
+ :plain
814
+ \\n\#{""}
815
+ HAML
816
+ end
817
+
818
+ def test_case_assigned_to_var
819
+ assert_equal(<<HTML, render(<<HAML))
820
+ bar
821
+ HTML
822
+ - var = case 12
823
+ - when 1; "foo"
824
+ - when 12; "bar"
825
+ = var
826
+ HAML
827
+
828
+ assert_equal(<<HTML, render(<<HAML))
829
+ bar
830
+ HTML
831
+ - var = case 12
832
+ - when 1
833
+ - "foo"
834
+ - when 12
835
+ - "bar"
836
+ = var
837
+ HAML
838
+
839
+ assert_equal(<<HTML, render(<<HAML))
840
+ bar
841
+ HTML
842
+ - var = case 12
843
+ - when 1
844
+ - "foo"
845
+ - when 12
846
+ - "bar"
847
+ = var
848
+ HAML
849
+ end
850
+
851
+ def test_nested_case_assigned_to_var
852
+ assert_equal(<<HTML, render(<<HAML))
853
+ bar
854
+ HTML
855
+ - if true
856
+ - var = case 12
857
+ - when 1; "foo"
858
+ - when 12; "bar"
859
+ = var
860
+ HAML
861
+ end
862
+
863
+ def test_case_assigned_to_multiple_vars
864
+ assert_equal(<<HTML, render(<<HAML))
865
+ bar
866
+ bip
867
+ HTML
868
+ - var, vip = case 12
869
+ - when 1; ["foo", "baz"]
870
+ - when 12; ["bar", "bip"]
871
+ = var
872
+ = vip
873
+ HAML
874
+ end
875
+
876
+ def test_if_assigned_to_var
877
+ assert_equal(<<HTML, render(<<HAML))
878
+ foo
879
+ HTML
880
+ - var = if false
881
+ - else
882
+ - "foo"
883
+ = var
884
+ HAML
885
+
886
+ assert_equal(<<HTML, render(<<HAML))
887
+ foo
888
+ HTML
889
+ - var = if false
890
+ - elsif 12
891
+ - "foo"
892
+ - elsif 14; "bar"
893
+ - else
894
+ - "baz"
895
+ = var
896
+ HAML
897
+
898
+ assert_equal(<<HTML, render(<<HAML))
899
+ foo
900
+ HTML
901
+ - var = if false
902
+ - "bar"
903
+ - else
904
+ - "foo"
905
+ = var
906
+ HAML
907
+ end
908
+
909
+ def test_case_with_newline_after_case
910
+ assert_equal(<<HTML, render(<<HAML))
911
+ foo
912
+ HTML
913
+ - case 1
914
+
915
+ - when 1
916
+ foo
917
+ - when 2
918
+ bar
919
+ HAML
920
+
921
+ assert_equal(<<HTML, render(<<HAML))
922
+ bar
923
+ HTML
924
+ - case 2
925
+
926
+ - when 1
927
+ foo
928
+ - when 2
929
+ bar
930
+ HAML
931
+ end
932
+
933
+ def test_escape_html_with_interpolated_if_statement
934
+ assert_equal(<<HTML, render(<<HAML, :escape_html => true))
935
+ foo,
936
+ HTML
937
+ foo\#{"," if true}
938
+ HAML
939
+ end
940
+
941
+ # HTML escaping tests
942
+
943
+ def test_ampersand_equals_should_escape
944
+ assert_equal("<p>\n foo &amp; bar\n</p>\n", render("%p\n &= 'foo & bar'", :escape_html => false))
945
+ end
946
+
947
+ def test_ampersand_equals_inline_should_escape
948
+ assert_equal("<p>foo &amp; bar</p>\n", render("%p&= 'foo & bar'", :escape_html => false))
949
+ end
950
+
951
+ def test_ampersand_equals_should_escape_before_preserve
952
+ assert_equal("<textarea>foo&#x000A;bar</textarea>\n", render('%textarea&= "foo\nbar"', :escape_html => false))
953
+ end
954
+
955
+ def test_bang_equals_should_not_escape
956
+ assert_equal("<p>\n foo & bar\n</p>\n", render("%p\n != 'foo & bar'", :escape_html => true))
957
+ end
958
+
959
+ def test_bang_equals_inline_should_not_escape
960
+ assert_equal("<p>foo & bar</p>\n", render("%p!= 'foo & bar'", :escape_html => true))
961
+ end
962
+
963
+ def test_static_attributes_should_be_escaped
964
+ assert_equal("<img class='atlantis' style='ugly&amp;stupid' />\n",
965
+ render("%img.atlantis{:style => 'ugly&stupid'}"))
966
+ assert_equal("<div class='atlantis' style='ugly&amp;stupid'>foo</div>\n",
967
+ render(".atlantis{:style => 'ugly&stupid'} foo"))
968
+ assert_equal("<p class='atlantis' style='ugly&amp;stupid'>foo</p>\n",
969
+ render("%p.atlantis{:style => 'ugly&stupid'}= 'foo'"))
970
+ assert_equal("<p class='atlantis' style='ugly&#x000A;stupid'></p>\n",
971
+ render("%p.atlantis{:style => \"ugly\\nstupid\"}"))
972
+ end
973
+
974
+ def test_dynamic_attributes_should_be_escaped
975
+ assert_equal("<img alt='' src='&amp;foo.png' />\n",
976
+ render("%img{:width => nil, :src => '&foo.png', :alt => String.new}"))
977
+ assert_equal("<p alt='' src='&amp;foo.png'>foo</p>\n",
978
+ render("%p{:width => nil, :src => '&foo.png', :alt => String.new} foo"))
979
+ assert_equal("<div alt='' src='&amp;foo.png'>foo</div>\n",
980
+ render("%div{:width => nil, :src => '&foo.png', :alt => String.new}= 'foo'"))
981
+ assert_equal("<img alt='' src='foo&#x000A;.png' />\n",
982
+ render("%img{:width => nil, :src => \"foo\\n.png\", :alt => String.new}"))
983
+ end
984
+
985
+ def test_string_double_equals_should_be_esaped
986
+ assert_equal("<p>4&&lt;</p>\n", render("%p== \#{2+2}&\#{'<'}", :escape_html => true))
987
+ assert_equal("<p>4&<</p>\n", render("%p== \#{2+2}&\#{'<'}", :escape_html => false))
988
+ end
989
+
990
+ def test_escaped_inline_string_double_equals
991
+ assert_equal("<p>4&&lt;</p>\n", render("%p&== \#{2+2}&\#{'<'}", :escape_html => true))
992
+ assert_equal("<p>4&&lt;</p>\n", render("%p&== \#{2+2}&\#{'<'}", :escape_html => false))
993
+ end
994
+
995
+ def test_unescaped_inline_string_double_equals
996
+ assert_equal("<p>4&<</p>\n", render("%p!== \#{2+2}&\#{'<'}", :escape_html => true))
997
+ assert_equal("<p>4&<</p>\n", render("%p!== \#{2+2}&\#{'<'}", :escape_html => false))
998
+ end
999
+
1000
+ def test_escaped_string_double_equals
1001
+ assert_equal("<p>\n 4&&lt;\n</p>\n", render("%p\n &== \#{2+2}&\#{'<'}", :escape_html => true))
1002
+ assert_equal("<p>\n 4&&lt;\n</p>\n", render("%p\n &== \#{2+2}&\#{'<'}", :escape_html => false))
1003
+ end
1004
+
1005
+ def test_unescaped_string_double_equals
1006
+ assert_equal("<p>\n 4&<\n</p>\n", render("%p\n !== \#{2+2}&\#{'<'}", :escape_html => true))
1007
+ assert_equal("<p>\n 4&<\n</p>\n", render("%p\n !== \#{2+2}&\#{'<'}", :escape_html => false))
1008
+ end
1009
+
1010
+ def test_string_interpolation_should_be_esaped
1011
+ assert_equal("<p>4&&lt;</p>\n", render("%p \#{2+2}&\#{'<'}", :escape_html => true))
1012
+ assert_equal("<p>4&<</p>\n", render("%p \#{2+2}&\#{'<'}", :escape_html => false))
1013
+ end
1014
+
1015
+ def test_escaped_inline_string_interpolation
1016
+ assert_equal("<p>4&&lt;</p>\n", render("%p& \#{2+2}&\#{'<'}", :escape_html => true))
1017
+ assert_equal("<p>4&&lt;</p>\n", render("%p& \#{2+2}&\#{'<'}", :escape_html => false))
1018
+ end
1019
+
1020
+ def test_unescaped_inline_string_interpolation
1021
+ assert_equal("<p>4&<</p>\n", render("%p! \#{2+2}&\#{'<'}", :escape_html => true))
1022
+ assert_equal("<p>4&<</p>\n", render("%p! \#{2+2}&\#{'<'}", :escape_html => false))
1023
+ end
1024
+
1025
+ def test_escaped_string_interpolation
1026
+ assert_equal("<p>\n 4&&lt;\n</p>\n", render("%p\n & \#{2+2}&\#{'<'}", :escape_html => true))
1027
+ assert_equal("<p>\n 4&&lt;\n</p>\n", render("%p\n & \#{2+2}&\#{'<'}", :escape_html => false))
1028
+ end
1029
+
1030
+ def test_unescaped_string_interpolation
1031
+ assert_equal("<p>\n 4&<\n</p>\n", render("%p\n ! \#{2+2}&\#{'<'}", :escape_html => true))
1032
+ assert_equal("<p>\n 4&<\n</p>\n", render("%p\n ! \#{2+2}&\#{'<'}", :escape_html => false))
1033
+ end
1034
+
1035
+ def test_scripts_should_respect_escape_html_option
1036
+ assert_equal("<p>\n foo &amp; bar\n</p>\n", render("%p\n = 'foo & bar'", :escape_html => true))
1037
+ assert_equal("<p>\n foo & bar\n</p>\n", render("%p\n = 'foo & bar'", :escape_html => false))
1038
+ end
1039
+
1040
+ def test_inline_scripts_should_respect_escape_html_option
1041
+ assert_equal("<p>foo &amp; bar</p>\n", render("%p= 'foo & bar'", :escape_html => true))
1042
+ assert_equal("<p>foo & bar</p>\n", render("%p= 'foo & bar'", :escape_html => false))
1043
+ end
1044
+
1045
+ def test_script_ending_in_comment_should_render_when_html_is_escaped
1046
+ assert_equal("foo&amp;bar\n", render("= 'foo&bar' #comment", :escape_html => true))
1047
+ end
1048
+
1049
+ def test_script_with_if_shouldnt_output
1050
+ assert_equal(<<HTML, render(<<HAML))
1051
+ <p>foo</p>
1052
+ <p></p>
1053
+ HTML
1054
+ %p= "foo"
1055
+ %p= "bar" if false
1056
+ HAML
1057
+ end
1058
+
1059
+ # Options tests
1060
+
1061
+ def test_filename_and_line
1062
+ begin
1063
+ render("\n\n = abc", :filename => 'test', :line => 2)
1064
+ rescue Exception => e
1065
+ assert_kind_of Haml::SyntaxError, e
1066
+ assert_match(/test:4/, e.backtrace.first)
1067
+ end
1068
+
1069
+ begin
1070
+ render("\n\n= 123\n\n= nil[]", :filename => 'test', :line => 2)
1071
+ rescue Exception => e
1072
+ assert_kind_of NoMethodError, e
1073
+ assert_match(/test:6/, e.backtrace.first)
1074
+ end
1075
+ end
1076
+
1077
+ def test_stop_eval
1078
+ assert_equal("", render("= 'Hello'", :suppress_eval => true))
1079
+ assert_equal("", render("- haml_concat 'foo'", :suppress_eval => true))
1080
+ assert_equal("<div id='foo' yes='no' />\n", render("#foo{:yes => 'no'}/", :suppress_eval => true))
1081
+ assert_equal("<div id='foo' />\n", render("#foo{:yes => 'no', :call => a_function() }/", :suppress_eval => true))
1082
+ assert_equal("<div />\n", render("%div[1]/", :suppress_eval => true))
1083
+ assert_equal("", render(":ruby\n Kernel.puts 'hello'", :suppress_eval => true))
1084
+ end
1085
+
1086
+ def test_doctypes
1087
+ assert_equal('<!DOCTYPE html>',
1088
+ render('!!!', :format => :html5).strip)
1089
+ assert_equal('<!DOCTYPE html>', render('!!! 5').strip)
1090
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
1091
+ render('!!! strict').strip)
1092
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
1093
+ render('!!! frameset').strip)
1094
+ assert_equal('<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">',
1095
+ render('!!! mobile').strip)
1096
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">',
1097
+ render('!!! basic').strip)
1098
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
1099
+ render('!!! transitional').strip)
1100
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
1101
+ render('!!!').strip)
1102
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',
1103
+ render('!!! strict', :format => :html4).strip)
1104
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">',
1105
+ render('!!! frameset', :format => :html4).strip)
1106
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
1107
+ render('!!! transitional', :format => :html4).strip)
1108
+ assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
1109
+ render('!!!', :format => :html4).strip)
1110
+ end
1111
+
1112
+ def test_attr_wrapper
1113
+ assert_equal("<p strange=*attrs*></p>\n", render("%p{ :strange => 'attrs'}", :attr_wrapper => '*'))
1114
+ assert_equal("<p escaped='quo\"te'></p>\n", render("%p{ :escaped => 'quo\"te'}", :attr_wrapper => '"'))
1115
+ assert_equal("<p escaped=\"quo'te\"></p>\n", render("%p{ :escaped => 'quo\\'te'}", :attr_wrapper => '"'))
1116
+ assert_equal("<p escaped=\"q'uo&quot;te\"></p>\n", render("%p{ :escaped => 'q\\'uo\"te'}", :attr_wrapper => '"'))
1117
+ assert_equal("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n", render("!!! XML", :attr_wrapper => '"'))
1118
+ end
1119
+
1120
+ def test_autoclose_option
1121
+ assert_equal("<flaz foo='bar' />\n", render("%flaz{:foo => 'bar'}", :autoclose => ["flaz"]))
1122
+ assert_equal(<<HTML, render(<<HAML, :autoclose => [/^flaz/]))
1123
+ <flaz />
1124
+ <flaznicate />
1125
+ <flan></flan>
1126
+ HTML
1127
+ %flaz
1128
+ %flaznicate
1129
+ %flan
1130
+ HAML
1131
+ end
1132
+
1133
+ def test_attrs_parsed_correctly
1134
+ assert_equal("<p boom=>biddly='bar =&gt; baz'></p>\n", render("%p{'boom=>biddly' => 'bar => baz'}"))
1135
+ assert_equal("<p foo,bar='baz, qux'></p>\n", render("%p{'foo,bar' => 'baz, qux'}"))
1136
+ assert_equal("<p escaped='quo&#x000A;te'></p>\n", render("%p{ :escaped => \"quo\\nte\"}"))
1137
+ assert_equal("<p escaped='quo4te'></p>\n", render("%p{ :escaped => \"quo\#{2 + 2}te\"}"))
1138
+ end
1139
+
1140
+ def test_correct_parsing_with_brackets
1141
+ assert_equal("<p class='foo'>{tada} foo</p>\n", render("%p{:class => 'foo'} {tada} foo"))
1142
+ assert_equal("<p class='foo'>deep {nested { things }}</p>\n", render("%p{:class => 'foo'} deep {nested { things }}"))
1143
+ assert_equal("<p class='bar foo'>{a { d</p>\n", render("%p{{:class => 'foo'}, :class => 'bar'} {a { d"))
1144
+ assert_equal("<p foo='bar'>a}</p>\n", render("%p{:foo => 'bar'} a}"))
1145
+
1146
+ foo = []
1147
+ foo[0] = Struct.new('Foo', :id).new
1148
+ assert_equal("<p class='struct_foo' id='struct_foo_new'>New User]</p>\n",
1149
+ render("%p[foo[0]] New User]", :locals => {:foo => foo}))
1150
+ assert_equal("<p class='prefix_struct_foo' id='prefix_struct_foo_new'>New User]</p>\n",
1151
+ render("%p[foo[0], :prefix] New User]", :locals => {:foo => foo}))
1152
+
1153
+ foo[0].id = 1
1154
+ assert_equal("<p class='struct_foo' id='struct_foo_1'>New User]</p>\n",
1155
+ render("%p[foo[0]] New User]", :locals => {:foo => foo}))
1156
+ assert_equal("<p class='prefix_struct_foo' id='prefix_struct_foo_1'>New User]</p>\n",
1157
+ render("%p[foo[0], :prefix] New User]", :locals => {:foo => foo}))
1158
+ end
1159
+
1160
+ def test_empty_attrs
1161
+ assert_equal("<p attr=''>empty</p>\n", render("%p{ :attr => '' } empty"))
1162
+ assert_equal("<p attr=''>empty</p>\n", render("%p{ :attr => x } empty", :locals => {:x => ''}))
1163
+ end
1164
+
1165
+ def test_nil_attrs
1166
+ assert_equal("<p>nil</p>\n", render("%p{ :attr => nil } nil"))
1167
+ assert_equal("<p>nil</p>\n", render("%p{ :attr => x } nil", :locals => {:x => nil}))
1168
+ end
1169
+
1170
+ def test_nil_id_with_syntactic_id
1171
+ assert_equal("<p id='foo'>nil</p>\n", render("%p#foo{:id => nil} nil"))
1172
+ assert_equal("<p id='foo_bar'>nil</p>\n", render("%p#foo{{:id => 'bar'}, :id => nil} nil"))
1173
+ assert_equal("<p id='foo_bar'>nil</p>\n", render("%p#foo{{:id => nil}, :id => 'bar'} nil"))
1174
+ end
1175
+
1176
+ def test_nil_class_with_syntactic_class
1177
+ assert_equal("<p class='foo'>nil</p>\n", render("%p.foo{:class => nil} nil"))
1178
+ assert_equal("<p class='bar foo'>nil</p>\n", render("%p.bar.foo{:class => nil} nil"))
1179
+ assert_equal("<p class='bar foo'>nil</p>\n", render("%p.foo{{:class => 'bar'}, :class => nil} nil"))
1180
+ assert_equal("<p class='bar foo'>nil</p>\n", render("%p.foo{{:class => nil}, :class => 'bar'} nil"))
1181
+ end
1182
+
1183
+ def test_locals
1184
+ assert_equal("<p>Paragraph!</p>\n", render("%p= text", :locals => { :text => "Paragraph!" }))
1185
+ end
1186
+
1187
+ def test_dynamic_attrs_shouldnt_register_as_literal_values
1188
+ assert_equal("<p a='b2c'></p>\n", render('%p{:a => "b#{1 + 1}c"}'))
1189
+ assert_equal("<p a='b2c'></p>\n", render("%p{:a => 'b' + (1 + 1).to_s + 'c'}"))
1190
+ end
1191
+
1192
+ def test_dynamic_attrs_with_self_closed_tag
1193
+ assert_equal("<a b='2' />\nc\n", render("%a{'b' => 1 + 1}/\n= 'c'\n"))
1194
+ end
1195
+
1196
+ EXCEPTION_MAP.each do |key, value|
1197
+ define_method("test_exception (#{key.inspect})") do
1198
+ begin
1199
+ render(key, :filename => __FILE__)
1200
+ rescue Exception => err
1201
+ value = [value] unless value.is_a?(Array)
1202
+ expected_message, line_no = value
1203
+ line_no ||= key.split("\n").length
1204
+
1205
+ if expected_message == :compile
1206
+ if Haml::Util.ruby1_8?
1207
+ assert_match(/^compile error\n/, err.message, "Line: #{key}")
1208
+ else
1209
+ assert_match(/^#{Regexp.quote __FILE__}:#{line_no}: syntax error,/, err.message, "Line: #{key}")
1210
+ end
1211
+ else
1212
+ assert_equal(expected_message, err.message, "Line: #{key}")
1213
+ end
1214
+
1215
+ if Haml::Util.ruby1_8?
1216
+ # Sometimes, the first backtrace entry is *only* in the message.
1217
+ # No idea why.
1218
+ bt =
1219
+ if expected_message == :compile && err.message.include?("\n")
1220
+ err.message.split("\n", 2)[1]
1221
+ else
1222
+ err.backtrace[0]
1223
+ end
1224
+ assert_match(/^#{Regexp.escape(__FILE__)}:#{line_no}/, bt, "Line: #{key}")
1225
+ end
1226
+ else
1227
+ assert(false, "Exception not raised for\n#{key}")
1228
+ end
1229
+ end
1230
+ end
1231
+
1232
+ def test_exception_line
1233
+ render("a\nb\n!!!\n c\nd")
1234
+ rescue Haml::SyntaxError => e
1235
+ assert_equal("(test_exception_line):4", e.backtrace[0])
1236
+ else
1237
+ assert(false, '"a\nb\n!!!\n c\nd" doesn\'t produce an exception')
1238
+ end
1239
+
1240
+ def test_exception
1241
+ render("%p\n hi\n %a= undefined\n= 12")
1242
+ rescue Exception => e
1243
+ assert_match("(test_exception):3", e.backtrace[0])
1244
+ else
1245
+ # Test failed... should have raised an exception
1246
+ assert(false)
1247
+ end
1248
+
1249
+ def test_compile_error
1250
+ render("a\nb\n- fee)\nc")
1251
+ rescue Exception => e
1252
+ assert_match(/\(test_compile_error\):3: syntax error/i, e.message)
1253
+ else
1254
+ assert(false,
1255
+ '"a\nb\n- fee)\nc" doesn\'t produce an exception!')
1256
+ end
1257
+
1258
+ def test_unbalanced_brackets
1259
+ render('foo #{1 + 5} foo #{6 + 7 bar #{8 + 9}')
1260
+ rescue Haml::SyntaxError => e
1261
+ assert_equal("Unbalanced brackets.", e.message)
1262
+ end
1263
+
1264
+ def test_balanced_conditional_comments
1265
+ assert_equal("<!--[if !(IE 6)|(IE 7)]> Bracket: ] <![endif]-->\n",
1266
+ render("/[if !(IE 6)|(IE 7)] Bracket: ]"))
1267
+ end
1268
+
1269
+ def test_empty_filter
1270
+ assert_equal(<<END, render(':javascript'))
1271
+ <script type='text/javascript'>
1272
+ //<![CDATA[
1273
+
1274
+ //]]>
1275
+ </script>
1276
+ END
1277
+ end
1278
+
1279
+ def test_ugly_filter
1280
+ assert_equal(<<END, render(":sass\n #foo\n bar: baz", :ugly => true))
1281
+ #foo {
1282
+ bar: baz; }
1283
+ END
1284
+ end
1285
+
1286
+ def test_css_filter
1287
+ assert_equal(<<HTML, render(<<HAML))
1288
+ <style type='text/css'>
1289
+ /*<![CDATA[*/
1290
+ #foo {
1291
+ bar: baz; }
1292
+ /*]]>*/
1293
+ </style>
1294
+ HTML
1295
+ :css
1296
+ #foo {
1297
+ bar: baz; }
1298
+ HAML
1299
+ end
1300
+
1301
+ def test_local_assigns_dont_modify_class
1302
+ assert_equal("bar\n", render("= foo", :locals => {:foo => 'bar'}))
1303
+ assert_equal(nil, defined?(foo))
1304
+ end
1305
+
1306
+ def test_object_ref_with_nil_id
1307
+ user = User.new
1308
+ assert_equal("<p class='struct_user' id='struct_user_new'>New User</p>\n",
1309
+ render("%p[user] New User", :locals => {:user => user}))
1310
+ end
1311
+
1312
+ def test_object_ref_before_attrs
1313
+ user = User.new 42
1314
+ assert_equal("<p class='struct_user' id='struct_user_42' style='width: 100px;'>New User</p>\n",
1315
+ render("%p[user]{:style => 'width: 100px;'} New User", :locals => {:user => user}))
1316
+ end
1317
+
1318
+ def test_object_ref_with_custom_haml_class
1319
+ custom = CustomHamlClass.new 42
1320
+ assert_equal("<p class='my_thing' id='my_thing_42' style='width: 100px;'>My Thing</p>\n",
1321
+ render("%p[custom]{:style => 'width: 100px;'} My Thing", :locals => {:custom => custom}))
1322
+ end
1323
+
1324
+ def test_non_literal_attributes
1325
+ assert_equal("<p a1='foo' a2='bar' a3='baz' />\n",
1326
+ render("%p{a2, a1, :a3 => 'baz'}/",
1327
+ :locals => {:a1 => {:a1 => 'foo'}, :a2 => {:a2 => 'bar'}}))
1328
+ end
1329
+
1330
+ def test_render_should_accept_a_binding_as_scope
1331
+ string = "This is a string!"
1332
+ string.instance_variable_set("@var", "Instance variable")
1333
+ b = string.instance_eval do
1334
+ var = "Local variable"
1335
+ binding
1336
+ end
1337
+
1338
+ assert_equal("<p>THIS IS A STRING!</p>\n<p>Instance variable</p>\n<p>Local variable</p>\n",
1339
+ render("%p= upcase\n%p= @var\n%p= var", :scope => b))
1340
+ end
1341
+
1342
+ def test_yield_should_work_with_binding
1343
+ assert_equal("12\nFOO\n", render("= yield\n= upcase", :scope => "foo".instance_eval{binding}) { 12 })
1344
+ end
1345
+
1346
+ def test_yield_should_work_with_def_method
1347
+ s = "foo"
1348
+ engine("= yield\n= upcase").def_method(s, :render)
1349
+ assert_equal("12\nFOO\n", s.render { 12 })
1350
+ end
1351
+
1352
+ def test_def_method_with_module
1353
+ engine("= yield\n= upcase").def_method(String, :render_haml)
1354
+ assert_equal("12\nFOO\n", "foo".render_haml { 12 })
1355
+ end
1356
+
1357
+ def test_def_method_locals
1358
+ obj = Object.new
1359
+ engine("%p= foo\n.bar{:baz => baz}= boom").def_method(obj, :render, :foo, :baz, :boom)
1360
+ assert_equal("<p>1</p>\n<div baz='2' class='bar'>3</div>\n", obj.render(:foo => 1, :baz => 2, :boom => 3))
1361
+ end
1362
+
1363
+ def test_render_proc_locals
1364
+ proc = engine("%p= foo\n.bar{:baz => baz}= boom").render_proc(Object.new, :foo, :baz, :boom)
1365
+ assert_equal("<p>1</p>\n<div baz='2' class='bar'>3</div>\n", proc[:foo => 1, :baz => 2, :boom => 3])
1366
+ end
1367
+
1368
+ def test_render_proc_with_binding
1369
+ assert_equal("FOO\n", engine("= upcase").render_proc("foo".instance_eval{binding}).call)
1370
+ end
1371
+
1372
+ def test_haml_buffer_gets_reset_even_with_exception
1373
+ scope = Object.new
1374
+ render("- raise Haml::Error", :scope => scope)
1375
+ assert(false, "Expected exception")
1376
+ rescue Exception
1377
+ assert_nil(scope.send(:haml_buffer))
1378
+ end
1379
+
1380
+ def test_def_method_haml_buffer_gets_reset_even_with_exception
1381
+ scope = Object.new
1382
+ engine("- raise Haml::Error").def_method(scope, :render)
1383
+ scope.render
1384
+ assert(false, "Expected exception")
1385
+ rescue Exception
1386
+ assert_nil(scope.send(:haml_buffer))
1387
+ end
1388
+
1389
+ def test_render_proc_haml_buffer_gets_reset_even_with_exception
1390
+ scope = Object.new
1391
+ proc = engine("- raise Haml::Error").render_proc(scope)
1392
+ proc.call
1393
+ assert(false, "Expected exception")
1394
+ rescue Exception
1395
+ assert_nil(scope.send(:haml_buffer))
1396
+ end
1397
+
1398
+ def test_ugly_true
1399
+ assert_equal("<div id='outer'>\n<div id='inner'>\n<p>hello world</p>\n</div>\n</div>\n",
1400
+ render("#outer\n #inner\n %p hello world", :ugly => true))
1401
+
1402
+ assert_equal("<p>#{'s' * 75}</p>\n",
1403
+ render("%p #{'s' * 75}", :ugly => true))
1404
+
1405
+ assert_equal("<p>#{'s' * 75}</p>\n",
1406
+ render("%p= 's' * 75", :ugly => true))
1407
+ end
1408
+
1409
+ def test_auto_preserve_unless_ugly
1410
+ assert_equal("<pre>foo&#x000A;bar</pre>\n", render('%pre="foo\nbar"'))
1411
+ assert_equal("<pre>foo\nbar</pre>\n", render("%pre\n foo\n bar"))
1412
+ assert_equal("<pre>foo\nbar</pre>\n", render('%pre="foo\nbar"', :ugly => true))
1413
+ assert_equal("<pre>foo\nbar</pre>\n", render("%pre\n foo\n bar", :ugly => true))
1414
+ end
1415
+
1416
+ def test_xhtml_output_option
1417
+ assert_equal "<p>\n <br />\n</p>\n", render("%p\n %br", :format => :xhtml)
1418
+ assert_equal "<a />\n", render("%a/", :format => :xhtml)
1419
+ end
1420
+
1421
+ def test_arbitrary_output_option
1422
+ assert_raise_message(Haml::Error, "Invalid output format :html1") do
1423
+ engine("%br", :format => :html1)
1424
+ end
1425
+ end
1426
+
1427
+ def test_static_hashes
1428
+ assert_equal("<a b='a =&gt; b'></a>\n", render("%a{:b => 'a => b'}", :suppress_eval => true))
1429
+ assert_equal("<a b='a, b'></a>\n", render("%a{:b => 'a, b'}", :suppress_eval => true))
1430
+ assert_equal("<a b='a\tb'></a>\n", render('%a{:b => "a\tb"}', :suppress_eval => true))
1431
+ assert_equal("<a b='a\#{foo}b'></a>\n", render('%a{:b => "a\\#{foo}b"}', :suppress_eval => true))
1432
+ end
1433
+
1434
+ def test_dynamic_hashes_with_suppress_eval
1435
+ assert_equal("<a></a>\n", render('%a{:b => "a #{1 + 1} b", :c => "d"}', :suppress_eval => true))
1436
+ end
1437
+
1438
+ def test_utf8_attrs
1439
+ assert_equal("<a href='héllo'></a>\n", render("%a{:href => 'héllo'}"))
1440
+ assert_equal("<a href='héllo'></a>\n", render("%a(href='héllo')"))
1441
+ end
1442
+
1443
+ # HTML 4.0
1444
+
1445
+ def test_html_has_no_self_closing_tags
1446
+ assert_equal "<p>\n <br>\n</p>\n", render("%p\n %br", :format => :html4)
1447
+ assert_equal "<br>\n", render("%br/", :format => :html4)
1448
+ end
1449
+
1450
+ def test_html_renders_empty_node_with_closing_tag
1451
+ assert_equal "<div class='foo'></div>\n", render(".foo", :format => :html4)
1452
+ end
1453
+
1454
+ def test_html_doesnt_add_slash_to_self_closing_tags
1455
+ assert_equal "<a>\n", render("%a/", :format => :html4)
1456
+ assert_equal "<a foo='2'>\n", render("%a{:foo => 1 + 1}/", :format => :html4)
1457
+ assert_equal "<meta>\n", render("%meta", :format => :html4)
1458
+ assert_equal "<meta foo='2'>\n", render("%meta{:foo => 1 + 1}", :format => :html4)
1459
+ end
1460
+
1461
+ def test_html_ignores_xml_prolog_declaration
1462
+ assert_equal "", render('!!! XML', :format => :html4)
1463
+ end
1464
+
1465
+ def test_html_has_different_doctype
1466
+ assert_equal %{<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n},
1467
+ render('!!!', :format => :html4)
1468
+ end
1469
+
1470
+ # because anything before the doctype triggers quirks mode in IE
1471
+ def test_xml_prolog_and_doctype_dont_result_in_a_leading_whitespace_in_html
1472
+ assert_no_match(/^\s+/, render("!!! xml\n!!!", :format => :html4))
1473
+ end
1474
+
1475
+ # HTML5
1476
+ def test_html5_doctype
1477
+ assert_equal %{<!DOCTYPE html>\n}, render('!!!', :format => :html5)
1478
+ end
1479
+
1480
+ # HTML5 custom data attributes
1481
+ def test_html5_data_attributes
1482
+ assert_equal("<div data-author_id='123' data-biz='baz' data-foo='bar'></div>\n",
1483
+ render("%div{:data => {:author_id => 123, :foo => 'bar', :biz => 'baz'}}"))
1484
+
1485
+ assert_equal("<div data-one_plus_one='2'></div>\n",
1486
+ render("%div{:data => {:one_plus_one => 1+1}}"))
1487
+
1488
+ assert_equal("<div data-foo='Here&apos;s a \"quoteful\" string.'></div>\n",
1489
+ render(%{%div{:data => {:foo => %{Here's a "quoteful" string.}}}})) #'
1490
+ end
1491
+
1492
+ def test_html5_data_attributes_with_multiple_defs
1493
+ # Should always use the more-explicit attribute
1494
+ assert_equal("<div data-foo='second'></div>\n",
1495
+ render("%div{:data => {:foo => 'first'}, 'data-foo' => 'second'}"))
1496
+ assert_equal("<div data-foo='first'></div>\n",
1497
+ render("%div{'data-foo' => 'first', :data => {:foo => 'second'}}"))
1498
+ end
1499
+
1500
+ def test_html5_data_attributes_with_attr_method
1501
+ Haml::Helpers.module_eval do
1502
+ def data_hash
1503
+ {:data => {:foo => "bar", :baz => "bang"}}
1504
+ end
1505
+
1506
+ def data_val
1507
+ {:data => "dat"}
1508
+ end
1509
+ end
1510
+
1511
+ assert_equal("<div data-baz='bang' data-brat='wurst' data-foo='blip'></div>\n",
1512
+ render("%div{data_hash, :data => {:foo => 'blip', :brat => 'wurst'}}"))
1513
+ assert_equal("<div data-baz='bang' data-foo='blip'></div>\n",
1514
+ render("%div{data_hash, 'data-foo' => 'blip'}"))
1515
+ assert_equal("<div data-baz='bang' data-foo='bar' data='dat'></div>\n",
1516
+ render("%div{data_hash, :data => 'dat'}"))
1517
+ assert_equal("<div data-brat='wurst' data-foo='blip' data='dat'></div>\n",
1518
+ render("%div{data_val, :data => {:foo => 'blip', :brat => 'wurst'}}"))
1519
+ end
1520
+
1521
+ # New attributes
1522
+
1523
+ def test_basic_new_attributes
1524
+ assert_equal("<a>bar</a>\n", render("%a() bar"))
1525
+ assert_equal("<a href='foo'>bar</a>\n", render("%a(href='foo') bar"))
1526
+ assert_equal("<a b='c' c='d' d='e'>baz</a>\n", render(%q{%a(b="c" c='d' d="e") baz}))
1527
+ end
1528
+
1529
+ def test_new_attribute_ids
1530
+ assert_equal("<div id='foo_bar'></div>\n", render("#foo(id='bar')"))
1531
+ assert_equal("<div id='foo_baz_bar'></div>\n", render("#foo{:id => 'bar'}(id='baz')"))
1532
+ assert_equal("<div id='foo_baz_bar'></div>\n", render("#foo(id='baz'){:id => 'bar'}"))
1533
+ foo = User.new(42)
1534
+ assert_equal("<div class='struct_user' id='foo_baz_bar_struct_user_42'></div>\n",
1535
+ render("#foo(id='baz'){:id => 'bar'}[foo]", :locals => {:foo => foo}))
1536
+ assert_equal("<div class='struct_user' id='foo_baz_bar_struct_user_42'></div>\n",
1537
+ render("#foo(id='baz')[foo]{:id => 'bar'}", :locals => {:foo => foo}))
1538
+ assert_equal("<div class='struct_user' id='foo_baz_bar_struct_user_42'></div>\n",
1539
+ render("#foo[foo](id='baz'){:id => 'bar'}", :locals => {:foo => foo}))
1540
+ assert_equal("<div class='struct_user' id='foo_baz_bar_struct_user_42'></div>\n",
1541
+ render("#foo[foo]{:id => 'bar'}(id='baz')", :locals => {:foo => foo}))
1542
+ end
1543
+
1544
+ def test_new_attribute_classes
1545
+ assert_equal("<div class='bar foo'></div>\n", render(".foo(class='bar')"))
1546
+ assert_equal("<div class='bar baz foo'></div>\n", render(".foo{:class => 'bar'}(class='baz')"))
1547
+ assert_equal("<div class='bar baz foo'></div>\n", render(".foo(class='baz'){:class => 'bar'}"))
1548
+ foo = User.new(42)
1549
+ assert_equal("<div class='bar baz foo struct_user' id='struct_user_42'></div>\n",
1550
+ render(".foo(class='baz'){:class => 'bar'}[foo]", :locals => {:foo => foo}))
1551
+ assert_equal("<div class='bar baz foo struct_user' id='struct_user_42'></div>\n",
1552
+ render(".foo[foo](class='baz'){:class => 'bar'}", :locals => {:foo => foo}))
1553
+ assert_equal("<div class='bar baz foo struct_user' id='struct_user_42'></div>\n",
1554
+ render(".foo[foo]{:class => 'bar'}(class='baz')", :locals => {:foo => foo}))
1555
+ end
1556
+
1557
+ def test_dynamic_new_attributes
1558
+ assert_equal("<a href='12'>bar</a>\n", render("%a(href=foo) bar", :locals => {:foo => 12}))
1559
+ assert_equal("<a b='12' c='13' d='14'>bar</a>\n", render("%a(b=b c='13' d=d) bar", :locals => {:b => 12, :d => 14}))
1560
+ end
1561
+
1562
+ def test_new_attribute_interpolation
1563
+ assert_equal("<a href='12'>bar</a>\n", render('%a(href="1#{1 + 1}") bar'))
1564
+ assert_equal("<a href='2: 2, 3: 3'>bar</a>\n", render(%q{%a(href='2: #{1 + 1}, 3: #{foo}') bar}, :locals => {:foo => 3}))
1565
+ assert_equal(%Q{<a href='1\#{1 + 1}'>bar</a>\n}, render('%a(href="1\#{1 + 1}") bar'))
1566
+ end
1567
+
1568
+ def test_truthy_new_attributes
1569
+ assert_equal("<a href='href'>bar</a>\n", render("%a(href) bar"))
1570
+ assert_equal("<a bar='baz' href>bar</a>\n", render("%a(href bar='baz') bar", :format => :html5))
1571
+ assert_equal("<a href='href'>bar</a>\n", render("%a(href=true) bar"))
1572
+ assert_equal("<a>bar</a>\n", render("%a(href=false) bar"))
1573
+ end
1574
+
1575
+ def test_new_attribute_parsing
1576
+ assert_equal("<a a2='b2'>bar</a>\n", render("%a(a2=b2) bar", :locals => {:b2 => 'b2'}))
1577
+ assert_equal(%Q{<a a='foo"bar'>bar</a>\n}, render(%q{%a(a="#{'foo"bar'}") bar})) #'
1578
+ assert_equal(%Q{<a a="foo'bar">bar</a>\n}, render(%q{%a(a="#{"foo'bar"}") bar})) #'
1579
+ assert_equal(%Q{<a a='foo"bar'>bar</a>\n}, render(%q{%a(a='foo"bar') bar}))
1580
+ assert_equal(%Q{<a a="foo'bar">bar</a>\n}, render(%q{%a(a="foo'bar") bar}))
1581
+ assert_equal("<a a:b='foo'>bar</a>\n", render("%a(a:b='foo') bar"))
1582
+ assert_equal("<a a='foo' b='bar'>bar</a>\n", render("%a(a = 'foo' b = 'bar') bar"))
1583
+ assert_equal("<a a='foo' b='bar'>bar</a>\n", render("%a(a = foo b = bar) bar", :locals => {:foo => 'foo', :bar => 'bar'}))
1584
+ assert_equal("<a a='foo'>(b='bar')</a>\n", render("%a(a='foo')(b='bar')"))
1585
+ assert_equal("<a a='foo)bar'>baz</a>\n", render("%a(a='foo)bar') baz"))
1586
+ assert_equal("<a a='foo'>baz</a>\n", render("%a( a = 'foo' ) baz"))
1587
+ end
1588
+
1589
+ def test_new_attribute_escaping
1590
+ assert_equal(%Q{<a a='foo " bar'>bar</a>\n}, render(%q{%a(a="foo \" bar") bar}))
1591
+ assert_equal(%Q{<a a='foo \\" bar'>bar</a>\n}, render(%q{%a(a="foo \\\\\" bar") bar}))
1592
+
1593
+ assert_equal(%Q{<a a="foo ' bar">bar</a>\n}, render(%q{%a(a='foo \' bar') bar}))
1594
+ assert_equal(%Q{<a a="foo \\' bar">bar</a>\n}, render(%q{%a(a='foo \\\\\' bar') bar}))
1595
+
1596
+ assert_equal(%Q{<a a='foo \\ bar'>bar</a>\n}, render(%q{%a(a="foo \\\\ bar") bar}))
1597
+ assert_equal(%Q{<a a='foo \#{1 + 1} bar'>bar</a>\n}, render(%q{%a(a="foo \#{1 + 1} bar") bar}))
1598
+ end
1599
+
1600
+ def test_multiline_new_attribute
1601
+ assert_equal("<a a='b' c='d'>bar</a>\n", render("%a(a='b'\n c='d') bar"))
1602
+ assert_equal("<a a='b' b='c' c='d' d='e' e='f' f='j'>bar</a>\n",
1603
+ render("%a(a='b' b='c'\n c='d' d=e\n e='f' f='j') bar", :locals => {:e => 'e'}))
1604
+ end
1605
+
1606
+ def test_new_and_old_attributes
1607
+ assert_equal("<a a='b' c='d'>bar</a>\n", render("%a(a='b'){:c => 'd'} bar"))
1608
+ assert_equal("<a a='b' c='d'>bar</a>\n", render("%a{:c => 'd'}(a='b') bar"))
1609
+ assert_equal("<a a='b' c='d'>bar</a>\n", render("%a(c='d'){:a => 'b'} bar"))
1610
+ assert_equal("<a a='b' c='d'>bar</a>\n", render("%a{:a => 'b'}(c='d') bar"))
1611
+
1612
+ # Old-style always takes precedence over new-style,
1613
+ # because theoretically old-style could have arbitrary end-of-method-call syntax.
1614
+ assert_equal("<a a='b'>bar</a>\n", render("%a{:a => 'b'}(a='d') bar"))
1615
+ assert_equal("<a a='b'>bar</a>\n", render("%a(a='d'){:a => 'b'} bar"))
1616
+
1617
+ assert_equal("<a a='b' b='c' c='d' d='e'>bar</a>\n",
1618
+ render("%a{:a => 'b',\n:b => 'c'}(c='d'\nd='e') bar"))
1619
+
1620
+ locals = {:b => 'b', :d => 'd'}
1621
+ assert_equal("<p a='b' c='d'></p>\n", render("%p{:a => b}(c=d)", :locals => locals))
1622
+ assert_equal("<p a='b' c='d'></p>\n", render("%p(a=b){:c => d}", :locals => locals))
1623
+ end
1624
+
1625
+ # Ruby Multiline
1626
+
1627
+ def test_silent_ruby_multiline
1628
+ assert_equal(<<HTML, render(<<HAML))
1629
+ bar, baz, bang
1630
+ <p>foo</p>
1631
+ HTML
1632
+ - foo = ["bar",
1633
+ "baz",
1634
+ "bang"]
1635
+ = foo.join(", ")
1636
+ %p foo
1637
+ HAML
1638
+ end
1639
+
1640
+ def test_loud_ruby_multiline
1641
+ assert_equal(<<HTML, render(<<HAML))
1642
+ bar, baz, bang
1643
+ <p>foo</p>
1644
+ <p>bar</p>
1645
+ HTML
1646
+ = ["bar",
1647
+ "baz",
1648
+ "bang"].join(", ")
1649
+ %p foo
1650
+ %p bar
1651
+ HAML
1652
+ end
1653
+
1654
+ def test_escaped_loud_ruby_multiline
1655
+ assert_equal(<<HTML, render(<<HAML))
1656
+ bar&lt;, baz, bang
1657
+ <p>foo</p>
1658
+ <p>bar</p>
1659
+ HTML
1660
+ &= ["bar<",
1661
+ "baz",
1662
+ "bang"].join(", ")
1663
+ %p foo
1664
+ %p bar
1665
+ HAML
1666
+ end
1667
+
1668
+ def test_unescaped_loud_ruby_multiline
1669
+ assert_equal(<<HTML, render(<<HAML, :escape_html => true))
1670
+ bar<, baz, bang
1671
+ <p>foo</p>
1672
+ <p>bar</p>
1673
+ HTML
1674
+ != ["bar<",
1675
+ "baz",
1676
+ "bang"].join(", ")
1677
+ %p foo
1678
+ %p bar
1679
+ HAML
1680
+ end
1681
+
1682
+ def test_flattened_loud_ruby_multiline
1683
+ assert_equal(<<HTML, render(<<HAML))
1684
+ <pre>bar&#x000A;baz&#x000A;bang</pre>
1685
+ <p>foo</p>
1686
+ <p>bar</p>
1687
+ HTML
1688
+ ~ "<pre>" + ["bar",
1689
+ "baz",
1690
+ "bang"].join("\\n") + "</pre>"
1691
+ %p foo
1692
+ %p bar
1693
+ HAML
1694
+ end
1695
+
1696
+ def test_loud_ruby_multiline_with_block
1697
+ assert_equal(<<HTML, render(<<HAML))
1698
+ #{%w[far faz fang]}
1699
+ <p>foo</p>
1700
+ <p>bar</p>
1701
+ HTML
1702
+ = ["bar",
1703
+ "baz",
1704
+ "bang"].map do |str|
1705
+ - str.gsub("ba",
1706
+ "fa")
1707
+ %p foo
1708
+ %p bar
1709
+ HAML
1710
+ end
1711
+
1712
+ def test_silent_ruby_multiline_with_block
1713
+ assert_equal(<<HTML, render(<<HAML))
1714
+ far
1715
+ faz
1716
+ fang
1717
+ <p>foo</p>
1718
+ <p>bar</p>
1719
+ HTML
1720
+ - ["bar",
1721
+ "baz",
1722
+ "bang"].map do |str|
1723
+ = str.gsub("ba",
1724
+ "fa")
1725
+ %p foo
1726
+ %p bar
1727
+ HAML
1728
+ end
1729
+
1730
+ def test_ruby_multiline_in_tag
1731
+ assert_equal(<<HTML, render(<<HAML))
1732
+ <p>foo, bar, baz</p>
1733
+ <p>foo</p>
1734
+ <p>bar</p>
1735
+ HTML
1736
+ %p= ["foo",
1737
+ "bar",
1738
+ "baz"].join(", ")
1739
+ %p foo
1740
+ %p bar
1741
+ HAML
1742
+ end
1743
+
1744
+ def test_escaped_ruby_multiline_in_tag
1745
+ assert_equal(<<HTML, render(<<HAML))
1746
+ <p>foo&lt;, bar, baz</p>
1747
+ <p>foo</p>
1748
+ <p>bar</p>
1749
+ HTML
1750
+ %p&= ["foo<",
1751
+ "bar",
1752
+ "baz"].join(", ")
1753
+ %p foo
1754
+ %p bar
1755
+ HAML
1756
+ end
1757
+
1758
+ def test_unescaped_ruby_multiline_in_tag
1759
+ assert_equal(<<HTML, render(<<HAML, :escape_html => true))
1760
+ <p>foo<, bar, baz</p>
1761
+ <p>foo</p>
1762
+ <p>bar</p>
1763
+ HTML
1764
+ %p!= ["foo<",
1765
+ "bar",
1766
+ "baz"].join(", ")
1767
+ %p foo
1768
+ %p bar
1769
+ HAML
1770
+ end
1771
+
1772
+ def test_ruby_multiline_with_normal_multiline
1773
+ assert_equal(<<HTML, render(<<HAML))
1774
+ foobarbar, baz, bang
1775
+ <p>foo</p>
1776
+ <p>bar</p>
1777
+ HTML
1778
+ = "foo" + |
1779
+ "bar" + |
1780
+ ["bar", |
1781
+ "baz",
1782
+ "bang"].join(", ")
1783
+ %p foo
1784
+ %p bar
1785
+ HAML
1786
+ end
1787
+
1788
+ def test_ruby_multiline_after_filter
1789
+ assert_equal(<<HTML, render(<<HAML))
1790
+ foo
1791
+ bar
1792
+ bar, baz, bang
1793
+ <p>foo</p>
1794
+ <p>bar</p>
1795
+ HTML
1796
+ :plain
1797
+ foo
1798
+ bar
1799
+ = ["bar",
1800
+ "baz",
1801
+ "bang"].join(", ")
1802
+ %p foo
1803
+ %p bar
1804
+ HAML
1805
+ end
1806
+
1807
+ # Encodings
1808
+
1809
+ def test_utf_8_bom
1810
+ assert_equal <<HTML, render(<<HAML)
1811
+ <div class='foo'>
1812
+ <p>baz</p>
1813
+ </div>
1814
+ HTML
1815
+ \xEF\xBB\xBF.foo
1816
+ %p baz
1817
+ HAML
1818
+ end
1819
+
1820
+ unless Haml::Util.ruby1_8?
1821
+ def test_default_encoding
1822
+ assert_equal(Encoding.find("utf-8"), render(<<HAML.encode("us-ascii")).encoding)
1823
+ %p bar
1824
+ %p foo
1825
+ HAML
1826
+ end
1827
+
1828
+ def test_fake_ascii_encoding
1829
+ assert_encoded_equal(<<HTML.force_encoding("ascii-8bit"), render(<<HAML, :encoding => "ascii-8bit"))
1830
+ <p>bâr</p>
1831
+ <p>föö</p>
1832
+ HTML
1833
+ %p bâr
1834
+ %p föö
1835
+ HAML
1836
+ end
1837
+
1838
+ def test_convert_template_render_proc
1839
+ assert_converts_template_properly {|e| e.render_proc.call}
1840
+ end
1841
+
1842
+ def test_convert_template_render
1843
+ assert_converts_template_properly {|e| e.render}
1844
+ end
1845
+
1846
+ def test_convert_template_def_method
1847
+ assert_converts_template_properly do |e|
1848
+ o = Object.new
1849
+ e.def_method(o, :render)
1850
+ o.render
1851
+ end
1852
+ end
1853
+
1854
+ def test_encoding_error
1855
+ render("foo\nbar\nb\xFEaz".force_encoding("utf-8"))
1856
+ assert(false, "Expected exception")
1857
+ rescue Haml::Error => e
1858
+ assert_equal(3, e.line)
1859
+ assert_equal('Invalid UTF-8 character "\xFE"', e.message)
1860
+ end
1861
+
1862
+ def test_ascii_incompatible_encoding_error
1863
+ template = "foo\nbar\nb_z".encode("utf-16le")
1864
+ template[9] = "\xFE".force_encoding("utf-16le")
1865
+ render(template)
1866
+ assert(false, "Expected exception")
1867
+ rescue Haml::Error => e
1868
+ assert_equal(3, e.line)
1869
+ assert_equal('Invalid UTF-16LE character "\xFE"', e.message)
1870
+ end
1871
+
1872
+ def test_same_coding_comment_as_encoding
1873
+ assert_renders_encoded(<<HTML, <<HAML)
1874
+ <p>bâr</p>
1875
+ <p>föö</p>
1876
+ HTML
1877
+ -# coding: utf-8
1878
+ %p bâr
1879
+ %p föö
1880
+ HAML
1881
+ end
1882
+
1883
+ def test_coding_comments
1884
+ assert_valid_encoding_comment("-# coding: ibm866")
1885
+ assert_valid_encoding_comment("-# CodINg: IbM866")
1886
+ assert_valid_encoding_comment("-#coding:ibm866")
1887
+ assert_valid_encoding_comment("-# CodINg= ibm866")
1888
+ assert_valid_encoding_comment("-# foo BAR FAOJcoding: ibm866")
1889
+ assert_valid_encoding_comment("-# coding: ibm866 ASFJ (&(&#!$")
1890
+ assert_valid_encoding_comment("-# -*- coding: ibm866")
1891
+ assert_valid_encoding_comment("-# coding: ibm866 -*- coding: blah")
1892
+ assert_valid_encoding_comment("-# -*- coding: ibm866 -*-")
1893
+ assert_valid_encoding_comment("-# -*- encoding: ibm866 -*-")
1894
+ assert_valid_encoding_comment('-# -*- coding: "ibm866" -*-')
1895
+ assert_valid_encoding_comment("-#-*-coding:ibm866-*-")
1896
+ assert_valid_encoding_comment("-#-*-coding:ibm866-*-")
1897
+ assert_valid_encoding_comment("-# -*- foo: bar; coding: ibm866; baz: bang -*-")
1898
+ assert_valid_encoding_comment("-# foo bar coding: baz -*- coding: ibm866 -*-")
1899
+ assert_valid_encoding_comment("-# -*- coding: ibm866 -*- foo bar coding: baz")
1900
+ end
1901
+
1902
+ def test_different_coding_than_system
1903
+ assert_renders_encoded(<<HTML.encode("IBM866"), <<HAML.encode("IBM866"))
1904
+ <p>тАЬ</p>
1905
+ HTML
1906
+ %p тАЬ
1907
+ HAML
1908
+ end
1909
+ end
1910
+
1911
+ private
1912
+
1913
+ def assert_valid_encoding_comment(comment)
1914
+ assert_renders_encoded(<<HTML.encode("IBM866"), <<HAML.encode("IBM866").force_encoding("UTF-8"))
1915
+ <p>ЖЛЫ</p>
1916
+ <p>тАЬ</p>
1917
+ HTML
1918
+ #{comment}
1919
+ %p ЖЛЫ
1920
+ %p тАЬ
1921
+ HAML
1922
+ end
1923
+
1924
+ def assert_converts_template_properly
1925
+ engine = Haml::Engine.new(<<HAML.encode("iso-8859-1"), :encoding => "macRoman")
1926
+ %p bâr
1927
+ %p föö
1928
+ HAML
1929
+ assert_encoded_equal(<<HTML.encode("macRoman"), yield(engine))
1930
+ <p>bâr</p>
1931
+ <p>föö</p>
1932
+ HTML
1933
+ end
1934
+
1935
+ def assert_renders_encoded(html, haml)
1936
+ result = render(haml)
1937
+ assert_encoded_equal html, result
1938
+ end
1939
+
1940
+ def assert_encoded_equal(expected, actual)
1941
+ assert_equal expected.encoding, actual.encoding
1942
+ assert_equal expected, actual
1943
+ end
1944
+ end