compass 0.13.alpha.12 → 1.0.0.alpha.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (538) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +61 -89
  3. data/VERSION +1 -0
  4. data/features/command_line.feature +1 -1
  5. data/features/step_definitions/command_line_steps.rb +0 -2
  6. data/lib/compass.rb +21 -2
  7. data/lib/compass/commands.rb +2 -0
  8. data/lib/compass/commands/print_version.rb +1 -12
  9. data/lib/compass/compiler.rb +1 -0
  10. data/lib/compass/configuration/adapters.rb +3 -0
  11. data/lib/compass/configuration/comments.rb +4 -1
  12. data/lib/compass/configuration/helpers.rb +1 -58
  13. data/lib/compass/configuration/serialization.rb +3 -0
  14. data/lib/compass/errors.rb +1 -3
  15. data/lib/compass/frameworks.rb +26 -4
  16. data/lib/compass/sass_extensions.rb +0 -1
  17. data/lib/compass/sass_extensions/functions.rb +2 -26
  18. data/lib/compass/sass_extensions/functions/sprites.rb +23 -23
  19. data/lib/compass/sass_extensions/sprites/image.rb +24 -29
  20. data/lib/compass/sprite_importer/content.erb +1 -1
  21. data/lib/compass/util.rb +1 -1
  22. data/lib/compass/version.rb +18 -35
  23. data/test/fixtures/stylesheets/compass/css/fonts.css +2 -2
  24. data/test/fixtures/stylesheets/envtest/tmp/env.css +2 -2
  25. data/test/fixtures/stylesheets/valid/css/another_simple.css +4 -0
  26. data/test/fixtures/stylesheets/valid/css/simple.css +4 -0
  27. data/test/integrations/sprites_test.rb +86 -79
  28. data/test/test_helper.rb +7 -5
  29. data/test/units/caniuse_test.rb +4 -4
  30. data/test/units/command_line_test.rb +5 -4
  31. data/test/units/configuration_test.rb +35 -2
  32. data/test/units/sass_extensions_test.rb +2 -2
  33. data/test/units/sass_extenstions/gradients_test.rb +3 -3
  34. data/test/units/sprites/sprite_map_test.rb +5 -2
  35. metadata +21 -506
  36. data/README.markdown +0 -30
  37. data/VERSION.yml +0 -6
  38. data/data/caniuse.json +0 -1
  39. data/data/caniuse_extras/css-placeholder.json +0 -171
  40. data/examples/README.markdown +0 -4
  41. data/examples/blueprint_default/config.rb +0 -7
  42. data/examples/blueprint_default/images/grid.png +0 -0
  43. data/examples/blueprint_default/index.html.haml +0 -85
  44. data/examples/blueprint_default/parts/elements.html.haml +0 -282
  45. data/examples/blueprint_default/parts/forms.html.haml +0 -200
  46. data/examples/blueprint_default/parts/grid.html.haml +0 -274
  47. data/examples/blueprint_default/parts/test-small.jpg +0 -0
  48. data/examples/blueprint_default/parts/test.jpg +0 -0
  49. data/examples/blueprint_default/parts/valid.png +0 -0
  50. data/examples/blueprint_default/src/ie.scss +0 -3
  51. data/examples/blueprint_default/src/images/grid.png +0 -0
  52. data/examples/blueprint_default/src/print.scss +0 -3
  53. data/examples/blueprint_default/src/screen.scss +0 -9
  54. data/examples/blueprint_plugins/config.rb +0 -8
  55. data/examples/blueprint_plugins/images/buttons/cross.png +0 -0
  56. data/examples/blueprint_plugins/images/buttons/key.png +0 -0
  57. data/examples/blueprint_plugins/images/buttons/tick.png +0 -0
  58. data/examples/blueprint_plugins/images/grid.png +0 -0
  59. data/examples/blueprint_plugins/images/link_icons/doc.png +0 -0
  60. data/examples/blueprint_plugins/images/link_icons/email.png +0 -0
  61. data/examples/blueprint_plugins/images/link_icons/external.png +0 -0
  62. data/examples/blueprint_plugins/images/link_icons/feed.png +0 -0
  63. data/examples/blueprint_plugins/images/link_icons/im.png +0 -0
  64. data/examples/blueprint_plugins/images/link_icons/pdf.png +0 -0
  65. data/examples/blueprint_plugins/images/link_icons/visited.png +0 -0
  66. data/examples/blueprint_plugins/images/link_icons/xls.png +0 -0
  67. data/examples/blueprint_plugins/images/test-small.jpg +0 -0
  68. data/examples/blueprint_plugins/images/test.jpg +0 -0
  69. data/examples/blueprint_plugins/images/valid.png +0 -0
  70. data/examples/blueprint_plugins/index.html.haml +0 -96
  71. data/examples/blueprint_plugins/plugins/buttons.html.haml +0 -67
  72. data/examples/blueprint_plugins/plugins/fancy_type.html.haml +0 -100
  73. data/examples/blueprint_plugins/plugins/link_icons.html.haml +0 -61
  74. data/examples/blueprint_plugins/plugins/rtl.html.haml +0 -100
  75. data/examples/blueprint_plugins/src/buttons.scss +0 -47
  76. data/examples/blueprint_plugins/src/ie.scss +0 -3
  77. data/examples/blueprint_plugins/src/images/grid.png +0 -0
  78. data/examples/blueprint_plugins/src/link_icons.scss +0 -13
  79. data/examples/blueprint_plugins/src/print.scss +0 -3
  80. data/examples/blueprint_plugins/src/rtl_screen.scss +0 -15
  81. data/examples/blueprint_plugins/src/screen.scss +0 -12
  82. data/examples/blueprint_scoped/images/grid.png +0 -0
  83. data/examples/blueprint_scoped/src/ie.scss +0 -4
  84. data/examples/blueprint_scoped/src/print.scss +0 -4
  85. data/examples/blueprint_scoped/src/screen.scss +0 -5
  86. data/examples/blueprint_scoped_form/images/grid.png +0 -0
  87. data/examples/blueprint_scoped_form/src/ie.scss +0 -3
  88. data/examples/blueprint_scoped_form/src/print.scss +0 -3
  89. data/examples/blueprint_scoped_form/src/screen.scss +0 -15
  90. data/examples/blueprint_semantic/config.rb +0 -7
  91. data/examples/blueprint_semantic/images/grid.png +0 -0
  92. data/examples/blueprint_semantic/index.html.haml +0 -86
  93. data/examples/blueprint_semantic/parts/fancy_type.html.haml +0 -100
  94. data/examples/blueprint_semantic/parts/liquid.html.haml +0 -100
  95. data/examples/blueprint_semantic/parts/test-small.jpg +0 -0
  96. data/examples/blueprint_semantic/parts/test.jpg +0 -0
  97. data/examples/blueprint_semantic/parts/valid.png +0 -0
  98. data/examples/blueprint_semantic/src/ie.scss +0 -3
  99. data/examples/blueprint_semantic/src/images/grid.png +0 -0
  100. data/examples/blueprint_semantic/src/liquid.scss +0 -69
  101. data/examples/blueprint_semantic/src/print.scss +0 -3
  102. data/examples/blueprint_semantic/src/screen.scss +0 -69
  103. data/examples/compass/bootstrap.rb +0 -4
  104. data/examples/compass/clean.rb +0 -2
  105. data/examples/compass/compass.html.haml +0 -39
  106. data/examples/compass/config.rb +0 -8
  107. data/examples/compass/headers.txt +0 -7
  108. data/examples/compass/images/blue_arrow.gif +0 -0
  109. data/examples/compass/images/border2.png +0 -0
  110. data/examples/compass/images/emblem/favorite.png +0 -0
  111. data/examples/compass/images/emblem/important.png +0 -0
  112. data/examples/compass/images/emblem/photos.png +0 -0
  113. data/examples/compass/images/emblem/readonly.png +0 -0
  114. data/examples/compass/images/emblem/symbolic-link.png +0 -0
  115. data/examples/compass/images/emblem/system.png +0 -0
  116. data/examples/compass/images/emblem/unreadable.png +0 -0
  117. data/examples/compass/images/flag/ad.png +0 -0
  118. data/examples/compass/images/flag/ae.png +0 -0
  119. data/examples/compass/images/flag/af.png +0 -0
  120. data/examples/compass/images/flag/ag.png +0 -0
  121. data/examples/compass/images/flag/ai.png +0 -0
  122. data/examples/compass/images/flag/al.png +0 -0
  123. data/examples/compass/images/flag/am.png +0 -0
  124. data/examples/compass/images/flag/an.png +0 -0
  125. data/examples/compass/images/flag/ao.png +0 -0
  126. data/examples/compass/images/flag/ar.png +0 -0
  127. data/examples/compass/images/flag/as.png +0 -0
  128. data/examples/compass/images/flag/at.png +0 -0
  129. data/examples/compass/images/flag/au.png +0 -0
  130. data/examples/compass/images/flag/aw.png +0 -0
  131. data/examples/compass/images/flag/ax.png +0 -0
  132. data/examples/compass/images/flag/az.png +0 -0
  133. data/examples/compass/images/flag/ba.png +0 -0
  134. data/examples/compass/images/flag/bb.png +0 -0
  135. data/examples/compass/images/flag/bd.png +0 -0
  136. data/examples/compass/images/flag/be.png +0 -0
  137. data/examples/compass/images/flag/bf.png +0 -0
  138. data/examples/compass/images/flag/bg.png +0 -0
  139. data/examples/compass/images/flag/bh.png +0 -0
  140. data/examples/compass/images/flag/bi.png +0 -0
  141. data/examples/compass/images/flag/bj.png +0 -0
  142. data/examples/compass/images/flag/bm.png +0 -0
  143. data/examples/compass/images/flag/bn.png +0 -0
  144. data/examples/compass/images/flag/bo.png +0 -0
  145. data/examples/compass/images/flag/br.png +0 -0
  146. data/examples/compass/images/flag/bs.png +0 -0
  147. data/examples/compass/images/flag/bt.png +0 -0
  148. data/examples/compass/images/flag/bv.png +0 -0
  149. data/examples/compass/images/flag/bw.png +0 -0
  150. data/examples/compass/images/flag/by.png +0 -0
  151. data/examples/compass/images/flag/bz.png +0 -0
  152. data/examples/compass/images/flag/ca.png +0 -0
  153. data/examples/compass/images/flag/catalonia.png +0 -0
  154. data/examples/compass/images/flag/cc.png +0 -0
  155. data/examples/compass/images/flag/cd.png +0 -0
  156. data/examples/compass/images/flag/cf.png +0 -0
  157. data/examples/compass/images/flag/cg.png +0 -0
  158. data/examples/compass/images/flag/ch.png +0 -0
  159. data/examples/compass/images/flag/ci.png +0 -0
  160. data/examples/compass/images/flag/ck.png +0 -0
  161. data/examples/compass/images/flag/cl.png +0 -0
  162. data/examples/compass/images/flag/cm.png +0 -0
  163. data/examples/compass/images/flag/cn.png +0 -0
  164. data/examples/compass/images/flag/co.png +0 -0
  165. data/examples/compass/images/flag/cr.png +0 -0
  166. data/examples/compass/images/flag/cs.png +0 -0
  167. data/examples/compass/images/flag/cu.png +0 -0
  168. data/examples/compass/images/flag/cv.png +0 -0
  169. data/examples/compass/images/flag/cx.png +0 -0
  170. data/examples/compass/images/flag/cy.png +0 -0
  171. data/examples/compass/images/flag/cz.png +0 -0
  172. data/examples/compass/images/flag/de.png +0 -0
  173. data/examples/compass/images/flag/dj.png +0 -0
  174. data/examples/compass/images/flag/dk.png +0 -0
  175. data/examples/compass/images/flag/dm.png +0 -0
  176. data/examples/compass/images/flag/do.png +0 -0
  177. data/examples/compass/images/flag/dz.png +0 -0
  178. data/examples/compass/images/flag/ec.png +0 -0
  179. data/examples/compass/images/flag/ee.png +0 -0
  180. data/examples/compass/images/flag/eg.png +0 -0
  181. data/examples/compass/images/flag/eh.png +0 -0
  182. data/examples/compass/images/flag/england.png +0 -0
  183. data/examples/compass/images/flag/er.png +0 -0
  184. data/examples/compass/images/flag/es.png +0 -0
  185. data/examples/compass/images/flag/et.png +0 -0
  186. data/examples/compass/images/flag/europeanunion.png +0 -0
  187. data/examples/compass/images/flag/fam.png +0 -0
  188. data/examples/compass/images/flag/fi.png +0 -0
  189. data/examples/compass/images/flag/fj.png +0 -0
  190. data/examples/compass/images/flag/fk.png +0 -0
  191. data/examples/compass/images/flag/fm.png +0 -0
  192. data/examples/compass/images/flag/fo.png +0 -0
  193. data/examples/compass/images/flag/fr.png +0 -0
  194. data/examples/compass/images/flag/ga.png +0 -0
  195. data/examples/compass/images/flag/gb.png +0 -0
  196. data/examples/compass/images/flag/gd.png +0 -0
  197. data/examples/compass/images/flag/ge.png +0 -0
  198. data/examples/compass/images/flag/gf.png +0 -0
  199. data/examples/compass/images/flag/gh.png +0 -0
  200. data/examples/compass/images/flag/gi.png +0 -0
  201. data/examples/compass/images/flag/gl.png +0 -0
  202. data/examples/compass/images/flag/gm.png +0 -0
  203. data/examples/compass/images/flag/gn.png +0 -0
  204. data/examples/compass/images/flag/gp.png +0 -0
  205. data/examples/compass/images/flag/gq.png +0 -0
  206. data/examples/compass/images/flag/gr.png +0 -0
  207. data/examples/compass/images/flag/gs.png +0 -0
  208. data/examples/compass/images/flag/gt.png +0 -0
  209. data/examples/compass/images/flag/gu.png +0 -0
  210. data/examples/compass/images/flag/gw.png +0 -0
  211. data/examples/compass/images/flag/gy.png +0 -0
  212. data/examples/compass/images/flag/hk.png +0 -0
  213. data/examples/compass/images/flag/hm.png +0 -0
  214. data/examples/compass/images/flag/hn.png +0 -0
  215. data/examples/compass/images/flag/hr.png +0 -0
  216. data/examples/compass/images/flag/ht.png +0 -0
  217. data/examples/compass/images/flag/hu.png +0 -0
  218. data/examples/compass/images/flag/id-2.png +0 -0
  219. data/examples/compass/images/flag/ie.png +0 -0
  220. data/examples/compass/images/flag/il.png +0 -0
  221. data/examples/compass/images/flag/in.png +0 -0
  222. data/examples/compass/images/flag/io.png +0 -0
  223. data/examples/compass/images/flag/iq.png +0 -0
  224. data/examples/compass/images/flag/ir.png +0 -0
  225. data/examples/compass/images/flag/is.png +0 -0
  226. data/examples/compass/images/flag/it.png +0 -0
  227. data/examples/compass/images/flag/jm.png +0 -0
  228. data/examples/compass/images/flag/jo.png +0 -0
  229. data/examples/compass/images/flag/jp.png +0 -0
  230. data/examples/compass/images/flag/ke.png +0 -0
  231. data/examples/compass/images/flag/kg.png +0 -0
  232. data/examples/compass/images/flag/kh.png +0 -0
  233. data/examples/compass/images/flag/ki.png +0 -0
  234. data/examples/compass/images/flag/km.png +0 -0
  235. data/examples/compass/images/flag/kn.png +0 -0
  236. data/examples/compass/images/flag/kp.png +0 -0
  237. data/examples/compass/images/flag/kr.png +0 -0
  238. data/examples/compass/images/flag/kw.png +0 -0
  239. data/examples/compass/images/flag/ky.png +0 -0
  240. data/examples/compass/images/flag/kz.png +0 -0
  241. data/examples/compass/images/flag/la.png +0 -0
  242. data/examples/compass/images/flag/lb.png +0 -0
  243. data/examples/compass/images/flag/lc.png +0 -0
  244. data/examples/compass/images/flag/li.png +0 -0
  245. data/examples/compass/images/flag/lk.png +0 -0
  246. data/examples/compass/images/flag/lr.png +0 -0
  247. data/examples/compass/images/flag/ls.png +0 -0
  248. data/examples/compass/images/flag/lt.png +0 -0
  249. data/examples/compass/images/flag/lu.png +0 -0
  250. data/examples/compass/images/flag/lv.png +0 -0
  251. data/examples/compass/images/flag/ly.png +0 -0
  252. data/examples/compass/images/flag/ma.png +0 -0
  253. data/examples/compass/images/flag/mc.png +0 -0
  254. data/examples/compass/images/flag/md.png +0 -0
  255. data/examples/compass/images/flag/me.png +0 -0
  256. data/examples/compass/images/flag/mg.png +0 -0
  257. data/examples/compass/images/flag/mh.png +0 -0
  258. data/examples/compass/images/flag/mk.png +0 -0
  259. data/examples/compass/images/flag/ml.png +0 -0
  260. data/examples/compass/images/flag/mm.png +0 -0
  261. data/examples/compass/images/flag/mn.png +0 -0
  262. data/examples/compass/images/flag/mo.png +0 -0
  263. data/examples/compass/images/flag/mp.png +0 -0
  264. data/examples/compass/images/flag/mq.png +0 -0
  265. data/examples/compass/images/flag/mr.png +0 -0
  266. data/examples/compass/images/flag/ms.png +0 -0
  267. data/examples/compass/images/flag/mt.png +0 -0
  268. data/examples/compass/images/flag/mu.png +0 -0
  269. data/examples/compass/images/flag/mv.png +0 -0
  270. data/examples/compass/images/flag/mw.png +0 -0
  271. data/examples/compass/images/flag/mx.png +0 -0
  272. data/examples/compass/images/flag/my.png +0 -0
  273. data/examples/compass/images/flag/mz.png +0 -0
  274. data/examples/compass/images/flag/na.png +0 -0
  275. data/examples/compass/images/flag/nc.png +0 -0
  276. data/examples/compass/images/flag/ne.png +0 -0
  277. data/examples/compass/images/flag/nf.png +0 -0
  278. data/examples/compass/images/flag/ng.png +0 -0
  279. data/examples/compass/images/flag/ni.png +0 -0
  280. data/examples/compass/images/flag/nl.png +0 -0
  281. data/examples/compass/images/flag/no.png +0 -0
  282. data/examples/compass/images/flag/np.png +0 -0
  283. data/examples/compass/images/flag/nr.png +0 -0
  284. data/examples/compass/images/flag/nu.png +0 -0
  285. data/examples/compass/images/flag/nz.png +0 -0
  286. data/examples/compass/images/flag/om.png +0 -0
  287. data/examples/compass/images/flag/pa.png +0 -0
  288. data/examples/compass/images/flag/pe.png +0 -0
  289. data/examples/compass/images/flag/pf.png +0 -0
  290. data/examples/compass/images/flag/pg.png +0 -0
  291. data/examples/compass/images/flag/ph.png +0 -0
  292. data/examples/compass/images/flag/pk.png +0 -0
  293. data/examples/compass/images/flag/pl.png +0 -0
  294. data/examples/compass/images/flag/pm.png +0 -0
  295. data/examples/compass/images/flag/pn.png +0 -0
  296. data/examples/compass/images/flag/pr.png +0 -0
  297. data/examples/compass/images/flag/ps.png +0 -0
  298. data/examples/compass/images/flag/pt.png +0 -0
  299. data/examples/compass/images/flag/pw.png +0 -0
  300. data/examples/compass/images/flag/py.png +0 -0
  301. data/examples/compass/images/flag/qa.png +0 -0
  302. data/examples/compass/images/flag/re.png +0 -0
  303. data/examples/compass/images/flag/ro.png +0 -0
  304. data/examples/compass/images/flag/rs.png +0 -0
  305. data/examples/compass/images/flag/ru.png +0 -0
  306. data/examples/compass/images/flag/rw.png +0 -0
  307. data/examples/compass/images/flag/sa.png +0 -0
  308. data/examples/compass/images/flag/sb.png +0 -0
  309. data/examples/compass/images/flag/sc.png +0 -0
  310. data/examples/compass/images/flag/scotland.png +0 -0
  311. data/examples/compass/images/flag/sd.png +0 -0
  312. data/examples/compass/images/flag/se.png +0 -0
  313. data/examples/compass/images/flag/sg.png +0 -0
  314. data/examples/compass/images/flag/sh.png +0 -0
  315. data/examples/compass/images/flag/si.png +0 -0
  316. data/examples/compass/images/flag/sj.png +0 -0
  317. data/examples/compass/images/flag/sk.png +0 -0
  318. data/examples/compass/images/flag/sl.png +0 -0
  319. data/examples/compass/images/flag/sm.png +0 -0
  320. data/examples/compass/images/flag/sn.png +0 -0
  321. data/examples/compass/images/flag/so.png +0 -0
  322. data/examples/compass/images/flag/sr.png +0 -0
  323. data/examples/compass/images/flag/st.png +0 -0
  324. data/examples/compass/images/flag/sv.png +0 -0
  325. data/examples/compass/images/flag/sy.png +0 -0
  326. data/examples/compass/images/flag/sz.png +0 -0
  327. data/examples/compass/images/flag/tc.png +0 -0
  328. data/examples/compass/images/flag/td.png +0 -0
  329. data/examples/compass/images/flag/tf.png +0 -0
  330. data/examples/compass/images/flag/tg.png +0 -0
  331. data/examples/compass/images/flag/th.png +0 -0
  332. data/examples/compass/images/flag/tj.png +0 -0
  333. data/examples/compass/images/flag/tk.png +0 -0
  334. data/examples/compass/images/flag/tl.png +0 -0
  335. data/examples/compass/images/flag/tm.png +0 -0
  336. data/examples/compass/images/flag/tn.png +0 -0
  337. data/examples/compass/images/flag/to.png +0 -0
  338. data/examples/compass/images/flag/tr.png +0 -0
  339. data/examples/compass/images/flag/tt.png +0 -0
  340. data/examples/compass/images/flag/tv.png +0 -0
  341. data/examples/compass/images/flag/tw.png +0 -0
  342. data/examples/compass/images/flag/tz.png +0 -0
  343. data/examples/compass/images/flag/ua.png +0 -0
  344. data/examples/compass/images/flag/ug.png +0 -0
  345. data/examples/compass/images/flag/um.png +0 -0
  346. data/examples/compass/images/flag/us.png +0 -0
  347. data/examples/compass/images/flag/uy.png +0 -0
  348. data/examples/compass/images/flag/uz.png +0 -0
  349. data/examples/compass/images/flag/va.png +0 -0
  350. data/examples/compass/images/flag/vc.png +0 -0
  351. data/examples/compass/images/flag/ve.png +0 -0
  352. data/examples/compass/images/flag/vg.png +0 -0
  353. data/examples/compass/images/flag/vi.png +0 -0
  354. data/examples/compass/images/flag/vn.png +0 -0
  355. data/examples/compass/images/flag/vu.png +0 -0
  356. data/examples/compass/images/flag/wales.png +0 -0
  357. data/examples/compass/images/flag/wf.png +0 -0
  358. data/examples/compass/images/flag/ws.png +0 -0
  359. data/examples/compass/images/flag/ye.png +0 -0
  360. data/examples/compass/images/flag/yt.png +0 -0
  361. data/examples/compass/images/flag/za.png +0 -0
  362. data/examples/compass/images/flag/zm.png +0 -0
  363. data/examples/compass/images/flag/zw.png +0 -0
  364. data/examples/compass/images/icon-chrome.png +0 -0
  365. data/examples/compass/images/icon-firefox.png +0 -0
  366. data/examples/compass/images/icon-ie.png +0 -0
  367. data/examples/compass/images/icon-opera.png +0 -0
  368. data/examples/compass/images/icon-safari.png +0 -0
  369. data/examples/compass/pie.html.haml +0 -73
  370. data/examples/compass/sprites.html.haml +0 -37
  371. data/examples/compass/src/bp_layout.scss +0 -18
  372. data/examples/compass/src/compass.scss +0 -46
  373. data/examples/compass/src/images/blue_arrow.gif +0 -0
  374. data/examples/compass/src/sprites.scss +0 -25
  375. data/examples/compass/src/sticky_footer.scss +0 -11
  376. data/examples/compass/src/utilities.scss +0 -108
  377. data/examples/compass/sticky_footer.html.haml +0 -14
  378. data/examples/compass/utilities.html.haml +0 -189
  379. data/examples/css3/bootstrap.rb +0 -3
  380. data/examples/css3/clean.rb +0 -2
  381. data/examples/css3/config.rb +0 -6
  382. data/examples/css3/extensions/fancy-fonts/templates/project/fancy-fonts.sass +0 -10
  383. data/examples/css3/extensions/fancy-fonts/templates/project/manifest.rb +0 -6
  384. data/examples/css3/gradients.html.haml +0 -68
  385. data/examples/css3/images/button_bg.png +0 -0
  386. data/examples/css3/images/example.png +0 -0
  387. data/examples/css3/index.html.haml +0 -57
  388. data/examples/css3/src/_base.scss +0 -13
  389. data/examples/css3/src/fancy-fonts.scss +0 -13
  390. data/examples/css3/src/gradients.scss +0 -86
  391. data/examples/css3/src/main.scss +0 -108
  392. data/examples/downloader.rb +0 -58
  393. data/examples/ninesixty/bootstrap.rb +0 -4
  394. data/examples/ninesixty/clean.rb +0 -2
  395. data/examples/ninesixty/config.rb +0 -10
  396. data/examples/ninesixty/src/grid.scss +0 -15
  397. data/examples/ninesixty/src/text.scss +0 -8
  398. data/examples/susy/bootstrap.rb +0 -3
  399. data/examples/susy/clean.rb +0 -2
  400. data/examples/susy/config.rb +0 -10
  401. data/examples/susy/src/_base.scss +0 -61
  402. data/examples/susy/src/_defaults.scss +0 -140
  403. data/examples/susy/src/screen.scss +0 -100
  404. data/examples/yui/bootstrap.rb +0 -3
  405. data/examples/yui/clean.rb +0 -2
  406. data/examples/yui/config.rb +0 -1
  407. data/examples/yui/divisions.html.haml +0 -179
  408. data/examples/yui/index.html.haml +0 -19
  409. data/examples/yui/src/screen.scss +0 -13
  410. data/examples/yui/sub_divisions.html.haml +0 -169
  411. data/examples/yui/templates.html.haml +0 -54
  412. data/examples/yui/test.jpg +0 -0
  413. data/examples/yui/typography.html.haml +0 -132
  414. data/frameworks/compass/stylesheets/_compass.scss +0 -3
  415. data/frameworks/compass/stylesheets/_lemonade.scss +0 -38
  416. data/frameworks/compass/stylesheets/compass/_css3.scss +0 -21
  417. data/frameworks/compass/stylesheets/compass/_layout.scss +0 -3
  418. data/frameworks/compass/stylesheets/compass/_reset-legacy.scss +0 -3
  419. data/frameworks/compass/stylesheets/compass/_reset.scss +0 -3
  420. data/frameworks/compass/stylesheets/compass/_support.scss +0 -432
  421. data/frameworks/compass/stylesheets/compass/_typography.scss +0 -4
  422. data/frameworks/compass/stylesheets/compass/_utilities.scss +0 -9
  423. data/frameworks/compass/stylesheets/compass/css3/_animation.scss +0 -122
  424. data/frameworks/compass/stylesheets/compass/css3/_appearance.scss +0 -17
  425. data/frameworks/compass/stylesheets/compass/css3/_background-clip.scss +0 -35
  426. data/frameworks/compass/stylesheets/compass/css3/_background-origin.scss +0 -37
  427. data/frameworks/compass/stylesheets/compass/css3/_background-size.scss +0 -19
  428. data/frameworks/compass/stylesheets/compass/css3/_border-radius.scss +0 -107
  429. data/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss +0 -88
  430. data/frameworks/compass/stylesheets/compass/css3/_box-sizing.scss +0 -15
  431. data/frameworks/compass/stylesheets/compass/css3/_box.scss +0 -85
  432. data/frameworks/compass/stylesheets/compass/css3/_columns.scss +0 -210
  433. data/frameworks/compass/stylesheets/compass/css3/_deprecated-support.scss +0 -272
  434. data/frameworks/compass/stylesheets/compass/css3/_filter.scss +0 -50
  435. data/frameworks/compass/stylesheets/compass/css3/_flexbox.scss +0 -156
  436. data/frameworks/compass/stylesheets/compass/css3/_font-face.scss +0 -48
  437. data/frameworks/compass/stylesheets/compass/css3/_hyphenation.scss +0 -71
  438. data/frameworks/compass/stylesheets/compass/css3/_images.scss +0 -139
  439. data/frameworks/compass/stylesheets/compass/css3/_inline-block.scss +0 -31
  440. data/frameworks/compass/stylesheets/compass/css3/_opacity.scss +0 -23
  441. data/frameworks/compass/stylesheets/compass/css3/_pie.scss +0 -1
  442. data/frameworks/compass/stylesheets/compass/css3/_regions.scss +0 -27
  443. data/frameworks/compass/stylesheets/compass/css3/_selection.scss +0 -59
  444. data/frameworks/compass/stylesheets/compass/css3/_shared.scss +0 -5
  445. data/frameworks/compass/stylesheets/compass/css3/_text-shadow.scss +0 -82
  446. data/frameworks/compass/stylesheets/compass/css3/_transform.scss +0 -590
  447. data/frameworks/compass/stylesheets/compass/css3/_transition.scss +0 -171
  448. data/frameworks/compass/stylesheets/compass/css3/_user-interface.scss +0 -71
  449. data/frameworks/compass/stylesheets/compass/layout/_grid-background.scss +0 -178
  450. data/frameworks/compass/stylesheets/compass/layout/_sticky-footer.scss +0 -23
  451. data/frameworks/compass/stylesheets/compass/layout/_stretching.scss +0 -24
  452. data/frameworks/compass/stylesheets/compass/reset/_utilities-legacy.scss +0 -135
  453. data/frameworks/compass/stylesheets/compass/reset/_utilities.scss +0 -142
  454. data/frameworks/compass/stylesheets/compass/typography/_links.scss +0 -3
  455. data/frameworks/compass/stylesheets/compass/typography/_lists.scss +0 -4
  456. data/frameworks/compass/stylesheets/compass/typography/_text.scss +0 -4
  457. data/frameworks/compass/stylesheets/compass/typography/_units.scss +0 -152
  458. data/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss +0 -300
  459. data/frameworks/compass/stylesheets/compass/typography/links/_hover-link.scss +0 -5
  460. data/frameworks/compass/stylesheets/compass/typography/links/_link-colors.scss +0 -28
  461. data/frameworks/compass/stylesheets/compass/typography/links/_unstyled-link.scss +0 -7
  462. data/frameworks/compass/stylesheets/compass/typography/lists/_bullets.scss +0 -34
  463. data/frameworks/compass/stylesheets/compass/typography/lists/_horizontal-list.scss +0 -63
  464. data/frameworks/compass/stylesheets/compass/typography/lists/_inline-block-list.scss +0 -50
  465. data/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss +0 -47
  466. data/frameworks/compass/stylesheets/compass/typography/text/_ellipsis.scss +0 -25
  467. data/frameworks/compass/stylesheets/compass/typography/text/_force-wrap.scss +0 -12
  468. data/frameworks/compass/stylesheets/compass/typography/text/_nowrap.scss +0 -2
  469. data/frameworks/compass/stylesheets/compass/typography/text/_replacement.scss +0 -68
  470. data/frameworks/compass/stylesheets/compass/utilities/_color.scss +0 -1
  471. data/frameworks/compass/stylesheets/compass/utilities/_general.scss +0 -6
  472. data/frameworks/compass/stylesheets/compass/utilities/_links.scss +0 -5
  473. data/frameworks/compass/stylesheets/compass/utilities/_lists.scss +0 -6
  474. data/frameworks/compass/stylesheets/compass/utilities/_print.scss +0 -17
  475. data/frameworks/compass/stylesheets/compass/utilities/_sprites.scss +0 -2
  476. data/frameworks/compass/stylesheets/compass/utilities/_tables.scss +0 -3
  477. data/frameworks/compass/stylesheets/compass/utilities/_text.scss +0 -5
  478. data/frameworks/compass/stylesheets/compass/utilities/color/_brightness.scss +0 -12
  479. data/frameworks/compass/stylesheets/compass/utilities/color/_contrast.scss +0 -52
  480. data/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss +0 -44
  481. data/frameworks/compass/stylesheets/compass/utilities/general/_float.scss +0 -38
  482. data/frameworks/compass/stylesheets/compass/utilities/general/_hacks.scss +0 -65
  483. data/frameworks/compass/stylesheets/compass/utilities/general/_min.scss +0 -16
  484. data/frameworks/compass/stylesheets/compass/utilities/general/_reset.scss +0 -2
  485. data/frameworks/compass/stylesheets/compass/utilities/general/_tabs.scss +0 -1
  486. data/frameworks/compass/stylesheets/compass/utilities/general/_tag-cloud.scss +0 -18
  487. data/frameworks/compass/stylesheets/compass/utilities/links/_hover-link.scss +0 -3
  488. data/frameworks/compass/stylesheets/compass/utilities/links/_link-colors.scss +0 -3
  489. data/frameworks/compass/stylesheets/compass/utilities/links/_unstyled-link.scss +0 -3
  490. data/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.scss +0 -3
  491. data/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss +0 -3
  492. data/frameworks/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss +0 -3
  493. data/frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss +0 -3
  494. data/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +0 -92
  495. data/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss +0 -81
  496. data/frameworks/compass/stylesheets/compass/utilities/tables/_alternating-rows-and-columns.scss +0 -22
  497. data/frameworks/compass/stylesheets/compass/utilities/tables/_borders.scss +0 -38
  498. data/frameworks/compass/stylesheets/compass/utilities/tables/_scaffolding.scss +0 -9
  499. data/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.scss +0 -3
  500. data/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.scss +0 -3
  501. data/frameworks/compass/stylesheets/compass/utilities/text/_replacement.scss +0 -3
  502. data/frameworks/compass/templates/ellipsis/ellipsis.sass +0 -9
  503. data/frameworks/compass/templates/ellipsis/manifest.rb +0 -27
  504. data/frameworks/compass/templates/ellipsis/xml/ellipsis.xml +0 -14
  505. data/frameworks/compass/templates/extension/manifest.rb +0 -26
  506. data/frameworks/compass/templates/extension/stylesheets/main.sass +0 -1
  507. data/frameworks/compass/templates/extension/templates/project/manifest.rb +0 -2
  508. data/frameworks/compass/templates/extension/templates/project/screen.sass +0 -2
  509. data/frameworks/compass/templates/project/USAGE.markdown +0 -32
  510. data/frameworks/compass/templates/project/ie.sass +0 -6
  511. data/frameworks/compass/templates/project/manifest.rb +0 -4
  512. data/frameworks/compass/templates/project/print.sass +0 -6
  513. data/frameworks/compass/templates/project/screen.sass +0 -7
  514. data/lib/compass/browser_support.rb +0 -62
  515. data/lib/compass/caniuse.rb +0 -283
  516. data/lib/compass/configuration.rb +0 -91
  517. data/lib/compass/configuration/data.rb +0 -193
  518. data/lib/compass/configuration/defaults.rb +0 -187
  519. data/lib/compass/configuration/inheritance.rb +0 -304
  520. data/lib/compass/configuration/paths.rb +0 -19
  521. data/lib/compass/exec/switch_ui.rb +0 -179
  522. data/lib/compass/sass_extensions/functions/colors.rb +0 -67
  523. data/lib/compass/sass_extensions/functions/constants.rb +0 -74
  524. data/lib/compass/sass_extensions/functions/cross_browser_support.rb +0 -269
  525. data/lib/compass/sass_extensions/functions/display.rb +0 -32
  526. data/lib/compass/sass_extensions/functions/enumerate.rb +0 -7
  527. data/lib/compass/sass_extensions/functions/env.rb +0 -59
  528. data/lib/compass/sass_extensions/functions/font_files.rb +0 -41
  529. data/lib/compass/sass_extensions/functions/gradient_support.rb +0 -611
  530. data/lib/compass/sass_extensions/functions/image_size.rb +0 -114
  531. data/lib/compass/sass_extensions/functions/inline_image.rb +0 -64
  532. data/lib/compass/sass_extensions/functions/lists.rb +0 -101
  533. data/lib/compass/sass_extensions/functions/math.rb +0 -93
  534. data/lib/compass/sass_extensions/functions/selectors.rb +0 -64
  535. data/lib/compass/sass_extensions/functions/urls.rb +0 -297
  536. data/lib/compass/sass_extensions/monkey_patches.rb +0 -3
  537. data/lib/compass/sass_extensions/monkey_patches/browser_support.rb +0 -124
  538. data/lib/compass/sass_extensions/monkey_patches/traversal.rb +0 -23
