stylus-source 0.15.4 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (577) hide show
  1. data/.gitignore +1 -0
  2. data/Rakefile +39 -0
  3. data/VERSION +1 -0
  4. data/lib/stylus/source.rb +1 -1
  5. data/stylus-source.gemspec +2 -2
  6. data/vendor/History.md +525 -0
  7. data/vendor/LICENSE +22 -0
  8. data/vendor/Makefile +20 -0
  9. data/vendor/Readme.md +127 -0
  10. data/vendor/bin/stylus +606 -0
  11. data/vendor/bm.js +22 -0
  12. data/vendor/docs/bifs.md +582 -0
  13. data/vendor/docs/comments.md +35 -0
  14. data/vendor/docs/compare.md +81 -0
  15. data/vendor/docs/conditionals.md +107 -0
  16. data/vendor/docs/css-style.md +77 -0
  17. data/vendor/docs/error-reporting.md +50 -0
  18. data/vendor/docs/escape.md +27 -0
  19. data/vendor/docs/executable.md +159 -0
  20. data/vendor/docs/firebug.md +60 -0
  21. data/vendor/docs/font-face.md +26 -0
  22. data/vendor/docs/functions.md +192 -0
  23. data/vendor/docs/functions.url.md +30 -0
  24. data/vendor/docs/gedit.md +24 -0
  25. data/vendor/docs/import.md +73 -0
  26. data/vendor/docs/interpolation.md +55 -0
  27. data/vendor/docs/introspection.md +39 -0
  28. data/vendor/docs/iteration.md +100 -0
  29. data/vendor/docs/js.md +136 -0
  30. data/vendor/docs/keyframes.md +120 -0
  31. data/vendor/docs/kwargs.md +35 -0
  32. data/vendor/docs/literal.md +16 -0
  33. data/vendor/docs/media.md +18 -0
  34. data/vendor/docs/middleware.md +73 -0
  35. data/vendor/docs/mixins.md +130 -0
  36. data/vendor/docs/operators.md +451 -0
  37. data/vendor/docs/selectors.md +131 -0
  38. data/vendor/docs/textmate.md +4 -0
  39. data/vendor/docs/vargs.md +84 -0
  40. data/vendor/docs/variables.md +78 -0
  41. data/vendor/editors/Stylus.tmbundle/Commands/Compile and Display CSS.tmCommand +33 -0
  42. data/vendor/editors/Stylus.tmbundle/Preferences/Comments.tmPreferences +36 -0
  43. data/vendor/editors/Stylus.tmbundle/Syntaxes/Stylus.tmLanguage +166 -0
  44. data/vendor/editors/Stylus.tmbundle/info.plist +10 -0
  45. data/vendor/editors/gedit/styl.lang +475 -0
  46. data/vendor/examples/arithmetic.js +12 -0
  47. data/vendor/examples/arithmetic.styl +29 -0
  48. data/vendor/examples/basic.js +12 -0
  49. data/vendor/examples/basic.styl +8 -0
  50. data/vendor/examples/builtins.js +12 -0
  51. data/vendor/examples/builtins.styl +56 -0
  52. data/vendor/examples/comments.js +11 -0
  53. data/vendor/examples/comments.styl +15 -0
  54. data/vendor/examples/compress.js +12 -0
  55. data/vendor/examples/conversions.js +12 -0
  56. data/vendor/examples/conversions.styl +34 -0
  57. data/vendor/examples/functions.js +12 -0
  58. data/vendor/examples/functions.styl +30 -0
  59. data/vendor/examples/gradients.js +13 -0
  60. data/vendor/examples/gradients.styl +8 -0
  61. data/vendor/examples/images/gopher.jpg +0 -0
  62. data/vendor/examples/images/gradient.svg +9 -0
  63. data/vendor/examples/images/jesus.gif +0 -0
  64. data/vendor/examples/images/sprite.gif +0 -0
  65. data/vendor/examples/images.js +20 -0
  66. data/vendor/examples/images.styl +15 -0
  67. data/vendor/examples/implicit-functions.js +12 -0
  68. data/vendor/examples/implicit-functions.styl +23 -0
  69. data/vendor/examples/import.js +12 -0
  70. data/vendor/examples/import.styl +11 -0
  71. data/vendor/examples/js-functions.js +55 -0
  72. data/vendor/examples/js-functions.styl +23 -0
  73. data/vendor/examples/literal.js +12 -0
  74. data/vendor/examples/literal.styl +8 -0
  75. data/vendor/examples/middleware.js +23 -0
  76. data/vendor/examples/mixins/box.styl +14 -0
  77. data/vendor/examples/mixins/gradients.styl +92 -0
  78. data/vendor/examples/nesting.js +12 -0
  79. data/vendor/examples/nesting.styl +14 -0
  80. data/vendor/examples/variables.js +12 -0
  81. data/vendor/examples/variables.styl +24 -0
  82. data/vendor/index.js +2 -0
  83. data/{lib/stylus → vendor/lib}/colors.js +0 -0
  84. data/{lib/stylus → vendor/lib}/convert/css.js +0 -0
  85. data/{lib/stylus → vendor/lib}/errors.js +0 -0
  86. data/{lib/stylus → vendor/lib}/functions/image.js +0 -0
  87. data/{lib/stylus → vendor/lib}/functions/index.js +0 -0
  88. data/{lib/stylus → vendor/lib}/functions/index.styl +11 -2
  89. data/{lib/stylus → vendor/lib}/functions/url.js +0 -0
  90. data/{lib/stylus → vendor/lib}/lexer.js +14 -1
  91. data/{lib/stylus → vendor/lib}/middleware.js +5 -1
  92. data/{lib/stylus → vendor/lib}/nodes/arguments.js +0 -0
  93. data/{lib/stylus → vendor/lib}/nodes/binop.js +0 -0
  94. data/{lib/stylus → vendor/lib}/nodes/block.js +0 -0
  95. data/{lib/stylus → vendor/lib}/nodes/boolean.js +0 -0
  96. data/{lib/stylus → vendor/lib}/nodes/call.js +0 -0
  97. data/{lib/stylus → vendor/lib}/nodes/charset.js +0 -0
  98. data/{lib/stylus → vendor/lib}/nodes/comment.js +0 -0
  99. data/{lib/stylus → vendor/lib}/nodes/each.js +0 -0
  100. data/{lib/stylus → vendor/lib}/nodes/expression.js +32 -0
  101. data/{lib/stylus → vendor/lib}/nodes/fontface.js +0 -0
  102. data/{lib/stylus → vendor/lib}/nodes/function.js +0 -0
  103. data/{lib/stylus → vendor/lib}/nodes/group.js +0 -0
  104. data/{lib/stylus → vendor/lib}/nodes/hsla.js +0 -0
  105. data/{lib/stylus → vendor/lib}/nodes/ident.js +0 -0
  106. data/{lib/stylus → vendor/lib}/nodes/if.js +0 -0
  107. data/{lib/stylus → vendor/lib}/nodes/import.js +0 -0
  108. data/{lib/stylus → vendor/lib}/nodes/index.js +0 -0
  109. data/{lib/stylus → vendor/lib}/nodes/jsliteral.js +0 -0
  110. data/{lib/stylus → vendor/lib}/nodes/keyframes.js +0 -0
  111. data/{lib/stylus → vendor/lib}/nodes/literal.js +0 -0
  112. data/{lib/stylus → vendor/lib}/nodes/media.js +0 -0
  113. data/{lib/stylus → vendor/lib}/nodes/node.js +14 -0
  114. data/{lib/stylus → vendor/lib}/nodes/null.js +0 -0
  115. data/{lib/stylus → vendor/lib}/nodes/page.js +0 -0
  116. data/{lib/stylus → vendor/lib}/nodes/params.js +0 -0
  117. data/{lib/stylus → vendor/lib}/nodes/property.js +0 -0
  118. data/{lib/stylus → vendor/lib}/nodes/return.js +0 -0
  119. data/{lib/stylus → vendor/lib}/nodes/rgba.js +4 -2
  120. data/{lib/stylus → vendor/lib}/nodes/root.js +0 -0
  121. data/{lib/stylus → vendor/lib}/nodes/selector.js +0 -0
  122. data/{lib/stylus → vendor/lib}/nodes/string.js +0 -0
  123. data/{lib/stylus → vendor/lib}/nodes/ternary.js +0 -0
  124. data/{lib/stylus → vendor/lib}/nodes/unaryop.js +0 -0
  125. data/{lib/stylus → vendor/lib}/nodes/unit.js +0 -0
  126. data/{lib/stylus → vendor/lib}/parser.js +17 -2
  127. data/{lib/stylus → vendor/lib}/renderer.js +0 -0
  128. data/{lib/stylus → vendor/lib}/stack/frame.js +0 -0
  129. data/{lib/stylus → vendor/lib}/stack/index.js +0 -0
  130. data/{lib/stylus → vendor/lib}/stack/scope.js +0 -0
  131. data/{lib/stylus → vendor/lib}/stylus.js +1 -1
  132. data/{lib/stylus → vendor/lib}/token.js +0 -0
  133. data/{lib/stylus → vendor/lib}/utils.js +0 -0
  134. data/{lib/stylus → vendor/lib}/visitor/compiler.js +1 -0
  135. data/{lib/stylus → vendor/lib}/visitor/evaluator.js +9 -3
  136. data/{lib/stylus → vendor/lib}/visitor/index.js +0 -0
  137. data/{lib → vendor}/node_modules/cssom/Jakefile +0 -0
  138. data/{lib → vendor}/node_modules/cssom/README.mdown +0 -0
  139. data/{lib → vendor}/node_modules/cssom/Rakefile +0 -0
  140. data/{lib → vendor}/node_modules/cssom/docs/bar.css +0 -0
  141. data/{lib → vendor}/node_modules/cssom/docs/demo.css +0 -0
  142. data/{lib → vendor}/node_modules/cssom/docs/foo.css +0 -0
  143. data/{lib → vendor}/node_modules/cssom/docs/parse.html +0 -0
  144. data/{lib → vendor}/node_modules/cssom/docs/parse2.html +0 -0
  145. data/{lib → vendor}/node_modules/cssom/index.html +0 -0
  146. data/{lib → vendor}/node_modules/cssom/lib/CSSImportRule.js +0 -0
  147. data/{lib → vendor}/node_modules/cssom/lib/CSSMediaRule.js +0 -0
  148. data/{lib → vendor}/node_modules/cssom/lib/CSSOM.js +0 -0
  149. data/{lib → vendor}/node_modules/cssom/lib/CSSRule.js +0 -0
  150. data/{lib → vendor}/node_modules/cssom/lib/CSSStyleDeclaration.js +0 -0
  151. data/{lib → vendor}/node_modules/cssom/lib/CSSStyleRule.js +0 -0
  152. data/{lib → vendor}/node_modules/cssom/lib/CSSStyleSheet.js +0 -0
  153. data/{lib → vendor}/node_modules/cssom/lib/MediaList.js +0 -0
  154. data/{lib → vendor}/node_modules/cssom/lib/StyleSheet.js +0 -0
  155. data/{lib → vendor}/node_modules/cssom/lib/clone.js +0 -0
  156. data/{lib → vendor}/node_modules/cssom/lib/index.js +0 -0
  157. data/{lib → vendor}/node_modules/cssom/lib/parse.js +0 -0
  158. data/{lib → vendor}/node_modules/cssom/media.html +0 -0
  159. data/{lib → vendor}/node_modules/cssom/package.json +0 -0
  160. data/{lib → vendor}/node_modules/cssom/plugins/toHTML.js +0 -0
  161. data/{lib → vendor}/node_modules/cssom/server/index.html +0 -0
  162. data/{lib → vendor}/node_modules/cssom/server/index.js +0 -0
  163. data/{lib → vendor}/node_modules/cssom/shorthands.html +0 -0
  164. data/{lib → vendor}/node_modules/cssom/test/CSSStyleDeclaration.test.js +0 -0
  165. data/{lib → vendor}/node_modules/cssom/test/CSSStyleRule.test.js +0 -0
  166. data/{lib → vendor}/node_modules/cssom/test/CSSStyleSheet.test.js +0 -0
  167. data/{lib → vendor}/node_modules/cssom/test/MediaList.test.js +0 -0
  168. data/{lib → vendor}/node_modules/cssom/test/clone.test.js +0 -0
  169. data/{lib → vendor}/node_modules/cssom/test/fixtures/dummy.css +0 -0
  170. data/{lib → vendor}/node_modules/cssom/test/helper.js +0 -0
  171. data/{lib → vendor}/node_modules/cssom/test/index.html +0 -0
  172. data/{lib → vendor}/node_modules/cssom/test/parse.test.js +0 -0
  173. data/{lib → vendor}/node_modules/cssom/test/vendor/qunit.css +0 -0
  174. data/{lib → vendor}/node_modules/cssom/test/vendor/qunit.js +0 -0
  175. data/{lib → vendor}/node_modules/growl/History.md +0 -0
  176. data/{lib → vendor}/node_modules/growl/Readme.md +0 -0
  177. data/{lib → vendor}/node_modules/growl/lib/growl.js +0 -0
  178. data/{lib → vendor}/node_modules/growl/package.json +0 -0
  179. data/{lib → vendor}/node_modules/growl/test.js +0 -0
  180. data/vendor/node_modules/mkdirp/LICENSE +21 -0
  181. data/vendor/node_modules/mkdirp/README.markdown +21 -0
  182. data/vendor/node_modules/mkdirp/examples/pow.js +6 -0
  183. data/vendor/node_modules/mkdirp/examples/pow.js.orig +6 -0
  184. data/vendor/node_modules/mkdirp/examples/pow.js.rej +19 -0
  185. data/vendor/node_modules/mkdirp/index.js +20 -0
  186. data/vendor/node_modules/mkdirp/package.json +23 -0
  187. data/vendor/node_modules/mkdirp/test/mkdirp.js +28 -0
  188. data/vendor/node_modules/mkdirp/test/race.js +41 -0
  189. data/vendor/node_modules/mkdirp/test/rel.js +32 -0
  190. data/vendor/package.json +16 -0
  191. data/vendor/test/cases/arithmetic.color.css +44 -0
  192. data/vendor/test/cases/arithmetic.color.styl +48 -0
  193. data/vendor/test/cases/arithmetic.css +23 -0
  194. data/vendor/test/cases/arithmetic.styl +30 -0
  195. data/vendor/test/cases/arithmetic.unary.css +16 -0
  196. data/vendor/test/cases/arithmetic.unary.styl +16 -0
  197. data/vendor/test/cases/atscope.css +21 -0
  198. data/vendor/test/cases/atscope.styl +23 -0
  199. data/vendor/test/cases/bifs.add-property.css +21 -0
  200. data/vendor/test/cases/bifs.add-property.styl +48 -0
  201. data/vendor/test/cases/bifs.components.css +9 -0
  202. data/vendor/test/cases/bifs.components.styl +9 -0
  203. data/vendor/test/cases/bifs.dark.css +5 -0
  204. data/vendor/test/cases/bifs.dark.styl +4 -0
  205. data/vendor/test/cases/bifs.darken.css +8 -0
  206. data/vendor/test/cases/bifs.darken.styl +9 -0
  207. data/vendor/test/cases/bifs.fade.css +6 -0
  208. data/vendor/test/cases/bifs.fade.styl +6 -0
  209. data/vendor/test/cases/bifs.image-size.css +9 -0
  210. data/vendor/test/cases/bifs.image-size.styl +16 -0
  211. data/vendor/test/cases/bifs.join.css +18 -0
  212. data/vendor/test/cases/bifs.join.styl +21 -0
  213. data/vendor/test/cases/bifs.last.css +5 -0
  214. data/vendor/test/cases/bifs.last.styl +6 -0
  215. data/vendor/test/cases/bifs.length.css +10 -0
  216. data/vendor/test/cases/bifs.length.styl +18 -0
  217. data/vendor/test/cases/bifs.light.css +5 -0
  218. data/vendor/test/cases/bifs.light.styl +4 -0
  219. data/vendor/test/cases/bifs.lighten.css +14 -0
  220. data/vendor/test/cases/bifs.lighten.styl +14 -0
  221. data/vendor/test/cases/bifs.lookup.css +3 -0
  222. data/vendor/test/cases/bifs.lookup.styl +8 -0
  223. data/vendor/test/cases/bifs.match.css +4 -0
  224. data/vendor/test/cases/bifs.match.styl +9 -0
  225. data/vendor/test/cases/bifs.opposite-position.css +8 -0
  226. data/vendor/test/cases/bifs.opposite-position.styl +9 -0
  227. data/vendor/test/cases/bifs.push.css +25 -0
  228. data/vendor/test/cases/bifs.push.styl +48 -0
  229. data/vendor/test/cases/bifs.rgba.css +5 -0
  230. data/vendor/test/cases/bifs.rgba.styl +4 -0
  231. data/vendor/test/cases/bifs.s.css +11 -0
  232. data/vendor/test/cases/bifs.s.styl +12 -0
  233. data/vendor/test/cases/bifs.type.css +11 -0
  234. data/vendor/test/cases/bifs.type.styl +12 -0
  235. data/vendor/test/cases/bifs.unit.css +6 -0
  236. data/vendor/test/cases/bifs.unit.styl +5 -0
  237. data/vendor/test/cases/bifs.unquote.css +5 -0
  238. data/vendor/test/cases/bifs.unquote.styl +8 -0
  239. data/vendor/test/cases/bifs.url.css +11 -0
  240. data/vendor/test/cases/bifs.url.styl +15 -0
  241. data/vendor/test/cases/coercion.css +6 -0
  242. data/vendor/test/cases/coercion.styl +5 -0
  243. data/vendor/test/cases/comments.css +18 -0
  244. data/vendor/test/cases/comments.styl +28 -0
  245. data/vendor/test/cases/compress.comments.css +2 -0
  246. data/vendor/test/cases/compress.comments.styl +5 -0
  247. data/vendor/test/cases/compress.units.css +2 -0
  248. data/vendor/test/cases/compress.units.styl +18 -0
  249. data/vendor/test/cases/conditional-assignment.css +4 -0
  250. data/vendor/test/cases/conditional-assignment.styl +9 -0
  251. data/vendor/test/cases/control.blueprint.ie.css +126 -0
  252. data/vendor/test/cases/control.blueprint.ie.styl +36 -0
  253. data/vendor/test/cases/control.blueprint.screen.css +1103 -0
  254. data/vendor/test/cases/control.blueprint.screen.styl +265 -0
  255. data/vendor/test/cases/control.boilerplate.css +473 -0
  256. data/vendor/test/cases/control.boilerplate.styl +265 -0
  257. data/vendor/test/cases/css.functions.single-line.css +9 -0
  258. data/vendor/test/cases/css.functions.single-line.styl +13 -0
  259. data/vendor/test/cases/css.if.css +8 -0
  260. data/vendor/test/cases/css.if.styl +21 -0
  261. data/vendor/test/cases/css.keyframes.css +57 -0
  262. data/vendor/test/cases/css.keyframes.styl +48 -0
  263. data/vendor/test/cases/css.large.css +172 -0
  264. data/vendor/test/cases/css.large.styl +172 -0
  265. data/vendor/test/cases/css.media.css +15 -0
  266. data/vendor/test/cases/css.media.styl +17 -0
  267. data/vendor/test/cases/css.mixins.braces.css +38 -0
  268. data/vendor/test/cases/css.mixins.braces.styl +53 -0
  269. data/vendor/test/cases/css.mixins.css +38 -0
  270. data/vendor/test/cases/css.mixins.root.css +26 -0
  271. data/vendor/test/cases/css.mixins.root.styl +25 -0
  272. data/vendor/test/cases/css.mixins.root.wonky.css +26 -0
  273. data/vendor/test/cases/css.mixins.root.wonky.styl +17 -0
  274. data/vendor/test/cases/css.mixins.styl +47 -0
  275. data/vendor/test/cases/css.selector.interpolation.css +91 -0
  276. data/vendor/test/cases/css.selector.interpolation.styl +90 -0
  277. data/vendor/test/cases/css.selectors.css +38 -0
  278. data/vendor/test/cases/css.selectors.styl +53 -0
  279. data/vendor/test/cases/css.whitespace.css +37 -0
  280. data/vendor/test/cases/css.whitespace.styl +38 -0
  281. data/vendor/test/cases/escape.css +4 -0
  282. data/vendor/test/cases/escape.styl +4 -0
  283. data/vendor/test/cases/fontface.css +4 -0
  284. data/vendor/test/cases/fontface.styl +5 -0
  285. data/vendor/test/cases/for.complex.css +44 -0
  286. data/vendor/test/cases/for.complex.styl +28 -0
  287. data/vendor/test/cases/for.css +52 -0
  288. data/vendor/test/cases/for.function.css +20 -0
  289. data/vendor/test/cases/for.function.styl +51 -0
  290. data/vendor/test/cases/for.styl +44 -0
  291. data/vendor/test/cases/function.arguments.css +4 -0
  292. data/vendor/test/cases/function.arguments.styl +14 -0
  293. data/vendor/test/cases/function.literals.css +6 -0
  294. data/vendor/test/cases/function.literals.styl +12 -0
  295. data/vendor/test/cases/functions.arg-calls.css +3 -0
  296. data/vendor/test/cases/functions.arg-calls.styl +9 -0
  297. data/vendor/test/cases/functions.call.css +4 -0
  298. data/vendor/test/cases/functions.call.styl +7 -0
  299. data/vendor/test/cases/functions.css +11 -0
  300. data/vendor/test/cases/functions.defaults.css +15 -0
  301. data/vendor/test/cases/functions.defaults.styl +30 -0
  302. data/vendor/test/cases/functions.multi-line.css +9 -0
  303. data/vendor/test/cases/functions.multi-line.styl +25 -0
  304. data/vendor/test/cases/functions.multiple-calls.css +13 -0
  305. data/vendor/test/cases/functions.multiple-calls.styl +26 -0
  306. data/vendor/test/cases/functions.nested-calls.css +3 -0
  307. data/vendor/test/cases/functions.nested-calls.styl +9 -0
  308. data/vendor/test/cases/functions.nested.css +10 -0
  309. data/vendor/test/cases/functions.nested.styl +37 -0
  310. data/vendor/test/cases/functions.property.css +10 -0
  311. data/vendor/test/cases/functions.property.styl +11 -0
  312. data/vendor/test/cases/functions.return.css +15 -0
  313. data/vendor/test/cases/functions.return.each.css +10 -0
  314. data/vendor/test/cases/functions.return.each.styl +23 -0
  315. data/vendor/test/cases/functions.return.styl +86 -0
  316. data/vendor/test/cases/functions.styl +34 -0
  317. data/vendor/test/cases/functions.variable.css +9 -0
  318. data/vendor/test/cases/functions.variable.ident.css +3 -0
  319. data/vendor/test/cases/functions.variable.ident.styl +11 -0
  320. data/vendor/test/cases/functions.variable.styl +27 -0
  321. data/vendor/test/cases/hack.star.css +27 -0
  322. data/vendor/test/cases/hack.star.styl +37 -0
  323. data/vendor/test/cases/if.css +43 -0
  324. data/vendor/test/cases/if.else.css +6 -0
  325. data/vendor/test/cases/if.else.styl +16 -0
  326. data/vendor/test/cases/if.mixin.css +7 -0
  327. data/vendor/test/cases/if.mixin.styl +24 -0
  328. data/vendor/test/cases/if.postfix.css +61 -0
  329. data/vendor/test/cases/if.postfix.styl +110 -0
  330. data/vendor/test/cases/if.selectors.css +16 -0
  331. data/vendor/test/cases/if.selectors.styl +22 -0
  332. data/vendor/test/cases/if.styl +99 -0
  333. data/vendor/test/cases/import.basic/a.styl +5 -0
  334. data/vendor/test/cases/import.basic/b.styl +5 -0
  335. data/vendor/test/cases/import.basic/c.styl +3 -0
  336. data/vendor/test/cases/import.basic.css +11 -0
  337. data/vendor/test/cases/import.basic.styl +4 -0
  338. data/vendor/test/cases/import.complex/a.styl +4 -0
  339. data/vendor/test/cases/import.complex/c.styl +2 -0
  340. data/vendor/test/cases/import.complex/nested/b.styl +4 -0
  341. data/vendor/test/cases/import.complex.css +9 -0
  342. data/vendor/test/cases/import.complex.styl +1 -0
  343. data/vendor/test/cases/import.index/vendor/a.styl +2 -0
  344. data/vendor/test/cases/import.index/vendor/b.styl +2 -0
  345. data/vendor/test/cases/import.index/vendor/c.styl +2 -0
  346. data/vendor/test/cases/import.index/vendor/index.styl +4 -0
  347. data/vendor/test/cases/import.index.css +9 -0
  348. data/vendor/test/cases/import.index.styl +2 -0
  349. data/vendor/test/cases/import.literal.css +2 -0
  350. data/vendor/test/cases/import.literal.styl +3 -0
  351. data/vendor/test/cases/import.mixins.css +7 -0
  352. data/vendor/test/cases/import.mixins.styl +9 -0
  353. data/vendor/test/cases/import.ordering/five.styl +2 -0
  354. data/vendor/test/cases/import.ordering/four.styl +4 -0
  355. data/vendor/test/cases/import.ordering/two.styl +2 -0
  356. data/vendor/test/cases/import.ordering.css +15 -0
  357. data/vendor/test/cases/import.ordering.styl +12 -0
  358. data/vendor/test/cases/important.css +6 -0
  359. data/vendor/test/cases/important.styl +6 -0
  360. data/vendor/test/cases/interpolation.properties.css +40 -0
  361. data/vendor/test/cases/interpolation.properties.styl +56 -0
  362. data/vendor/test/cases/introspection.css +7 -0
  363. data/vendor/test/cases/introspection.styl +14 -0
  364. data/vendor/test/cases/jquery.css +3 -0
  365. data/vendor/test/cases/jquery.styl +5 -0
  366. data/vendor/test/cases/keyframes.css +9 -0
  367. data/vendor/test/cases/keyframes.fabrication.css +18 -0
  368. data/vendor/test/cases/keyframes.fabrication.defaults.css +45 -0
  369. data/vendor/test/cases/keyframes.fabrication.defaults.styl +9 -0
  370. data/vendor/test/cases/keyframes.fabrication.styl +11 -0
  371. data/vendor/test/cases/keyframes.styl +6 -0
  372. data/vendor/test/cases/kwargs.css +63 -0
  373. data/vendor/test/cases/kwargs.styl +74 -0
  374. data/vendor/test/cases/list.css +3 -0
  375. data/vendor/test/cases/list.styl +3 -0
  376. data/vendor/test/cases/literal.color.css +6 -0
  377. data/vendor/test/cases/literal.color.styl +5 -0
  378. data/vendor/test/cases/literal.css +10 -0
  379. data/vendor/test/cases/literal.styl +18 -0
  380. data/vendor/test/cases/media.css +14 -0
  381. data/vendor/test/cases/media.styl +11 -0
  382. data/vendor/test/cases/mixin.conditional.css +19 -0
  383. data/vendor/test/cases/mixin.conditional.styl +36 -0
  384. data/vendor/test/cases/mixin.order.conditional.css +11 -0
  385. data/vendor/test/cases/mixin.order.conditional.styl +20 -0
  386. data/vendor/test/cases/mixin.order.css +9 -0
  387. data/vendor/test/cases/mixin.order.nested.css +9 -0
  388. data/vendor/test/cases/mixin.order.nested.styl +21 -0
  389. data/vendor/test/cases/mixin.order.styl +20 -0
  390. data/vendor/test/cases/mixins/box.styl +11 -0
  391. data/vendor/test/cases/mixins.complex.css +30 -0
  392. data/vendor/test/cases/mixins.complex.fix-to.css +15 -0
  393. data/vendor/test/cases/mixins.complex.fix-to.styl +28 -0
  394. data/vendor/test/cases/mixins.complex.styl +41 -0
  395. data/vendor/test/cases/mixins.conditional.css +3 -0
  396. data/vendor/test/cases/mixins.conditional.styl +8 -0
  397. data/vendor/test/cases/mixins.nested.css +7 -0
  398. data/vendor/test/cases/mixins.nested.selectors.css +21 -0
  399. data/vendor/test/cases/mixins.nested.selectors.styl +31 -0
  400. data/vendor/test/cases/mixins.nested.styl +14 -0
  401. data/vendor/test/cases/mixins.order.2.css +11 -0
  402. data/vendor/test/cases/mixins.order.2.styl +16 -0
  403. data/vendor/test/cases/mixins.reset.css +75 -0
  404. data/vendor/test/cases/mixins.reset.styl +27 -0
  405. data/vendor/test/cases/mixins.return.css +4 -0
  406. data/vendor/test/cases/mixins.return.styl +8 -0
  407. data/vendor/test/cases/mixins.root.css +3 -0
  408. data/vendor/test/cases/mixins.root.styl +5 -0
  409. data/vendor/test/cases/operator.range.css +15 -0
  410. data/vendor/test/cases/operator.range.styl +23 -0
  411. data/vendor/test/cases/operators.assignment.function.css +15 -0
  412. data/vendor/test/cases/operators.assignment.function.styl +34 -0
  413. data/vendor/test/cases/operators.assignment.mixin.css +15 -0
  414. data/vendor/test/cases/operators.assignment.mixin.styl +39 -0
  415. data/vendor/test/cases/operators.assignment.root.css +25 -0
  416. data/vendor/test/cases/operators.assignment.root.styl +55 -0
  417. data/vendor/test/cases/operators.complex.css +9 -0
  418. data/vendor/test/cases/operators.complex.styl +32 -0
  419. data/vendor/test/cases/operators.css +40 -0
  420. data/vendor/test/cases/operators.equality.css +55 -0
  421. data/vendor/test/cases/operators.equality.styl +55 -0
  422. data/vendor/test/cases/operators.in.css +37 -0
  423. data/vendor/test/cases/operators.in.styl +51 -0
  424. data/vendor/test/cases/operators.mixins.css +10 -0
  425. data/vendor/test/cases/operators.mixins.styl +25 -0
  426. data/vendor/test/cases/operators.precedence.css +51 -0
  427. data/vendor/test/cases/operators.precedence.styl +82 -0
  428. data/vendor/test/cases/operators.styl +96 -0
  429. data/vendor/test/cases/operators.subscript.assign.css +21 -0
  430. data/vendor/test/cases/operators.subscript.assign.styl +45 -0
  431. data/vendor/test/cases/operators.subscript.css +59 -0
  432. data/vendor/test/cases/operators.subscript.range.css +14 -0
  433. data/vendor/test/cases/operators.subscript.range.styl +15 -0
  434. data/vendor/test/cases/operators.subscript.styl +81 -0
  435. data/vendor/test/cases/page.css +13 -0
  436. data/vendor/test/cases/page.styl +13 -0
  437. data/vendor/test/cases/parent.css +32 -0
  438. data/vendor/test/cases/parent.styl +33 -0
  439. data/vendor/test/cases/properties.colons.css +8 -0
  440. data/vendor/test/cases/properties.colons.styl +10 -0
  441. data/vendor/test/cases/properties.css +4 -0
  442. data/vendor/test/cases/properties.one-line.css +10 -0
  443. data/vendor/test/cases/properties.one-line.styl +11 -0
  444. data/vendor/test/cases/properties.styl +4 -0
  445. data/vendor/test/cases/property-access.css +48 -0
  446. data/vendor/test/cases/property-access.styl +62 -0
  447. data/vendor/test/cases/regression.107.lookup-failure.css +12 -0
  448. data/vendor/test/cases/regression.107.lookup-failure.styl +13 -0
  449. data/vendor/test/cases/regression.127.css +3 -0
  450. data/vendor/test/cases/regression.127.styl +2 -0
  451. data/vendor/test/cases/regression.130.css +16 -0
  452. data/vendor/test/cases/regression.130.styl +6 -0
  453. data/vendor/test/cases/regression.131.css +7 -0
  454. data/vendor/test/cases/regression.131.styl +2 -0
  455. data/vendor/test/cases/regression.137.css +7 -0
  456. data/vendor/test/cases/regression.137.styl +7 -0
  457. data/vendor/test/cases/regression.139.css +5 -0
  458. data/vendor/test/cases/regression.139.styl +21 -0
  459. data/vendor/test/cases/regression.142.css +39 -0
  460. data/vendor/test/cases/regression.142.styl +54 -0
  461. data/vendor/test/cases/regression.146.css +30 -0
  462. data/vendor/test/cases/regression.146.styl +31 -0
  463. data/vendor/test/cases/regression.153.css +8 -0
  464. data/vendor/test/cases/regression.153.styl +9 -0
  465. data/vendor/test/cases/regression.154.css +8 -0
  466. data/vendor/test/cases/regression.154.styl +14 -0
  467. data/vendor/test/cases/regression.156.css +4 -0
  468. data/vendor/test/cases/regression.156.styl +6 -0
  469. data/vendor/test/cases/regression.212.css +15 -0
  470. data/vendor/test/cases/regression.212.styl +14 -0
  471. data/vendor/test/cases/regression.216.css +10 -0
  472. data/vendor/test/cases/regression.216.styl +8 -0
  473. data/vendor/test/cases/regression.220.css +5 -0
  474. data/vendor/test/cases/regression.220.styl +5 -0
  475. data/vendor/test/cases/regression.229.css +12 -0
  476. data/vendor/test/cases/regression.229.styl +9 -0
  477. data/vendor/test/cases/regression.233.css +6 -0
  478. data/vendor/test/cases/regression.233.styl +7 -0
  479. data/vendor/test/cases/regression.235.css +11 -0
  480. data/vendor/test/cases/regression.235.styl +13 -0
  481. data/vendor/test/cases/regression.243.css +3 -0
  482. data/vendor/test/cases/regression.243.styl +4 -0
  483. data/vendor/test/cases/regression.244.css +3 -0
  484. data/vendor/test/cases/regression.244.styl +3 -0
  485. data/vendor/test/cases/regression.247.css +6 -0
  486. data/vendor/test/cases/regression.247.styl +6 -0
  487. data/vendor/test/cases/regression.248.compressed.css +4 -0
  488. data/vendor/test/cases/regression.248.compressed.styl +10 -0
  489. data/vendor/test/cases/regression.252.css +13 -0
  490. data/vendor/test/cases/regression.252.styl +13 -0
  491. data/vendor/test/cases/regression.260.css +6 -0
  492. data/vendor/test/cases/regression.260.styl +6 -0
  493. data/vendor/test/cases/regression.267.css +3 -0
  494. data/vendor/test/cases/regression.267.styl +3 -0
  495. data/vendor/test/cases/regression.270.css +5 -0
  496. data/vendor/test/cases/regression.270.styl +7 -0
  497. data/vendor/test/cases/regression.272.css +11 -0
  498. data/vendor/test/cases/regression.272.styl +17 -0
  499. data/vendor/test/cases/regression.274.css +14 -0
  500. data/vendor/test/cases/regression.274.styl +16 -0
  501. data/vendor/test/cases/regression.360.css +19 -0
  502. data/vendor/test/cases/regression.360.styl +1 -0
  503. data/vendor/test/cases/regression.368.css +4 -0
  504. data/vendor/test/cases/regression.368.styl +3 -0
  505. data/vendor/test/cases/regression.379.css +6 -0
  506. data/vendor/test/cases/regression.379.styl +10 -0
  507. data/vendor/test/cases/regression.380.css +8 -0
  508. data/vendor/test/cases/regression.380.styl +14 -0
  509. data/vendor/test/cases/regression.388.css +2 -0
  510. data/vendor/test/cases/regression.388.styl +6 -0
  511. data/vendor/test/cases/regression.415.css +5 -0
  512. data/vendor/test/cases/regression.415.styl +3 -0
  513. data/vendor/test/cases/regression.420.css +21 -0
  514. data/vendor/test/cases/regression.420.styl +29 -0
  515. data/vendor/test/cases/reset.css +70 -0
  516. data/vendor/test/cases/reset.styl +16 -0
  517. data/vendor/test/cases/rule.charset.css +1 -0
  518. data/vendor/test/cases/rule.charset.styl +2 -0
  519. data/vendor/test/cases/rulset.css +4 -0
  520. data/vendor/test/cases/rulset.newline.css +5 -0
  521. data/vendor/test/cases/rulset.newline.styl +5 -0
  522. data/vendor/test/cases/rulset.styl +3 -0
  523. data/vendor/test/cases/scope.complex.css +10 -0
  524. data/vendor/test/cases/scope.complex.styl +16 -0
  525. data/vendor/test/cases/scope.css +5 -0
  526. data/vendor/test/cases/scope.nested.css +9 -0
  527. data/vendor/test/cases/scope.nested.styl +10 -0
  528. data/vendor/test/cases/scope.styl +12 -0
  529. data/vendor/test/cases/selector.interpolation.css +57 -0
  530. data/vendor/test/cases/selector.interpolation.styl +45 -0
  531. data/vendor/test/cases/selectors.complex.css +28 -0
  532. data/vendor/test/cases/selectors.complex.styl +27 -0
  533. data/vendor/test/cases/selectors.css +50 -0
  534. data/vendor/test/cases/selectors.nested.comma.css +9 -0
  535. data/vendor/test/cases/selectors.nested.comma.styl +8 -0
  536. data/vendor/test/cases/selectors.nested.css +34 -0
  537. data/vendor/test/cases/selectors.nested.styl +33 -0
  538. data/vendor/test/cases/selectors.pseudo.css +27 -0
  539. data/vendor/test/cases/selectors.pseudo.elements.css +26 -0
  540. data/vendor/test/cases/selectors.pseudo.elements.styl +29 -0
  541. data/vendor/test/cases/selectors.pseudo.styl +24 -0
  542. data/vendor/test/cases/selectors.styl +46 -0
  543. data/vendor/test/cases/self-assignment.css +3 -0
  544. data/vendor/test/cases/self-assignment.styl +4 -0
  545. data/vendor/test/cases/vargs.call.css +24 -0
  546. data/vendor/test/cases/vargs.call.styl +40 -0
  547. data/vendor/test/cases/vargs.css +30 -0
  548. data/vendor/test/cases/vargs.styl +49 -0
  549. data/vendor/test/cases/variable.css +3 -0
  550. data/vendor/test/cases/variable.styl +4 -0
  551. data/vendor/test/cases/variables.css +12 -0
  552. data/vendor/test/cases/variables.styl +17 -0
  553. data/vendor/test/images/gif +0 -0
  554. data/vendor/test/images/squirrel.jpeg +0 -0
  555. data/vendor/test/images/tux.png +0 -0
  556. data/vendor/test/run.js +151 -0
  557. data/vendor/testing/index.html +56 -0
  558. data/vendor/testing/stylus.js +146 -0
  559. data/vendor/testing/test-js.js +23 -0
  560. data/vendor/testing/test.css +8 -0
  561. data/vendor/testing/test.js +23 -0
  562. data/vendor/testing/test.styl +75 -0
  563. data/vendor/testing/utils.styl +6 -0
  564. data/vendor/testing/vendor.styl +3 -0
  565. metadata +565 -112
  566. data/.DS_Store +0 -0
  567. data/lib/.DS_Store +0 -0
  568. data/lib/node_modules/cssom/.idea/CSSOM.iml +0 -9
  569. data/lib/node_modules/cssom/.idea/dictionaries/nv.xml +0 -3
  570. data/lib/node_modules/cssom/.idea/encodings.xml +0 -5
  571. data/lib/node_modules/cssom/.idea/misc.xml +0 -17
  572. data/lib/node_modules/cssom/.idea/modules.xml +0 -9
  573. data/lib/node_modules/cssom/.idea/projectCodeStyle.xml +0 -82
  574. data/lib/node_modules/cssom/.idea/vcs.xml +0 -8
  575. data/lib/node_modules/cssom/.idea/workspace.xml +0 -467
  576. data/lib/node_modules/cssom/.livereload +0 -19
  577. data/lib/node_modules/cssom/docs/.livereload +0 -19
