compass-sourcemaps 0.12.3.sourcemaps.a4836f1 → 0.12.4.sourcemaps.a4836f1

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 (495) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.markdown +29 -29
  3. data/README.markdown +39 -39
  4. data/Rakefile +157 -157
  5. data/VERSION.yml +5 -5
  6. data/bin/compass +45 -45
  7. data/examples/README.markdown +3 -3
  8. data/examples/blueprint_default/config.rb +7 -7
  9. data/examples/blueprint_default/index.html.haml +85 -85
  10. data/examples/blueprint_default/parts/elements.html.haml +282 -282
  11. data/examples/blueprint_default/parts/forms.html.haml +200 -200
  12. data/examples/blueprint_default/parts/grid.html.haml +274 -274
  13. data/examples/blueprint_default/src/ie.scss +3 -3
  14. data/examples/blueprint_default/src/print.scss +3 -3
  15. data/examples/blueprint_default/src/screen.scss +9 -9
  16. data/examples/blueprint_plugins/config.rb +8 -8
  17. data/examples/blueprint_plugins/index.html.haml +96 -96
  18. data/examples/blueprint_plugins/plugins/buttons.html.haml +67 -67
  19. data/examples/blueprint_plugins/plugins/fancy_type.html.haml +100 -100
  20. data/examples/blueprint_plugins/plugins/link_icons.html.haml +61 -61
  21. data/examples/blueprint_plugins/plugins/rtl.html.haml +100 -100
  22. data/examples/blueprint_plugins/src/buttons.scss +47 -47
  23. data/examples/blueprint_plugins/src/ie.scss +3 -3
  24. data/examples/blueprint_plugins/src/link_icons.scss +13 -13
  25. data/examples/blueprint_plugins/src/print.scss +3 -3
  26. data/examples/blueprint_plugins/src/rtl_screen.scss +15 -15
  27. data/examples/blueprint_plugins/src/screen.scss +12 -12
  28. data/examples/blueprint_scoped/src/ie.scss +4 -4
  29. data/examples/blueprint_scoped/src/print.scss +4 -4
  30. data/examples/blueprint_scoped/src/screen.scss +5 -5
  31. data/examples/blueprint_scoped_form/src/ie.scss +3 -3
  32. data/examples/blueprint_scoped_form/src/print.scss +3 -3
  33. data/examples/blueprint_scoped_form/src/screen.scss +15 -15
  34. data/examples/blueprint_semantic/config.rb +7 -7
  35. data/examples/blueprint_semantic/index.html.haml +86 -86
  36. data/examples/blueprint_semantic/parts/fancy_type.html.haml +100 -100
  37. data/examples/blueprint_semantic/parts/liquid.html.haml +100 -100
  38. data/examples/blueprint_semantic/src/ie.scss +3 -3
  39. data/examples/blueprint_semantic/src/liquid.scss +69 -69
  40. data/examples/blueprint_semantic/src/print.scss +3 -3
  41. data/examples/blueprint_semantic/src/screen.scss +69 -69
  42. data/examples/compass/bootstrap.rb +3 -3
  43. data/examples/compass/clean.rb +1 -1
  44. data/examples/compass/compass.html.haml +39 -39
  45. data/examples/compass/config.rb +8 -8
  46. data/examples/compass/pie.html.haml +73 -73
  47. data/examples/compass/sprites.html.haml +37 -37
  48. data/examples/compass/src/bp_layout.scss +18 -18
  49. data/examples/compass/src/compass.scss +46 -46
  50. data/examples/compass/src/pie.scss +110 -110
  51. data/examples/compass/src/sprites.scss +24 -24
  52. data/examples/compass/src/sticky_footer.scss +11 -11
  53. data/examples/compass/src/utilities.scss +108 -108
  54. data/examples/compass/sticky_footer.html.haml +13 -13
  55. data/examples/compass/utilities.html.haml +189 -189
  56. data/examples/css3/bootstrap.rb +3 -3
  57. data/examples/css3/clean.rb +2 -2
  58. data/examples/css3/config.rb +6 -6
  59. data/examples/css3/extensions/fancy-fonts/templates/project/fancy-fonts.sass +10 -10
  60. data/examples/css3/extensions/fancy-fonts/templates/project/manifest.rb +6 -6
  61. data/examples/css3/gradients.html.haml +68 -68
  62. data/examples/css3/index.html.haml +57 -57
  63. data/examples/css3/src/_base.scss +13 -13
  64. data/examples/css3/src/fancy-fonts.scss +13 -13
  65. data/examples/css3/src/gradients.scss +85 -85
  66. data/examples/css3/src/main.scss +108 -108
  67. data/examples/downloader.rb +58 -58
  68. data/examples/ninesixty/bootstrap.rb +4 -4
  69. data/examples/ninesixty/clean.rb +1 -1
  70. data/examples/ninesixty/config.rb +9 -9
  71. data/examples/ninesixty/src/grid.scss +15 -15
  72. data/examples/ninesixty/src/text.scss +8 -8
  73. data/examples/susy/bootstrap.rb +3 -3
  74. data/examples/susy/clean.rb +1 -1
  75. data/examples/susy/config.rb +9 -9
  76. data/examples/susy/src/_base.scss +61 -61
  77. data/examples/susy/src/_defaults.scss +140 -140
  78. data/examples/susy/src/screen.scss +100 -100
  79. data/examples/yui/bootstrap.rb +2 -2
  80. data/examples/yui/clean.rb +1 -1
  81. data/examples/yui/divisions.html.haml +179 -179
  82. data/examples/yui/index.html.haml +19 -19
  83. data/examples/yui/src/screen.scss +13 -13
  84. data/examples/yui/sub_divisions.html.haml +169 -169
  85. data/examples/yui/templates.html.haml +54 -54
  86. data/examples/yui/typography.html.haml +132 -132
  87. data/features/command_line.feature +292 -292
  88. data/features/extensions.feature +27 -27
  89. data/features/step_definitions/command_line_steps.rb +268 -268
  90. data/features/step_definitions/extension_steps.rb +24 -24
  91. data/frameworks/blueprint/stylesheets/_blueprint.scss +37 -37
  92. data/frameworks/blueprint/stylesheets/blueprint/_buttons.scss +100 -100
  93. data/frameworks/blueprint/stylesheets/blueprint/_colors.scss +36 -36
  94. data/frameworks/blueprint/stylesheets/blueprint/_debug.scss +28 -28
  95. data/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss +88 -88
  96. data/frameworks/blueprint/stylesheets/blueprint/_form.scss +66 -66
  97. data/frameworks/blueprint/stylesheets/blueprint/_grid.scss +258 -258
  98. data/frameworks/blueprint/stylesheets/blueprint/_ie.scss +111 -111
  99. data/frameworks/blueprint/stylesheets/blueprint/_interaction.scss +66 -66
  100. data/frameworks/blueprint/stylesheets/blueprint/_link-icons.scss +37 -37
  101. data/frameworks/blueprint/stylesheets/blueprint/_liquid.scss +152 -152
  102. data/frameworks/blueprint/stylesheets/blueprint/_print.scss +86 -86
  103. data/frameworks/blueprint/stylesheets/blueprint/_reset.scss +2 -2
  104. data/frameworks/blueprint/stylesheets/blueprint/_rtl.scss +121 -121
  105. data/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss +52 -52
  106. data/frameworks/blueprint/stylesheets/blueprint/_typography.scss +90 -90
  107. data/frameworks/blueprint/stylesheets/blueprint/_utilities.scss +37 -37
  108. data/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss +83 -83
  109. data/frameworks/blueprint/templates/basic/ie.sass +4 -4
  110. data/frameworks/blueprint/templates/basic/manifest.rb +30 -30
  111. data/frameworks/blueprint/templates/basic/partials/_base.sass +10 -10
  112. data/frameworks/blueprint/templates/basic/print.sass +4 -4
  113. data/frameworks/blueprint/templates/basic/screen.sass +12 -12
  114. data/frameworks/blueprint/templates/buttons/buttons.sass +49 -49
  115. data/frameworks/blueprint/templates/buttons/buttons/cross.png +0 -0
  116. data/frameworks/blueprint/templates/buttons/buttons/key.png +0 -0
  117. data/frameworks/blueprint/templates/buttons/buttons/tick.png +0 -0
  118. data/frameworks/blueprint/templates/buttons/manifest.rb +17 -17
  119. data/frameworks/blueprint/templates/link_icons/link_icons.sass +13 -13
  120. data/frameworks/blueprint/templates/link_icons/manifest.rb +23 -23
  121. data/frameworks/blueprint/templates/project/ie.sass +16 -16
  122. data/frameworks/blueprint/templates/project/manifest.rb +30 -30
  123. data/frameworks/blueprint/templates/project/partials/_base.sass +11 -11
  124. data/frameworks/blueprint/templates/project/print.sass +7 -7
  125. data/frameworks/blueprint/templates/project/screen.sass +46 -46
  126. data/frameworks/blueprint/templates/semantic/ie.sass +16 -16
  127. data/frameworks/blueprint/templates/semantic/manifest.rb +33 -33
  128. data/frameworks/blueprint/templates/semantic/partials/_base.sass +10 -10
  129. data/frameworks/blueprint/templates/semantic/partials/_form.sass +5 -5
  130. data/frameworks/blueprint/templates/semantic/partials/_page.sass +17 -17
  131. data/frameworks/blueprint/templates/semantic/partials/_two_col.sass +38 -38
  132. data/frameworks/blueprint/templates/semantic/print.sass +4 -4
  133. data/frameworks/blueprint/templates/semantic/screen.sass +14 -14
  134. data/frameworks/compass/stylesheets/_compass.scss +3 -3
  135. data/frameworks/compass/stylesheets/_lemonade.scss +37 -37
  136. data/frameworks/compass/stylesheets/compass/_css3.scss +20 -20
  137. data/frameworks/compass/stylesheets/compass/_layout.scss +3 -3
  138. data/frameworks/compass/stylesheets/compass/_reset-legacy.scss +3 -3
  139. data/frameworks/compass/stylesheets/compass/_reset.scss +3 -3
  140. data/frameworks/compass/stylesheets/compass/_support.scss +40 -40
  141. data/frameworks/compass/stylesheets/compass/_typography.scss +4 -4
  142. data/frameworks/compass/stylesheets/compass/_utilities.scss +9 -9
  143. data/frameworks/compass/stylesheets/compass/css3/_appearance.scss +17 -17
  144. data/frameworks/compass/stylesheets/compass/css3/_background-clip.scss +43 -43
  145. data/frameworks/compass/stylesheets/compass/css3/_background-origin.scss +42 -42
  146. data/frameworks/compass/stylesheets/compass/css3/_background-size.scss +26 -26
  147. data/frameworks/compass/stylesheets/compass/css3/_border-radius.scss +130 -130
  148. data/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss +76 -76
  149. data/frameworks/compass/stylesheets/compass/css3/_box-sizing.scss +13 -13
  150. data/frameworks/compass/stylesheets/compass/css3/_box.scss +111 -111
  151. data/frameworks/compass/stylesheets/compass/css3/_columns.scss +156 -156
  152. data/frameworks/compass/stylesheets/compass/css3/_filter.scss +23 -23
  153. data/frameworks/compass/stylesheets/compass/css3/_font-face.scss +48 -48
  154. data/frameworks/compass/stylesheets/compass/css3/_hyphenation.scss +77 -77
  155. data/frameworks/compass/stylesheets/compass/css3/_images.scss +132 -132
  156. data/frameworks/compass/stylesheets/compass/css3/_inline-block.scss +22 -22
  157. data/frameworks/compass/stylesheets/compass/css3/_opacity.scss +19 -19
  158. data/frameworks/compass/stylesheets/compass/css3/_pie.scss +72 -72
  159. data/frameworks/compass/stylesheets/compass/css3/_regions.scss +21 -21
  160. data/frameworks/compass/stylesheets/compass/css3/_shared.scss +38 -38
  161. data/frameworks/compass/stylesheets/compass/css3/_text-shadow.scss +87 -87
  162. data/frameworks/compass/stylesheets/compass/css3/_transform-legacy.scss +87 -87
  163. data/frameworks/compass/stylesheets/compass/css3/_transform.scss +598 -598
  164. data/frameworks/compass/stylesheets/compass/css3/_transition.scss +221 -221
  165. data/frameworks/compass/stylesheets/compass/css3/_user-interface.scss +17 -17
  166. data/frameworks/compass/stylesheets/compass/layout/_grid-background.scss +178 -178
  167. data/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss +23 -23
  168. data/frameworks/compass/stylesheets/compass/layout/_stretching.scss +23 -23
  169. data/frameworks/compass/stylesheets/compass/reset/_utilities-legacy.scss +135 -135
  170. data/frameworks/compass/stylesheets/compass/reset/_utilities.scss +142 -142
  171. data/frameworks/compass/stylesheets/compass/typography/_links.scss +3 -3
  172. data/frameworks/compass/stylesheets/compass/typography/_lists.scss +4 -4
  173. data/frameworks/compass/stylesheets/compass/typography/_text.scss +4 -4
  174. data/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss +221 -221
  175. data/frameworks/compass/stylesheets/compass/typography/links/_hover-link.scss +5 -5
  176. data/frameworks/compass/stylesheets/compass/typography/links/_link-colors.scss +28 -28
  177. data/frameworks/compass/stylesheets/compass/typography/links/_unstyled-link.scss +7 -7
  178. data/frameworks/compass/stylesheets/compass/typography/lists/_bullets.scss +34 -34
  179. data/frameworks/compass/stylesheets/compass/typography/lists/_horizontal-list.scss +61 -61
  180. data/frameworks/compass/stylesheets/compass/typography/lists/_inline-block-list.scss +50 -50
  181. data/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss +44 -44
  182. data/frameworks/compass/stylesheets/compass/typography/text/_ellipsis.scss +25 -25
  183. data/frameworks/compass/stylesheets/compass/typography/text/_force-wrap.scss +12 -12
  184. data/frameworks/compass/stylesheets/compass/typography/text/_nowrap.scss +2 -2
  185. data/frameworks/compass/stylesheets/compass/typography/text/_replacement.scss +68 -68
  186. data/frameworks/compass/stylesheets/compass/utilities/_general.scss +6 -6
  187. data/frameworks/compass/stylesheets/compass/utilities/_links.scss +5 -5
  188. data/frameworks/compass/stylesheets/compass/utilities/_lists.scss +6 -6
  189. data/frameworks/compass/stylesheets/compass/utilities/_print.scss +17 -17
  190. data/frameworks/compass/stylesheets/compass/utilities/_sprites.scss +2 -2
  191. data/frameworks/compass/stylesheets/compass/utilities/_tables.scss +3 -3
  192. data/frameworks/compass/stylesheets/compass/utilities/_text.scss +5 -5
  193. data/frameworks/compass/stylesheets/compass/utilities/color/_contrast.scss +27 -27
  194. data/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss +44 -44
  195. data/frameworks/compass/stylesheets/compass/utilities/general/_float.scss +29 -29
  196. data/frameworks/compass/stylesheets/compass/utilities/general/_hacks.scss +46 -46
  197. data/frameworks/compass/stylesheets/compass/utilities/general/_min.scss +16 -16
  198. data/frameworks/compass/stylesheets/compass/utilities/general/_reset.scss +1 -1
  199. data/frameworks/compass/stylesheets/compass/utilities/general/_tabs.scss +1 -1
  200. data/frameworks/compass/stylesheets/compass/utilities/general/_tag-cloud.scss +18 -18
  201. data/frameworks/compass/stylesheets/compass/utilities/links/_hover-link.scss +3 -3
  202. data/frameworks/compass/stylesheets/compass/utilities/links/_link-colors.scss +3 -3
  203. data/frameworks/compass/stylesheets/compass/utilities/links/_unstyled-link.scss +3 -3
  204. data/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.scss +3 -3
  205. data/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss +3 -3
  206. data/frameworks/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss +3 -3
  207. data/frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss +3 -3
  208. data/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +65 -65
  209. data/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss +78 -78
  210. data/frameworks/compass/stylesheets/compass/utilities/tables/_alternating-rows-and-columns.scss +22 -22
  211. data/frameworks/compass/stylesheets/compass/utilities/tables/_borders.scss +33 -33
  212. data/frameworks/compass/stylesheets/compass/utilities/tables/_scaffolding.scss +9 -9
  213. data/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.scss +3 -3
  214. data/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.scss +3 -3
  215. data/frameworks/compass/stylesheets/compass/utilities/text/_replacement.scss +3 -3
  216. data/frameworks/compass/templates/ellipsis/ellipsis.sass +8 -8
  217. data/frameworks/compass/templates/ellipsis/manifest.rb +26 -26
  218. data/frameworks/compass/templates/ellipsis/xml/ellipsis.xml +13 -13
  219. data/frameworks/compass/templates/extension/manifest.rb +26 -26
  220. data/frameworks/compass/templates/extension/stylesheets/main.sass +1 -1
  221. data/frameworks/compass/templates/extension/templates/project/manifest.rb +2 -2
  222. data/frameworks/compass/templates/extension/templates/project/screen.sass +1 -1
  223. data/frameworks/compass/templates/pie/LICENSE +12 -12
  224. data/frameworks/compass/templates/pie/LICENSE-APACHE2.txt +13 -13
  225. data/frameworks/compass/templates/pie/LICENSE-GPL2.txt +277 -277
  226. data/frameworks/compass/templates/pie/PIE.htc +96 -96
  227. data/frameworks/compass/templates/pie/manifest.rb +39 -39
  228. data/frameworks/compass/templates/pie/pie.scss +73 -73
  229. data/frameworks/compass/templates/project/USAGE.markdown +32 -32
  230. data/frameworks/compass/templates/project/ie.sass +6 -6
  231. data/frameworks/compass/templates/project/manifest.rb +3 -3
  232. data/frameworks/compass/templates/project/print.sass +6 -6
  233. data/frameworks/compass/templates/project/screen.sass +7 -7
  234. data/lib/compass.rb +37 -37
  235. data/lib/compass/actions.rb +115 -115
  236. data/lib/compass/app_integration.rb +39 -39
  237. data/lib/compass/app_integration/rails.rb +18 -18
  238. data/lib/compass/app_integration/stand_alone.rb +22 -22
  239. data/lib/compass/app_integration/stand_alone/configuration_defaults.rb +32 -32
  240. data/lib/compass/app_integration/stand_alone/installer.rb +83 -83
  241. data/lib/compass/browser_support.rb +62 -62
  242. data/lib/compass/commands.rb +12 -12
  243. data/lib/compass/commands/base.rb +44 -44
  244. data/lib/compass/commands/clean_project.rb +79 -79
  245. data/lib/compass/commands/create_project.rb +131 -131
  246. data/lib/compass/commands/default.rb +50 -50
  247. data/lib/compass/commands/extension_command.rb +60 -60
  248. data/lib/compass/commands/generate_grid_background.rb +96 -96
  249. data/lib/compass/commands/help.rb +85 -85
  250. data/lib/compass/commands/imports.rb +35 -35
  251. data/lib/compass/commands/installer_command.rb +32 -32
  252. data/lib/compass/commands/interactive.rb +61 -61
  253. data/lib/compass/commands/list_frameworks.rb +38 -38
  254. data/lib/compass/commands/print_version.rb +99 -99
  255. data/lib/compass/commands/project_base.rb +103 -103
  256. data/lib/compass/commands/project_stats.rb +178 -178
  257. data/lib/compass/commands/project_structure.rb +93 -93
  258. data/lib/compass/commands/registry.rb +40 -40
  259. data/lib/compass/commands/sprite.rb +89 -89
  260. data/lib/compass/commands/stamp_pattern.rb +90 -90
  261. data/lib/compass/commands/unpack_extension.rb +120 -120
  262. data/lib/compass/commands/update_project.rb +139 -139
  263. data/lib/compass/commands/validate_project.rb +77 -77
  264. data/lib/compass/commands/watch_project.rb +170 -170
  265. data/lib/compass/commands/write_configuration.rb +125 -125
  266. data/lib/compass/compiler.rb +200 -200
  267. data/lib/compass/configuration.rb +91 -91
  268. data/lib/compass/configuration/adapters.rb +77 -77
  269. data/lib/compass/configuration/comments.rb +59 -59
  270. data/lib/compass/configuration/data.rb +193 -193
  271. data/lib/compass/configuration/defaults.rb +187 -187
  272. data/lib/compass/configuration/file_data.rb +21 -21
  273. data/lib/compass/configuration/helpers.rb +160 -160
  274. data/lib/compass/configuration/inheritance.rb +304 -304
  275. data/lib/compass/configuration/paths.rb +19 -19
  276. data/lib/compass/configuration/serialization.rb +88 -88
  277. data/lib/compass/dependencies.rb +12 -12
  278. data/lib/compass/errors.rb +11 -11
  279. data/lib/compass/exec.rb +23 -23
  280. data/lib/compass/exec/command_option_parser.rb +23 -23
  281. data/lib/compass/exec/global_options_parser.rb +63 -63
  282. data/lib/compass/exec/helpers.rb +21 -21
  283. data/lib/compass/exec/project_options_parser.rb +66 -66
  284. data/lib/compass/exec/sub_command_ui.rb +51 -51
  285. data/lib/compass/exec/switch_ui.rb +179 -179
  286. data/lib/compass/frameworks.rb +133 -133
  287. data/lib/compass/grid_builder.rb +102 -102
  288. data/lib/compass/installers.rb +3 -3
  289. data/lib/compass/installers/bare_installer.rb +58 -58
  290. data/lib/compass/installers/base.rb +187 -187
  291. data/lib/compass/installers/manifest.rb +161 -161
  292. data/lib/compass/installers/manifest_installer.rb +61 -61
  293. data/lib/compass/installers/template_context.rb +43 -43
  294. data/lib/compass/logger.rb +103 -103
  295. data/lib/compass/quick_cache.rb +15 -15
  296. data/lib/compass/rails.rb +2 -2
  297. data/lib/compass/sass_extensions.rb +10 -10
  298. data/lib/compass/sass_extensions/functions.rb +34 -34
  299. data/lib/compass/sass_extensions/functions/colors.rb +67 -67
  300. data/lib/compass/sass_extensions/functions/constants.rb +74 -74
  301. data/lib/compass/sass_extensions/functions/cross_browser_support.rb +70 -70
  302. data/lib/compass/sass_extensions/functions/display.rb +27 -27
  303. data/lib/compass/sass_extensions/functions/enumerate.rb +6 -6
  304. data/lib/compass/sass_extensions/functions/env.rb +5 -5
  305. data/lib/compass/sass_extensions/functions/font_files.rb +41 -41
  306. data/lib/compass/sass_extensions/functions/gradient_support.rb +540 -540
  307. data/lib/compass/sass_extensions/functions/image_size.rb +113 -113
  308. data/lib/compass/sass_extensions/functions/inline_image.rb +64 -64
  309. data/lib/compass/sass_extensions/functions/lists.rb +101 -101
  310. data/lib/compass/sass_extensions/functions/math.rb +63 -63
  311. data/lib/compass/sass_extensions/functions/selectors.rb +63 -63
  312. data/lib/compass/sass_extensions/functions/sprites.rb +218 -218
  313. data/lib/compass/sass_extensions/functions/urls.rb +266 -266
  314. data/lib/compass/sass_extensions/monkey_patches.rb +3 -3
  315. data/lib/compass/sass_extensions/monkey_patches/browser_support.rb +95 -95
  316. data/lib/compass/sass_extensions/monkey_patches/traversal.rb +23 -23
  317. data/lib/compass/sass_extensions/sprites.rb +19 -19
  318. data/lib/compass/sass_extensions/sprites/engines.rb +25 -25
  319. data/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb +30 -30
  320. data/lib/compass/sass_extensions/sprites/image.rb +151 -151
  321. data/lib/compass/sass_extensions/sprites/image_methods.rb +31 -31
  322. data/lib/compass/sass_extensions/sprites/image_row.rb +46 -46
  323. data/lib/compass/sass_extensions/sprites/layout_methods.rb +158 -158
  324. data/lib/compass/sass_extensions/sprites/row_fitter.rb +91 -91
  325. data/lib/compass/sass_extensions/sprites/sprite_map.rb +86 -86
  326. data/lib/compass/sass_extensions/sprites/sprite_methods.rb +141 -141
  327. data/lib/compass/sprite_importer.rb +116 -116
  328. data/lib/compass/sprite_importer/binding.rb +10 -10
  329. data/lib/compass/sprite_importer/content.erb +80 -80
  330. data/lib/compass/stats.rb +99 -99
  331. data/lib/compass/test_case.rb +38 -38
  332. data/lib/compass/util.rb +29 -29
  333. data/lib/compass/validator.rb +16 -16
  334. data/lib/compass/version.rb +60 -60
  335. data/test/fixtures/extensions/only_stylesheets/compass_init.rb +1 -1
  336. data/test/fixtures/extensions/only_stylesheets/scss/only_stylesheets/foo.scss +3 -3
  337. data/test/fixtures/fonts/bgrove.base64.txt +1 -1
  338. data/test/fixtures/fonts/bgrove.ttf +0 -0
  339. data/test/fixtures/sprites/public/images/ko/starbg26x27.png +0 -0
  340. data/test/fixtures/stylesheets/blueprint/config.rb +14 -14
  341. data/test/fixtures/stylesheets/blueprint/css/ie.css +76 -76
  342. data/test/fixtures/stylesheets/blueprint/css/print.css +56 -56
  343. data/test/fixtures/stylesheets/blueprint/css/screen.css +815 -815
  344. data/test/fixtures/stylesheets/blueprint/css/single-imports/buttons.css +56 -56
  345. data/test/fixtures/stylesheets/blueprint/css/single-imports/colors.css +80 -80
  346. data/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css +11 -11
  347. data/test/fixtures/stylesheets/blueprint/css/single-imports/fancy-type.css +30 -30
  348. data/test/fixtures/stylesheets/blueprint/css/single-imports/form.css +42 -42
  349. data/test/fixtures/stylesheets/blueprint/css/single-imports/grid.css +435 -435
  350. data/test/fixtures/stylesheets/blueprint/css/single-imports/ie.css +76 -76
  351. data/test/fixtures/stylesheets/blueprint/css/single-imports/interaction.css +46 -46
  352. data/test/fixtures/stylesheets/blueprint/css/single-imports/link-icons.css +40 -40
  353. data/test/fixtures/stylesheets/blueprint/css/single-imports/liquid.css +651 -651
  354. data/test/fixtures/stylesheets/blueprint/css/single-imports/print.css +60 -60
  355. data/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css +75 -75
  356. data/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css +42 -42
  357. data/test/fixtures/stylesheets/blueprint/css/single-imports/rtl.css +437 -437
  358. data/test/fixtures/stylesheets/blueprint/css/single-imports/scaffolding.css +45 -45
  359. data/test/fixtures/stylesheets/blueprint/css/single-imports/typography.css +146 -146
  360. data/test/fixtures/stylesheets/blueprint/css/single-imports/utilities.css +35 -35
  361. data/test/fixtures/stylesheets/blueprint/sass/ie.sass +3 -3
  362. data/test/fixtures/stylesheets/blueprint/sass/print.sass +3 -3
  363. data/test/fixtures/stylesheets/blueprint/sass/screen.sass +18 -18
  364. data/test/fixtures/stylesheets/blueprint/sass/single-imports/buttons.scss +3 -3
  365. data/test/fixtures/stylesheets/blueprint/sass/single-imports/colors.scss +34 -34
  366. data/test/fixtures/stylesheets/blueprint/sass/single-imports/debug.scss +3 -3
  367. data/test/fixtures/stylesheets/blueprint/sass/single-imports/fancy-type.scss +3 -3
  368. data/test/fixtures/stylesheets/blueprint/sass/single-imports/form.scss +4 -4
  369. data/test/fixtures/stylesheets/blueprint/sass/single-imports/grid.scss +2 -2
  370. data/test/fixtures/stylesheets/blueprint/sass/single-imports/ie.scss +2 -2
  371. data/test/fixtures/stylesheets/blueprint/sass/single-imports/interaction.scss +3 -3
  372. data/test/fixtures/stylesheets/blueprint/sass/single-imports/link-icons.scss +12 -12
  373. data/test/fixtures/stylesheets/blueprint/sass/single-imports/liquid.scss +2 -2
  374. data/test/fixtures/stylesheets/blueprint/sass/single-imports/print.scss +4 -4
  375. data/test/fixtures/stylesheets/blueprint/sass/single-imports/reset-utilities.scss +4 -4
  376. data/test/fixtures/stylesheets/blueprint/sass/single-imports/reset.scss +1 -1
  377. data/test/fixtures/stylesheets/blueprint/sass/single-imports/rtl.scss +2 -2
  378. data/test/fixtures/stylesheets/blueprint/sass/single-imports/scaffolding.scss +5 -5
  379. data/test/fixtures/stylesheets/blueprint/sass/single-imports/typography.scss +3 -3
  380. data/test/fixtures/stylesheets/blueprint/sass/single-imports/utilities.scss +3 -3
  381. data/test/fixtures/stylesheets/busted_image_urls/config.rb +29 -29
  382. data/test/fixtures/stylesheets/busted_image_urls/css/screen.css +9 -9
  383. data/test/fixtures/stylesheets/busted_image_urls/sass/screen.sass +13 -13
  384. data/test/fixtures/stylesheets/compass/config.rb +16 -16
  385. data/test/fixtures/stylesheets/compass/css/background-clip.css +10 -10
  386. data/test/fixtures/stylesheets/compass/css/border_radius.css +14 -14
  387. data/test/fixtures/stylesheets/compass/css/box-sizeing.css +9 -9
  388. data/test/fixtures/stylesheets/compass/css/box.css +103 -103
  389. data/test/fixtures/stylesheets/compass/css/box_shadow.css +14 -14
  390. data/test/fixtures/stylesheets/compass/css/columns.css +161 -161
  391. data/test/fixtures/stylesheets/compass/css/filters.css +29 -29
  392. data/test/fixtures/stylesheets/compass/css/fonts.css +4 -4
  393. data/test/fixtures/stylesheets/compass/css/force-wrap.css +9 -9
  394. data/test/fixtures/stylesheets/compass/css/gradients.css +202 -202
  395. data/test/fixtures/stylesheets/compass/css/grid_background.css +71 -71
  396. data/test/fixtures/stylesheets/compass/css/hyphenation.css +16 -16
  397. data/test/fixtures/stylesheets/compass/css/image_size.css +15 -15
  398. data/test/fixtures/stylesheets/compass/css/images.css +8 -8
  399. data/test/fixtures/stylesheets/compass/css/layout.css +16 -16
  400. data/test/fixtures/stylesheets/compass/css/legacy_clearfix.css +26 -26
  401. data/test/fixtures/stylesheets/compass/css/lists.css +151 -151
  402. data/test/fixtures/stylesheets/compass/css/opacity.css +3 -3
  403. data/test/fixtures/stylesheets/compass/css/pie.css +26 -26
  404. data/test/fixtures/stylesheets/compass/css/print.css +11 -11
  405. data/test/fixtures/stylesheets/compass/css/regions.css +7 -7
  406. data/test/fixtures/stylesheets/compass/css/replacement.css +59 -59
  407. data/test/fixtures/stylesheets/compass/css/reset.css +59 -59
  408. data/test/fixtures/stylesheets/compass/css/sprites.css +1262 -1262
  409. data/test/fixtures/stylesheets/compass/css/stretching.css +66 -66
  410. data/test/fixtures/stylesheets/compass/css/text_shadow.css +29 -29
  411. data/test/fixtures/stylesheets/compass/css/transform.css +441 -441
  412. data/test/fixtures/stylesheets/compass/css/transition.css +128 -128
  413. data/test/fixtures/stylesheets/compass/css/user-interface.css +4 -4
  414. data/test/fixtures/stylesheets/compass/css/utilities.css +56 -56
  415. data/test/fixtures/stylesheets/compass/css/vertical_rhythm.css +45 -45
  416. data/test/fixtures/stylesheets/compass/sass/background-clip.scss +7 -7
  417. data/test/fixtures/stylesheets/compass/sass/border_radius.scss +5 -5
  418. data/test/fixtures/stylesheets/compass/sass/box-sizeing.scss +7 -7
  419. data/test/fixtures/stylesheets/compass/sass/box.sass +49 -49
  420. data/test/fixtures/stylesheets/compass/sass/box_shadow.scss +5 -5
  421. data/test/fixtures/stylesheets/compass/sass/columns.scss +28 -28
  422. data/test/fixtures/stylesheets/compass/sass/filters.scss +24 -24
  423. data/test/fixtures/stylesheets/compass/sass/fonts.sass +2 -2
  424. data/test/fixtures/stylesheets/compass/sass/force-wrap.scss +3 -3
  425. data/test/fixtures/stylesheets/compass/sass/gradients.sass +96 -96
  426. data/test/fixtures/stylesheets/compass/sass/grid_background.scss +33 -33
  427. data/test/fixtures/stylesheets/compass/sass/hyphenation.scss +10 -10
  428. data/test/fixtures/stylesheets/compass/sass/image_size.sass +15 -15
  429. data/test/fixtures/stylesheets/compass/sass/images.scss +8 -8
  430. data/test/fixtures/stylesheets/compass/sass/layout.sass +3 -3
  431. data/test/fixtures/stylesheets/compass/sass/legacy_clearfix.scss +14 -14
  432. data/test/fixtures/stylesheets/compass/sass/lists.scss +11 -11
  433. data/test/fixtures/stylesheets/compass/sass/opacity.scss +5 -5
  434. data/test/fixtures/stylesheets/compass/sass/pie.scss +47 -47
  435. data/test/fixtures/stylesheets/compass/sass/print.sass +5 -5
  436. data/test/fixtures/stylesheets/compass/sass/regions.scss +3 -3
  437. data/test/fixtures/stylesheets/compass/sass/replacement.scss +22 -22
  438. data/test/fixtures/stylesheets/compass/sass/reset.sass +12 -12
  439. data/test/fixtures/stylesheets/compass/sass/sprites.scss +13 -13
  440. data/test/fixtures/stylesheets/compass/sass/stretching.sass +33 -33
  441. data/test/fixtures/stylesheets/compass/sass/text_shadow.scss +11 -11
  442. data/test/fixtures/stylesheets/compass/sass/transform.scss +87 -87
  443. data/test/fixtures/stylesheets/compass/sass/transition.scss +24 -24
  444. data/test/fixtures/stylesheets/compass/sass/user-interface.scss +4 -4
  445. data/test/fixtures/stylesheets/compass/sass/utilities.scss +20 -20
  446. data/test/fixtures/stylesheets/compass/sass/vertical_rhythm.scss +15 -15
  447. data/test/fixtures/stylesheets/envtest/config.rb +9 -9
  448. data/test/fixtures/stylesheets/envtest/css/env.css +2 -2
  449. data/test/fixtures/stylesheets/envtest/sass/env.scss +3 -3
  450. data/test/fixtures/stylesheets/error/config.rb +10 -10
  451. data/test/fixtures/stylesheets/error/sass/screen.sass +2 -2
  452. data/test/fixtures/stylesheets/image_urls/config.rb +19 -19
  453. data/test/fixtures/stylesheets/image_urls/css/screen.css +5 -5
  454. data/test/fixtures/stylesheets/image_urls/sass/screen.sass +8 -8
  455. data/test/fixtures/stylesheets/relative/config.rb +10 -10
  456. data/test/fixtures/stylesheets/relative/css/ie.css +1 -1
  457. data/test/fixtures/stylesheets/relative/css/print.css +1 -1
  458. data/test/fixtures/stylesheets/relative/css/screen.css +1 -1
  459. data/test/fixtures/stylesheets/relative/sass/ie.sass +5 -5
  460. data/test/fixtures/stylesheets/relative/sass/print.sass +3 -3
  461. data/test/fixtures/stylesheets/relative/sass/screen.sass +2 -2
  462. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/config.rb +25 -25
  463. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/sass/ie.scss +5 -5
  464. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/sass/print.scss +3 -3
  465. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/sass/screen.scss +6 -6
  466. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/stylesheets/ie.css +5 -5
  467. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/stylesheets/print.css +3 -3
  468. data/test/fixtures/stylesheets/uses_only_stylesheets_ext/stylesheets/screen.css +68 -68
  469. data/test/fixtures/stylesheets/valid/config.rb +9 -9
  470. data/test/fixtures/stylesheets/valid/sass/simple.sass +1 -1
  471. data/test/helpers/command_line.rb +114 -114
  472. data/test/helpers/diff.rb +48 -48
  473. data/test/helpers/io.rb +36 -36
  474. data/test/helpers/rails.rb +55 -55
  475. data/test/helpers/test_case.rb +62 -62
  476. data/test/integrations/compass_test.rb +224 -224
  477. data/test/integrations/sprites_test.rb +843 -843
  478. data/test/test_helper.rb +73 -73
  479. data/test/units/actions_test.rb +23 -23
  480. data/test/units/command_line_test.rb +60 -60
  481. data/test/units/compass_module_test.rb +36 -36
  482. data/test/units/compass_png_test.rb +45 -45
  483. data/test/units/compiler_test.rb +10 -10
  484. data/test/units/configuration_test.rb +440 -440
  485. data/test/units/regressions_test.rb +35 -35
  486. data/test/units/sass_extensions_test.rb +198 -198
  487. data/test/units/sprites/engine_test.rb +47 -47
  488. data/test/units/sprites/image_row_test.rb +57 -57
  489. data/test/units/sprites/image_test.rb +99 -99
  490. data/test/units/sprites/importer_test.rb +90 -90
  491. data/test/units/sprites/layout_test.rb +154 -154
  492. data/test/units/sprites/row_fitter_test.rb +65 -65
  493. data/test/units/sprites/sprite_command_test.rb +54 -54
  494. data/test/units/sprites/sprite_map_test.rb +130 -130
  495. metadata +1304 -1310