@@ -1,59 +0,0 @@
1
- module Compass::SassExtensions::Functions::Env
2
- extend Compass::SassExtensions::Functions::SassDeclarationHelper
3
-
4
- def compass_env
5
- Sass::Script::String.new((options[:compass][:environment] || "development").to_s)
6
- end
7
- register_sass_function :compass_env, []
8
-
9
- DEFAULT_TIME = Sass::Script::String.new("%T%:z")
10
- def current_time(format = DEFAULT_TIME)
11
- assert_type format, :String
12
- Sass::Script::String.new(Time.now.strftime(format.value))
13
- end
14
- register_sass_function :current_time, []
15
- register_sass_function :current_time, [:format]
16
-
17
- DEFAULT_DATE = Sass::Script::String.new("%F")
18
- def current_date(format = DEFAULT_DATE)
19
- current_time(format)
20
- end
21
- register_sass_function :current_date, []
22
- register_sass_function :current_date, [:format]
23
-
24
- NOT_ABSOLUTE = Sass::Script::Bool.new(false)
25
- def current_source_file(absolute = NOT_ABSOLUTE)
26
- if absolute.to_bool
27
- Sass::Script::String.new(options[:original_filename].to_s)
28
- else
29
- filename = Pathname.new(options[:original_filename].to_s)
30
- sass_path = Pathname.new(Compass.configuration.sass_path)
31
- relative_filename = filename.relative_path_from(sass_path).to_s rescue path
32
- Sass::Script::String.new(relative_filename)
33
- end
34
- end
35
- register_sass_function :current_source_file, []
36
- register_sass_function :current_source_file, [:absolute]
37
-
38
- def current_output_file(absolute = NOT_ABSOLUTE)
39
- Sass::Script::String.new(options[:css_filename].to_s)
40
- if absolute.to_bool
41
- Sass::Script::String.new(options[:css_filename].to_s)
42
- else
43
- filename = Pathname.new(options[:css_filename].to_s)
44
- css_path = Pathname.new(Compass.configuration.css_path)
45
- relative_filename = filename.relative_path_from(css_path).to_s rescue path
46
- Sass::Script::String.new(relative_filename)
47
- end
48
- end
49
- register_sass_function :current_output_file, []
50
- register_sass_function :current_output_file, [:absolute]
51
-
52
- unless Sass::Util.has?(:public_instance_method, Sass::Script::Functions, :inspect)
53
- # This is going to be in sass 3.3, just here temporarily.
54
- def inspect(value)
55
- unquoted_string(value.to_sass)
56
- end
57
- register_sass_function :inspect, [:value]
58
- end
59
- end
@@ -1,41 +0,0 @@
1
- module Compass::SassExtensions::Functions::FontFiles
2
- FONT_TYPES = {
3
- :woff => 'woff',
4
- :otf => 'opentype',
5
- :opentype => 'opentype',
6
- :ttf => 'truetype',
7
- :truetype => 'truetype',
8
- :svg => 'svg',
9
- :eot => 'embedded-opentype'
10
- }
11
-
12
- def font_files(*args)
13
- files = []
14
- args_length = args.length
15
- skip_next = false
16
-
17
- args.each_with_index do |arg, index|
18
- if skip_next
19
- skip_next = false
20
- next
21
- end
22
-
23
- type = (args_length > (index + 1)) ? args[index + 1].value.to_sym : :wrong
24
-
25
- if FONT_TYPES.key? type
26
- skip_next = true
27
- else
28
- # let pass url like font.type?thing#stuff
29
- type = arg.to_s.split('.').last.gsub(/(\?(.*))?(#(.*))?"/, '').to_sym
30
- end
31
-
32
- if FONT_TYPES.key? type
33
- files << "#{font_url(arg)} format('#{FONT_TYPES[type]}')"
34
- else
35
- raise Sass::SyntaxError, "Could not determine font type for #{arg}"
36
- end
37
- end
38
-
39
- Sass::Script::String.new(files.join(", "))
40
- end
41
- end
@@ -1,611 +0,0 @@
1
- module Compass::SassExtensions::Functions::GradientSupport
2
-
3
- GRADIENT_ASPECTS = %w(webkit moz svg css2 o owg).freeze
4
-
5
- class ColorStop < Sass::Script::Literal
6
- attr_accessor :color, :stop
7
- def children
8
- [color, stop].compact
9
- end
10
- def initialize(color, stop = nil)
11
- unless Sass::Script::Color === color ||
12
- Sass::Script::Funcall === color ||
13
- (Sass::Script::String === color && color.value == "currentColor")||
14
- (Sass::Script::String === color && color.value == "transparent")
15
- raise Sass::SyntaxError, "Expected a color. Got: #{color}"
16
- end
17
- if stop && !stop.is_a?(Sass::Script::Number)
18
- raise Sass::SyntaxError, "Expected a number. Got: #{stop}"
19
- end
20
- self.color, self.stop = color, stop
21
- end
22
- def inspect
23
- to_s
24
- end
25
-
26
- def self.color_to_svg_s(c)
27
- # svg doesn't support the "transparent" keyword; we need to manually
28
- # refactor it into "transparent black"
29
- if c.is_a?(Sass::Script::String) && c.value == "transparent"
30
- "black"
31
- elsif c.is_a?(Sass::Script::String)
32
- c.value.dup
33
- else
34
- self.color_to_s(c.with(:alpha => 1))
35
- end
36
- end
37
-
38
- def self.color_to_svg_alpha(c)
39
- # svg doesn't support the "transparent" keyword; we need to manually
40
- # refactor it into "transparent black"
41
- if c.is_a?(Sass::Script::String) && c.value == "transparent"
42
- 0
43
- elsif c.is_a?(Sass::Script::String) && c.value == "currentColor"
44
- 1
45
- else
46
- c.alpha
47
- end
48
- end
49
-
50
- def self.color_to_s(c)
51
- if c.is_a?(Sass::Script::String)
52
- c.value.dup
53
- else
54
- c.inspect.dup
55
- end
56
- end
57
-
58
- def to_s(options = self.options)
59
- s = self.class.color_to_s(color)
60
- if stop
61
- s << " "
62
- if stop.unitless?
63
- s << stop.times(Sass::Script::Number.new(100, ["%"])).inspect
64
- else
65
- s << stop.inspect
66
- end
67
- end
68
- s
69
- end
70
-
71
- def to_sass(options = nil)
72
- Sass::Script::String.new("color-stop(#{color.to_sass rescue nil}, #{stop.to_sass rescue nil})")
73
- end
74
- end
75
-
76
- module Gradient
77
-
78
- def self.included(base)
79
- base.extend ClassMethods
80
- end
81
-
82
- module ClassMethods
83
- def standardized_prefix(prefix)
84
- class_eval %Q{
85
- def to_#{prefix}(options = self.options)
86
- Sass::Script::String.new("-#{prefix}-\#{to_s_prefixed(options)}")
87
- end
88
- }
89
- end
90
- end
91
-
92
- def inspect
93
- to_s
94
- end
95
-
96
- def supports?(aspect)
97
- GRADIENT_ASPECTS.include?(aspect)
98
- end
99
-
100
- def has_aspect?
101
- true
102
- end
103
-
104
- def is_position(pos)
105
- pos.value =~ Compass::SassExtensions::Functions::Constants::POSITIONS
106
- end
107
-
108
- def angle?(value)
109
- value.is_a?(Sass::Script::Number) &&
110
- value.numerator_units.size == 1 &&
111
- value.numerator_units.first == "deg" &&
112
- value.denominator_units.empty?
113
- end
114
-
115
- end
116
-
117
- class RadialGradient < Sass::Script::Literal
118
- include Gradient
119
-
120
- attr_accessor :position, :shape_and_size, :color_stops
121
-
122
- def children
123
- [color_stops, position, shape_and_size].compact
124
- end
125
-
126
- def initialize(position, shape_and_size, color_stops)
127
- unless color_stops.value.size >= 2
128
- raise Sass::SyntaxError, "At least two color stops are required for a radial-gradient"
129
- end
130
- if angle?(position)
131
- raise Sass::SyntaxError, "CSS no longer allows angles in radial-gradients."
132
- end
133
- self.position = position
134
- self.shape_and_size = shape_and_size
135
- self.color_stops = color_stops
136
- end
137
-
138
- def to_s(options = self.options)
139
- s = "radial-gradient("
140
- s << position.to_s(options) << ", " if position
141
- s << shape_and_size.to_s(options) << ", " if shape_and_size
142
- s << color_stops.to_s(options)
143
- s << ")"
144
- end
145
-
146
- def to_s_prefixed(options = self.options)
147
- to_s(options)
148
- end
149
-
150
- standardized_prefix :webkit
151
- standardized_prefix :moz
152
- standardized_prefix :o
153
-
154
- def to_svg(options = self.options)
155
- # XXX Add shape support if possible
156
- radial_svg_gradient(color_stops, position || _center_position)
157
- end
158
-
159
- def to_css2(options = self.options)
160
- Sass::Script::String.new("")
161
- end
162
- end
163
-
164
- class LinearGradient < Sass::Script::Literal
165
- include Gradient
166
-
167
- attr_accessor :color_stops, :position_or_angle, :legacy
168
-
169
- def children
170
- [color_stops, position_or_angle].compact
171
- end
172
-
173
- def initialize(position_or_angle, color_stops, legacy=false)
174
- unless color_stops.value.size >= 2
175
- raise Sass::SyntaxError, "At least two color stops are required for a linear-gradient"
176
- end
177
- self.position_or_angle = position_or_angle
178
- self.color_stops = color_stops
179
- self.legacy = legacy
180
- end
181
-
182
- def to_s_prefixed(options = self.options)
183
- s = "linear-gradient("
184
- if legacy
185
- s << position_or_angle.to_s(options) << ", " if position_or_angle
186
- else
187
- s << convert_to_or_from_legacy(position_or_angle, options) << ", " if position_or_angle
188
- end
189
- s << color_stops.to_s(options)
190
- s << ")"
191
- end
192
-
193
- def convert_to_or_from_legacy(position_or_angle, options = self.options)
194
- input = if position_or_angle.is_a?(Sass::Script::Number)
195
- position_or_angle
196
- else
197
- Sass::Script::List.new(position_or_angle.to_s.split(' ').map {|s| Sass::Script::String.new(s) }, :space)
198
- end
199
- return convert_angle_from_offical(input).to_s(options)
200
- end
201
-
202
- def to_s(options = self.options)
203
- s = 'linear-gradient('
204
- if legacy
205
- s << convert_to_or_from_legacy(position_or_angle, options) << ", " if position_or_angle
206
- else
207
- s << position_or_angle.to_s(options) << ", " if position_or_angle
208
- end
209
- s << color_stops.to_s(options)
210
- s << ")"
211
- end
212
-
213
- standardized_prefix :webkit
214
- standardized_prefix :moz
215
- standardized_prefix :o
216
-
217
- def supports?(aspect)
218
- # I don't know how to support degree-based gradients in old webkit gradients (owg) or svg so we just disable them.
219
- if %w(owg svg).include?(aspect) && position_or_angle.is_a?(Sass::Script::Number) && position_or_angle.numerator_units.include?("deg")
220
- false
221
- else
222
- super
223
- end
224
- end
225
-
226
- def to_svg(options = self.options)
227
- linear_svg_gradient(color_stops, position_or_angle || Sass::Script::String.new("top"))
228
- end
229
-
230
- def to_css2(options = self.options)
231
- Sass::Script::String.new("")
232
- end
233
- end
234
-
235
- module Functions
236
-
237
- def convert_angle_from_offical(deg)
238
- if deg.is_a?(Sass::Script::Number)
239
- return Sass::Script::Number.new((deg.value.to_f - 450).abs % 360, ['deg'])
240
- else
241
- args = deg.value
242
- direction = []
243
- if args[0] == Sass::Script::String.new('to')
244
- if args.size < 2
245
- direction = args
246
- else
247
- direction << opposite_position(args[1])
248
- end
249
- else
250
- direction << Sass::Script::String.new('to')
251
- args.each do |pos|
252
- direction << opposite_position(pos)
253
- end
254
- end
255
- return Sass::Script::String.new(direction.join(' '))
256
- end
257
- end
258
-
259
- # given a position list, return a corresponding position in percents
260
- # otherwise, returns the original argument
261
- def grad_point(position)
262
- original_value = position
263
- position = unless position.is_a?(Sass::Script::List)
264
- Sass::Script::List.new([position], :space)
265
- else
266
- Sass::Script::List.new(position.value.dup, position.separator)
267
- end
268
- # Handle unknown arguments by passing them along untouched.
269
- unless position.value.all?{|p| is_position(p) }
270
- return original_value
271
- end
272
- if (position.value.first.value =~ /top|bottom/) or (position.value.last.value =~ /left|right/)
273
- # browsers are pretty forgiving of reversed positions so we are too.
274
- position = Sass::Script::List.new(position.value.reverse, position.separator)
275
- end
276
- if position.value.size == 1
277
- if position.value.first.value =~ /top|bottom/
278
- position = Sass::Script::List.new(
279
- [Sass::Script::String.new("center"), position.value.first], position.separator)
280
- elsif position.value.first.value =~ /left|right/
281
- position = Sass::Script::List.new(
282
- [position.value.first, Sass::Script::String.new("center")], position.separator)
283
- end
284
- end
285
- position = Sass::Script::List.new(position.value.map do |p|
286
- case p.value
287
- when /top|left/
288
- Sass::Script::Number.new(0, ["%"])
289
- when /bottom|right/
290
- Sass::Script::Number.new(100, ["%"])
291
- when /center/
292
- Sass::Script::Number.new(50, ["%"])
293
- else
294
- p
295
- end
296
- end, position.separator)
297
- position
298
- end
299
-
300
- def color_stops(*args)
301
- Sass::Script::List.new(args.map do |arg|
302
- if ColorStop === arg
303
- arg
304
- elsif Sass::Script::Color === arg
305
- ColorStop.new(arg)
306
- elsif Sass::Script::List === arg
307
- ColorStop.new(*arg.value)
308
- elsif Sass::Script::String === arg && arg.value == "transparent"
309
- ColorStop.new(arg)
310
- elsif Sass::Script::String === arg && arg.value == "currentColor"
311
- ColorStop.new(arg)
312
- else
313
- raise Sass::SyntaxError, "Not a valid color stop: #{arg.class.name}: #{arg}"
314
- end
315
- end, :comma)
316
- end
317
-
318
- def radial_gradient(position_or_angle, shape_and_size, *color_stops)
319
- # Have to deal with variable length/meaning arguments.
320
- if color_stop?(shape_and_size)
321
- color_stops.unshift(shape_and_size)
322
- shape_and_size = nil
323
- elsif list_of_color_stops?(shape_and_size)
324
- # Support legacy use of the color-stops() function
325
- color_stops = shape_and_size.value + color_stops
326
- shape_and_size = nil
327
- end
328
- shape_and_size = nil if shape_and_size && !shape_and_size.to_bool # nil out explictly passed falses
329
- # ditto for position_or_angle
330
- if color_stop?(position_or_angle)
331
- color_stops.unshift(position_or_angle)
332
- position_or_angle = nil
333
- elsif list_of_color_stops?(position_or_angle)
334
- color_stops = position_or_angle.value + color_stops
335
- position_or_angle = nil
336
- end
337
- position_or_angle = nil if position_or_angle && !position_or_angle.to_bool
338
-
339
- # Support legacy use of the color-stops() function
340
- if color_stops.size == 1 && list_of_color_stops?(color_stops.first)
341
- color_stops = color_stops.first.value
342
- end
343
- RadialGradient.new(position_or_angle, shape_and_size, send(:color_stops, *color_stops))
344
- end
345
-
346
- def _build_linear_gradient(position_or_angle, *color_stops)
347
- if color_stop?(position_or_angle)
348
- color_stops.unshift(position_or_angle)
349
- position_or_angle = nil
350
- elsif list_of_color_stops?(position_or_angle)
351
- color_stops = position_or_angle.value + color_stops
352
- position_or_angle = nil
353
- end
354
- position_or_angle = nil if position_or_angle && !position_or_angle.to_bool
355
-
356
- # Support legacy use of the color-stops() function
357
- if color_stops.size == 1 && (stops = list_of_color_stops?(color_stops.first))
358
- color_stops = stops
359
- end
360
- return [position_or_angle, color_stops]
361
- end
362
-
363
- def _linear_gradient(position_or_angle, *color_stops)
364
- position_or_angle, color_stops = _build_linear_gradient(position_or_angle, *color_stops)
365
- LinearGradient.new(position_or_angle, send(:color_stops, *color_stops))
366
- end
367
-
368
- def _linear_gradient_legacy(position_or_angle, *color_stops)
369
- position_or_angle, color_stops = _build_linear_gradient(position_or_angle, *color_stops)
370
- LinearGradient.new(position_or_angle, send(:color_stops, *color_stops), true)
371
- end
372
-
373
- # returns color-stop() calls for use in webkit.
374
- def grad_color_stops(color_list)
375
- stops = color_stops_in_percentages(color_list).map do |stop, color|
376
- "color-stop(#{stop.inspect}, #{ColorStop.color_to_s(color)})"
377
- end
378
- Sass::Script::String.new(stops.join(", "))
379
- end
380
-
381
- def color_stops_in_percentages(color_list)
382
- assert_type color_list, :List
383
- color_list = normalize_stops(color_list)
384
- max = color_list.value.last.stop
385
- last_value = nil
386
- color_stops = color_list.value.map do |pos|
387
- # have to convert absolute units to percentages for use in color stop functions.
388
- stop = pos.stop
389
- stop = stop.div(max).times(Sass::Script::Number.new(100,["%"])) if stop.numerator_units == max.numerator_units && max.numerator_units != ["%"]
390
- # Make sure the color stops are specified in the right order.
391
- if last_value && stop.numerator_units == last_value.numerator_units && stop.denominator_units == last_value.denominator_units && (stop.value * 1000).round < (last_value.value * 1000).round
392
- raise Sass::SyntaxError.new("Color stops must be specified in increasing order. #{stop.value} came after #{last_value.value}.")
393
- end
394
- last_value = stop
395
- [stop, pos.color]
396
- end
397
- end
398
-
399
- # only used for webkit
400
- def linear_end_position(position_or_angle, color_list)
401
- start_point = grad_point(position_or_angle || Sass::Script::String.new("top"))
402
- end_point = grad_point(opposite_position(position_or_angle || Sass::Script::String.new("top")))
403
- end_target = color_list.value.last.stop
404
-
405
- if color_list.value.last.stop && color_list.value.last.stop.numerator_units == ["px"]
406
- new_end = color_list.value.last.stop.value
407
- if start_point.value.first == end_point.value.first && start_point.value.last.value == 0
408
- # this means top-to-bottom
409
- end_point.value[1] = Sass::Script::Number.new(end_target.value)
410
- elsif start_point.value.last == end_point.value.last && start_point.value.first.value == 0
411
- # this implies left-to-right
412
- end_point.value[0] = Sass::Script::Number.new(end_target.value)
413
- end
414
- end
415
- end_point
416
- end
417
-
418
- # returns the end position of the gradient from the color stop
419
- def grad_end_position(color_list, radial = Sass::Script::Bool.new(false))
420
- assert_type color_list, :List
421
- default = Sass::Script::Number.new(100)
422
- grad_position(color_list, Sass::Script::Number.new(color_list.value.size), default, radial)
423
- end
424
-
425
- def grad_position(color_list, index, default, radial = Sass::Script::Bool.new(false))
426
- assert_type color_list, :List
427
- stop = color_list.value[index.value - 1].stop
428
- if stop && radial.to_bool
429
- orig_stop = stop
430
- if stop.unitless?
431
- if stop.value <= 1
432
- # A unitless number is assumed to be a percentage when it's between 0 and 1
433
- stop = stop.times(Sass::Script::Number.new(100, ["%"]))
434
- else
435
- # Otherwise, a unitless number is assumed to be in pixels
436
- stop = stop.times(Sass::Script::Number.new(1, ["px"]))
437
- end
438
- end
439
- if stop.numerator_units == ["%"] && color_list.value.last.stop && color_list.value.last.stop.numerator_units == ["px"]
440
- stop = stop.times(color_list.value.last.stop).div(Sass::Script::Number.new(100, ["%"]))
441
- end
442
- Compass::Logger.new.record(:warning, "Webkit only supports pixels for the start and end stops for radial gradients. Got: #{orig_stop}") if stop.numerator_units != ["px"]
443
- stop.div(Sass::Script::Number.new(1, stop.numerator_units, stop.denominator_units))
444
- elsif stop
445
- stop
446
- else
447
- default
448
- end
449
- end
450
-
451
- def linear_svg_gradient(color_stops, start)
452
- x1, y1 = *grad_point(start).value
453
- x2, y2 = *grad_point(opposite_position(start)).value
454
- stops = color_stops_in_percentages(color_stops)
455
-
456
- svg = linear_svg(stops, x1, y1, x2, y2)
457
- inline_image_string(svg.gsub(/\s+/, ' '), 'image/svg+xml')
458
- end
459
-
460
- def radial_svg_gradient(color_stops, center)
461
- cx, cy = *grad_point(center).value
462
- r = grad_end_position(color_stops, Sass::Script::Bool.new(true))
463
- stops = color_stops_in_percentages(color_stops)
464
-
465
- svg = radial_svg(stops, cx, cy, r)
466
- inline_image_string(svg.gsub(/\s+/, ' '), 'image/svg+xml')
467
- end
468
-
469
- private
470
-
471
- def color_stop?(arg)
472
- arg.is_a?(ColorStop) ||
473
- (arg.is_a?(Sass::Script::List) && ColorStop.new(*arg.value)) ||
474
- ColorStop.new(arg)
475
- rescue
476
- nil
477
- end
478
-
479
- def normalize_stops(color_list)
480
- positions = color_list.value.map{|obj| obj.dup}
481
- # fill in the start and end positions, if unspecified
482
- positions.first.stop = Sass::Script::Number.new(0) unless positions.first.stop
483
- positions.last.stop = Sass::Script::Number.new(100, ["%"]) unless positions.last.stop
484
- # fill in empty values
485
- for i in 0...positions.size
486
- if positions[i].stop.nil?
487
- num = 2.0
488
- for j in (i+1)...positions.size
489
- if positions[j].stop
490
- positions[i].stop = positions[i-1].stop.plus((positions[j].stop.minus(positions[i-1].stop)).div(Sass::Script::Number.new(num)))
491
- break
492
- else
493
- num += 1
494
- end
495
- end
496
- end
497
- end
498
- # normalize unitless numbers
499
- positions.each do |pos|
500
- if pos.stop.unitless? && pos.stop.value <= 1
501
- pos.stop = pos.stop.times(Sass::Script::Number.new(100, ["%"]))
502
- elsif pos.stop.unitless?
503
- pos.stop = pos.stop.times(Sass::Script::Number.new(1, ["px"]))
504
- end
505
- end
506
- if (positions.last.stop.eq(Sass::Script::Number.new(0, ["px"])).to_bool ||
507
- positions.last.stop.eq(Sass::Script::Number.new(0, ["%"])).to_bool)
508
- raise Sass::SyntaxError.new("Color stops must be specified in increasing order")
509
- end
510
- if defined?(Sass::Script::List)
511
- Sass::Script::List.new(positions, color_list.separator)
512
- else
513
- color_list.class.new(*positions)
514
- end
515
- end
516
-
517
- def parse_color_stop(arg)
518
- return ColorStop.new(arg) if arg.is_a?(Sass::Script::Color)
519
- return nil unless arg.is_a?(Sass::Script::String)
520
- color = stop = nil
521
- expr = Sass::Script::Parser.parse(arg.value, 0, 0)
522
- case expr
523
- when Sass::Script::Color
524
- color = expr
525
- when Sass::Script::Funcall
526
- color = expr
527
- when Sass::Script::Operation
528
- unless [:concat, :space].include?(expr.instance_variable_get("@operator"))
529
- # This should never happen.
530
- raise Sass::SyntaxError, "Couldn't parse a color stop from: #{arg.value}"
531
- end
532
- color = expr.instance_variable_get("@operand1")
533
- stop = expr.instance_variable_get("@operand2")
534
- else
535
- raise Sass::SyntaxError, "Couldn't parse a color stop from: #{arg.value}"
536
- end
537
- ColorStop.new(color, stop)
538
- end
539
-
540
- def list_of_color_stops?(arg)
541
- if arg.respond_to?(:value)
542
- arg.value.is_a?(Array) && arg.value.all?{|a| color_stop?(a)} ? arg.value : nil
543
- elsif arg.is_a?(Array)
544
- arg.all?{|a| color_stop?(a)} ? arg : nil
545
- end
546
- end
547
-
548
- def linear_svg(color_stops, x1, y1, x2, y2)
549
- transform = ''
550
- if angle?(position_or_angle)
551
- transform = %Q{ gradientTransform = "rotate(#{position_or_angle.value})"}
552
- end
553
- gradient = %Q{<linearGradient id="grad" gradientUnits="userSpaceOnUse" x1="#{x1}" y1="#{y1}" x2="#{x2}" y2="#{y2}"#{transform}>#{color_stops_svg(color_stops)}</linearGradient>}
554
- svg(gradient)
555
- end
556
-
557
- def radial_svg(color_stops, cx, cy, r)
558
- gradient = %Q{<radialGradient id="grad" gradientUnits="userSpaceOnUse" cx="#{cx}" cy="#{cy}" r="#{r}">#{color_stops_svg(color_stops)}</radialGradient>}
559
- svg(gradient)
560
- end
561
-
562
- # color_stops = array of: [stop, color]
563
- def color_stops_svg(color_stops)
564
- color_stops.each.map{ |stop, color|
565
- s = %{<stop offset="#{stop.to_s}"}
566
- s << %{ stop-color="#{ColorStop.color_to_svg_s(color)}"}
567
- alpha = ColorStop.color_to_svg_alpha(color)
568
- s << %{ stop-opacity="#{alpha}"} if alpha != 1
569
- s << "/>"
570
- }.join
571
- end
572
-
573
- def svg(gradient)
574
- svg = <<-EOS
575
- <?xml version="1.0" encoding="utf-8"?>
576
- <svg version="1.1" xmlns="http://www.w3.org/2000/svg"><defs>#{gradient}</defs><rect x="0" y="0" width="100%" height="100%" fill="url(#grad)" /></svg>
577
- EOS
578
- end
579
-
580
- def _center_position
581
- Sass::Script::List.new([
582
- Sass::Script::String.new("center"),
583
- Sass::Script::String.new("center")
584
- ],:space)
585
- end
586
-
587
- end
588
-
589
- module Assertions
590
- def assert_type(value, type, name = nil)
591
- return if value.is_a?(Sass::Script.const_get(type))
592
- err = "#{value.inspect} is not a #{type.to_s.downcase}"
593
- err = "$#{name}: " + err if name
594
- raise ArgumentError.new(err)
595
- end
596
- end
597
-
598
- class LinearGradient < Sass::Script::Literal
599
- include Assertions
600
- include Functions
601
- include Compass::SassExtensions::Functions::Constants
602
- include Compass::SassExtensions::Functions::InlineImage
603
- end
604
-
605
- class RadialGradient < Sass::Script::Literal
606
- include Assertions
607
- include Functions
608
- include Compass::SassExtensions::Functions::Constants
609
- include Compass::SassExtensions::Functions::InlineImage
610
- end
611
- end