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

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 (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