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,92 +1,92 @@
1
- require 'forwardable'
2
-
3
- module Compass
4
- module SassExtensions
5
- module Sprites
6
- class RowFitter
7
- extend Forwardable
8
-
9
- attr_reader :images, :rows
10
- def_delegators :rows, :[]
11
-
12
- def initialize(images)
13
- @images = images.sort do |a,b|
14
- if a.height == b.height
15
- b.width <=> a.width
16
- else
17
- a.height <=> b.height
18
- end
19
- end
20
- @rows = []
21
- end
22
-
23
- def fit!(style = :scan)
24
- send("#{style}_fit")
25
- @rows
26
- end
27
-
28
- def width
29
- @width ||= @images.collect(&:width).max
30
- end
31
-
32
- def height
33
- @height ||= @rows.inject(0) {|sum, row| sum += row.height}
34
- end
35
-
36
- def efficiency
37
- @rows.inject(0) { |sum, row| sum += row.efficiency } ** @rows.length
38
- end
39
-
40
- private
41
- def new_row(image = nil)
42
- row = Compass::SassExtensions::Sprites::ImageRow.new(width)
43
- row.add(image) if image
44
- row
45
- end
46
-
47
- def fast_fit
48
- row = new_row
49
- @images.each do |image|
50
- if !row.add(image)
51
- @rows << row
52
- row = new_row(image)
53
- end
54
- end
55
-
56
- @rows << row
57
- end
58
-
59
- def scan_fit
60
- fast_fit
61
-
62
- moved_images = []
63
-
64
- begin
65
- removed = false
66
-
67
- catch :done do
68
- @rows.each do |row|
69
- (@rows - [ row ]).each do |other_row|
70
- other_row.images.each do |image|
71
- if !moved_images.include?(image)
72
- if row.will_fit?(image)
73
- other_row.delete(image)
74
- row << image
75
-
76
- @rows.delete(other_row) if other_row.empty?
77
- removed = true
78
-
79
- moved_images << image
80
- throw :done
81
- end
82
- end
83
- end
84
- end
85
- end
86
- end
87
- end while removed
88
- end
89
- end
90
- end
91
- end
1
+ require 'forwardable'
2
+
3
+ module Compass
4
+ module SassExtensions
5
+ module Sprites
6
+ class RowFitter
7
+ extend Forwardable
8
+
9
+ attr_reader :images, :rows
10
+ def_delegators :rows, :[]
11
+
12
+ def initialize(images)
13
+ @images = images.sort do |a,b|
14
+ if a.height == b.height
15
+ b.width <=> a.width
16
+ else
17
+ a.height <=> b.height
18
+ end
19
+ end
20
+ @rows = []
21
+ end
22
+
23
+ def fit!(style = :scan)
24
+ send("#{style}_fit")
25
+ @rows
26
+ end
27
+
28
+ def width
29
+ @width ||= @images.collect(&:width).max
30
+ end
31
+
32
+ def height
33
+ @height ||= @rows.inject(0) {|sum, row| sum += row.height}
34
+ end
35
+
36
+ def efficiency
37
+ @rows.inject(0) { |sum, row| sum += row.efficiency } ** @rows.length
38
+ end
39
+
40
+ private
41
+ def new_row(image = nil)
42
+ row = Compass::SassExtensions::Sprites::ImageRow.new(width)
43
+ row.add(image) if image
44
+ row
45
+ end
46
+
47
+ def fast_fit
48
+ row = new_row
49
+ @images.each do |image|
50
+ if !row.add(image)
51
+ @rows << row
52
+ row = new_row(image)
53
+ end
54
+ end
55
+
56
+ @rows << row
57
+ end
58
+
59
+ def scan_fit
60
+ fast_fit
61
+
62
+ moved_images = []
63
+
64
+ begin
65
+ removed = false
66
+
67
+ catch :done do
68
+ @rows.each do |row|
69
+ (@rows - [ row ]).each do |other_row|
70
+ other_row.images.each do |image|
71
+ if !moved_images.include?(image)
72
+ if row.will_fit?(image)
73
+ other_row.delete(image)
74
+ row << image
75
+
76
+ @rows.delete(other_row) if other_row.empty?
77
+ removed = true
78
+
79
+ moved_images << image
80
+ throw :done
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end while removed
88
+ end
89
+ end
90
+ end
91
+ end
92
92
  end
