compass 0.11.beta.5 → 0.11.beta.6

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 (272) hide show
  1. data/VERSION.yml +1 -1
  2. data/frameworks/compass/stylesheets/compass/css3/_images.scss +29 -3
  3. data/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +7 -4
  4. data/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss +0 -2
  5. data/lib/compass/app_integration/rails.rb +22 -3
  6. data/lib/compass/commands/sprite.rb +2 -5
  7. data/lib/compass/compiler.rb +7 -3
  8. data/lib/compass/configuration/helpers.rb +3 -2
  9. data/lib/compass/sass_extensions/functions/constants.rb +7 -0
  10. data/lib/compass/sass_extensions/functions/cross_browser_support.rb +31 -0
  11. data/lib/compass/sass_extensions/functions/gradient_support.rb +77 -44
  12. data/lib/compass/sass_extensions/functions/lists.rb +3 -2
  13. data/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb +6 -2
  14. data/lib/compass/sass_extensions/sprites/sprite_map.rb +8 -2
  15. data/lib/compass/sass_extensions/sprites/sprites.rb +1 -1
  16. data/test/fixtures/stylesheets/compass/css/fonts.css +0 -1
  17. data/test/fixtures/stylesheets/compass/css/gradients.css +70 -12
  18. data/test/fixtures/stylesheets/compass/css/pie.css +1 -0
  19. data/test/fixtures/stylesheets/compass/css/sprites.css +1262 -0
  20. data/test/fixtures/stylesheets/compass/css/utilities.css +3 -0
  21. data/test/fixtures/stylesheets/compass/images/flag-03c3b29b35.png +0 -0
  22. data/test/fixtures/stylesheets/compass/images/flag/ad.png +0 -0
  23. data/test/fixtures/stylesheets/compass/images/flag/ae.png +0 -0
  24. data/test/fixtures/stylesheets/compass/images/flag/af.png +0 -0
  25. data/test/fixtures/stylesheets/compass/images/flag/ag.png +0 -0
  26. data/test/fixtures/stylesheets/compass/images/flag/ai.png +0 -0
  27. data/test/fixtures/stylesheets/compass/images/flag/al.png +0 -0
  28. data/test/fixtures/stylesheets/compass/images/flag/am.png +0 -0
  29. data/test/fixtures/stylesheets/compass/images/flag/an.png +0 -0
  30. data/test/fixtures/stylesheets/compass/images/flag/ao.png +0 -0
  31. data/test/fixtures/stylesheets/compass/images/flag/ar.png +0 -0
  32. data/test/fixtures/stylesheets/compass/images/flag/as.png +0 -0
  33. data/test/fixtures/stylesheets/compass/images/flag/at.png +0 -0
  34. data/test/fixtures/stylesheets/compass/images/flag/au.png +0 -0
  35. data/test/fixtures/stylesheets/compass/images/flag/aw.png +0 -0
  36. data/test/fixtures/stylesheets/compass/images/flag/ax.png +0 -0
  37. data/test/fixtures/stylesheets/compass/images/flag/az.png +0 -0
  38. data/test/fixtures/stylesheets/compass/images/flag/ba.png +0 -0
  39. data/test/fixtures/stylesheets/compass/images/flag/bb.png +0 -0
  40. data/test/fixtures/stylesheets/compass/images/flag/bd.png +0 -0
  41. data/test/fixtures/stylesheets/compass/images/flag/be.png +0 -0
  42. data/test/fixtures/stylesheets/compass/images/flag/bf.png +0 -0
  43. data/test/fixtures/stylesheets/compass/images/flag/bg.png +0 -0
  44. data/test/fixtures/stylesheets/compass/images/flag/bh.png +0 -0
  45. data/test/fixtures/stylesheets/compass/images/flag/bi.png +0 -0
  46. data/test/fixtures/stylesheets/compass/images/flag/bj.png +0 -0
  47. data/test/fixtures/stylesheets/compass/images/flag/bm.png +0 -0
  48. data/test/fixtures/stylesheets/compass/images/flag/bn.png +0 -0
  49. data/test/fixtures/stylesheets/compass/images/flag/bo.png +0 -0
  50. data/test/fixtures/stylesheets/compass/images/flag/br.png +0 -0
  51. data/test/fixtures/stylesheets/compass/images/flag/bs.png +0 -0
  52. data/test/fixtures/stylesheets/compass/images/flag/bt.png +0 -0
  53. data/test/fixtures/stylesheets/compass/images/flag/bv.png +0 -0
  54. data/test/fixtures/stylesheets/compass/images/flag/bw.png +0 -0
  55. data/test/fixtures/stylesheets/compass/images/flag/by.png +0 -0
  56. data/test/fixtures/stylesheets/compass/images/flag/bz.png +0 -0
  57. data/test/fixtures/stylesheets/compass/images/flag/ca.png +0 -0
  58. data/test/fixtures/stylesheets/compass/images/flag/catalonia.png +0 -0
  59. data/test/fixtures/stylesheets/compass/images/flag/cc.png +0 -0
  60. data/test/fixtures/stylesheets/compass/images/flag/cd.png +0 -0
  61. data/test/fixtures/stylesheets/compass/images/flag/cf.png +0 -0
  62. data/test/fixtures/stylesheets/compass/images/flag/cg.png +0 -0
  63. data/test/fixtures/stylesheets/compass/images/flag/ch.png +0 -0
  64. data/test/fixtures/stylesheets/compass/images/flag/ci.png +0 -0
  65. data/test/fixtures/stylesheets/compass/images/flag/ck.png +0 -0
  66. data/test/fixtures/stylesheets/compass/images/flag/cl.png +0 -0
  67. data/test/fixtures/stylesheets/compass/images/flag/cm.png +0 -0
  68. data/test/fixtures/stylesheets/compass/images/flag/cn.png +0 -0
  69. data/test/fixtures/stylesheets/compass/images/flag/co.png +0 -0
  70. data/test/fixtures/stylesheets/compass/images/flag/cr.png +0 -0
  71. data/test/fixtures/stylesheets/compass/images/flag/cs.png +0 -0
  72. data/test/fixtures/stylesheets/compass/images/flag/cu.png +0 -0
  73. data/test/fixtures/stylesheets/compass/images/flag/cv.png +0 -0
  74. data/test/fixtures/stylesheets/compass/images/flag/cx.png +0 -0
  75. data/test/fixtures/stylesheets/compass/images/flag/cy.png +0 -0
  76. data/test/fixtures/stylesheets/compass/images/flag/cz.png +0 -0
  77. data/test/fixtures/stylesheets/compass/images/flag/de.png +0 -0
  78. data/test/fixtures/stylesheets/compass/images/flag/dj.png +0 -0
  79. data/test/fixtures/stylesheets/compass/images/flag/dk.png +0 -0
  80. data/test/fixtures/stylesheets/compass/images/flag/dm.png +0 -0
  81. data/test/fixtures/stylesheets/compass/images/flag/do.png +0 -0
  82. data/test/fixtures/stylesheets/compass/images/flag/dz.png +0 -0
  83. data/test/fixtures/stylesheets/compass/images/flag/ec.png +0 -0
  84. data/test/fixtures/stylesheets/compass/images/flag/ee.png +0 -0
  85. data/test/fixtures/stylesheets/compass/images/flag/eg.png +0 -0
  86. data/test/fixtures/stylesheets/compass/images/flag/eh.png +0 -0
  87. data/test/fixtures/stylesheets/compass/images/flag/england.png +0 -0
  88. data/test/fixtures/stylesheets/compass/images/flag/er.png +0 -0
  89. data/test/fixtures/stylesheets/compass/images/flag/es.png +0 -0
  90. data/test/fixtures/stylesheets/compass/images/flag/et.png +0 -0
  91. data/test/fixtures/stylesheets/compass/images/flag/europeanunion.png +0 -0
  92. data/test/fixtures/stylesheets/compass/images/flag/fam.png +0 -0
  93. data/test/fixtures/stylesheets/compass/images/flag/fi.png +0 -0
  94. data/test/fixtures/stylesheets/compass/images/flag/fj.png +0 -0
  95. data/test/fixtures/stylesheets/compass/images/flag/fk.png +0 -0
  96. data/test/fixtures/stylesheets/compass/images/flag/fm.png +0 -0
  97. data/test/fixtures/stylesheets/compass/images/flag/fo.png +0 -0
  98. data/test/fixtures/stylesheets/compass/images/flag/fr.png +0 -0
  99. data/test/fixtures/stylesheets/compass/images/flag/ga.png +0 -0
  100. data/test/fixtures/stylesheets/compass/images/flag/gb.png +0 -0
  101. data/test/fixtures/stylesheets/compass/images/flag/gd.png +0 -0
  102. data/test/fixtures/stylesheets/compass/images/flag/ge.png +0 -0
  103. data/test/fixtures/stylesheets/compass/images/flag/gf.png +0 -0
  104. data/test/fixtures/stylesheets/compass/images/flag/gh.png +0 -0
  105. data/test/fixtures/stylesheets/compass/images/flag/gi.png +0 -0
  106. data/test/fixtures/stylesheets/compass/images/flag/gl.png +0 -0
  107. data/test/fixtures/stylesheets/compass/images/flag/gm.png +0 -0
  108. data/test/fixtures/stylesheets/compass/images/flag/gn.png +0 -0
  109. data/test/fixtures/stylesheets/compass/images/flag/gp.png +0 -0
  110. data/test/fixtures/stylesheets/compass/images/flag/gq.png +0 -0
  111. data/test/fixtures/stylesheets/compass/images/flag/gr.png +0 -0
  112. data/test/fixtures/stylesheets/compass/images/flag/gs.png +0 -0
  113. data/test/fixtures/stylesheets/compass/images/flag/gt.png +0 -0
  114. data/test/fixtures/stylesheets/compass/images/flag/gu.png +0 -0
  115. data/test/fixtures/stylesheets/compass/images/flag/gw.png +0 -0
  116. data/test/fixtures/stylesheets/compass/images/flag/gy.png +0 -0
  117. data/test/fixtures/stylesheets/compass/images/flag/hk.png +0 -0
  118. data/test/fixtures/stylesheets/compass/images/flag/hm.png +0 -0
  119. data/test/fixtures/stylesheets/compass/images/flag/hn.png +0 -0
  120. data/test/fixtures/stylesheets/compass/images/flag/hr.png +0 -0
  121. data/test/fixtures/stylesheets/compass/images/flag/ht.png +0 -0
  122. data/test/fixtures/stylesheets/compass/images/flag/hu.png +0 -0
  123. data/test/fixtures/stylesheets/compass/images/flag/id-2.png +0 -0
  124. data/test/fixtures/stylesheets/compass/images/flag/ie.png +0 -0
  125. data/test/fixtures/stylesheets/compass/images/flag/il.png +0 -0
  126. data/test/fixtures/stylesheets/compass/images/flag/in.png +0 -0
  127. data/test/fixtures/stylesheets/compass/images/flag/io.png +0 -0
  128. data/test/fixtures/stylesheets/compass/images/flag/iq.png +0 -0
  129. data/test/fixtures/stylesheets/compass/images/flag/ir.png +0 -0
  130. data/test/fixtures/stylesheets/compass/images/flag/is.png +0 -0
  131. data/test/fixtures/stylesheets/compass/images/flag/it.png +0 -0
  132. data/test/fixtures/stylesheets/compass/images/flag/jm.png +0 -0
  133. data/test/fixtures/stylesheets/compass/images/flag/jo.png +0 -0
  134. data/test/fixtures/stylesheets/compass/images/flag/jp.png +0 -0
  135. data/test/fixtures/stylesheets/compass/images/flag/ke.png +0 -0
  136. data/test/fixtures/stylesheets/compass/images/flag/kg.png +0 -0
  137. data/test/fixtures/stylesheets/compass/images/flag/kh.png +0 -0
  138. data/test/fixtures/stylesheets/compass/images/flag/ki.png +0 -0
  139. data/test/fixtures/stylesheets/compass/images/flag/km.png +0 -0
  140. data/test/fixtures/stylesheets/compass/images/flag/kn.png +0 -0
  141. data/test/fixtures/stylesheets/compass/images/flag/kp.png +0 -0
  142. data/test/fixtures/stylesheets/compass/images/flag/kr.png +0 -0
  143. data/test/fixtures/stylesheets/compass/images/flag/kw.png +0 -0
  144. data/test/fixtures/stylesheets/compass/images/flag/ky.png +0 -0
  145. data/test/fixtures/stylesheets/compass/images/flag/kz.png +0 -0
  146. data/test/fixtures/stylesheets/compass/images/flag/la.png +0 -0
  147. data/test/fixtures/stylesheets/compass/images/flag/lb.png +0 -0
  148. data/test/fixtures/stylesheets/compass/images/flag/lc.png +0 -0
  149. data/test/fixtures/stylesheets/compass/images/flag/li.png +0 -0
  150. data/test/fixtures/stylesheets/compass/images/flag/lk.png +0 -0
  151. data/test/fixtures/stylesheets/compass/images/flag/lr.png +0 -0
  152. data/test/fixtures/stylesheets/compass/images/flag/ls.png +0 -0
  153. data/test/fixtures/stylesheets/compass/images/flag/lt.png +0 -0
  154. data/test/fixtures/stylesheets/compass/images/flag/lu.png +0 -0
  155. data/test/fixtures/stylesheets/compass/images/flag/lv.png +0 -0
  156. data/test/fixtures/stylesheets/compass/images/flag/ly.png +0 -0
  157. data/test/fixtures/stylesheets/compass/images/flag/ma.png +0 -0
  158. data/test/fixtures/stylesheets/compass/images/flag/mc.png +0 -0
  159. data/test/fixtures/stylesheets/compass/images/flag/md.png +0 -0
  160. data/test/fixtures/stylesheets/compass/images/flag/me.png +0 -0
  161. data/test/fixtures/stylesheets/compass/images/flag/mg.png +0 -0
  162. data/test/fixtures/stylesheets/compass/images/flag/mh.png +0 -0
  163. data/test/fixtures/stylesheets/compass/images/flag/mk.png +0 -0
  164. data/test/fixtures/stylesheets/compass/images/flag/ml.png +0 -0
  165. data/test/fixtures/stylesheets/compass/images/flag/mm.png +0 -0
  166. data/test/fixtures/stylesheets/compass/images/flag/mn.png +0 -0
  167. data/test/fixtures/stylesheets/compass/images/flag/mo.png +0 -0
  168. data/test/fixtures/stylesheets/compass/images/flag/mp.png +0 -0
  169. data/test/fixtures/stylesheets/compass/images/flag/mq.png +0 -0
  170. data/test/fixtures/stylesheets/compass/images/flag/mr.png +0 -0
  171. data/test/fixtures/stylesheets/compass/images/flag/ms.png +0 -0
  172. data/test/fixtures/stylesheets/compass/images/flag/mt.png +0 -0
  173. data/test/fixtures/stylesheets/compass/images/flag/mu.png +0 -0
  174. data/test/fixtures/stylesheets/compass/images/flag/mv.png +0 -0
  175. data/test/fixtures/stylesheets/compass/images/flag/mw.png +0 -0
  176. data/test/fixtures/stylesheets/compass/images/flag/mx.png +0 -0
  177. data/test/fixtures/stylesheets/compass/images/flag/my.png +0 -0
  178. data/test/fixtures/stylesheets/compass/images/flag/mz.png +0 -0
  179. data/test/fixtures/stylesheets/compass/images/flag/na.png +0 -0
  180. data/test/fixtures/stylesheets/compass/images/flag/nc.png +0 -0
  181. data/test/fixtures/stylesheets/compass/images/flag/ne.png +0 -0
  182. data/test/fixtures/stylesheets/compass/images/flag/nf.png +0 -0
  183. data/test/fixtures/stylesheets/compass/images/flag/ng.png +0 -0
  184. data/test/fixtures/stylesheets/compass/images/flag/ni.png +0 -0
  185. data/test/fixtures/stylesheets/compass/images/flag/nl.png +0 -0
  186. data/test/fixtures/stylesheets/compass/images/flag/no.png +0 -0
  187. data/test/fixtures/stylesheets/compass/images/flag/np.png +0 -0
  188. data/test/fixtures/stylesheets/compass/images/flag/nr.png +0 -0
  189. data/test/fixtures/stylesheets/compass/images/flag/nu.png +0 -0
  190. data/test/fixtures/stylesheets/compass/images/flag/nz.png +0 -0
  191. data/test/fixtures/stylesheets/compass/images/flag/om.png +0 -0
  192. data/test/fixtures/stylesheets/compass/images/flag/pa.png +0 -0
  193. data/test/fixtures/stylesheets/compass/images/flag/pe.png +0 -0
  194. data/test/fixtures/stylesheets/compass/images/flag/pf.png +0 -0
  195. data/test/fixtures/stylesheets/compass/images/flag/pg.png +0 -0
  196. data/test/fixtures/stylesheets/compass/images/flag/ph.png +0 -0
  197. data/test/fixtures/stylesheets/compass/images/flag/pk.png +0 -0
  198. data/test/fixtures/stylesheets/compass/images/flag/pl.png +0 -0
  199. data/test/fixtures/stylesheets/compass/images/flag/pm.png +0 -0
  200. data/test/fixtures/stylesheets/compass/images/flag/pn.png +0 -0
  201. data/test/fixtures/stylesheets/compass/images/flag/pr.png +0 -0
  202. data/test/fixtures/stylesheets/compass/images/flag/ps.png +0 -0
  203. data/test/fixtures/stylesheets/compass/images/flag/pt.png +0 -0
  204. data/test/fixtures/stylesheets/compass/images/flag/pw.png +0 -0
  205. data/test/fixtures/stylesheets/compass/images/flag/py.png +0 -0
  206. data/test/fixtures/stylesheets/compass/images/flag/qa.png +0 -0
  207. data/test/fixtures/stylesheets/compass/images/flag/re.png +0 -0
  208. data/test/fixtures/stylesheets/compass/images/flag/ro.png +0 -0
  209. data/test/fixtures/stylesheets/compass/images/flag/rs.png +0 -0
  210. data/test/fixtures/stylesheets/compass/images/flag/ru.png +0 -0
  211. data/test/fixtures/stylesheets/compass/images/flag/rw.png +0 -0
  212. data/test/fixtures/stylesheets/compass/images/flag/sa.png +0 -0
  213. data/test/fixtures/stylesheets/compass/images/flag/sb.png +0 -0
  214. data/test/fixtures/stylesheets/compass/images/flag/sc.png +0 -0
  215. data/test/fixtures/stylesheets/compass/images/flag/scotland.png +0 -0
  216. data/test/fixtures/stylesheets/compass/images/flag/sd.png +0 -0
  217. data/test/fixtures/stylesheets/compass/images/flag/se.png +0 -0
  218. data/test/fixtures/stylesheets/compass/images/flag/sg.png +0 -0
  219. data/test/fixtures/stylesheets/compass/images/flag/sh.png +0 -0
  220. data/test/fixtures/stylesheets/compass/images/flag/si.png +0 -0
  221. data/test/fixtures/stylesheets/compass/images/flag/sj.png +0 -0
  222. data/test/fixtures/stylesheets/compass/images/flag/sk.png +0 -0
  223. data/test/fixtures/stylesheets/compass/images/flag/sl.png +0 -0
  224. data/test/fixtures/stylesheets/compass/images/flag/sm.png +0 -0
  225. data/test/fixtures/stylesheets/compass/images/flag/sn.png +0 -0
  226. data/test/fixtures/stylesheets/compass/images/flag/so.png +0 -0
  227. data/test/fixtures/stylesheets/compass/images/flag/sr.png +0 -0
  228. data/test/fixtures/stylesheets/compass/images/flag/st.png +0 -0
  229. data/test/fixtures/stylesheets/compass/images/flag/sv.png +0 -0
  230. data/test/fixtures/stylesheets/compass/images/flag/sy.png +0 -0
  231. data/test/fixtures/stylesheets/compass/images/flag/sz.png +0 -0
  232. data/test/fixtures/stylesheets/compass/images/flag/tc.png +0 -0
  233. data/test/fixtures/stylesheets/compass/images/flag/td.png +0 -0
  234. data/test/fixtures/stylesheets/compass/images/flag/tf.png +0 -0
  235. data/test/fixtures/stylesheets/compass/images/flag/tg.png +0 -0
  236. data/test/fixtures/stylesheets/compass/images/flag/th.png +0 -0
  237. data/test/fixtures/stylesheets/compass/images/flag/tj.png +0 -0
  238. data/test/fixtures/stylesheets/compass/images/flag/tk.png +0 -0
  239. data/test/fixtures/stylesheets/compass/images/flag/tl.png +0 -0
  240. data/test/fixtures/stylesheets/compass/images/flag/tm.png +0 -0
  241. data/test/fixtures/stylesheets/compass/images/flag/tn.png +0 -0
  242. data/test/fixtures/stylesheets/compass/images/flag/to.png +0 -0
  243. data/test/fixtures/stylesheets/compass/images/flag/tr.png +0 -0
  244. data/test/fixtures/stylesheets/compass/images/flag/tt.png +0 -0
  245. data/test/fixtures/stylesheets/compass/images/flag/tv.png +0 -0
  246. data/test/fixtures/stylesheets/compass/images/flag/tw.png +0 -0
  247. data/test/fixtures/stylesheets/compass/images/flag/tz.png +0 -0
  248. data/test/fixtures/stylesheets/compass/images/flag/ua.png +0 -0
  249. data/test/fixtures/stylesheets/compass/images/flag/ug.png +0 -0
  250. data/test/fixtures/stylesheets/compass/images/flag/um.png +0 -0
  251. data/test/fixtures/stylesheets/compass/images/flag/us.png +0 -0
  252. data/test/fixtures/stylesheets/compass/images/flag/uy.png +0 -0
  253. data/test/fixtures/stylesheets/compass/images/flag/uz.png +0 -0
  254. data/test/fixtures/stylesheets/compass/images/flag/va.png +0 -0
  255. data/test/fixtures/stylesheets/compass/images/flag/vc.png +0 -0
  256. data/test/fixtures/stylesheets/compass/images/flag/ve.png +0 -0
  257. data/test/fixtures/stylesheets/compass/images/flag/vg.png +0 -0
  258. data/test/fixtures/stylesheets/compass/images/flag/vi.png +0 -0
  259. data/test/fixtures/stylesheets/compass/images/flag/vn.png +0 -0
  260. data/test/fixtures/stylesheets/compass/images/flag/vu.png +0 -0
  261. data/test/fixtures/stylesheets/compass/images/flag/wales.png +0 -0
  262. data/test/fixtures/stylesheets/compass/images/flag/wf.png +0 -0
  263. data/test/fixtures/stylesheets/compass/images/flag/ws.png +0 -0
  264. data/test/fixtures/stylesheets/compass/images/flag/ye.png +0 -0
  265. data/test/fixtures/stylesheets/compass/images/flag/yt.png +0 -0
  266. data/test/fixtures/stylesheets/compass/images/flag/za.png +0 -0
  267. data/test/fixtures/stylesheets/compass/images/flag/zm.png +0 -0
  268. data/test/fixtures/stylesheets/compass/images/flag/zw.png +0 -0
  269. data/test/fixtures/stylesheets/compass/sass/gradients.sass +5 -2
  270. data/test/fixtures/stylesheets/compass/sass/sprites.scss +13 -0
  271. data/test/sass_extensions_test.rb +6 -0
  272. metadata +502 -2
