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,266 +1,266 @@
1
- module Compass::SassExtensions::Functions::Urls
2
-
3
-
4
- def self.has?(base, instance_method)
5
- Sass::Util.has?(:instance_method, base, instance_method)
6
- end
7
-
8
- def self.included(base)
9
- base.send(:include, StylesheetUrl) unless has?(base, :stylesheet_url)
10
- base.send(:include, FontUrl) unless has?(base, :font_url)
11
- base.send(:include, ImageUrl) unless has?(base, :image_url)
12
- base.send(:include, GeneratedImageUrl) unless has?(base, :generated_image_url)
13
- end
14
-
15
- module StylesheetUrl
16
- def self.included(base)
17
- if base.respond_to?(:declare)
18
- base.declare :stylesheet_url, [:path]
19
- base.declare :stylesheet_url, [:path, :only_path]
20
- end
21
- end
22
- def stylesheet_url(path, only_path = Sass::Script::Bool.new(false))
23
- # Compute the path to the stylesheet, either root relative or stylesheet relative
24
- # or nil if the http_images_path is not set in the configuration.
25
- http_stylesheets_path = if relative?
26
- compute_relative_path(Compass.configuration.css_path)
27
- elsif Compass.configuration.http_stylesheets_path
28
- Compass.configuration.http_stylesheets_path
29
- else
30
- Compass.configuration.http_root_relative(Compass.configuration.css_dir)
31
- end
32
-
33
- path = "#{http_stylesheets_path}/#{path.value}"
34
- if only_path.to_bool
35
- Sass::Script::String.new(clean_path(path))
36
- else
37
- clean_url(path)
38
- end
39
- end
40
- end
41
-
42
- module FontUrl
43
- def self.included(base)
44
- if base.respond_to?(:declare)
45
- base.declare :font_url, [:path]
46
- base.declare :font_url, [:path, :only_path]
47
- end
48
- end
49
- def font_url(path, only_path = Sass::Script::Bool.new(false))
50
- path = path.value # get to the string value of the literal.
51
-
52
- # Short curcuit if they have provided an absolute url.
53
- if absolute_path?(path)
54
- return Sass::Script::String.new("url(#{path})")
55
- end
56
-
57
- # Compute the path to the font file, either root relative or stylesheet relative
58
- # or nil if the http_fonts_path cannot be determined from the configuration.
59
- http_fonts_path = if relative?
60
- compute_relative_path(Compass.configuration.fonts_path)
61
- else
62
- Compass.configuration.http_fonts_path
63
- end
64
-
65
- path = "#{http_fonts_path}/#{path}"
66
-
67
- if only_path.to_bool
68
- Sass::Script::String.new(clean_path(path))
69
- else
70
- clean_url(path)
71
- end
72
- end
73
- end
74
-
75
- module ImageUrl
76
- def self.included(base)
77
- if base.respond_to?(:declare)
78
- base.declare :image_url, [:path]
79
- base.declare :image_url, [:path, :only_path]
80
- base.declare :image_url, [:path, :only_path, :cache_buster]
81
- end
82
- end
83
- def image_url(path, only_path = Sass::Script::Bool.new(false), cache_buster = Sass::Script::Bool.new(true))
84
- path = path.value # get to the string value of the literal.
85
-
86
- if path =~ %r{^#{Regexp.escape(Compass.configuration.http_images_path)}/(.*)}
87
- # Treat root relative urls (without a protocol) like normal if they start with
88
- # the images path.
89
- path = $1
90
- elsif absolute_path?(path)
91
- # Short curcuit if they have provided an absolute url.
92
- return Sass::Script::String.new("url(#{path})")
93
- end
94
-
95
- # Compute the path to the image, either root relative or stylesheet relative
96
- # or nil if the http_images_path is not set in the configuration.
97
- http_images_path = if relative?
98
- compute_relative_path(Compass.configuration.images_path)
99
- elsif Compass.configuration.http_images_path
100
- Compass.configuration.http_images_path
101
- else
102
- Compass.configuration.http_root_relative(Compass.configuration.images_dir)
103
- end
104
-
105
- # Compute the real path to the image on the file stystem if the images_dir is set.
106
- real_path = if Compass.configuration.images_dir
107
- File.join(Compass.configuration.project_path, Compass.configuration.images_dir, path)
108
- end
109
-
110
- # prepend the path to the image if there's one
111
- if http_images_path
112
- http_images_path = "#{http_images_path}/" unless http_images_path[-1..-1] == "/"
113
- path = "#{http_images_path}#{path}"
114
- end
115
-
116
- # Compute the asset host unless in relative mode.
117
- asset_host = if !relative? && Compass.configuration.asset_host
118
- Compass.configuration.asset_host.call(path)
119
- end
120
-
121
- # Compute and append the cache buster if there is one.
122
- if cache_buster.to_bool
123
- if cache_buster.is_a?(Sass::Script::String)
124
- path += "?#{cache_buster.value}"
125
- else
126
- path = cache_busted_path(path, real_path)
127
- end
128
- end
129
-
130
- # prepend the asset host if there is one.
131
- path = "#{asset_host}#{'/' unless path[0..0] == "/"}#{path}" if asset_host
132
-
133
- if only_path.to_bool
134
- Sass::Script::String.new(clean_path(path))
135
- else
136
- clean_url(path)
137
- end
138
- end
139
- end
140
-
141
- module GeneratedImageUrl
142
- def self.included(base)
143
- if base.respond_to?(:declare)
144
- base.declare :generated_image_url, [:path]
145
- base.declare :generated_image_url, [:path, :cache_buster]
146
- end
147
- end
148
- def generated_image_url(path, cache_buster = Sass::Script::Bool.new(false))
149
- path = path.value # get to the string value of the literal.
150
-
151
- if path =~ %r{^#{Regexp.escape(Compass.configuration.http_generated_images_path)}/(.*)}
152
- # Treat root relative urls (without a protocol) like normal if they start with
153
- # the generated_images path.
154
- path = $1
155
- elsif absolute_path?(path)
156
- # Short curcuit if they have provided an absolute url.
157
- return Sass::Script::String.new("url(#{path})")
158
- end
159
-
160
- # Compute the path to the image, either root relative or stylesheet relative
161
- # or nil if the http_generated_images_path is not set in the configuration.
162
- http_generated_images_path = if relative?
163
- compute_relative_path(Compass.configuration.generated_images_path)
164
- elsif Compass.configuration.http_generated_images_path
165
- Compass.configuration.http_generated_images_path
166
- else
167
- Compass.configuration.http_root_relative(Compass.configuration.generated_images_dir)
168
- end
169
-
170
- # Compute the real path to the image on the file stystem if the generated_images_dir is set.
171
- real_path = if Compass.configuration.generated_images_dir
172
- File.join(Compass.configuration.project_path, Compass.configuration.generated_images_dir, path)
173
- end
174
-
175
- # prepend the path to the image if there's one
176
- if http_generated_images_path
177
- http_generated_images_path = "#{http_generated_images_path}/" unless http_generated_images_path[-1..-1] == "/"
178
- path = "#{http_generated_images_path}#{path}"
179
- end
180
-
181
- # Compute the asset host unless in relative mode.
182
- asset_host = if !relative? && Compass.configuration.asset_host
183
- Compass.configuration.asset_host.call(path)
184
- end
185
-
186
- # Compute and append the cache buster if there is one.
187
- if cache_buster.to_bool
188
- if cache_buster.is_a?(Sass::Script::String)
189
- path += "?#{cache_buster.value}"
190
- else
191
- path = cache_busted_path(path, real_path)
192
- end
193
- end
194
-
195
- # prepend the asset host if there is one.
196
- path = "#{asset_host}#{'/' unless path[0..0] == "/"}#{path}" if asset_host
197
-
198
- clean_url(path)
199
- end
200
- end
201
-
202
- private
203
-
204
- # Emits a path, taking off any leading "./"
205
- def clean_path(url)
206
- url = url.to_s
207
- url = url[0..1] == "./" ? url[2..-1] : url
208
- end
209
-
210
- # Emits a url, taking off any leading "./"
211
- def clean_url(url)
212
- Sass::Script::String.new("url('#{clean_path(url)}')")
213
- end
214
-
215
- def relative?
216
- Compass.configuration.relative_assets?
217
- end
218
-
219
- def absolute_path?(path)
220
- path[0..0] == "/" || path[0..3] == "http"
221
- end
222
-
223
- def compute_relative_path(path)
224
- if (target_css_file = options[:css_filename])
225
- Pathname.new(path).relative_path_from(Pathname.new(File.dirname(target_css_file))).to_s
226
- end
227
- end
228
-
229
- def cache_busted_path(path, real_path)
230
- cache_buster = compute_cache_buster(path, real_path)
231
- if cache_buster.nil?
232
- return path
233
- elsif cache_buster.is_a?(String)
234
- cache_buster = {:query => cache_buster}
235
- else
236
- path = cache_buster[:path] if cache_buster[:path]
237
- end
238
-
239
- if cache_buster[:query]
240
- "%s?%s" % [path, cache_buster[:query]]
241
- else
242
- path
243
- end
244
- end
245
-
246
- def compute_cache_buster(path, real_path)
247
- if Compass.configuration.asset_cache_buster
248
- args = [path]
249
- if Compass.configuration.asset_cache_buster.arity > 1
250
- args << (File.new(real_path) if real_path)
251
- end
252
- Compass.configuration.asset_cache_buster.call(*args)
253
- elsif real_path
254
- default_cache_buster(path, real_path)
255
- end
256
- end
257
-
258
- def default_cache_buster(path, real_path)
259
- if File.readable?(real_path)
260
- File.mtime(real_path).to_i.to_s
261
- else
262
- $stderr.puts "WARNING: '#{File.basename(path)}' was not found (or cannot be read) in #{File.dirname(real_path)}"
263
- end
264
- end
265
-
266
- end
1
+ module Compass::SassExtensions::Functions::Urls
2
+
3
+
4
+ def self.has?(base, instance_method)
5
+ Sass::Util.has?(:instance_method, base, instance_method)
6
+ end
7
+
8
+ def self.included(base)
9
+ base.send(:include, StylesheetUrl) unless has?(base, :stylesheet_url)
10
+ base.send(:include, FontUrl) unless has?(base, :font_url)
11
+ base.send(:include, ImageUrl) unless has?(base, :image_url)
12
+ base.send(:include, GeneratedImageUrl) unless has?(base, :generated_image_url)
13
+ end
14
+
15
+ module StylesheetUrl
16
+ def self.included(base)
17
+ if base.respond_to?(:declare)
18
+ base.declare :stylesheet_url, [:path]
19
+ base.declare :stylesheet_url, [:path, :only_path]
20
+ end
21
+ end
22
+ def stylesheet_url(path, only_path = Sass::Script::Bool.new(false))
23
+ # Compute the path to the stylesheet, either root relative or stylesheet relative
24
+ # or nil if the http_images_path is not set in the configuration.
25
+ http_stylesheets_path = if relative?
26
+ compute_relative_path(Compass.configuration.css_path)
27
+ elsif Compass.configuration.http_stylesheets_path
28
+ Compass.configuration.http_stylesheets_path
29
+ else
30
+ Compass.configuration.http_root_relative(Compass.configuration.css_dir)
31
+ end
32
+
33
+ path = "#{http_stylesheets_path}/#{path.value}"
34
+ if only_path.to_bool
35
+ Sass::Script::String.new(clean_path(path))
36
+ else
37
+ clean_url(path)
38
+ end
39
+ end
40
+ end
41
+
42
+ module FontUrl
43
+ def self.included(base)
44
+ if base.respond_to?(:declare)
45
+ base.declare :font_url, [:path]
46
+ base.declare :font_url, [:path, :only_path]
47
+ end
48
+ end
49
+ def font_url(path, only_path = Sass::Script::Bool.new(false))
50
+ path = path.value # get to the string value of the literal.
51
+
52
+ # Short curcuit if they have provided an absolute url.
53
+ if absolute_path?(path)
54
+ return Sass::Script::String.new("url(#{path})")
55
+ end
56
+
57
+ # Compute the path to the font file, either root relative or stylesheet relative
58
+ # or nil if the http_fonts_path cannot be determined from the configuration.
59
+ http_fonts_path = if relative?
60
+ compute_relative_path(Compass.configuration.fonts_path)
61
+ else
62
+ Compass.configuration.http_fonts_path
63
+ end
64
+
65
+ path = "#{http_fonts_path}/#{path}"
66
+
67
+ if only_path.to_bool
68
+ Sass::Script::String.new(clean_path(path))
69
+ else
70
+ clean_url(path)
71
+ end
72
+ end
73
+ end
74
+
75
+ module ImageUrl
76
+ def self.included(base)
77
+ if base.respond_to?(:declare)
78
+ base.declare :image_url, [:path]
79
+ base.declare :image_url, [:path, :only_path]
80
+ base.declare :image_url, [:path, :only_path, :cache_buster]
81
+ end
82
+ end
83
+ def image_url(path, only_path = Sass::Script::Bool.new(false), cache_buster = Sass::Script::Bool.new(true))
84
+ path = path.value # get to the string value of the literal.
85
+
86
+ if path =~ %r{^#{Regexp.escape(Compass.configuration.http_images_path)}/(.*)}
87
+ # Treat root relative urls (without a protocol) like normal if they start with
88
+ # the images path.
89
+ path = $1
90
+ elsif absolute_path?(path)
91
+ # Short curcuit if they have provided an absolute url.
92
+ return Sass::Script::String.new("url(#{path})")
93
+ end
94
+
95
+ # Compute the path to the image, either root relative or stylesheet relative
96
+ # or nil if the http_images_path is not set in the configuration.
97
+ http_images_path = if relative?
98
+ compute_relative_path(Compass.configuration.images_path)
99
+ elsif Compass.configuration.http_images_path
100
+ Compass.configuration.http_images_path
101
+ else
102
+ Compass.configuration.http_root_relative(Compass.configuration.images_dir)
103
+ end
104
+
105
+ # Compute the real path to the image on the file stystem if the images_dir is set.
106
+ real_path = if Compass.configuration.images_dir
107
+ File.join(Compass.configuration.project_path, Compass.configuration.images_dir, path)
108
+ end
109
+
110
+ # prepend the path to the image if there's one
111
+ if http_images_path
112
+ http_images_path = "#{http_images_path}/" unless http_images_path[-1..-1] == "/"
113
+ path = "#{http_images_path}#{path}"
114
+ end
115
+
116
+ # Compute the asset host unless in relative mode.
117
+ asset_host = if !relative? && Compass.configuration.asset_host
118
+ Compass.configuration.asset_host.call(path)
119
+ end
120
+
121
+ # Compute and append the cache buster if there is one.
122
+ if cache_buster.to_bool
123
+ if cache_buster.is_a?(Sass::Script::String)
124
+ path += "?#{cache_buster.value}"
125
+ else
126
+ path = cache_busted_path(path, real_path)
127
+ end
128
+ end
129
+
130
+ # prepend the asset host if there is one.
131
+ path = "#{asset_host}#{'/' unless path[0..0] == "/"}#{path}" if asset_host
132
+
133
+ if only_path.to_bool
134
+ Sass::Script::String.new(clean_path(path))
135
+ else
136
+ clean_url(path)
137
+ end
138
+ end
139
+ end
140
+
141
+ module GeneratedImageUrl
142
+ def self.included(base)
143
+ if base.respond_to?(:declare)
144
+ base.declare :generated_image_url, [:path]
145
+ base.declare :generated_image_url, [:path, :cache_buster]
146
+ end
147
+ end
148
+ def generated_image_url(path, cache_buster = Sass::Script::Bool.new(false))
149
+ path = path.value # get to the string value of the literal.
150
+
151
+ if path =~ %r{^#{Regexp.escape(Compass.configuration.http_generated_images_path)}/(.*)}
152
+ # Treat root relative urls (without a protocol) like normal if they start with
153
+ # the generated_images path.
154
+ path = $1
155
+ elsif absolute_path?(path)
156
+ # Short curcuit if they have provided an absolute url.
157
+ return Sass::Script::String.new("url(#{path})")
158
+ end
159
+
160
+ # Compute the path to the image, either root relative or stylesheet relative
161
+ # or nil if the http_generated_images_path is not set in the configuration.
162
+ http_generated_images_path = if relative?
163
+ compute_relative_path(Compass.configuration.generated_images_path)
164
+ elsif Compass.configuration.http_generated_images_path
165
+ Compass.configuration.http_generated_images_path
166
+ else
167
+ Compass.configuration.http_root_relative(Compass.configuration.generated_images_dir)
168
+ end
169
+
170
+ # Compute the real path to the image on the file stystem if the generated_images_dir is set.
171
+ real_path = if Compass.configuration.generated_images_dir
172
+ File.join(Compass.configuration.project_path, Compass.configuration.generated_images_dir, path)
173
+ end
174
+
175
+ # prepend the path to the image if there's one
176
+ if http_generated_images_path
177
+ http_generated_images_path = "#{http_generated_images_path}/" unless http_generated_images_path[-1..-1] == "/"
178
+ path = "#{http_generated_images_path}#{path}"
179
+ end
180
+
181
+ # Compute the asset host unless in relative mode.
182
+ asset_host = if !relative? && Compass.configuration.asset_host
183
+ Compass.configuration.asset_host.call(path)
184
+ end
185
+
186
+ # Compute and append the cache buster if there is one.
187
+ if cache_buster.to_bool
188
+ if cache_buster.is_a?(Sass::Script::String)
189
+ path += "?#{cache_buster.value}"
190
+ else
191
+ path = cache_busted_path(path, real_path)
192
+ end
193
+ end
194
+
195
+ # prepend the asset host if there is one.
196
+ path = "#{asset_host}#{'/' unless path[0..0] == "/"}#{path}" if asset_host
197
+
198
+ clean_url(path)
199
+ end
200
+ end
201
+
202
+ private
203
+
204
+ # Emits a path, taking off any leading "./"
205
+ def clean_path(url)
206
+ url = url.to_s
207
+ url = url[0..1] == "./" ? url[2..-1] : url
208
+ end
209
+
210
+ # Emits a url, taking off any leading "./"
211
+ def clean_url(url)
212
+ Sass::Script::String.new("url('#{clean_path(url)}')")
213
+ end
214
+
215
+ def relative?
216
+ Compass.configuration.relative_assets?
217
+ end
218
+
219
+ def absolute_path?(path)
220
+ path[0..0] == "/" || path[0..3] == "http"
221
+ end
222
+
223
+ def compute_relative_path(path)
224
+ if (target_css_file = options[:css_filename])
225
+ Pathname.new(path).relative_path_from(Pathname.new(File.dirname(target_css_file))).to_s
226
+ end
227
+ end
228
+
229
+ def cache_busted_path(path, real_path)
230
+ cache_buster = compute_cache_buster(path, real_path)
231
+ if cache_buster.nil?
232
+ return path
233
+ elsif cache_buster.is_a?(String)
234
+ cache_buster = {:query => cache_buster}
235
+ else
236
+ path = cache_buster[:path] if cache_buster[:path]
237
+ end
238
+
239
+ if cache_buster[:query]
240
+ "%s?%s" % [path, cache_buster[:query]]
241
+ else
242
+ path
243
+ end
244
+ end
245
+
246
+ def compute_cache_buster(path, real_path)
247
+ if Compass.configuration.asset_cache_buster
248
+ args = [path]
249
+ if Compass.configuration.asset_cache_buster.arity > 1
250
+ args << (File.new(real_path) if real_path)
251
+ end
252
+ Compass.configuration.asset_cache_buster.call(*args)
253
+ elsif real_path
254
+ default_cache_buster(path, real_path)
255
+ end
256
+ end
257
+
258
+ def default_cache_buster(path, real_path)
259
+ if File.readable?(real_path)
260
+ File.mtime(real_path).to_i.to_s
261
+ else
262
+ $stderr.puts "WARNING: '#{File.basename(path)}' was not found (or cannot be read) in #{File.dirname(real_path)}"
263
+ end
264
+ end
265
+
266
+ end