@@ -1,87 +1,87 @@
1
- module Compass
2
- module SassExtensions
3
- module Sprites
4
- class SpriteMap < Sass::Script::Literal
5
- attr_accessor :image_names, :path, :name, :map, :kwargs
6
- attr_accessor :images, :width, :height, :engine
7
-
8
- include SpriteMethods
9
- include ImageMethods
10
- include LayoutMethods
11
-
12
-
13
- # Initialize a new sprite object from a relative file path
14
- # the path is relative to the <tt>images_path</tt> confguration option
15
- def self.from_uri(uri, context, kwargs)
16
- uri = uri.value
17
- path, name = Compass::SpriteImporter.path_and_name(uri)
18
- files = Compass::SpriteImporter.files(uri)
19
- sprites = files.map do |sprite|
20
- relative_name(sprite)
21
- end
22
- new(sprites, path, name, context, kwargs)
23
- end
24
-
25
- def self.relative_name(sprite)
26
- sprite = File.expand_path(sprite)
27
- Compass.configuration.sprite_load_path.each do |path|
28
- path = File.expand_path(path)
29
- if sprite.include?(path)
30
- return sprite.gsub("#{path}/", "")
31
- end
32
- end
33
- end
34
-
35
- def initialize(sprites, path, name, context, kwargs)
36
- @image_names = sprites
37
- @path = path
38
- @name = name
39
- @kwargs = kwargs
40
- @kwargs['cleanup'] ||= Sass::Script::Bool.new(true)
41
- @kwargs['layout'] ||= Sass::Script::String.new('vertical')
42
- @images = nil
43
- @width = nil
44
- @height = nil
45
- @engine = nil
46
- @evaluation_context = context
47
- validate!
48
- compute_image_metadata!
49
- end
50
-
51
- def inspect
52
- puts 'images'
53
- @images.each do |img|
54
- puts img.file
55
- end
56
- puts "options"
57
- @kwargs.each do |k,v|
58
- puts "#{k}:#{v}"
59
- end
60
- end
61
-
62
- def to_s(kwargs = self.kwargs)
63
- sprite_url(self).value
64
- end
65
-
66
- def respond_to?(meth)
67
- super || @evaluation_context.respond_to?(meth)
68
- end
69
-
70
- def method_missing(meth, *args, &block)
71
- if @evaluation_context.respond_to?(meth)
72
- @evaluation_context.send(meth, *args, &block)
73
- else
74
- super
75
- end
76
- end
77
-
78
- private
79
-
80
- def modulize
81
- @modulize ||= Compass::configuration.sprite_engine.to_s.scan(/([^_.]+)/).flatten.map {|chunk| "#{chunk[0].chr.upcase}#{chunk[1..-1]}" }.join
82
- end
83
-
84
- end
85
- end
86
- end
1
+ module Compass
2
+ module SassExtensions
3
+ module Sprites
4
+ class SpriteMap < Sass::Script::Literal
5
+ attr_accessor :image_names, :path, :name, :map, :kwargs
6
+ attr_accessor :images, :width, :height, :engine
7
+
8
+ include SpriteMethods
9
+ include ImageMethods
10
+ include LayoutMethods
11
+
12
+
13
+ # Initialize a new sprite object from a relative file path
14
+ # the path is relative to the <tt>images_path</tt> confguration option
15
+ def self.from_uri(uri, context, kwargs)
16
+ uri = uri.value
17
+ path, name = Compass::SpriteImporter.path_and_name(uri)
18
+ files = Compass::SpriteImporter.files(uri)
19
+ sprites = files.map do |sprite|
20
+ relative_name(sprite)
21
+ end
22
+ new(sprites, path, name, context, kwargs)
23
+ end
24
+
25
+ def self.relative_name(sprite)
26
+ sprite = File.expand_path(sprite)
27
+ Compass.configuration.sprite_load_path.each do |path|
28
+ path = File.expand_path(path)
29
+ if sprite.include?(path)
30
+ return sprite.gsub("#{path}/", "")
31
+ end
32
+ end
33
+ end
34
+
35
+ def initialize(sprites, path, name, context, kwargs)
36
+ @image_names = sprites
37
+ @path = path
38
+ @name = name
39
+ @kwargs = kwargs
40
+ @kwargs['cleanup'] ||= Sass::Script::Bool.new(true)
41
+ @kwargs['layout'] ||= Sass::Script::String.new('vertical')
42
+ @images = nil
43
+ @width = nil
44
+ @height = nil
45
+ @engine = nil
46
+ @evaluation_context = context
47
+ validate!
48
+ compute_image_metadata!
49
+ end
50
+
51
+ def inspect
52
+ puts 'images'
53
+ @images.each do |img|
54
+ puts img.file
55
+ end
56
+ puts "options"
57
+ @kwargs.each do |k,v|
58
+ puts "#{k}:#{v}"
59
+ end
60
+ end
61
+
62
+ def to_s(kwargs = self.kwargs)
63
+ sprite_url(self).value
64
+ end
65
+
66
+ def respond_to?(meth)
67
+ super || @evaluation_context.respond_to?(meth)
68
+ end
69
+
70
+ def method_missing(meth, *args, &block)
71
+ if @evaluation_context.respond_to?(meth)
72
+ @evaluation_context.send(meth, *args, &block)
73
+ else
74
+ super
75
+ end
76
+ end
77
+
78
+ private
79
+
80
+ def modulize
81
+ @modulize ||= Compass::configuration.sprite_engine.to_s.scan(/([^_.]+)/).flatten.map {|chunk| "#{chunk[0].chr.upcase}#{chunk[1..-1]}" }.join
82
+ end
83
+
84
+ end
85
+ end
86
+ end
87
87
  end