@@ -2,4 +2,4 @@
2
2
  :major: 0
3
3
  :minor: 11
4
4
  :state: beta
5
- :build: 5
5
+ :build: 6
@@ -16,15 +16,36 @@
16
16
  $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5,
17
17
  $background-6, $background-7, $background-8, $background-9, $background-10);
18
18
  $mult-bgs: -compass-list-size($backgrounds) > 1;
19
- $simple-background: if($mult-bgs or prefixed(-css2, $backgrounds), -css2(-compass-nth($backgrounds, last)), false);
20
- @if not blank($simple-background) { background: $simple-background; }
21
19
  @if $experimental-support-for-svg and prefixed(-svg, $backgrounds) { background: -svg($backgrounds); }
22
20
  @if $experimental-support-for-webkit and prefixed(-webkit, $backgrounds) { background: -webkit($backgrounds); }
23
21
  @if $experimental-support-for-mozilla and prefixed(-moz, $backgrounds) { background: -moz($backgrounds); }
22
+ @if $experimental-support-for-opera and prefixed(-o, $backgrounds) { background: -o($backgrounds); }
24
23
  @if $experimental-support-for-pie and (prefixed(-pie, $backgrounds) or $mult-bgs) { -pie-background: -pie($backgrounds); }
25
24
  background: $backgrounds;
