compass-edge 0.9.1

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 (312) hide show
  1. data/CHANGELOG.markdown +528 -0
  2. data/LICENSE.markdown +29 -0
  3. data/README.markdown +46 -0
  4. data/REVISION +1 -0
  5. data/Rakefile +131 -0
  6. data/VERSION.yml +4 -0
  7. data/bin/compass +26 -0
  8. data/deps.rip +1 -0
  9. data/examples/README.markdown +4 -0
  10. data/examples/blueprint_default/config.rb +7 -0
  11. data/examples/blueprint_default/images/grid.png +0 -0
  12. data/examples/blueprint_default/index.html.haml +85 -0
  13. data/examples/blueprint_default/parts/elements.html.haml +282 -0
  14. data/examples/blueprint_default/parts/forms.html.haml +190 -0
  15. data/examples/blueprint_default/parts/grid.html.haml +274 -0
  16. data/examples/blueprint_default/parts/test-small.jpg +0 -0
  17. data/examples/blueprint_default/parts/test.jpg +0 -0
  18. data/examples/blueprint_default/parts/valid.png +0 -0
  19. data/examples/blueprint_default/src/ie.sass +3 -0
  20. data/examples/blueprint_default/src/images/grid.png +0 -0
  21. data/examples/blueprint_default/src/print.sass +3 -0
  22. data/examples/blueprint_default/src/screen.sass +8 -0
  23. data/examples/blueprint_plugins/config.rb +8 -0
  24. data/examples/blueprint_plugins/images/buttons/cross.png +0 -0
  25. data/examples/blueprint_plugins/images/buttons/key.png +0 -0
  26. data/examples/blueprint_plugins/images/buttons/tick.png +0 -0
  27. data/examples/blueprint_plugins/images/grid.png +0 -0
  28. data/examples/blueprint_plugins/images/link_icons/doc.png +0 -0
  29. data/examples/blueprint_plugins/images/link_icons/email.png +0 -0
  30. data/examples/blueprint_plugins/images/link_icons/external.png +0 -0
  31. data/examples/blueprint_plugins/images/link_icons/feed.png +0 -0
  32. data/examples/blueprint_plugins/images/link_icons/im.png +0 -0
  33. data/examples/blueprint_plugins/images/link_icons/pdf.png +0 -0
  34. data/examples/blueprint_plugins/images/link_icons/visited.png +0 -0
  35. data/examples/blueprint_plugins/images/link_icons/xls.png +0 -0
  36. data/examples/blueprint_plugins/images/test-small.jpg +0 -0
  37. data/examples/blueprint_plugins/images/test.jpg +0 -0
  38. data/examples/blueprint_plugins/images/valid.png +0 -0
  39. data/examples/blueprint_plugins/index.html.haml +96 -0
  40. data/examples/blueprint_plugins/plugins/buttons.html.haml +67 -0
  41. data/examples/blueprint_plugins/plugins/fancy_type.html.haml +100 -0
  42. data/examples/blueprint_plugins/plugins/link_icons.html.haml +61 -0
  43. data/examples/blueprint_plugins/plugins/rtl.html.haml +100 -0
  44. data/examples/blueprint_plugins/src/buttons.sass +49 -0
  45. data/examples/blueprint_plugins/src/ie.sass +3 -0
  46. data/examples/blueprint_plugins/src/images/grid.png +0 -0
  47. data/examples/blueprint_plugins/src/link_icons.sass +13 -0
  48. data/examples/blueprint_plugins/src/print.sass +3 -0
  49. data/examples/blueprint_plugins/src/rtl_screen.sass +13 -0
  50. data/examples/blueprint_plugins/src/screen.sass +11 -0
  51. data/examples/blueprint_scoped/images/grid.png +0 -0
  52. data/examples/blueprint_scoped/src/ie.sass +4 -0
  53. data/examples/blueprint_scoped/src/print.sass +4 -0
  54. data/examples/blueprint_scoped/src/screen.sass +5 -0
  55. data/examples/blueprint_scoped_form/images/grid.png +0 -0
  56. data/examples/blueprint_scoped_form/src/ie.sass +3 -0
  57. data/examples/blueprint_scoped_form/src/print.sass +3 -0
  58. data/examples/blueprint_scoped_form/src/screen.sass +10 -0
  59. data/examples/blueprint_semantic/config.rb +7 -0
  60. data/examples/blueprint_semantic/images/grid.png +0 -0
  61. data/examples/blueprint_semantic/index.html.haml +86 -0
  62. data/examples/blueprint_semantic/parts/fancy_type.html.haml +100 -0
  63. data/examples/blueprint_semantic/parts/liquid.html.haml +100 -0
  64. data/examples/blueprint_semantic/parts/test-small.jpg +0 -0
  65. data/examples/blueprint_semantic/parts/test.jpg +0 -0
  66. data/examples/blueprint_semantic/parts/valid.png +0 -0
  67. data/examples/blueprint_semantic/src/ie.sass +3 -0
  68. data/examples/blueprint_semantic/src/images/grid.png +0 -0
  69. data/examples/blueprint_semantic/src/liquid.sass +69 -0
  70. data/examples/blueprint_semantic/src/print.sass +3 -0
  71. data/examples/blueprint_semantic/src/screen.sass +70 -0
  72. data/examples/compass/compass.html.haml +39 -0
  73. data/examples/compass/config.rb +7 -0
  74. data/examples/compass/images/blue_arrow.gif +0 -0
  75. data/examples/compass/src/compass.sass +47 -0
  76. data/examples/compass/src/images/blue_arrow.gif +0 -0
  77. data/examples/compass/src/sticky_footer.sass +11 -0
  78. data/examples/compass/src/utilities.sass +108 -0
  79. data/examples/compass/sticky_footer.html.haml +14 -0
  80. data/examples/compass/utilities.html.haml +189 -0
  81. data/examples/downloader.rb +57 -0
  82. data/examples/logo/logo.html.haml +40 -0
  83. data/examples/logo/src/ie.sass +6 -0
  84. data/examples/logo/src/print.sass +6 -0
  85. data/examples/logo/src/screen.sass +29 -0
  86. data/examples/ninesixty/bootstrap.rb +4 -0
  87. data/examples/ninesixty/config.rb +9 -0
  88. data/examples/ninesixty/extensions/ninesixty/README.mkdn +56 -0
  89. data/examples/ninesixty/extensions/ninesixty/compass-960-plugin.gemspec +36 -0
  90. data/examples/ninesixty/extensions/ninesixty/lib/ninesixty.rb +1 -0
  91. data/examples/ninesixty/extensions/ninesixty/lib/ninesixty/compass_plugin.rb +5 -0
  92. data/examples/ninesixty/extensions/ninesixty/sass/960/_grid.sass +64 -0
  93. data/examples/ninesixty/extensions/ninesixty/sass/960/_text.sass +59 -0
  94. data/examples/ninesixty/extensions/ninesixty/templates/project/grid.sass +34 -0
  95. data/examples/ninesixty/extensions/ninesixty/templates/project/manifest.rb +2 -0
  96. data/examples/ninesixty/extensions/ninesixty/templates/project/text.sass +10 -0
  97. data/examples/ninesixty/src/grid.sass +16 -0
  98. data/examples/ninesixty/src/text.sass +10 -0
  99. data/examples/yui/bootstrap.rb +3 -0
  100. data/examples/yui/divisions.html.haml +179 -0
  101. data/examples/yui/extensions/yui/stylesheets/_yui.sass +7 -0
  102. data/examples/yui/extensions/yui/stylesheets/yui/modules/_base.sass +70 -0
  103. data/examples/yui/extensions/yui/stylesheets/yui/modules/_fonts.sass +45 -0
  104. data/examples/yui/extensions/yui/stylesheets/yui/modules/_grids.sass +385 -0
  105. data/examples/yui/extensions/yui/stylesheets/yui/modules/_reset.sass +61 -0
  106. data/examples/yui/extensions/yui/templates/project/manifest.rb +1 -0
  107. data/examples/yui/extensions/yui/templates/project/screen.sass +4 -0
  108. data/examples/yui/index.html.haml +19 -0
  109. data/examples/yui/src/screen.sass +13 -0
  110. data/examples/yui/sub_divisions.html.haml +169 -0
  111. data/examples/yui/templates.html.haml +54 -0
  112. data/examples/yui/test.jpg +0 -0
  113. data/examples/yui/typography.html.haml +132 -0
  114. data/lib/compass.rb +22 -0
  115. data/lib/compass/actions.rb +116 -0
  116. data/lib/compass/app_integration.rb +3 -0
  117. data/lib/compass/app_integration/merb.rb +1 -0
  118. data/lib/compass/app_integration/merb/runtime.rb +63 -0
  119. data/lib/compass/app_integration/rails.rb +8 -0
  120. data/lib/compass/app_integration/rails/action_controller.rb +15 -0
  121. data/lib/compass/app_integration/rails/configuration_defaults.rb +29 -0
  122. data/lib/compass/app_integration/rails/installer.rb +127 -0
  123. data/lib/compass/app_integration/rails/runtime.rb +14 -0
  124. data/lib/compass/app_integration/rails/sass_plugin.rb +5 -0
  125. data/lib/compass/app_integration/rails/templates/compass-install-rails.rb +80 -0
  126. data/lib/compass/app_integration/rails/urls.rb +14 -0
  127. data/lib/compass/app_integration/stand_alone.rb +3 -0
  128. data/lib/compass/app_integration/stand_alone/configuration_defaults.rb +24 -0
  129. data/lib/compass/app_integration/stand_alone/installer.rb +71 -0
  130. data/lib/compass/commands.rb +11 -0
  131. data/lib/compass/commands/base.rb +36 -0
  132. data/lib/compass/commands/create_project.rb +113 -0
  133. data/lib/compass/commands/generate_grid_background.rb +91 -0
  134. data/lib/compass/commands/help.rb +62 -0
  135. data/lib/compass/commands/installer_command.rb +34 -0
  136. data/lib/compass/commands/list_frameworks.rb +16 -0
  137. data/lib/compass/commands/print_version.rb +91 -0
  138. data/lib/compass/commands/project_base.rb +92 -0
  139. data/lib/compass/commands/registry.rb +22 -0
  140. data/lib/compass/commands/stamp_pattern.rb +86 -0
  141. data/lib/compass/commands/update_project.rb +38 -0
  142. data/lib/compass/commands/validate_project.rb +21 -0
  143. data/lib/compass/commands/watch_project.rb +69 -0
  144. data/lib/compass/commands/write_configuration.rb +32 -0
  145. data/lib/compass/compiler.rb +54 -0
  146. data/lib/compass/configuration.rb +38 -0
  147. data/lib/compass/configuration/adapters.rb +59 -0
  148. data/lib/compass/configuration/comments.rb +22 -0
  149. data/lib/compass/configuration/data.rb +103 -0
  150. data/lib/compass/configuration/defaults.rb +107 -0
  151. data/lib/compass/configuration/helpers.rb +83 -0
  152. data/lib/compass/configuration/inheritance.rb +170 -0
  153. data/lib/compass/configuration/serialization.rb +86 -0
  154. data/lib/compass/core_ext.rb +14 -0
  155. data/lib/compass/dependencies.rb +6 -0
  156. data/lib/compass/errors.rb +7 -0
  157. data/lib/compass/exec.rb +15 -0
  158. data/lib/compass/exec/command_option_parser.rb +23 -0
  159. data/lib/compass/exec/global_options_parser.rb +37 -0
  160. data/lib/compass/exec/helpers.rb +28 -0
  161. data/lib/compass/exec/project_options_parser.rb +42 -0
  162. data/lib/compass/exec/sub_command_ui.rb +45 -0
  163. data/lib/compass/exec/switch_ui.rb +166 -0
  164. data/lib/compass/frameworks.rb +53 -0
  165. data/lib/compass/frameworks/blueprint/stylesheets/_blueprint.sass +3 -0
  166. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_ie.sass +99 -0
  167. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_print.sass +90 -0
  168. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_reset.sass +3 -0
  169. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/_screen.sass +29 -0
  170. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass +84 -0
  171. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_colors.sass +33 -0
  172. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_debug.sass +9 -0
  173. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass +82 -0
  174. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass +55 -0
  175. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass +178 -0
  176. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_interaction.sass +58 -0
  177. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass +44 -0
  178. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_liquid.sass +141 -0
  179. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass +56 -0
  180. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass +122 -0
  181. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass +47 -0
  182. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass +160 -0
  183. data/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_utilities.sass +37 -0
  184. data/lib/compass/frameworks/blueprint/templates/buttons/buttons.sass +49 -0
  185. data/lib/compass/frameworks/blueprint/templates/buttons/buttons/cross.png +0 -0
  186. data/lib/compass/frameworks/blueprint/templates/buttons/buttons/key.png +0 -0
  187. data/lib/compass/frameworks/blueprint/templates/buttons/buttons/tick.png +0 -0
  188. data/lib/compass/frameworks/blueprint/templates/buttons/manifest.rb +5 -0
  189. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons.sass +13 -0
  190. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/doc.png +0 -0
  191. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/email.png +0 -0
  192. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/external.png +0 -0
  193. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/feed.png +0 -0
  194. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/im.png +0 -0
  195. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/pdf.png +0 -0
  196. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/visited.png +0 -0
  197. data/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/xls.png +0 -0
  198. data/lib/compass/frameworks/blueprint/templates/link_icons/manifest.rb +10 -0
  199. data/lib/compass/frameworks/blueprint/templates/project/grid.png +0 -0
  200. data/lib/compass/frameworks/blueprint/templates/project/ie.sass +16 -0
  201. data/lib/compass/frameworks/blueprint/templates/project/manifest.rb +8 -0
  202. data/lib/compass/frameworks/blueprint/templates/project/partials/_base.sass +11 -0
  203. data/lib/compass/frameworks/blueprint/templates/project/print.sass +8 -0
  204. data/lib/compass/frameworks/blueprint/templates/project/screen.sass +47 -0
  205. data/lib/compass/frameworks/blueprint/templates/project/welcome.html.haml +13 -0
  206. data/lib/compass/frameworks/compass/stylesheets/_compass.sass +1 -0
  207. data/lib/compass/frameworks/compass/stylesheets/compass/_layout.sass +1 -0
  208. data/lib/compass/frameworks/compass/stylesheets/compass/_misc.sass +24 -0
  209. data/lib/compass/frameworks/compass/stylesheets/compass/_reset.sass +3 -0
  210. data/lib/compass/frameworks/compass/stylesheets/compass/_utilities.sass +7 -0
  211. data/lib/compass/frameworks/compass/stylesheets/compass/layout/_sticky_footer.sass +19 -0
  212. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/_css3.sass +6 -0
  213. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/_general.sass +5 -0
  214. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/_links.sass +3 -0
  215. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/_lists.sass +3 -0
  216. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/_print.sass +18 -0
  217. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/_sprites.sass +1 -0
  218. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/_tables.sass +3 -0
  219. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/_text.sass +2 -0
  220. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/css3/_border_radius.sass +47 -0
  221. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/css3/_box_shadow.sass +12 -0
  222. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/css3/_box_sizing.sass +13 -0
  223. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/css3/_columns.sass +37 -0
  224. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/css3/_inline_block.sass +7 -0
  225. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/css3/_opacity.sass +18 -0
  226. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.sass +24 -0
  227. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_float.sass +17 -0
  228. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_hacks.sass +6 -0
  229. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_reset.sass +134 -0
  230. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_tabs.sass +0 -0
  231. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_tag_cloud.sass +19 -0
  232. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/links/_hover_link.sass +5 -0
  233. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/links/_link_colors.sass +24 -0
  234. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/links/_unstyled_link.sass +7 -0
  235. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.sass +21 -0
  236. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal_list.sass +52 -0
  237. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/lists/_inline_list.sass +29 -0
  238. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite_img.sass +52 -0
  239. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/tables/_alternating_rows_and_columns.sass +20 -0
  240. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/tables/_borders.sass +27 -0
  241. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/tables/_scaffolding.sass +9 -0
  242. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.sass +13 -0
  243. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.sass +3 -0
  244. data/lib/compass/frameworks/compass/stylesheets/compass/utilities/text/_replacement.sass +17 -0
  245. data/lib/compass/frameworks/compass/templates/ellipsis/ellipsis.sass +6 -0
  246. data/lib/compass/frameworks/compass/templates/ellipsis/manifest.rb +2 -0
  247. data/lib/compass/frameworks/compass/templates/ellipsis/xml/ellipsis.xml +14 -0
  248. data/lib/compass/frameworks/compass/templates/extension/manifest.rb +6 -0
  249. data/lib/compass/frameworks/compass/templates/extension/stylesheets/main.sass +1 -0
  250. data/lib/compass/frameworks/compass/templates/extension/templates/project/manifest.rb +2 -0
  251. data/lib/compass/frameworks/compass/templates/extension/templates/project/screen.sass +2 -0
  252. data/lib/compass/frameworks/compass/templates/project/ie.sass +6 -0
  253. data/lib/compass/frameworks/compass/templates/project/manifest.rb +3 -0
  254. data/lib/compass/frameworks/compass/templates/project/print.sass +6 -0
  255. data/lib/compass/frameworks/compass/templates/project/screen.sass +13 -0
  256. data/lib/compass/grid_builder.rb +76 -0
  257. data/lib/compass/installers.rb +3 -0
  258. data/lib/compass/installers/base.rb +186 -0
  259. data/lib/compass/installers/manifest.rb +79 -0
  260. data/lib/compass/installers/template_context.rb +44 -0
  261. data/lib/compass/logger.rb +42 -0
  262. data/lib/compass/sass_extensions.rb +5 -0
  263. data/lib/compass/sass_extensions/functions.rb +19 -0
  264. data/lib/compass/sass_extensions/functions/display.rb +22 -0
  265. data/lib/compass/sass_extensions/functions/enumerate.rb +6 -0
  266. data/lib/compass/sass_extensions/functions/inline_image.rb +35 -0
  267. data/lib/compass/sass_extensions/functions/selectors.rb +42 -0
  268. data/lib/compass/sass_extensions/functions/urls.rb +105 -0
  269. data/lib/compass/sass_extensions/monkey_patches.rb +3 -0
  270. data/lib/compass/sass_extensions/monkey_patches/stylesheet_updating.rb +23 -0
  271. data/lib/compass/test_case.rb +38 -0
  272. data/lib/compass/validator.rb +10 -0
  273. data/lib/compass/version.rb +57 -0
  274. data/lib/vendor/fssm.rb +28 -0
  275. data/lib/vendor/fssm/backends/fsevents.rb +78 -0
  276. data/lib/vendor/fssm/backends/polling.rb +24 -0
  277. data/lib/vendor/fssm/ext.rb +7 -0
  278. data/lib/vendor/fssm/monitor.rb +21 -0
  279. data/lib/vendor/fssm/path.rb +88 -0
  280. data/lib/vendor/fssm/state.rb +46 -0
  281. data/lib/vendor/fssm/support.rb +26 -0
  282. data/test/command_line_helper.rb +97 -0
  283. data/test/command_line_test.rb +67 -0
  284. data/test/compass_test.rb +132 -0
  285. data/test/configuration_test.rb +123 -0
  286. data/test/fixtures/stylesheets/blueprint/config.rb +9 -0
  287. data/test/fixtures/stylesheets/blueprint/css/typography.css +158 -0
  288. data/test/fixtures/stylesheets/blueprint/images/grid.png +0 -0
  289. data/test/fixtures/stylesheets/blueprint/sass/ie.sass +3 -0
  290. data/test/fixtures/stylesheets/blueprint/sass/print.sass +3 -0
  291. data/test/fixtures/stylesheets/blueprint/sass/screen.sass +17 -0
  292. data/test/fixtures/stylesheets/blueprint/sass/typography.sass +3 -0
  293. data/test/fixtures/stylesheets/compass/config.rb +9 -0
  294. data/test/fixtures/stylesheets/compass/css/layout.css +15 -0
  295. data/test/fixtures/stylesheets/compass/css/print.css +18 -0
  296. data/test/fixtures/stylesheets/compass/css/reset.css +60 -0
  297. data/test/fixtures/stylesheets/compass/css/utilities.css +17 -0
  298. data/test/fixtures/stylesheets/compass/sass/layout.sass +3 -0
  299. data/test/fixtures/stylesheets/compass/sass/print.sass +5 -0
  300. data/test/fixtures/stylesheets/compass/sass/reset.sass +10 -0
  301. data/test/fixtures/stylesheets/compass/sass/utilities.sass +6 -0
  302. data/test/fixtures/stylesheets/image_urls/config.rb +17 -0
  303. data/test/fixtures/stylesheets/image_urls/css/screen.css +3 -0
  304. data/test/fixtures/stylesheets/image_urls/images/grid.png +0 -0
  305. data/test/fixtures/stylesheets/image_urls/sass/screen.sass +6 -0
  306. data/test/io_helper.rb +19 -0
  307. data/test/rails_integration_test.rb +84 -0
  308. data/test/sass_extensions_test.rb +31 -0
  309. data/test/test_case_helper.rb +13 -0
  310. data/test/test_helper.rb +27 -0
  311. data/test/test_rails_helper.rb +20 -0
  312. metadata +404 -0
