stylus-source 0.15.4 → 0.17.0

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