26
25
  }
27
26
 
27
+ @mixin background-with-css2-fallback(
28
+ $background-1,
29
+ $background-2: false,
30
+ $background-3: false,
31
+ $background-4: false,
32
+ $background-5: false,
33
+ $background-6: false,
34
+ $background-7: false,
35
+ $background-8: false,
36
+ $background-9: false,
37
+ $background-10: false
38
+ ) {
39
+ $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5,
40
+ $background-6, $background-7, $background-8, $background-9, $background-10);
41
+ $mult-bgs: -compass-list-size($backgrounds) > 1;
42
+ $simple-background: if($mult-bgs or prefixed(-css2, $backgrounds), -css2(-compass-nth($backgrounds, last)), false);
43
+ @if not blank($simple-background) { background: $simple-background; }
44
+ @include background($background-1, $background-2, $background-3, $background-4, $background-5,
45
+ $background-6, $background-7, $background-8, $background-9, $background-10);
46
+ }
47
+
48
+
28
49
  // Background image property support for vendor prefixing within values.
29
50
  @mixin background-image(
30
51
  $image-1,
@@ -43,7 +64,8 @@
43
64
  @if $experimental-support-for-svg and prefixed(-svg, $images) { background-image: -svg($images); background-size: 100%; }
44
65
  @if $experimental-support-for-webkit and prefixed(-webkit, $images) { background-image: -webkit($images); }
45
66
  @if $experimental-support-for-mozilla and prefixed(-moz, $images) { background-image: -moz($images); }
46
- @if $experimental-support-for-pie and (prefixed(-pie, $images) or -compass-list-size($images) > 1) { @warn "PIE does not support background-image. Use @include background(#{$images}) instead." }
67
+ @if $experimental-support-for-opera and prefixed(-o, $images) { background-image: -o($images); }
68
+ @if $experimental-support-for-pie and (prefixed(-pie, $images) or -compass-list-size($images) > 1) { @warn "PIE does not support background-image. Use @include background(#{$images}) instead." }
47
69
  background-image: $images ;
48
70
  }