@@ -1,141 +1,141 @@
1
- module Compass
2
- module SassExtensions
3
- module Sprites
4
- module SpriteMethods
5
-
6
- # Changing this string will invalidate all previously generated sprite images.
7
- # We should do so only when the packing algorithm changes
8
- SPRITE_VERSION = "2"
9
-
10
- # Calculates the overal image dimensions
11
- # collects image sizes and input parameters for each sprite
12
- # Calculates the height
13
- def compute_image_metadata!
14
- @width = 0
15
- init_images
16
- compute_image_positions!
17
- init_engine
18
- end
19
-
20
- def init_engine
21
- @engine = eval("::Compass::SassExtensions::Sprites::#{modulize}Engine.new(nil, nil, nil)")
22
- @engine.width = @width
23
- @engine.height = @height
24
- @engine.images = @images
25
- end
26
-
27
- # Creates the Sprite::Image objects for each image and calculates the width
28
- def init_images
29
- @images = image_names.collect do |relative_file|
30
- Image.new(self, relative_file, kwargs)
31
- end
32
- end
33
-
34
- # Validates that the sprite_names are valid sass
35
- def validate!
36
- for sprite_name in sprite_names
37
- unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/
38
- raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier"
39
- end
40
- end
41
- end
42
-
43
- def name_and_hash
44
- "#{path}-s#{uniqueness_hash}.png"
45
- end
46
-
47
- # The on-the-disk filename of the sprite
48
- def filename
49
- File.join(Compass.configuration.generated_images_path, name_and_hash)
50
- end
51
-
52
- def relativize(path)
53
- Pathname.new(path).relative_path_from(Pathname.new(Dir.pwd)).to_s rescue path
54
- end
55
-
56
- # Generate a sprite image if necessary
57
- def generate
58
- if generation_required?
59
- if kwargs.get_var('cleanup').value
60
- cleanup_old_sprites
61
- end
62
- engine.construct_sprite
63
- Compass.configuration.run_sprite_generated(engine.canvas)
64
- save!
65
- else
66
- log :unchanged, filename
67
- end
68
- end
69
-
70
- def cleanup_old_sprites
71
- Dir[File.join(Compass.configuration.generated_images_path, "#{path}-s*.png")].each do |file|
72
- log :remove, file
73
- FileUtils.rm file
74
- Compass.configuration.run_sprite_removed(file)
75
- end
76
- end
77
-
78
- # Does this sprite need to be generated
79
- def generation_required?
80
- !File.exists?(filename) || outdated? || options[:force]
81
- end
82
-
83
- # Returns the uniqueness hash for this sprite object
84
- def uniqueness_hash
85
- @uniqueness_hash ||= begin
86
- sum = Digest::MD5.new
87
- sum << SPRITE_VERSION
88
- sum << path
89
- sum << layout
90
- images.each do |image|
91
- [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr|
92
- sum << image.send(attr).to_s
93
- end
94
- end
95
- sum.hexdigest[0...10]
96
- end
97
- @uniqueness_hash
98
- end
99
-
100
- # Saves the sprite engine
101
- def save!
102
- FileUtils.mkdir_p(File.dirname(filename))
103
- saved = engine.save(filename)
104
- log :create, filename
105
- Compass.configuration.run_sprite_saved(filename)
106
- @mtime = nil if saved
107
- saved
108
- end
109
-
110
- # All the full-path filenames involved in this sprite
111
- def image_filenames
112
- @images.map(&:file)
113
- end
114
-
115
- # Checks whether this sprite is outdated
116
- def outdated?
117
- if File.exists?(filename)
118
- return @images.any? {|image| image.mtime.to_i > self.mtime.to_i }
119
- end
120
- true
121
- end
122
-
123
- # Mtime of the sprite file
124
- def mtime
125
- @mtime ||= File.mtime(filename)
126
- end
127
-
128
- # Calculate the size of the sprite
129
- def size
130
- [width, height]
131
- end
132
-
133
- def log(action, filename, *extra)
134
- if options[:compass] && options[:compass][:logger] && !options[:quiet]
135
- options[:compass][:logger].record(action, relativize(filename), *extra)
136
- end
137
- end
138
- end
139
- end
140
- end
141
- end
1
+ module Compass
2
+ module SassExtensions
3
+ module Sprites
4
+ module SpriteMethods
5
+
6
+ # Changing this string will invalidate all previously generated sprite images.
7
+ # We should do so only when the packing algorithm changes
8
+ SPRITE_VERSION = "2"
9
+
10
+ # Calculates the overal image dimensions
11
+ # collects image sizes and input parameters for each sprite
12
+ # Calculates the height
13
+ def compute_image_metadata!
14
+ @width = 0
15
+ init_images
16
+ compute_image_positions!
17
+ init_engine
18
+ end
19
+
20
+ def init_engine
21
+ @engine = eval("::Compass::SassExtensions::Sprites::#{modulize}Engine.new(nil, nil, nil)")
22
+ @engine.width = @width
23
+ @engine.height = @height
24
+ @engine.images = @images
25
+ end
26
+
27
+ # Creates the Sprite::Image objects for each image and calculates the width
28
+ def init_images
29
+ @images = image_names.collect do |relative_file|
30
+ Image.new(self, relative_file, kwargs)
31
+ end
32
+ end
33
+
34
+ # Validates that the sprite_names are valid sass
35
+ def validate!
36
+ for sprite_name in sprite_names
37
+ unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/
38
+ raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier"
39
+ end
40
+ end
41
+ end
42
+
43
+ def name_and_hash
44
+ "#{path}-s#{uniqueness_hash}.png"
45
+ end
46
+
47
+ # The on-the-disk filename of the sprite
48
+ def filename
49
+ File.join(Compass.configuration.generated_images_path, name_and_hash)
50
+ end
51
+
52
+ def relativize(path)
53
+ Pathname.new(path).relative_path_from(Pathname.new(Dir.pwd)).to_s rescue path
54
+ end
55
+
56
+ # Generate a sprite image if necessary
57
+ def generate
58
+ if generation_required?
59
+ if kwargs.get_var('cleanup').value
60
+ cleanup_old_sprites
61
+ end
62
+ engine.construct_sprite
63
+ Compass.configuration.run_sprite_generated(engine.canvas)
64
+ save!
65
+ else
66
+ log :unchanged, filename
67
+ end
68
+ end
69
+
70
+ def cleanup_old_sprites
71
+ Dir[File.join(Compass.configuration.generated_images_path, "#{path}-s*.png")].each do |file|
72
+ log :remove, file
73
+ FileUtils.rm file
74
+ Compass.configuration.run_sprite_removed(file)
75
+ end
76
+ end
77
+
78
+ # Does this sprite need to be generated
79
+ def generation_required?
80
+ !File.exists?(filename) || outdated? || options[:force]
81
+ end
82
+
83
+ # Returns the uniqueness hash for this sprite object
84
+ def uniqueness_hash
85
+ @uniqueness_hash ||= begin
86
+ sum = Digest::MD5.new
87
+ sum << SPRITE_VERSION
88
+ sum << path
89
+ sum << layout
90
+ images.each do |image|
91
+ [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr|
92
+ sum << image.send(attr).to_s
93
+ end
94
+ end
95
+ sum.hexdigest[0...10]
96
+ end
97
+ @uniqueness_hash
98
+ end
99
+
100
+ # Saves the sprite engine
101
+ def save!
102
+ FileUtils.mkdir_p(File.dirname(filename))
103
+ saved = engine.save(filename)
104
+ log :create, filename
105
+ Compass.configuration.run_sprite_saved(filename)
106
+ @mtime = nil if saved
107
+ saved
108
+ end
109
+
110
+ # All the full-path filenames involved in this sprite
111
+ def image_filenames
112
+ @images.map(&:file)
113
+ end
114
+
115
+ # Checks whether this sprite is outdated
116
+ def outdated?
117
+ if File.exists?(filename)
118
+ return @images.any? {|image| image.mtime.to_i > self.mtime.to_i }
119
+ end
120
+ true
121
+ end
122
+
123
+ # Mtime of the sprite file
124
+ def mtime
125
+ @mtime ||= File.mtime(filename)
126
+ end
127
+
128
+ # Calculate the size of the sprite
129
+ def size
130
+ [width, height]
131
+ end
132
+
133
+ def log(action, filename, *extra)
134
+ if options[:compass] && options[:compass][:logger] && !options[:quiet]
135
+ options[:compass][:logger].record(action, relativize(filename), *extra)
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end