@@ -1,125 +1,125 @@
1
- require 'compass/commands/project_base'
2
-
3
- module Compass
4
- module Commands
5
- module ConfigurationOptionsParser
6
- def set_options(opts)
7
- opts.banner = %Q{
8
- Usage: compass config [path/to/config_file.rb] [options]
9
-
10
- Description:
11
- Generate a configuration file for the options specified.
12
- Compass will recognize configuration files in the
13
- following locations relative to the project root:
14
- * #{Compass::Configuration::Helpers::KNOWN_CONFIG_LOCATIONS.join("
15
- * ")}
16
- Any other location, and you'll need to specify it when working with the command line tool using the -c option.
17
-
18
- Options:
19
- }.strip.split("\n").map{|l| l.gsub(/^ {0,10}/,'')}.join("\n")
20
- opts.on("--debug [PROPERTY]", "Debug your configuration by printing out details.") do |prop|
21
- self.options[:debug] = prop.nil? ? true : prop.to_sym
22
- end
23
- opts.on("-p PROPERTY", "--property PROPERTY", "Print out the value of a particular configuration property") do |prop|
24
- self.options[:display] = prop.to_sym
25
- end
26
-
27
- super
28
- end
29
- end
30
- class WriteConfiguration < ProjectBase
31
-
32
- register :config
33
-
34
- include InstallerCommand
35
-
36
- def initialize(working_path, options)
37
- super
38
- assert_project_directory_exists!
39
- end
40
-
41
- def add_project_configuration
42
- Compass.add_project_configuration
43
- end
44
-
45
- def perform
46
- if options[:display]
47
- if Compass.configuration.respond_to?(options[:display])
48
- puts Compass.configuration.send(options[:display])
49
- else
50
- raise Compass::Error, "ERROR: configuration property '#{options[:display]}' does not exist"
51
- end
52
- elsif options[:debug]
53
- puts "Configuration sources:"
54
- c = Compass.configuration
55
- while c
56
- print c.name
57
- c = c.inherited_data
58
- print ", " if c
59
- end
60
- print "\n"
61
- Compass.configuration.debug.each do |prop, values|
62
- if options[:debug].is_a?(Symbol)
63
- next unless prop == options[:debug]
64
- end
65
- puts "***** #{prop} = #{values.first[:resolved].inspect} *****"
66
- [:default, :value, :raw, :resolved].each do |kind|
67
- puts "#{kind}: " + values.inject([]){|m, v| m << v[kind]}.map{|v| v.nil? ? '-' : v.inspect}.join(", ")
68
- end
69
- end
70
- else
71
- config_file = options[:configuration_file]
72
- config_file ||= Compass.detect_configuration_file
73
- config_file ||= Compass::Configuration::Helpers::KNOWN_CONFIG_LOCATIONS.first
74
- directory File.dirname(config_file)
75
- installer.write_configuration_files(config_file)
76
- end
77
- end
78
-
79
- def installer_args
80
- [nil, project_directory, options]
81
- end
82
-
83
- def explicit_config_file_must_be_readable?
84
- false
85
- end
86
-
87
- class << self
88
-
89
- def option_parser(arguments)
90
- parser = Compass::Exec::CommandOptionParser.new(arguments)
91
- parser.extend(Compass::Exec::GlobalOptionsParser)
92
- parser.extend(Compass::Exec::ProjectOptionsParser)
93
- parser.extend(ConfigurationOptionsParser)
94
- end
95
-
96
- def usage
97
- option_parser([]).to_s
98
- end
99
-
100
- def description(command)
101
- "Generate a configuration file for the provided command line options."
102
- end
103
-
104
- def parse!(arguments)
105
- parser = option_parser(arguments)
106
- parser.parse!
107
- parse_arguments!(parser, arguments)
108
- parser.options
109
- end
110
-
111
- def parse_arguments!(parser, arguments)
112
- if arguments.size == 1
113
- parser.options[:configuration_file] = arguments.shift
114
- elsif arguments.size == 0
115
- # default to the current directory.
116
- else
117
- raise Compass::Error, "Too many arguments were specified."
118
- end
119
- end
120
-
121
- end
122
-
123
- end
124
- end
125
- end
1
+ require 'compass/commands/project_base'
2
+
3
+ module Compass
4
+ module Commands
5
+ module ConfigurationOptionsParser
6
+ def set_options(opts)
7
+ opts.banner = %Q{
8
+ Usage: compass config [path/to/config_file.rb] [options]
9
+
10
+ Description:
11
+ Generate a configuration file for the options specified.
12
+ Compass will recognize configuration files in the
13
+ following locations relative to the project root:
14
+ * #{Compass::Configuration::Helpers::KNOWN_CONFIG_LOCATIONS.join("
15
+ * ")}
16
+ Any other location, and you'll need to specify it when working with the command line tool using the -c option.
17
+
18
+ Options:
19
+ }.strip.split("\n").map{|l| l.gsub(/^ {0,10}/,'')}.join("\n")
20
+ opts.on("--debug [PROPERTY]", "Debug your configuration by printing out details.") do |prop|
21
+ self.options[:debug] = prop.nil? ? true : prop.to_sym
22
+ end
23
+ opts.on("-p PROPERTY", "--property PROPERTY", "Print out the value of a particular configuration property") do |prop|
24
+ self.options[:display] = prop.to_sym
25
+ end
26
+
27
+ super
28
+ end
29
+ end
30
+ class WriteConfiguration < ProjectBase
31
+
32
+ register :config
33
+
34
+ include InstallerCommand
35
+
36
+ def initialize(working_path, options)
37
+ super
38
+ assert_project_directory_exists!
39
+ end
40
+
41
+ def add_project_configuration
42
+ Compass.add_project_configuration
43
+ end
44
+
45
+ def perform
46
+ if options[:display]
47
+ if Compass.configuration.respond_to?(options[:display])
48
+ puts Compass.configuration.send(options[:display])
49
+ else
50
+ raise Compass::Error, "ERROR: configuration property '#{options[:display]}' does not exist"
51
+ end
52
+ elsif options[:debug]
53
+ puts "Configuration sources:"
54
+ c = Compass.configuration
55
+ while c
56
+ print c.name
57
+ c = c.inherited_data
58
+ print ", " if c
59
+ end
60
+ print "\n"
61
+ Compass.configuration.debug.each do |prop, values|
62
+ if options[:debug].is_a?(Symbol)
63
+ next unless prop == options[:debug]
64
+ end
65
+ puts "***** #{prop} = #{values.first[:resolved].inspect} *****"
66
+ [:default, :value, :raw, :resolved].each do |kind|
67
+ puts "#{kind}: " + values.inject([]){|m, v| m << v[kind]}.map{|v| v.nil? ? '-' : v.inspect}.join(", ")
68
+ end
69
+ end
70
+ else
71
+ config_file = options[:configuration_file]
72
+ config_file ||= Compass.detect_configuration_file
73
+ config_file ||= Compass::Configuration::Helpers::KNOWN_CONFIG_LOCATIONS.first
74
+ directory File.dirname(config_file)
75
+ installer.write_configuration_files(config_file)
76
+ end
77
+ end
78
+
79
+ def installer_args
80
+ [nil, project_directory, options]
81
+ end
82
+
83
+ def explicit_config_file_must_be_readable?
84
+ false
85
+ end
86
+
87
+ class << self
88
+
89
+ def option_parser(arguments)
90
+ parser = Compass::Exec::CommandOptionParser.new(arguments)
91
+ parser.extend(Compass::Exec::GlobalOptionsParser)
92
+ parser.extend(Compass::Exec::ProjectOptionsParser)
93
+ parser.extend(ConfigurationOptionsParser)
94
+ end
95
+
96
+ def usage
97
+ option_parser([]).to_s
98
+ end
99
+
100
+ def description(command)
101
+ "Generate a configuration file for the provided command line options."
102
+ end
103
+
104
+ def parse!(arguments)
105
+ parser = option_parser(arguments)
106
+ parser.parse!
107
+ parse_arguments!(parser, arguments)
108
+ parser.options
109
+ end
110
+
111
+ def parse_arguments!(parser, arguments)
112
+ if arguments.size == 1
113
+ parser.options[:configuration_file] = arguments.shift
114
+ elsif arguments.size == 0
115
+ # default to the current directory.
116
+ else
117
+ raise Compass::Error, "Too many arguments were specified."
118
+ end
119
+ end
120
+
121
+ end
122
+
123
+ end
124
+ end
125
+ end
@@ -1,200 +1,200 @@
1
- module Compass
2
- class Compiler
3
-
4
- include Actions
5
-
6
- attr_accessor :working_path, :from, :to, :options, :sass_options, :staleness_checker, :importer
7
-
8
- def initialize(working_path, from, to, options)
9
- self.working_path = working_path.to_s
10
- self.from, self.to = File.expand_path(from), to
11
- self.logger = options.delete(:logger)
12
- sass_opts = options.delete(:sass) || {}
13
- self.options = options
14
- self.sass_options = options.dup
15
- self.sass_options.delete(:quiet)
16
- self.sass_options.update(sass_opts)
17
- self.sass_options[:cache_location] ||= determine_cache_location
18
- self.sass_options[:importer] = self.importer = Sass::Importers::Filesystem.new(from)
19
- self.sass_options[:compass] ||= {}
20
- self.sass_options[:compass][:logger] = self.logger
21
- self.sass_options[:compass][:environment] = Compass.configuration.environment
22
- self.staleness_checker = Sass::Plugin::StalenessChecker.new(sass_options)
23
- end
24
-
25
- def determine_cache_location
26
- Compass.configuration.cache_path || Sass::Plugin.options[:cache_location] || File.join(working_path, ".sass-cache")
27
- end
28
-
29
- def sass_files(options = {})
30
- exclude_partials = options.fetch(:exclude_partials, true)
31
- @sass_files = self.options[:sass_files] || Dir.glob(separate("#{from}/**/#{'[^_]' if exclude_partials}*.s[ac]ss"))
32
- end
33
-
34
- def relative_stylesheet_name(sass_file)
35
- sass_file[(from.length + 1)..-1]
36
- end
37
-
38
- def stylesheet_name(sass_file)
39
- if sass_file.index(from) == 0
40
- sass_file[(from.length + 1)..-6].sub(/\.css$/,'')
41
- else
42
- raise Compass::Error, "You must compile individual stylesheets from the project directory."
43
- end
44
- end
45
-
46
- def css_files
47
- @css_files ||= sass_files.map{|sass_file| corresponding_css_file(sass_file)}
48
- end
49
-
50
- def corresponding_css_file(sass_file)
51
- "#{to}/#{stylesheet_name(sass_file)}.css"
52
- end
53
-
54
- def target_directories
55
- css_files.map{|css_file| File.dirname(css_file)}.uniq.sort.sort_by{|d| d.length }
56
- end
57
-
58
- # Returns the sass file that needs to be compiled, if any.
59
- def out_of_date?
60
- sass_files.zip(css_files).each do |sass_filename, css_filename|
61
- return sass_filename if needs_update?(css_filename, sass_filename)
62
- end
63
- false
64
- end
65
-
66
- def needs_update?(css_filename, sass_filename)
67
- staleness_checker.stylesheet_needs_update?(css_filename, File.expand_path(sass_filename), importer)
68
- end
69
-
70
- # Determines if the configuration file is newer than any css file
71
- def new_config?
72
- config_file = Compass.detect_configuration_file
73
- return false unless config_file
74
- config_mtime = File.mtime(config_file)
75
- css_files.each do |css_filename|
76
- return config_file if File.exists?(css_filename) && config_mtime > File.mtime(css_filename)
77
- end
78
- nil
79
- end
80
-
81
- def clean!
82
- remove options[:cache_location]
83
- css_files.each do |css_file|
84
- remove css_file
85
- end
86
- end
87
-
88
- def run
89
- failure_count = 0
90
- if new_config?
91
- # Wipe out the cache and force compilation if the configuration has changed.
92
- remove options[:cache_location] if options[:cache_location]
93
- options[:force] = true
94
- end
95
-
96
- # Make sure the target directories exist
97
- target_directories.each {|dir| directory dir}
98
-
99
- # Compile each sass file.
100
- result = timed do
101
- sass_files.zip(css_files).each do |sass_filename, css_filename|
102
- begin
103
- compile_if_required sass_filename, css_filename
104
- rescue Sass::SyntaxError => e
105
- failure_count += 1
106
- handle_exception(sass_filename, css_filename, e)
107
- end
108
- end
109
- end
110
- if options[:time]
111
- puts "Compilation took #{(result.__duration * 1000).round / 1000.0}s"
112
- end
113
- return failure_count
114
- end
115
-
116
- def compile_if_required(sass_filename, css_filename)
117
- if should_compile?(sass_filename, css_filename)
118
- compile sass_filename, css_filename
119
- else
120
- logger.record :unchanged, basename(sass_filename) unless options[:quiet]
121
- end
122
- end
123
-
124
- def timed
125
- start_time = Time.now
126
- res = yield
127
- end_time = Time.now
128
- res.instance_variable_set("@__duration", end_time - start_time)
129
- def res.__duration
130
- @__duration
131
- end
132
- res
133
- end
134
-
135
- # Compile one Sass file
136
- def compile(sass_filename, css_filename)
137
- start_time = end_time = nil
138
- css_content, map = logger.red do
139
- timed do
140
- if sass_options[:sourcemap]
141
- engine(sass_filename, css_filename).render_with_sourcemap("#{File.basename(css_filename)}.map")
142
- else
143
- engine(sass_filename, css_filename).render
144
- end
145
- end
146
- end
147
- duration = options[:time] ? "(#{(css_content.__duration * 1000).round / 1000.0}s)" : ""
148
- write_file(css_filename, css_content, options.merge(:force => true, :extra => duration))
149
-
150
- if sass_options[:sourcemap]
151
- css_filename_clean = css_filename.gsub(/\\/, '/')
152
- sourcemap = map.to_json(:css_path => css_filename_clean, :sourcemap_path => "#{css_filename_clean}.map")
153
- write_file("#{css_filename}.map", sourcemap, options.merge(:force => true, :extra => duration))
154
- end
155
-
156
- Compass.configuration.run_stylesheet_saved(css_filename)
157
- end
158
-
159
- def should_compile?(sass_filename, css_filename)
160
- options[:force] || needs_update?(css_filename, sass_filename)
161
- end
162
-
163
- # A sass engine for compiling a single file.
164
- def engine(sass_filename, css_filename)
165
- syntax = (sass_filename =~ /\.(s[ac]ss)$/) && $1.to_sym || :sass
166
- opts = sass_options.merge(:filename => sass_filename, :css_filename => css_filename, :syntax => syntax)
167
- Sass::Engine.new(open(sass_filename).read, opts)
168
- end
169
-
170
- # Place the syntax error into the target css file,
171
- # formatted to display in the browser (in development mode)
172
- # if there's an error.
173
- def handle_exception(sass_filename, css_filename, e)
174
- exception_file = basename(e.sass_filename)
175
- file = basename(sass_filename)
176
- exception_file = nil if exception_file == file
177
- formatted_error = "(Line #{e.sass_line}#{ " of #{exception_file}" if exception_file}: #{e.message})"
178
- logger.record :error, file, formatted_error
179
- Compass.configuration.run_stylesheet_error(sass_filename, formatted_error)
180
- write_file css_filename, error_contents(e, sass_filename), options.merge(:force => true)
181
- end
182
-
183
- # Haml refactored this logic in 2.3, this is backwards compatibility for either one
184
- def error_contents(e, sass_filename)
185
- if Sass::SyntaxError.respond_to?(:exception_to_css)
186
- e.sass_template = sass_filename
187
- Sass::SyntaxError.exception_to_css(e, :full_exception => show_full_exception?)
188
- else
189
- Sass::Plugin.options[:full_exception] ||= show_full_exception?
190
- Sass::Plugin.send(:exception_string, e)
191
- end
192
- end
193
-
194
- # We don't want to show the full exception in production environments.
195
- def show_full_exception?
196
- Compass.configuration.environment == :development
197
- end
198
-
199
- end
200
- end
1
+ module Compass
2
+ class Compiler
3
+
4
+ include Actions
5
+
6
+ attr_accessor :working_path, :from, :to, :options, :sass_options, :staleness_checker, :importer
7
+
8
+ def initialize(working_path, from, to, options)
9
+ self.working_path = working_path.to_s
10
+ self.from, self.to = File.expand_path(from), to
11
+ self.logger = options.delete(:logger)
12
+ sass_opts = options.delete(:sass) || {}
13
+ self.options = options
14
+ self.sass_options = options.dup
15
+ self.sass_options.delete(:quiet)
16
+ self.sass_options.update(sass_opts)
17
+ self.sass_options[:cache_location] ||= determine_cache_location
18
+ self.sass_options[:importer] = self.importer = Sass::Importers::Filesystem.new(from)
19
+ self.sass_options[:compass] ||= {}
20
+ self.sass_options[:compass][:logger] = self.logger
21
+ self.sass_options[:compass][:environment] = Compass.configuration.environment
22
+ self.staleness_checker = Sass::Plugin::StalenessChecker.new(sass_options)
23
+ end
24
+
25
+ def determine_cache_location
26
+ Compass.configuration.cache_path || Sass::Plugin.options[:cache_location] || File.join(working_path, ".sass-cache")
27
+ end
28
+
29
+ def sass_files(options = {})
30
+ exclude_partials = options.fetch(:exclude_partials, true)
31
+ @sass_files = self.options[:sass_files] || Dir.glob(separate("#{from}/**/#{'[^_]' if exclude_partials}*.s[ac]ss"))
32
+ end
33
+
34
+ def relative_stylesheet_name(sass_file)
35
+ sass_file[(from.length + 1)..-1]
36
+ end
37
+
38
+ def stylesheet_name(sass_file)
39
+ if sass_file.index(from) == 0
40
+ sass_file[(from.length + 1)..-6].sub(/\.css$/,'')
41
+ else
42
+ raise Compass::Error, "You must compile individual stylesheets from the project directory."
43
+ end
44
+ end
45
+
46
+ def css_files
47
+ @css_files ||= sass_files.map{|sass_file| corresponding_css_file(sass_file)}
48
+ end
49
+
50
+ def corresponding_css_file(sass_file)
51
+ "#{to}/#{stylesheet_name(sass_file)}.css"
52
+ end
53
+
54
+ def target_directories
55
+ css_files.map{|css_file| File.dirname(css_file)}.uniq.sort.sort_by{|d| d.length }
56
+ end
57
+
58
+ # Returns the sass file that needs to be compiled, if any.
59
+ def out_of_date?
60
+ sass_files.zip(css_files).each do |sass_filename, css_filename|
61
+ return sass_filename if needs_update?(css_filename, sass_filename)
62
+ end
63
+ false
64
+ end
65
+
66
+ def needs_update?(css_filename, sass_filename)
67
+ staleness_checker.stylesheet_needs_update?(css_filename, File.expand_path(sass_filename), importer)
68
+ end
69
+
70
+ # Determines if the configuration file is newer than any css file
71
+ def new_config?
72
+ config_file = Compass.detect_configuration_file
73
+ return false unless config_file
74
+ config_mtime = File.mtime(config_file)
75
+ css_files.each do |css_filename|
76
+ return config_file if File.exists?(css_filename) && config_mtime > File.mtime(css_filename)
77
+ end
78
+ nil
79
+ end
80
+
81
+ def clean!
82
+ remove options[:cache_location]
83
+ css_files.each do |css_file|
84
+ remove css_file
85
+ end
86
+ end
87
+
88
+ def run
89
+ failure_count = 0
90
+ if new_config?
91
+ # Wipe out the cache and force compilation if the configuration has changed.
92
+ remove options[:cache_location] if options[:cache_location]
93
+ options[:force] = true
94
+ end
95
+
96
+ # Make sure the target directories exist
97
+ target_directories.each {|dir| directory dir}
98
+
99
+ # Compile each sass file.
100
+ result = timed do
101
+ sass_files.zip(css_files).each do |sass_filename, css_filename|
102
+ begin
103
+ compile_if_required sass_filename, css_filename
104
+ rescue Sass::SyntaxError => e
105
+ failure_count += 1
106
+ handle_exception(sass_filename, css_filename, e)
107
+ end
108
+ end
109
+ end
110
+ if options[:time]
111
+ puts "Compilation took #{(result.__duration * 1000).round / 1000.0}s"
112
+ end
113
+ return failure_count
114
+ end
115
+
116
+ def compile_if_required(sass_filename, css_filename)
117
+ if should_compile?(sass_filename, css_filename)
118
+ compile sass_filename, css_filename
119
+ else
120
+ logger.record :unchanged, basename(sass_filename) unless options[:quiet]
121
+ end
122
+ end
123
+
124
+ def timed
125
+ start_time = Time.now
126
+ res = yield
127
+ end_time = Time.now
128
+ res.instance_variable_set("@__duration", end_time - start_time)
129
+ def res.__duration
130
+ @__duration
131
+ end
132
+ res
133
+ end
134
+
135
+ # Compile one Sass file
136
+ def compile(sass_filename, css_filename)
137
+ start_time = end_time = nil
138
+ css_content, map = logger.red do
139
+ timed do
140
+ if sass_options[:sourcemap]
141
+ engine(sass_filename, css_filename).render_with_sourcemap("#{File.basename(css_filename)}.map")
142
+ else
143
+ engine(sass_filename, css_filename).render
144
+ end
145
+ end
146
+ end
147
+ duration = options[:time] ? "(#{(css_content.__duration * 1000).round / 1000.0}s)" : ""
148
+ write_file(css_filename, css_content, options.merge(:force => true, :extra => duration))
149
+
150
+ if sass_options[:sourcemap]
151
+ css_filename_clean = css_filename.gsub(/\\/, '/')
152
+ sourcemap = map.to_json(:css_path => css_filename_clean, :sourcemap_path => "#{css_filename_clean}.map")
153
+ write_file("#{css_filename}.map", sourcemap, options.merge(:force => true, :extra => duration))
154
+ end
155
+
156
+ Compass.configuration.run_stylesheet_saved(css_filename)
157
+ end
158
+
159
+ def should_compile?(sass_filename, css_filename)
160
+ options[:force] || needs_update?(css_filename, sass_filename)
161
+ end
162
+
163
+ # A sass engine for compiling a single file.
164
+ def engine(sass_filename, css_filename)
165
+ syntax = (sass_filename =~ /\.(s[ac]ss)$/) && $1.to_sym || :sass
166
+ opts = sass_options.merge(:filename => sass_filename, :css_filename => css_filename, :syntax => syntax)
167
+ Sass::Engine.new(open(sass_filename).read, opts)
168
+ end
169
+
170
+ # Place the syntax error into the target css file,
171
+ # formatted to display in the browser (in development mode)
172
+ # if there's an error.
173
+ def handle_exception(sass_filename, css_filename, e)
174
+ exception_file = basename(e.sass_filename)
175
+ file = basename(sass_filename)
176
+ exception_file = nil if exception_file == file
177
+ formatted_error = "(Line #{e.sass_line}#{ " of #{exception_file}" if exception_file}: #{e.message})"
178
+ logger.record :error, file, formatted_error
179
+ Compass.configuration.run_stylesheet_error(sass_filename, formatted_error)
180
+ write_file css_filename, error_contents(e, sass_filename), options.merge(:force => true)
181
+ end
182
+
183
+ # Haml refactored this logic in 2.3, this is backwards compatibility for either one
184
+ def error_contents(e, sass_filename)
185
+ if Sass::SyntaxError.respond_to?(:exception_to_css)
186
+ e.sass_template = sass_filename
187
+ Sass::SyntaxError.exception_to_css(e, :full_exception => show_full_exception?)
188
+ else
189
+ Sass::Plugin.options[:full_exception] ||= show_full_exception?
190
+ Sass::Plugin.send(:exception_string, e)
191
+ end
192
+ end
193
+
194
+ # We don't want to show the full exception in production environments.
195
+ def show_full_exception?
196
+ Compass.configuration.environment == :development
197
+ end
198
+
199
+ end
200
+ end