49
71
 
@@ -67,6 +89,7 @@
67
89
  @mixin border-image($value) {
68
90
  @if $experimental-support-for-mozilla { -moz-border-image: -moz(-compass-list($value)); }
69
91
  @if $experimental-support-for-webkit { -webkit-border-image: -webkit(-compass-list($value)); }
92
+ @if $experimental-support-for-opera { -o-border-image: -o(-compass-list($value)); }
70
93
  @if $experimental-support-for-svg { border-image: -svg(-compass-list($value)); }
71
94
  border-image: $value;
72
95
  }
@@ -75,6 +98,7 @@
75
98
  @mixin list-style-image($image) {
76
99
  @if $experimental-support-for-mozilla and prefixed(-moz, $image) { list-style-image: -moz($image); }
77
100
  @if $experimental-support-for-webkit and prefixed(-webkit, $image) { list-style-image: -webkit($image); }
101
+ @if $experimental-support-for-opera and prefixed(-o, $image) { list-style-image: -o($image); }
78
102
  @if $experimental-support-for-svg and prefixed(-svg, $image) { list-style-image: -svg($image); }
79
103
  list-style-image: $image ;
80
104
  }
@@ -84,6 +108,7 @@
84
108
  $value: -compass-list($value);
85
109
  @if $experimental-support-for-mozilla and prefixed(-moz, $value) { list-style-image: -moz($value); }