@@ -0,0 +1,582 @@
1
+
2
+ ## Built-in Functions
3
+
4
+ ### red(color)
5
+
6
+ Return the red component of the given `color`.
7
+
8
+ red(#c00)
9
+ // => 204
10
+
11
+ ### green(color)
12
+
13
+ Return the green component of the given `color`.
14
+
15
+ green(#0c0)
16
+ // => 204
17
+
18
+ ### blue(color)
19
+
20
+ Return the blue component of the given `color`.
21
+
22
+ red(#00c)
23
+ // => 204
24
+
25
+ ### alpha(color)
26
+
27
+ Return the alpha component of the given `color`.
28
+
29
+ alpha(#fff)
30
+ // => 1
31
+
32
+ alpha(rgba(0,0,0,0.3))
33
+ // => 0.3
34
+
35
+ ### dark(color)
36
+
37
+ Check if `color` is dark:
38
+
39
+ dark(black)
40
+ // => true
41
+
42
+ dark(#005716)
43
+ // => true
44
+
45
+ dark(white)
46
+ // => false
47
+
48
+
49
+ ### light(color)
50
+
51
+ Check if `color` is light:
52
+
53
+ light(black)
54
+ // => false
55
+
56
+ light(white)
57
+ // => true
58
+
59
+ light(#00FF40)
60
+ // => true
61
+
62
+ ### hue(color)
63
+
64
+ Return the hue of the given `color`.
65
+
66
+ hue(hsla(50deg, 100%, 80%))
67
+ // => 50deg
68
+
69
+ ### saturation(color)
70
+
71
+ Return the saturation of the given `color`.
72
+
73
+ saturation(hsla(50deg, 100%, 80%))
74
+ // => 100%
75
+
76
+ ### lightness(color)
77
+
78
+ Return the lightness of the given `color`.
79
+
80
+ lightness(hsla(50deg, 100%, 80%))
81
+ // => 80%
82
+
83
+ ### push(expr, args...)
84
+
85
+ Push the given `args` to `expr`.
86
+
87
+ nums = 1 2
88
+ push(nums, 3, 4, 5)
89
+
90
+ nums
91
+ // => 1 2 3 4 5
92
+
93
+ Aliased as `append()`
94
+
95
+ ### unshift(expr, args...)
96
+
97
+ Unshift the given `args` to `expr`.
98
+
99
+ nums = 4 5
100
+ unshift(nums, 3, 2, 1)
101
+
102
+ nums
103
+ // => 1 2 3 4 5
104
+
105
+ Aliased as `prepend()`
106
+
107
+ ### typeof(node)
108
+
109
+ Return type of `node` as a string.
110
+
111
+ type(12)
112
+ // => 'unit'
113
+
114
+ typeof(12)
115
+ // => 'unit'
116
+
117
+ typeof(#fff)
118
+ // => 'rgba'
119
+
120
+ type-of(#fff)
121
+ // => 'rgba'
122
+
123
+ Aliased as `type-of` and `type`.
124
+
125
+ ### unit(unit[, type])
126
+
127
+ Return a string for the type of `unit` or an empty string,
128
+ or assign the given `type` without unit conversion.
129
+
130
+ unit(10)
131
+ // => ''
132
+
133
+ unit(15in)
134
+ // => 'in'
135
+
136
+ unit(15%, 'px')
137
+ // => 15px
138
+
139
+ unit(15%, px)
140
+ // => 15px
141
+
142
+ ### match(pattern, string)
143
+
144
+ Test if `string` matches the given `pattern`.
145
+
146
+ match('^foo(bar)?', foo)
147
+ match('^foo(bar)?', foobar)
148
+ // => true
149
+
150
+ match('^foo(bar)?', 'foo')
151
+ match('^foo(bar)?', 'foobar')
152
+ // => true
153
+
154
+ match('^foo(bar)?', 'bar')
155
+ // => false
156
+
157
+ ### abs(unit)
158
+
159
+ abs(-5px)
160
+ // => 5px
161
+
162
+ abs(5px)
163
+ // => 5px
164
+
165
+ ### ceil(unit)
166
+
167
+ ceil(5.5in)
168
+ // => 6in
169
+
170
+ ### floor(unit)
171
+
172
+ floor(5.6px)
173
+ // => 5px
174
+
175
+ ### round(unit)
176
+
177
+ round(5.5px)
178
+ // => 6px
179
+
180
+ round(5.4px)
181
+ // => 5px
182
+
183
+ ### min(a, b)
184
+
185
+ min(1, 5)
186
+ // => 1
187
+
188
+ ### max(a, b)
189
+
190
+ max(1, 5)
191
+ // => 5
192
+
193
+ ### even(unit)
194
+
195
+ even(6px)
196
+ // => true
197
+
198
+ ### odd(unit)
199
+
200
+ odd(5mm)
201
+ // => true
202
+
203
+ ### sum(nums)
204
+
205
+ sum(1 2 3)
206
+ // => 6
207
+
208
+ ### avg(nums)
209
+
210
+ avg(1 2 3)
211
+ // => 2
212
+
213
+ ### join(delim, vals...)
214
+
215
+ Join the given `vals` with `delim`.
216
+
217
+ join(' ', 1 2 3)
218
+ // => "1 2 3"
219
+
220
+ join(',', 1 2 3)
221
+ // => "1,2,3"
222
+
223
+ join(', ', foo bar baz)
224
+ // => "foo, bar, baz"
225
+
226
+ join(', ', foo, bar, baz)
227
+ // => "foo, bar, baz"
228
+
229
+ join(', ', 1 2, 3 4, 5 6)
230
+ // => "1 2, 3 4, 5 6"
231
+
232
+ ### hsla(color | h,s,l,a)
233
+
234
+ Convert the given `color` to an `HSLA` node,
235
+ or h,s,l,a component values.
236
+
237
+ hslaa(10deg, 50%, 30%, 0.5)
238
+ // => HSLA
239
+
240
+ hslaa(#ffcc00)
241
+ // => HSLA
242
+
243
+ ### hsla(color | h,s,l)
244
+
245
+ Convert the given `color` to an `HSLA` node,
246
+ or h,s,l component values.
247
+
248
+ hsla(10, 50, 30)
249
+ // => HSLA
250
+
251
+ hsla(#ffcc00)
252
+ // => HSLA
253
+
254
+ ### rgba(color | r,g,b,a)
255
+
256
+ Return `RGBA` from the r,g,b,a channels or provide a `color` to tweak the alpha.
257
+
258
+ rgba(255,0,0,0.5)
259
+ // => rgba(255,0,0,0.5)
260
+
261
+ rgba(255,0,0,1)
262
+ // => #ff0000
263
+
264
+ rgba(#ffcc00, 0.5)
265
+ // rgba(255,204,0,0.5)
266
+
267
+ Alternatively stylus supports the `#rgba` and `#rrggbbaa` notations as well:
268
+
269
+ #fc08
270
+ // => rgba(255,204,0,0.5)
271
+
272
+ #ffcc00ee
273
+ // => rgba(255,204,0,0.9)
274
+
275
+ ### rgb(color | r,g,b)
276
+
277
+ Return a `RGBA` from the r,g,b channels or cast to an `RGBA` node.
278
+
279
+ rgb(255,204,0)
280
+ // => #ffcc00
281
+
282
+ rgb(#fff)
283
+ // => #fff
284
+
285
+ ### lighten(color, amount)
286
+
287
+ Lighten the given `color` by `amount`. This function is
288
+ unit-sensitive, for example supporting percentages as shown
289
+ below.
290
+
291
+ lighten(#2c2c2c, 30)
292
+ // => #787878
293
+
294
+ lighten(#2c2c2c, 30%)
295
+ // => #393939
296
+
297
+ ### darken(color, amount)
298
+
299
+ Darken the given `color` by `amount`.This function is
300
+ unit-sensitive, for example supporting percentages as shown
301
+ below.
302
+
303
+ darken(#D62828, 30)
304
+ // => #551010
305
+
306
+ darken(#D62828, 30%)
307
+ // => #961c1c
308
+
309
+ ### desaturate(color, amount)
310
+
311
+ Desaturate the given `color` by `amount`.
312
+
313
+ desaturate(#f00, 40%)
314
+ // => #c33
315
+
316
+ ### saturate(color, amount)
317
+
318
+ Saturate the given `color` by `amount`.
319
+
320
+ saturate(#c33, 40%)
321
+ // => #f00
322
+
323
+ ### unquote(str | ident)
324
+
325
+ Unquote the given `str` and returned as a `Literal` node.
326
+
327
+ unquote("sans-serif")
328
+ // => sans-serif
329
+
330
+ unquote(sans-serif)
331
+ // => sans-serif
332
+
333
+ unquote('1px / 2px')
334
+ // => 1px / 2px
335
+
336
+ ### s(fmt, ...)
337
+
338
+ The `s()` function is similar to `unquote()`, in that it returns
339
+ a `Literal` node, however it accepts a format string much like C's `sprintf()`. Currently the only specifier is `%s`.
340
+
341
+ s('bar()');
342
+ // => bar()
343
+
344
+ s('bar(%s)', 'baz');
345
+ // => bar("baz")
346
+
347
+ s('bar(%s)', baz);
348
+ // => bar(baz)
349
+
350
+ s('bar(%s)', 15px);
351
+ // => bar(15px)
352
+
353
+ s('rgba(%s, %s, %s, 0.5)', 255, 100, 50);
354
+ // => rgba(255, 100, 50, 0.5)
355
+
356
+ s('bar(%Z)', 15px);
357
+ // => bar(%Z)
358
+
359
+ s('bar(%s, %s)', 15px);
360
+ // => bar(15px, null)
361
+
362
+ Check out the `%` string operator for equivalent behaviour.
363
+
364
+ ### operate(op, left, right)
365
+
366
+ Perform the given `op` on the `left` and `right` operands:
367
+
368
+ op = '+'
369
+ operate(op, 15, 5)
370
+ // => 20
371
+
372
+ ### length([expr])
373
+
374
+ Parenthesized expressions may act as tuples, the `length()` function returns the length of such expressions.
375
+
376
+ length((1 2 3 4))
377
+ // => 4
378
+
379
+ length((1 2))
380
+ // => 2
381
+
382
+ length((1))
383
+ // => 1
384
+
385
+ length(())
386
+ // => 0
387
+
388
+ length(1 2 3)
389
+ // => 3
390
+
391
+ length(1)
392
+ // => 1
393
+
394
+ length()
395
+ // => 0
396
+
397
+ ### warn(msg)
398
+
399
+ Warn with the given error `msg`, does not exit.
400
+
401
+ warn("oh noes!")
402
+
403
+ ### error(msg)
404
+
405
+ Exits with the given error `msg`.
406
+
407
+ add(a, b)
408
+ unless a is a 'unit' and b is a 'unit'
409
+ error('add() expects units')
410
+ a + b
411
+
412
+ ### last(expr)
413
+
414
+ Return the _last_ value in the given `expr`:
415
+
416
+ nums = 1 2 3
417
+ last(nums)
418
+ last(1 2 3)
419
+ // => 3
420
+
421
+ list = (one 1) (two 2) (three 3)
422
+ last(list)
423
+ // => (three 3)
424
+
425
+ ### p(expr)
426
+
427
+ Inspect the given `expr`:
428
+
429
+ fonts = Arial, sans-serif
430
+ p('test')
431
+ p(123)
432
+ p((1 2 3))
433
+ p(fonts)
434
+ p(#fff)
435
+ p(rgba(0,0,0,0.2))
436
+
437
+ add(a, b)
438
+ a + b
439
+
440
+ p(add)
441
+
442
+ stdout:
443
+
444
+ inspect: "test"
445
+ inspect: 123
446
+ inspect: 1 2 3
447
+ inspect: Arial, sans-serif
448
+ inspect: #fff
449
+ inspect: rgba(0,0,0,0.2)
450
+ inspect: add(a, b)
451
+
452
+ ### opposite-position(positions)
453
+
454
+ Return the opposites of the given `positions`.
455
+
456
+ opposite-position(right)
457
+ // => left
458
+
459
+ opposite-position(top left)
460
+ // => bottom right
461
+
462
+ opposite-position('top' 'left')
463
+ // => bottom right
464
+
465
+ ### image-size(path)
466
+
467
+ Returns the `width` and `height` of the image found at `path`. Lookups are performed in the same manner as `@import`, altered by the `paths` setting.
468
+
469
+ width(img)
470
+ return image-size(img)[0]
471
+
472
+ height(img)
473
+ return image-size(img)[1]
474
+
475
+ image-size('tux.png')
476
+ // => 405px 250px
477
+
478
+ image-size('tux.png')[0] == width('tux.png')
479
+ // => true
480
+
481
+ ### add-property(name, expr)
482
+
483
+ Adds property `name`, with the given `expr` to the closest block.
484
+
485
+ For example:
486
+
487
+ something()
488
+ add-property('bar', 1 2 3)
489
+ s('bar')
490
+
491
+ body
492
+ foo: something()
493
+
494
+ yields:
495
+
496
+ body {
497
+ bar: 1 2 3;
498
+ foo: bar;
499
+ }
500
+
501
+ Next the "magic" `current-property` local variable comes into play. This variable is automatically available to function bodies, and contains an expression with the current property's name, and value.
502
+
503
+ For example if we were to inspect this local variable using `p()`, we
504
+ get the following:
505
+
506
+ p(current-property)
507
+ // => "foo" (foo __CALL__ bar baz)
508
+
509
+ p(current-property[0])
510
+ // => "foo"
511
+
512
+ p(current-property[1])
513
+ // => foo __CALL__ bar baz
514
+
515
+ Using `current-property` we can take our example a bit further, and duplicate the property with new values, and a conditional to ensure the function is only used within a property value.
516
+
517
+ something(n)
518
+ if current-property
519
+ add-property(current-property[0], s('-webkit-something(%s)', n))
520
+ add-property(current-property[0], s('-moz-something(%s)', n))
521
+ s('something(%s)', n)
522
+ else
523
+ error('something() must be used within a property')
524
+
525
+ body {
526
+ foo: something(15px) bar;
527
+ }
528
+
529
+ yields:
530
+
531
+ body {
532
+ foo: -webkit-something(15px);
533
+ foo: -moz-something(15px);
534
+ foo: something(15px) bar;
535
+ }
536
+
537
+ If you noticed in the example above, `bar` is only present for the initial call, since we returned `something(15px)`, it remained in-place within the expression, however the others do not take the rest of the expression into account.
538
+
539
+ Our more robust solution below, defines a function named `replace()` which clones the expression to prevent mutation, replaces the string value of an expression with another, and returns the cloned expression. We then move on to replace `__CALL__` within the expressions, which represents the cyclic call to `something()`.
540
+
541
+ replace(expr, str, val)
542
+ expr = clone(expr)
543
+ for e, i in expr
544
+ if str == e
545
+ expr[i] = val
546
+ expr
547
+
548
+ something(n)
549
+ if current-property
550
+ val = current-property[1]
551
+ webkit = replace(val, '__CALL__', s('-webkit-something(%s)', n))
552
+ moz = replace(val, '__CALL__', s('-moz-something(%s)', n))
553
+ add-property(current-property[0], webkit)
554
+ add-property(current-property[0], moz)
555
+ s('something(%s)', n)
556
+ else
557
+ error('something() must be used within a property')
558
+
559
+ yields:
560
+
561
+ body {
562
+ foo: foo -webkit-something(5px) bar baz;
563
+ foo: foo -moz-something(5px) bar baz;
564
+ foo: foo something(5px) bar baz;
565
+ }
566
+
567
+ Our implementation is now fully transparent both in regards to the property it is called within, and the position of the call. This powerful concept aids in transparent vendor support for function calls, such as gradients.
568
+
569
+ ### Undefined Functions
570
+
571
+ Undefined functions will output as literals, so for example
572
+ we may call `rgba-stop(50%, #fff)` within our css, and it will
573
+ output as you would expect. We can use this within helpers as well.
574
+
575
+ In the example below we simply define the function `stop()` which
576
+ returns the literal `rgba-stop()` call.
577
+
578
+ stop(pos, rgba)
579
+ rgba-stop(pos, rgba)
580
+
581
+ stop(50%, orange)
582
+ // => rgba-stop(50%, #ffa500)
@@ -0,0 +1,35 @@
1
+
2
+ ## Comments
3
+
4
+ Stylus supports three kinds of comments, single-line, and multi-line comments, and multi-line buffered comments.
5
+
6
+ ## Single-line
7
+
8
+ Single-line comments look like JavaScript comments, and do not output in the resulting CSS:
9
+
10
+ // I'm a comment!
11
+ body
12
+ padding 5px // some awesome padding
13
+
14
+ ## Multi-line
15
+
16
+ Multi-line comments look identical to regular CSS comments, however they only output when the `compress` option is not enabled.
17
+
18
+ /*
19
+ * Adds the given numbers together.
20
+ */
21
+
22
+ add(a, b)
23
+ a + b
24
+
25
+ ## Multi-line buffered
26
+
27
+ Multi-line comments which are not suppressed start with `/*!`, signalling Stylus to output the comment regardless of compression.
28
+
29
+ /*!
30
+ * Adds the given numbers together.
31
+ */
32
+
33
+ add(a, b)
34
+ a + b
35
+
@@ -0,0 +1,81 @@
1
+ ## Implementation Comparisons
2
+
3
+ Below we go head to head with other implementations.
4
+
5
+ ### Variables
6
+
7
+ SCSS:
8
+
9
+ $main-color: #006;
10
+ color: $main-color;
11
+
12
+ Less:
13
+
14
+ @main-color: #006;
15
+ color: @main-color;
16
+
17
+ Stylus:
18
+
19
+ main-color = #006
20
+ color main-color
21
+
22
+ ### Mixins
23
+
24
+ SCSS:
25
+
26
+ @mixin pad($x, $y) {
27
+ padding: $y $x;
28
+ }
29
+
30
+ .msg {
31
+ @include pad(5px, 10px);
32
+ }
33
+
34
+ Less:
35
+
36
+ .pad(@x, @y) {
37
+ padding: @y @x;
38
+ }
39
+
40
+ .msg {
41
+ .pad(5px, 10px);
42
+ }
43
+
44
+ Stylus:
45
+
46
+ pad(x, y)
47
+ padding y x
48
+
49
+ .msg
50
+ pad(5px, 10px)
51
+
52
+ ### Larger Example
53
+
54
+ Less:
55
+
56
+ .box-shadow (@x: 0, @y: 0, @blur: 1px, @alpha) {
57
+ @val: @x @y @blur rgba(0, 0, 0, @alpha);
58
+ box-shadow: @val;
59
+ -webkit-box-shadow: @val;
60
+ -moz-box-shadow: @val;
61
+ }
62
+ .box {
63
+ @base: #f938ab;
64
+ color: saturate(@base, 5%);
65
+ border-color: lighten(@base, 30%);
66
+ div { .box-shadow(0, 0, 5px, 0.4) }
67
+ }
68
+
69
+ Stylus:
70
+
71
+ box-shadow()
72
+ -webkit-box-shadow arguments
73
+ -moz-box-shadow arguments
74
+ box-shadow arguments
75
+
76
+ .box
77
+ base = #f938ab
78
+ color saturate(base, 5%)
79
+ border-color lighten(base, 30%)
80
+ div
81
+ box-shadow 0 0 5px 0.4