@@ -0,0 +1,54 @@
1
+ module Compass
2
+ class Compiler
3
+
4
+ include Actions
5
+
6
+ attr_accessor :working_path, :from, :to, :options
7
+
8
+ def initialize(working_path, from, to, options)
9
+ self.working_path = working_path
10
+ self.from, self.to = from, to
11
+ self.logger = options.delete(:logger)
12
+ self.options = options
13
+ self.options[:cache_location] ||= File.join(from, ".sass-cache")
14
+ end
15
+
16
+ def sass_files
17
+ @sass_files || Dir.glob(separate("#{from}/**/[^_]*.sass"))
18
+ end
19
+
20
+ def stylesheet_name(sass_file)
21
+ sass_file[("#{from}/".length)..-6]
22
+ end
23
+
24
+ def css_files
25
+ @css_files ||= sass_files.map{|sass_file| corresponding_css_file(sass_file)}
26
+ end
27
+
28
+ def corresponding_css_file(sass_file)
29
+ "#{to}/#{stylesheet_name(sass_file)}.css"
30
+ end
31
+
32
+ def target_directories
33
+ css_files.map{|css_file| File.dirname(css_file)}.uniq.sort.sort_by{|d| d.length }
34
+ end
35
+
36
+ def out_of_date?
37
+ Compass.configure_sass_plugin! unless Compass.sass_plugin_configured?
38
+ sass_files.zip(css_files).each do |sass_filename, css_filename|
39
+ return sass_filename if Sass::Plugin.exact_stylesheet_needs_update?(css_filename, sass_filename)
40
+ end
41
+ false
42
+ end
43
+
44
+ def run
45
+ Compass.configure_sass_plugin! unless Compass.sass_plugin_configured?
46
+ target_directories.each do |dir|
47
+ directory dir
48
+ end
49
+ sass_files.zip(css_files).each do |sass_filename, css_filename|
50
+ compile sass_filename, css_filename, options
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,38 @@
1
+ module Compass
2
+ module Configuration
3
+
4
+ ATTRIBUTES = [
5
+ :project_type,
6
+ :project_path,
7
+ :css_dir,
8
+ :sass_dir,
9
+ :images_dir,
10
+ :javascripts_dir,
11
+ :extensions_dir,
12
+ :css_path,
13
+ :sass_path,
14
+ :images_path,
15
+ :javascripts_path,
16
+ :extensions_path,
17
+ :http_path,
18
+ :http_images_dir,
19
+ :http_stylesheets_dir,
20
+ :http_javascripts_dir,
21
+ :http_images_path,
22
+ :http_stylesheets_path,
23
+ :http_javascripts_path,
24
+ :output_style,
25
+ :environment,
26
+ :relative_assets,
27
+ :additional_import_paths,
28
+ :sass_options,
29
+ :asset_host,
30
+ :asset_cache_buster
31
+ ]
32
+
33
+ end
34
+ end
35
+
36
+ ['adapters', 'comments', 'defaults', 'helpers', 'inheritance', 'serialization', 'data'].each do |lib|
37
+ require "compass/configuration/#{lib}"
38
+ end
@@ -0,0 +1,59 @@
1
+ module Compass
2
+ module Configuration
3
+ # The adapters module provides methods that make configuration data from a compass project
4
+ # adapt to various consumers of configuration data
5
+ module Adapters
6
+ def to_compiler_arguments(additional_options)
7
+ [project_path, sass_path, css_path, to_sass_engine_options.merge(additional_options)]
8
+ end
9
+
10
+ def to_sass_plugin_options
11
+ locations = {}
12
+ locations[sass_path] = css_path if sass_path && css_path
13
+ Compass::Frameworks::ALL.each do |framework|
14
+ locations[framework.stylesheets_directory] = css_path || css_dir || "."
15
+ end
16
+ resolve_additional_import_paths.each do |additional_path|
17
+ locations[additional_path] = File.join(css_path || css_dir || ".", File.basename(additional_path))
18
+ end
19
+ plugin_opts = {:template_location => locations}
20
+ plugin_opts[:style] = output_style if output_style
21
+ plugin_opts[:line_comments] = line_comments if environment
22
+ plugin_opts.merge!(sass_options || {})
23
+ plugin_opts
24
+ end
25
+
26
+ def resolve_additional_import_paths
27
+ (additional_import_paths || []).map do |path|
28
+ if project_path && !absolute_path?(path)
29
+ File.join(project_path, path)
30
+ else
31
+ path
32
+ end
33
+ end
34
+ end
35
+
36
+ def absolute_path?(path)
37
+ # This is only going to work on unix, gonna need a better implementation.
38
+ path.index(File::SEPARATOR) == 0
39
+ end
40
+
41
+ def to_sass_engine_options
42
+ engine_opts = {:load_paths => sass_load_paths}
43
+ engine_opts[:style] = output_style if output_style
44
+ engine_opts[:line_comments] = line_comments if environment
45
+ engine_opts.merge!(sass_options || {})
46
+ end
47
+
48
+ def sass_load_paths
49
+ load_paths = []
50
+ load_paths << sass_path if sass_path
51
+ Compass::Frameworks::ALL.each do |framework|
52
+ load_paths << framework.stylesheets_directory
53
+ end
54
+ load_paths += resolve_additional_import_paths
55
+ load_paths
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,22 @@
1
+ module Compass
2
+ module Configuration
3
+ # Comments are emitted into the configuration file when serialized and make it easier to understand for new users.
4
+ module Comments
5
+
6
+ def comment_for_http_path
7
+ "# Set this to the root of your project when deployed:\n"
8
+ end
9
+
10
+ def comment_for_relative_assets
11
+ unless relative_assets
12
+ %q{# To enable relative paths to assets via compass helper functions. Uncomment:
13
+ # relative_assets = true
14
+ }
15
+ else
16
+ ""
17
+ end
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,103 @@
1
+ module Compass
2
+ module Configuration
3
+ # The Compass configuration data storage class manages configuration data that comes from a variety of
4
+ # different sources and aggregates them together into a consistent API
5
+ # Some of the possible sources of configuration data:
6
+ # * Compass default project structure for stand alone projects
7
+ # * App framework specific project structures for rails, etc.
8
+ # * User supplied explicit configuration
9
+ # * Configuration data provided via the command line interface
10
+ #
11
+ # There are two kinds of configuration data that doesn't come from the user:
12
+ #
13
+ # 1. Configuration data that is defaulted as if the user had provided it themselves.
14
+ # This is useful for providing defaults that the user is likely to want to edit
15
+ # but shouldn't have to provide explicitly when getting started
16
+ # 2. Configuration data that is defaulted behind the scenes because _some_ value is
17
+ # required.
18
+ class Data
19
+
20
+ attr_accessor :required_libraries
21
+
22
+ include Compass::Configuration::Inheritance
23
+ include Compass::Configuration::Serialization
24
+ include Compass::Configuration::Adapters
25
+
26
+ inherited_accessor *ATTRIBUTES
27
+
28
+ def initialize(attr_hash = nil)
29
+ self.required_libraries = []
30
+ set_all(attr_hash) if attr_hash
31
+ self.top_level = self
32
+ end
33
+
34
+ def set_all(attr_hash)
35
+ # assert_valid_keys!(attr_hash)
36
+ attr_hash.each do |a, v|
37
+ if self.respond_to?("#{a}=")
38
+ self.send("#{a}=", v)
39
+ end
40
+ end
41
+ end
42
+
43
+ def add_import_path(*paths)
44
+ # The @added_import_paths variable works around an issue where
45
+ # the additional_import_paths gets overwritten during parse
46
+ @added_import_paths ||= []
47
+ @added_import_paths += paths
48
+ self.additional_import_paths ||= []
49
+ self.additional_import_paths += paths
50
+ end
51
+
52
+ # When called with a block, defines the asset host url to be used.
53
+ # The block must return a string that starts with a protocol (E.g. http).
54
+ # The block will be passed the root-relative url of the asset.
55
+ # When called without a block, returns the block that was previously set.
56
+ def asset_host(&block)
57
+ if block_given?
58
+ @asset_host = block
59
+ else
60
+ @asset_host
61
+ end
62
+ end
63
+
64
+ # When called with a block, defines the cache buster strategy to be used.
65
+ # The block must return nil or a string that can be appended to a url as a query parameter.
66
+ # The returned string must not include the starting '?'.
67
+ # The block will be passed the root-relative url of the asset.
68
+ # If the block accepts two arguments, it will also be passed a File object
69
+ # that points to the asset on disk -- which may or may not exist.
70
+ # When called without a block, returns the block that was previously set.
71
+ def asset_cache_buster(&block)
72
+ if block_given?
73
+ @asset_cache_buster = block
74
+ else
75
+ @asset_cache_buster
76
+ end
77
+ end
78
+
79
+ # Require a compass plugin and capture that it occured so that the configuration serialization works next time.
80
+ def require(lib)
81
+ required_libraries << lib
82
+ super
83
+ end
84
+
85
+ def relative_assets?
86
+ # the http_images_path is deprecated, but here for backwards compatibility.
87
+ relative_assets || http_images_path == :relative
88
+ end
89
+
90
+ private
91
+
92
+ def assert_valid_keys!(attr_hash)
93
+ illegal_attrs = attr_hash.keys - ATTRIBUTES
94
+ if illegal_attrs.size == 1
95
+ raise Error, "#{illegal_attrs.first.inspect} is not a valid configuration attribute."
96
+ elsif illegal_attrs.size > 0
97
+ raise Error, "Illegal configuration attributes: #{illegal_attrs.map{|a| a.inspect}.join(", ")}"
98
+ end
99
+ end
100
+
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,107 @@
1
+ module Compass
2
+ module Configuration
3
+ module Defaults
4
+
5
+ def default_project_type
6
+ :stand_alone
7
+ end
8
+
9
+ def http_path_without_default
10
+ "/"
11
+ end
12
+
13
+ def default_extensions_dir
14
+ "extensions"
15
+ end
16
+
17
+ def default_output_style
18
+ if top_level.environment == :development
19
+ :expanded
20
+ else
21
+ :compact
22
+ end
23
+ end
24
+
25
+ def default_line_comments
26
+ top_level.environment == :development
27
+ end
28
+
29
+ def default_sass_path
30
+ if (pp = top_level.project_path) && (dir = top_level.sass_dir)
31
+ File.join(pp, dir)
32
+ end
33
+ end
34
+
35
+ def default_css_path
36
+ if (pp = top_level.project_path) && (dir = top_level.css_dir)
37
+ File.join(pp, dir)
38
+ end
39
+ end
40
+
41
+ def default_images_path
42
+ if (pp = top_level.project_path) && (dir = top_level.images_dir)
43
+ File.join(pp, dir)
44
+ end
45
+ end
46
+
47
+ def default_javascripts_path
48
+ if (pp = top_level.project_path) && (dir = top_level.javascripts_dir)
49
+ File.join(pp, dir)
50
+ end
51
+ end
52
+
53
+ def default_extensions_path
54
+ if (pp = top_level.project_path) && (dir = top_level.extensions_dir)
55
+ File.join(pp, dir)
56
+ end
57
+ end
58
+
59
+
60
+ def default_http_images_dir
61
+ top_level.images_dir
62
+ end
63
+
64
+ def default_http_images_path
65
+ http_root_relative top_level.http_images_dir
66
+ end
67
+
68
+ def default_http_stylesheets_dir
69
+ top_level.css_dir
70
+ end
71
+
72
+ def default_http_stylesheets_path
73
+ http_root_relative top_level.http_stylesheets_dir
74
+ end
75
+
76
+ def default_http_javascripts_dir
77
+ top_level.javascripts_dir
78
+ end
79
+
80
+ def default_http_javascripts_path
81
+ http_root_relative top_level.http_javascripts_dir
82
+ end
83
+
84
+ # helper functions
85
+
86
+ def http_join(*segments)
87
+ segments.map do |segment|
88
+ segment = http_pathify(segment)
89
+ segment[-1..-1] == "/" ? segment[0..-2] : segment
90
+ end.join("/")
91
+ end
92
+
93
+ def http_pathify(path)
94
+ if File::SEPARATOR == "/"
95
+ path
96
+ else
97
+ path.gsub(File::SEPARATOR, "/")
98
+ end
99
+ end
100
+
101
+ def http_root_relative(path)
102
+ http_join top_level.http_path, path
103
+ end
104
+
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,83 @@
1
+ module Compass
2
+ module Configuration
3
+ # The helpers are available as methods on the Compass module. E.g. Compass.configuration
4
+ module Helpers
5
+ def configuration
6
+ @configuration ||= default_configuration
7
+ if block_given?
8
+ yield @configuration
9
+ end
10
+ @configuration
11
+ end
12
+
13
+ def default_configuration
14
+ Data.new.extend(Defaults).extend(Comments)
15
+ end
16
+
17
+ def add_configuration(config, filename = nil)
18
+ return if config.nil?
19
+ data = if config.is_a?(Compass::Configuration::Data)
20
+ config
21
+ elsif config.respond_to?(:read)
22
+ Compass::Configuration::Data.new_from_string(config.read, filename)
23
+ elsif config.is_a?(Hash)
24
+ Compass::Configuration::Data.new(config)
25
+ elsif config.is_a?(String)
26
+ Compass::Configuration::Data.new_from_file(config)
27
+ else
28
+ raise "I don't know what to do with: #{config.inspect}"
29
+ end
30
+ data.inherit_from!(configuration)
31
+ data.on_top!
32
+ @configuration = data
33
+ end
34
+
35
+ # Support for testing.
36
+ def reset_configuration!
37
+ @configuration = nil
38
+ end
39
+
40
+ def sass_plugin_configuration
41
+ configuration.to_sass_plugin_options
42
+ end
43
+
44
+ def configure_sass_plugin!
45
+ @sass_plugin_configured = true
46
+ Sass::Plugin.options.merge!(sass_plugin_configuration)
47
+ end
48
+
49
+ def sass_plugin_configured?
50
+ @sass_plugin_configured
51
+ end
52
+
53
+ def sass_engine_options
54
+ configuration.to_sass_engine_options
55
+ end
56
+
57
+ # Read the configuration file for this project
58
+ def add_project_configuration(configuration_file_path = nil)
59
+ configuration_file_path ||= detect_configuration_file
60
+ Compass.add_configuration(configuration_file_path) if configuration_file_path
61
+ end
62
+
63
+ # Returns a full path to the relative path to the project directory
64
+ def projectize(path, project_path = nil)
65
+ project_path ||= configuration.project_path
66
+ File.join(project_path, *path.split('/'))
67
+ end
68
+
69
+ # TODO: Deprecate the src/config.rb location.
70
+ KNOWN_CONFIG_LOCATIONS = [".compass/config.rb", "config/compass.config", "config.rb", "src/config.rb"]
71
+
72
+ # Finds the configuration file, if it exists in a known location.
73
+ def detect_configuration_file(project_path = nil)
74
+ possible_files = KNOWN_CONFIG_LOCATIONS.map{|f| projectize(f, project_path) }
75
+ possible_files.detect{|f| File.exists?(f)}
76
+ end
77
+
78
+ end
79
+ end
80
+
81
+ extend Configuration::Helpers
82
+
83
+ end