86
110
  @if $experimental-support-for-webkit and prefixed(-webkit, $value) { list-style-image: -webkit($value); }
111
+ @if $experimental-support-for-opera and prefixed(-o, $value) { list-style-image: -o($value); }
87
112
  @if $experimental-support-for-svg and prefixed(-svg, $value) { list-style-image: -svg($value); }
88
113
  list-style-image: $value ;
89
114
  }
@@ -93,6 +118,7 @@
93
118
  $value: -compass-list($value);
94
119
  @if $experimental-support-for-mozilla and prefixed(-moz, $value) { content: -moz($value); }
95
120
  @if $experimental-support-for-webkit and prefixed(-webkit, $value) { content: -webkit($value); }
121
+ @if $experimental-support-for-opera and prefixed(-o, $value) { content: -o($value); }
96
122
  @if $experimental-support-for-svg and prefixed(-svg, $value) { content: -svg($value); }
97
123
  content: $value ;
98
124
  }
@@ -1,3 +1,6 @@
1
+ // Determines those states for which you want to enable magic sprite selectors
2
+ $sprite-selectors: hover, target, active !default;
3
+
1
4
  // Set the width and height of an element to the original
2
5
  // dimensions of an image before it was included in the sprite.
3
6
  @mixin sprite-dimensions($map, $sprite) {
@@ -22,16 +25,17 @@
22
25
  @if $dimensions {
23
26
  @include sprite-dimensions($map, $sprite);
24
27
  }
28
+ @include sprite-selectors($map, $sprite, $sprite);
25
29
  }
26
30
 
27
31
  // Include the selectors for the `$sprite` given the `$map` and the
28
32
  // `$full-sprite-name`
29
33
  // @private
30
- @mixin sprite_selectors($map, $sprite-name, $full-sprite-name) {
34
+ @mixin sprite-selectors($map, $sprite-name, $full-sprite-name) {
31
35
  @each $selector in $sprite-selectors {
32
36
  @if sprite_has_selector($map, $sprite-name, $selector) {
33
- .#{$full-sprite-name}:#{$selector}, .#{$full-sprite-name}_#{$selector}, .#{$full-sprite-name}-#{$selector} {
34
- @include sprite($map, "#{$sprite-name}_#{$selector}");
37
+ &:#{$selector}, &.#{$full-sprite-name}_#{$selector}, &.#{$full-sprite-name}-#{$selector} {
38
+ @include sprite-background-position($map, "#{$sprite-name}_#{$selector}");
35
39
  }
36
40
  }
37
41
  }
@@ -51,7 +55,6 @@
51
55
  @if $base-class { @extend #{$base-class}; }
52
56
  @include sprite($map, $sprite-name, $dimensions);
53
57
  }
54
- @include sprite_selectors($map, $sprite-name, $full-sprite-name);
55
58
  }
56
59
  }
57
60
  }
@@ -24,8 +24,6 @@ $sprite-image-default-width: $sprite-default-size !default;
24
24
 
25
25
  $sprite-image-default-height: $sprite-default-size !default;
26
26
 
27
- $sprite-selectors: hover, target, active !default;
28
-
29
27
  // Sets all the rules for a sprite from a given sprite image to show just one of the sprites.
30
28
  // To reduce duplication use a sprite-bg mixin for common properties and a sprite-select mixin for positioning.
