embedurl() bif with optional utf8 uncoding support for SVG.index() bif.percentage() bif.slice() bif, #2115.global flag to define() function.match() bif now returns the matched values instead of a boolean, #2109.flags argument to match() bif, #2109.selectors() now returns proper subselectors.match function.--include-css and --resolve-url used concurrently.selectors() bif.selector()'s arguments.@supports value.--resolve-url-nocheck).; at the end of blockless unknown at-rules.convert bif.@media blocks.--out options.!optional directive for extending, #1757.selector-exists bif, #1758.remove bif for removing items from hashes.--hoist-atrules flag) @import and @charset hoisting.@media inside +cache.resolve-url for hash urls, #1778.mix bif for differently transparent colors, #1792.& without comma.filter: contrast() error.block keyword inside block mixin..styl extension from CLI (added extname arg).Woff2 and WebP mime-tipes, #1699.--resolve-url is set.error() calls.@keyframes.@supports parsing.url() support for @namespace.--sourcemap-base to be ignored when --out is present.--print was present.--out flag is present, #1668..styl.map => .css.map, #1668.globals and functions keys to options object in JS API, #1653.rebeccapurple named color.unicode-range support (#1648).@extend inside @media queries with multi-level selectors (#1658).@css literal that generated u+0085 characters instead of newlines (#1663).\,) inside hashes (#1666).% (#1439).url().hsla.red, hue, alpha etc.).luminosity bif.blend bif.contrast bif.transparentify bif.list-separator bif, #1576.@keyframes parsing issue.{ is on a new line in at-rules.convert built-in function, #1545.@media and other at-rules in mixins, #1535.@css and unquote inside groups, #1527.property.literal, #1558.current-property ignored in property lookup, #1565.current-property's value to be evaluated in the right context, #1562.@keyframes converting, #1549.@require and globbed paths inside functions, #1529.@import and @require, #1495.@media, #1504.\ in a tag name, #1487.@scope and complex selectors, #1505.display: block inside block mixins, #1515.@media bubbling and conditionals, #1518.* selector first in the group, #1498.@keyframes, #1490.filename on keyframes, #1485.+cache built-in mixin for caching the result of functions and mixins into placeholders, #1466.current-media() bif that returns the string for the current media query, #1466.called-from property in functions that contains the names of the functions from the call stack till the current one, #1466.-ms- prefix for keyframes.only keyword, #1460.define bif, #1382.--prefix option for CLI and +prefix-classes mixin, #1420.--deps flag to list the dependencies of the compiled file and stylus.deps function, #1429.@extend, #1419.define, #1444.+= operator with strings, #1423.--watch, #1435.default value for cursor property (Temporally remove default from the pseudo-classes list), #1438.@keyframes, #1442.nodes array, #1412..css in the dirname, #1385.@block.add-property inside function call..styl in the name.mtime in middleware imports.@import globbing with --watch.@require, #1287.@import and @require. Support Node.js modules, #1316.@block entity, #1290.selector() bif, #1279.use() bif, #1297.block variable pass, #1285.if and color in array check, #1301.css-parse instead of CSSOM for converting CSS -> Stylus, #1307.selector, #1278.selector() interpolation, #1259.@font-face, #1268.+foo) with block interpolation (block), #1223.selector() bif, #1249.&.1ed44a81end event handlers + optional result css modification, #1180.a[ etc.), #1187.(), #1178.else if match, #1154.url, #1148.--relative-url, #1156.calc CSS function, #1133.push not to modify the first element of another array, #1118.src and dest in middleware, started tests for middleware #1143.--resolve-url that removed tails from urls, #1126..woff, #1128..toString for undefined functions, #1119.path.resolve for nonœ-true resolveURL, #1116.stylus.render(), #1138.this.calling, #1122.--print option to print CSS to stdout, #1108.--resolve-url is on, #1099.p function, #1111.substr, replace and split bifs, #1088.image-size, #1087.tan trigonometric function, also sin and cos now understand deg units.url() mimes, also the list of mimes is now configurable, #841, #1046.use() function to extend Stylus from inside of .styl files, #788.exports.version to always show an actual one.image-size function, #812..styl in the name and local install of stylusjson() BIF for loading variables from JSON files [geddesign]basename() BIFpathjoin() BIFbasename() BIFdirname() BIFextname() BIF@extend in mixin. Closes #638!important supportadd-property() mixin support [jasonkuhrt]fade-in() and fade-out() [jasonkuhrt]rgba() [jasonkuhrt].import() - previously failed to mixinmake test-covmix() BIF (docs needed)opposite-position() pass through "center"`Renderer "end" eventnew [teppeis]--watch working on windows with a temporary hack [dciccale]@extend. Closes #149keys(pairs) and values(pairs) BIFs.define()ing of functionsstylus(1) repl for 0.6.x) in selectors. Closes #449(n * 5)%. Closes #285--include-css to literally include imported CSS. Closes #448mkdir -p supportor binop regression. Closes #475spin() BIF (same as color + 50deg etc)@scope <selector> feature to scope all subsequent selectors!= operator== operator! coerces expression not the first valuemkdir -p support to the middleware@import url(string) support. Closes #352fade-in() and fade-out() BIFsString#coerce() for Expressions-U, --inline to stylus(1)rem support. Closes #395Parser#function(). Closes #393:= of ?=. Closes #389@keyframe expansion support. Closes #293@-VENDOR-keyframes support@property mixin property access Closes #363/*! support to comments to disable suppression.styl when importing. Closes #366utils.absolute(path)Ident#clone() with .property flagpath.join() usage in utils.lookup(). Closes #356Renderer#get(option)@<name>. Closes #344#rgba and #rrggbbaa color formatslighten() BIF 'lighten by %' function push color closer to white [cwolves]PI and -math-prop(name)cos() and sin()js(str) BIFimport with imported@-webkit-keyframes support. Closes #307growl dep for stylus(1)require("stylus") instead of ../ for the mac app integration@import s [brandonbloom]@keyframes ident error msgarguments issue with excluding defaults. Closes #272url() call regression. Closes #270url(). Closes #267-u, --use PATH flag for utilizing pluginshsla.clampDegrees() with negative values [Bruno Héridet]@keyframe block evaluation. Closes #2520% in @keyframes from becoming 0 when compressed. Closes #248^= attr selector causing infinite loop. Closes #244& in selectors. Closes #243-{foo} interpolation support. Closes #235*prop: val hack support (blueprint / html boilerplate etc parse fine now)SyntaxError and ParseErrorstylus.parse()Renderer#define(name, node) to define a globalRenderer#use(fn). Closes #224utils.assertType() error message; include param nameNull#isNullBoolean#is{True,False}instanceofArguments#clone()push() / append()unshift() / prepend() BIFs@media blocks. Closes #216 [reported by jsteenkamp]Renderer#include(path). Closes #214@import path resolution bug. Closes #215HSLA#add(h,s,l,a)HSLA#sub(h,s,l,a)RGBA#add(r,g,b,a)RGBA#sub(r,g,b,a)RGBA#multiply(n)RGBA#divide(n)HSLA#adjustHue(deg)HSLA#adjustLightness(percent)HSLA#adjustSaturation(percent)linear-gradient() examples(fmt, ...) built-in; sprintf-like% sprintf-like string operator, ex: '%s %s' % (1 2)current-property local variableadd-property(name, val)[]= operator support. Ex: fonts[1] = arial, nums[1..3] = 2-I, --include <path> to stylus(1). Closes #20650 + 25% == 75rgba + 25% to lightenrgba - 25% to darkenrgba - 25 to adjust rgb valuesArguments node, acts like Expressionutils.params()debug option to stylus middlewarehsl + 15deg etc to adjust hueRGBA operations (#eee - 20%)#eee * 0.2)unit * color (swaps operands)Expression#clone() to support Argumentsdarken,lighten}-by() BIFsconsole.log() callFixed connect middleware @import support. Closes #168
The middleware is now smart enough to know when imports
change, and will re-compile the target file.
Changed middleware compile function to return the Renderer (API change)
-i, --interactive for the Stylus REPL (eval stylus expressions, tab-completion etc)p() built-in to display parens--compress -C to -c, and -css -c is now -C*= in selector, ex [class*="foo"]--watch issue with growl, updated to 1.1.0. Closes #188for-loop support.
Ex: return n if n % 2 == 0 for n in numsborder-radius: 5px if true unless false;last(expr) built-in functionsum(nums) built-in functionavg(nums) built-in functionjoin(delim, vals) built-in functionEvaluator#{currentScope,currentBlock}0 is falsey, 0%, 0em, 0px etc truthy. Closes #160for implicit return valuefor explicit return valueRGBA nodeis a "color" special-case, true for HSLA and RGBA nodes.
Closes #180Parser and Lexer (yes, they are really slow).Color node--watch support due to dynamic @import support. Closes #176isnt operator (same as is not and !=)@import expressions@import index resolution supportlight() / dark() BIFscompress option for Connect middleware [disfated]./lib/functions/index.styl)url(). Closes #105is and is not aliases for == and !=@keyframes dynamic name support5px + "10" will give 15pxwarn option Closes #152
Currently this only reports on re-definition of functions$ as a valid identifier charactermixin local variable for function introspection capabilities. Closes #162Unit#toBoolean() is now correct& mid-selector bug. Closes #148 [reported by visnu]for within brackets. Closes #146@import with file of the same name. Closes #143--watch@import watching support to stylus(1). Closes #134--watch is not useddarken-by() BIF@import literal semi-colon. Closes #140Added stylus(1) direct css to stylus file conversion [Mario]
For example instead of $ stylus --css < foo.css > foo.styl
you may now either $ stylus --css foo.css or provide
a destination path $ stylus --css foo.css /tmp/out.styl.
Added postfix conditionals. Closes #74
Expressive ruby-ish syntax, ex: padding 5px if allow-padding.
in operator. 3 in nums, padding in props etcExpression#hash, hashing all of the nodes in order} with css-style. Closes #131lighten-by() BIFdarken-by() BIF* selector within @media blockstd:nth-child(2)\ntd:nth-child(3)+=, -=, *=, /=, and %=--compress when passing files for stylus(1). Closes #115@importopposite-position() with nested expressions, unwrappingAdded: url() utilizing general lookup paths.
This means that { paths: [] } is optional now, as lookups
will be relative to the file being rendered by default.
Added -w, --watch support to stylus(1). Closes #113
opposite-position(positions) built-in functionimage-lookup(path) built-in function-o, --out <dir> support to stylus(1)stylus [file|dir ...] support[CWD] for stylus(1)unquote() using Literal nodeLiteral in place of some Idents--version to stylus(1)