31
29
  @mixin sprite-img($img, $col, $row: 1, $width: $sprite-image-default-width, $height: $sprite-image-default-height, $margin: $sprite-default-margin) {
@@ -11,6 +11,14 @@ module Compass
11
11
 
12
12
  extend self
13
13
 
14
+ def booted!
15
+ Compass::AppIntegration::Rails.const_set(:BOOTED, true)
16
+ end
17
+
18
+ def booted?
19
+ defined?(Compass::AppIntegration::Rails::BOOTED) && Compass::AppIntegration::Rails::BOOTED
20
+ end
21
+
14
22
  def installer(*args)
15
23
  Installer.new(*args)
16
24
  end
@@ -21,13 +29,19 @@ module Compass
21
29
  end
22
30
 
23
31
  def env
24
- if rails_env = (defined?(::Rails) ? ::Rails.env : (defined?(RAILS_ENV) ? RAILS_ENV : nil))
25
- rails_env.production? ? :production : :development
32
+ env_production? ? :production : :development
33
+ end
34
+
35
+ def env_production?
36
+ if defined?(::Rails) && ::Rails.respond_to?(:env)
37
+ ::Rails.env.production?
38
+ elsif defined?(RAILS_ENV)
39
+ RAILS_ENV == "production"
26
40
  end
27
41
  end
28
42
 
29
43
  def root
30
- if defined?(::Rails)
44
+ if defined?(::Rails) && ::Rails.respond_to?(:root)
31
45
  ::Rails.root
32
46
  elsif defined?(RAILS_ROOT)
33
47
  RAILS_ROOT
@@ -35,6 +49,11 @@ module Compass
35
49
  end
36
50
 
37
51
  def initialize!(config = nil)
52
+ if booted?
53
+ Compass::Util.compass_warn("Warning: Compass was booted twice. Compass has a Railtie now; please remove your intializer.")
54
+ else
55
+ booted!
56
+ end
38
57
  config ||= Compass.detect_configuration_file(root)
39
58
  Compass.add_project_configuration(config, :project_type => :rails)
40
59
  Compass.discover_extensions!
@@ -38,14 +38,11 @@ module Compass
38
38
  end
39
39
 
40
40
  def perform
41
- sprites = Compass::Sprites.new
42
41
  relative_uri = options[:uri].gsub(/^#{Compass.configuration.images_dir}\//, '')
43
- sprite_images = Compass::Sprites.discover_sprites(relative_uri)
44
- image_names = sprite_images.map{|i| File.basename(i, '.png')}
45
- sprites.path, sprites.name = Compass::Sprites.path_and_name(relative_uri)
42
+ sprites = Compass::SpriteMap.new(relative_uri, Compass.sass_engine_options)
46
43
  options[:output_file] ||= File.join(Compass.configuration.sass_path, "sprites", "_#{sprites.name}.#{Compass.configuration.preferred_syntax}")
47
44
  options[:skip_overrides] ||= false
48
- contents = sprites.content_for_images(relative_uri, sprites.name, image_names, options[:skip_overrides])
45
+ contents = sprites.content_for_images(options[:skip_overrides])
49
46
  if options[:output_file][-4..-1] != "scss"
50
47
  contents = Sass::Engine.new(contents, Compass.sass_engine_options.merge(:syntax => :scss)).to_tree.to_sass
51
48
  end
@@ -7,7 +7,7 @@ module Compass
7
7
 
8
8
  def initialize(working_path, from, to, options)
9
9
  self.working_path = working_path
10
- self.from, self.to = from, to
10
+ self.from, self.to = from.gsub('./', ''), to
11
11
  self.logger = options.delete(:logger)
12
12
  self.options = options
13
13
  self.options[:cache_location] ||= determine_cache_location
@@ -26,11 +26,15 @@ module Compass
26
26
  end
27
27
 
28
28
  def relative_stylesheet_name(sass_file)
29
- sass_file[("#{from}/".length)..-1]
29
+ sass_file[(from.length + 1)..-1]
30
30
  end
31
31
 
32
32
  def stylesheet_name(sass_file)
33
- sass_file[("#{from}/".length)..-6]
33
+ if sass_file.index(from) == 0
34
+ sass_file[(from.length + 1)..-6]
35
+ else
36
+ raise Compass::Error, "You must compile individual stylesheets from the project directory."
37
+ end
34
38
  end
35
39
 
36
40
  def css_files
@@ -1,5 +1,6 @@
1
1
  module Compass
2
2
  module Configuration
3
+ @callbacks_loaded = false
3
4
  # The helpers are available as methods on the Compass module. E.g. Compass.configuration
4
5
  module Helpers
5
6
  def configuration
@@ -65,14 +66,14 @@ module Compass
65
66
  Sass::Plugin.add_template_location sass_dir, css_dir
66
67
  end
67
68
  end
68
- unless defined?(CallbacksSetup)
69
+ unless @callbacks_loaded
69
70
  Sass::Plugin.on_updating_stylesheet do |sass_file, css_file|
70
71
  Compass.configuration.run_callback(:stylesheet_saved, css_file)
71
72
  end
72
73
  Sass::Plugin.on_compilation_error do |e, filename, css|
73
74
  Compass.configuration.run_callback(:stylesheet_error, filename, e.message)
74
75
  end
75
- const_set('CallbacksSetup', true)
76
+ @callbacks_loaded = true
76
77
  end
77
78
  end
78
79
 
@@ -1,5 +1,12 @@
1
1
  module Compass::SassExtensions::Functions::Constants
2
2
  if defined?(Sass::Script::List)
3
+ POSITIONS = /top|bottom|left|right|center/
4
+ def is_position(position)
5
+ Sass::Script::Bool.new(position.is_a?(Sass::Script::String) && !!(position.value =~ POSITIONS))
6
+ end
7
+ def is_position_list(position_list)
8
+ Sass::Script::Bool.new(position_list.is_a?(Sass::Script::List) && position_list.value.all?{|p| is_position(p).to_bool})
9
+ end
3
10
  # returns the opposite position of a side or corner.
4
11
  def opposite_position(position)
5
12
  position = unless position.is_a?(Sass::Script::List)
@@ -1,4 +1,31 @@
1
1
  module Compass::SassExtensions::Functions::CrossBrowserSupport
2
+
3
+ class CSS2FallbackValue < Sass::Script::Literal
4
+ attr_accessor :value, :css2_value
5
+ def children
6
+ [value, css2_value]
7
+ end
8
+ def initialize(value, css2_value)
9
+ self.value = value
10
+ self.css2_value = css2_value
11
+ end
12
+ def inspect
13
+ to_s
14
+ end
15
+ def to_s(options = self.options)
16
+ value.to_s(options)
17
+ end
18
+ def supports?(aspect)
19
+ aspect == "css2"
20
+ end
21
+ def has_aspect?
22
+ true
23
+ end
24
+ def to_css2(options = self.options)
25
+ css2_value
26
+ end
27
+ end
28
+
2
29
  # Check if any of the arguments passed require a vendor prefix.
3
30
  def prefixed(prefix, *args)
4
31
  aspect = prefix.value.sub(/^-/,"")
@@ -36,4 +63,8 @@ module Compass::SassExtensions::Functions::CrossBrowserSupport
36
63
  end
37
64
  end
38
65
 
66
+ def css2_fallback(value, css2_value)
67
+ CSS2FallbackValue.new(value, css2_value)
68
+ end
69
+
39
70
  end
@@ -1,6 +1,6 @@
1
1
  module Compass::SassExtensions::Functions::GradientSupport
2
2
 
3
- GRADIENT_ASPECTS = %w(webkit moz svg pie css2).freeze
3
+ GRADIENT_ASPECTS = %w(webkit moz svg pie css2 o).freeze
4
4
 
5
5
  class ColorStop < Sass::Script::Literal
6
6
  attr_accessor :color, :stop
@@ -34,15 +34,15 @@ module Compass::SassExtensions::Functions::GradientSupport
34
34
  end
35
35
 
36
36
  class RadialGradient < Sass::Script::Literal
37
- attr_accessor :position_and_angle, :shape_and_size, :color_stops
37
+ attr_accessor :position_or_angle, :shape_and_size, :color_stops
38
38
  def children
39
- [color_stops, position_and_angle, shape_and_size].compact
39
+ [color_stops, position_or_angle, shape_and_size].compact
40
40
  end
41
- def initialize(position_and_angle, shape_and_size, color_stops)
41
+ def initialize(position_or_angle, shape_and_size, color_stops)
42
42
  unless color_stops.value.size >= 2
43
43
  raise Sass::SyntaxError, "At least two color stops are required for a radial-gradient"
44
44
  end
45
- self.position_and_angle = position_and_angle
45
+ self.position_or_angle = position_or_angle
46
46
  self.shape_and_size = shape_and_size
47
47
  self.color_stops = color_stops
48
48
  end
@@ -51,22 +51,31 @@ module Compass::SassExtensions::Functions::GradientSupport
51
51
  end
52
52
  def to_s(options = self.options)
53
53
  s = "radial-gradient("
54
- s << position_and_angle.to_s(options) << ", " if position_and_angle
54
+ s << position_or_angle.to_s(options) << ", " if position_or_angle
55
55
  s << shape_and_size.to_s(options) << ", " if shape_and_size
56
56
  s << color_stops.to_s(options)
57
57
  s << ")"
58
58
  end
59
59
  def supports?(aspect)
60
- GRADIENT_ASPECTS.include?(aspect)
60
+ if aspect == "svg"
61
+ if position_or_angle.nil? || is_position(position_or_angle).to_bool || is_position_list(position_or_angle).to_bool
62
+ true
63
+ else
64
+ Compass::Util.compass_warn("Warning: Angle-based gradients are not yet supported in SVG. Found: #{position_or_angle}")
65
+ false
66
+ end
67
+ else
68
+ GRADIENT_ASPECTS.include?(aspect)
69
+ end
61
70
  end
62
71
  def has_aspect?
63
72
  true
64
73
  end
65
74
  def to_webkit(options = self.options)
66
75
  args = [
67
- grad_point(position_and_angle || _center_position),
76
+ grad_point(position_or_angle || _center_position),
68
77
  Sass::Script::String.new("0"),
69
- grad_point(position_and_angle || _center_position),
78
+ grad_point(position_or_angle || _center_position),
70
79
  grad_end_position(color_stops, Sass::Script::Bool.new(true)),
71
80
  grad_color_stops(color_stops)
72
81
  ]
@@ -77,9 +86,12 @@ module Compass::SassExtensions::Functions::GradientSupport
77
86
  def to_moz(options = self.options)
78
87
  Sass::Script::String.new("-moz-#{to_s(options)}")
79
88
  end
89
+ def to_o(options = self.options)
90
+ Sass::Script::String.new("-o-#{to_s(options)}")
91
+ end
80
92
  def to_svg(options = self.options)
81
93
  # XXX Add shape support if possible
82
- radial_svg_gradient(color_stops, position_and_angle || _center_position)
94
+ radial_svg_gradient(color_stops, position_or_angle || _center_position)
83
95
  end
84
96
  def to_pie(options = self.options)
85
97
  Compass::Logger.new.record(:warning, "PIE does not support radial-gradient.")
@@ -91,15 +103,15 @@ module Compass::SassExtensions::Functions::GradientSupport
91
103
  end
92
104
 
93
105
  class LinearGradient < Sass::Script::Literal
94
- attr_accessor :color_stops, :position_and_angle
106
+ attr_accessor :color_stops, :position_or_angle
95
107
  def children
96
- [color_stops, position_and_angle].compact
108
+ [color_stops, position_or_angle].compact
97
109
  end
98
- def initialize(position_and_angle, color_stops)
110
+ def initialize(position_or_angle, color_stops)
99
111
  unless color_stops.value.size >= 2
100
112
  raise Sass::SyntaxError, "At least two color stops are required for a linear-gradient"
101
113
  end
102
- self.position_and_angle = position_and_angle
114
+ self.position_or_angle = position_or_angle
103
115
  self.color_stops = color_stops
104
116
  end
105
117
  def inspect
@@ -107,20 +119,29 @@ module Compass::SassExtensions::Functions::GradientSupport
107
119
  end
108
120
  def to_s(options = self.options)
109
121
  s = "linear-gradient("
110
- s << position_and_angle.to_s(options) << ", " if position_and_angle
122
+ s << position_or_angle.to_s(options) << ", " if position_or_angle
111
123
  s << color_stops.to_s(options)
112
124
  s << ")"
113
125
  end
114
126
  def supports?(aspect)
115
- GRADIENT_ASPECTS.include?(aspect)
127
+ if aspect == "svg"
128
+ if position_or_angle.nil? || is_position(position_or_angle).to_bool || is_position_list(position_or_angle).to_bool
129
+ true
130
+ else
131
+ Compass::Util.compass_warn("Warning: Angle-based gradients are not yet supported in SVG. Found: #{position_or_angle}")
132
+ false
133
+ end
134
+ else
135
+ GRADIENT_ASPECTS.include?(aspect)
136
+ end
116
137
  end
117
138
  def has_aspect?
118
139
  true
119
140
  end
120
141
  def to_webkit(options = self.options)
121
142
  args = []
122
- args << grad_point(position_and_angle || Sass::Script::String.new("top"))
123
- args << grad_point(opposite_position(position_and_angle || Sass::Script::String.new("top")))
143
+ args << grad_point(position_or_angle || Sass::Script::String.new("top"))
144
+ args << grad_point(opposite_position(position_or_angle || Sass::Script::String.new("top")))
124
145
  args << grad_color_stops(color_stops)
125
146
  args.each{|a| a.options = options}
126
147
  Sass::Script::String.new("-webkit-gradient(linear, #{args.join(', ')})")
@@ -128,8 +149,11 @@ module Compass::SassExtensions::Functions::GradientSupport
128
149
  def to_moz(options = self.options)
129
150
  Sass::Script::String.new("-moz-#{to_s(options)}")
130
151
  end
152
+ def to_o(options = self.options)
153
+ Sass::Script::String.new("-o-#{to_s(options)}")
154
+ end
131
155
  def to_svg(options = self.options)
132
- linear_svg_gradient(color_stops, position_and_angle || Sass::Script::String.new("top"))
156
+ linear_svg_gradient(color_stops, position_or_angle || Sass::Script::String.new("top"))
133
157
  end
134
158
  def to_pie(options = self.options)
135
159
  # PIE just uses the standard rep, but the property is prefixed so
@@ -144,13 +168,18 @@ module Compass::SassExtensions::Functions::GradientSupport
144
168
  module Functions
145
169
 
146
170
  # given a position list, return a corresponding position in percents
171
+ # otherwise, returns the original argument
147
172
  def grad_point(position)
173
+ original_value = position
148
174
  position = unless position.is_a?(Sass::Script::List)
149
175
  Sass::Script::List.new([position], :space)
150
176
  else
151
177
  Sass::Script::List.new(position.value.dup, position.separator)
152
178
  end
153
- position.value.reject!{|p| p.is_a?(Sass::Script::Number) && p.numerator_units.include?("deg")}
179
+ # Handle unknown arguments by passing them along untouched.
180
+ unless position.value.all?{|p| is_position(p).to_bool }
181
+ return original_value
182
+ end
154
183
  if (position.value.first.value =~ /top|bottom/) or (position.value.last.value =~ /left|right/)
155
184
  # browsers are pretty forgiving of reversed positions so we are too.
156
185
  position.value.reverse!
@@ -192,7 +221,7 @@ module Compass::SassExtensions::Functions::GradientSupport
192
221
  end, :comma)
193
222
  end
194
223
 
195
- def radial_gradient(position_and_angle, shape_and_size, *color_stops)
224
+ def radial_gradient(position_or_angle, shape_and_size, *color_stops)
196
225
  # Have to deal with variable length/meaning arguments.
197
226
  if color_stop?(shape_and_size)
198
227
  color_stops.unshift(shape_and_size)
@@ -203,38 +232,38 @@ module Compass::SassExtensions::Functions::GradientSupport
203
232
  shape_and_size = nil
204
233
  end
205
234
  shape_and_size = nil if shape_and_size && !shape_and_size.to_bool # nil out explictly passed falses
206
- # ditto for position_and_angle
207
- if color_stop?(position_and_angle)
208
- color_stops.unshift(position_and_angle)
209
- position_and_angle = nil
210
- elsif list_of_color_stops?(position_and_angle)
211
- color_stops = position_and_angle.value + color_stops
212
- position_and_angle = nil
235
+ # ditto for position_or_angle
236
+ if color_stop?(position_or_angle)
237
+ color_stops.unshift(position_or_angle)
238
+ position_or_angle = nil
239
+ elsif list_of_color_stops?(position_or_angle)
240
+ color_stops = position_or_angle.value + color_stops
241
+ position_or_angle = nil
213
242
  end
214
- position_and_angle = nil if position_and_angle && !position_and_angle.to_bool
243
+ position_or_angle = nil if position_or_angle && !position_or_angle.to_bool
215
244
 
216
245
  # Support legacy use of the color-stops() function
217
246
  if color_stops.size == 1 && list_of_color_stops?(color_stops.first)
218
247
  color_stops = color_stops.first.value
219
248
  end
220
- RadialGradient.new(position_and_angle, shape_and_size, send(:color_stops, *color_stops))
249
+ RadialGradient.new(position_or_angle, shape_and_size, send(:color_stops, *color_stops))
221
250
  end
222
251
 
223
- def linear_gradient(position_and_angle, *color_stops)
224
- if color_stop?(position_and_angle)
225
- color_stops.unshift(position_and_angle)
226
- position_and_angle = nil
227
- elsif list_of_color_stops?(position_and_angle)
228
- color_stops = position_and_angle.value + color_stops
229
- position_and_angle = nil
252
+ def linear_gradient(position_or_angle, *color_stops)
253
+ if color_stop?(position_or_angle)
254
+ color_stops.unshift(position_or_angle)
255
+ position_or_angle = nil
256
+ elsif list_of_color_stops?(position_or_angle)
257
+ color_stops = position_or_angle.value + color_stops
258
+ position_or_angle = nil
230
259
  end
231
- position_and_angle = nil if position_and_angle && !position_and_angle.to_bool
260
+ position_or_angle = nil if position_or_angle && !position_or_angle.to_bool
232
261
 
233
262
  # Support legacy use of the color-stops() function
234
- if color_stops.size == 1 && list_of_color_stops?(color_stops.first)
235
- color_stops = color_stops.first.value
263
+ if color_stops.size == 1 && (stops = list_of_color_stops?(color_stops.first))
264
+ color_stops = stops
236
265
  end
237
- LinearGradient.new(position_and_angle, send(:color_stops, *color_stops))
266
+ LinearGradient.new(position_or_angle, send(:color_stops, *color_stops))
238
267
  end
239
268
 
240
269
  # returns color-stop() calls for use in webkit.
@@ -255,8 +284,8 @@ module Compass::SassExtensions::Functions::GradientSupport
255
284
  stop = pos.stop
256
285
  stop = stop.div(max).times(Sass::Script::Number.new(100,["%"])) if stop.numerator_units == max.numerator_units && max.numerator_units != ["%"]
257
286
  # Make sure the color stops are specified in the right order.
258
- if last_value && last_value.value > stop.value
259
- raise Sass::SyntaxError.new("Color stops must be specified in increasing order")
287
+ if last_value && stop.numerator_units == last_value.numerator_units && stop.denominator_units == last_value.denominator_units && stop.value < last_value.value
288
+ raise Sass::SyntaxError.new("Color stops must be specified in increasing order. #{stop.value} came after #{last_value.value}.")
260
289
  end
261
290
  last_value = stop
262
291
  [stop, pos.color]
@@ -386,7 +415,11 @@ module Compass::SassExtensions::Functions::GradientSupport
386
415
  end
387
416
 
388
417
  def list_of_color_stops?(arg)
389
- arg.value.is_a?(Array) && arg.value.all?{|a| a.is_a?(ColorStop)}
418
+ if arg.respond_to?(:value)
419
+ arg.value.is_a?(Array) && arg.value.all?{|a| color_stop?(a)} ? arg.value : nil
420
+ elsif arg.is_a?(Array)
421
+ arg.all?{|a| color_stop?(a)} ? arg : nil
422
+ end
390
423
  end
391
424
 
392
425
  def linear_svg(color_stops, x1, y1, x2, y2)