Example
Plugins are used to perform drawing operations. Here the fill plugin gets applied on the rectangle plugin. This operation is called application. Gray is the default fill style: a gray rectangle!fill => rect
Example
You can assign properties to plugins. e.g. set a fill color. The syntax is CSS-like.fill{color:#f80} => rect
Example
A plugin exists for rounded rectangles. Oh, btw.: You should really resize your browser window - now! :-)fill{color:#fff} => roundedRect
Example
You can also set the properties of plugins on the right hand side. More curves!!!fill => roundedRect{radius:80}
Example
Using an array-like syntax you can chain plugins: First draw a shadow, then fill it. Both plugins in the chain act on a roundedRect.[shadow fill] => roundedRect
Example
You can chain as mainy plugins as you want. Properties can by set on any plugin.[shadow border{color:#fff} fill{color:#f80}] => roundedRect{radius:30}
Example
Loads of plugins exist, e.g. the gradient plugin - and you can write your own! If you are familiar with HTML canvas you're ready to go.gradient{from:rgba(255, 255, 255, 0.2); to:#888;} => roundedRect{radius:50}
Example
Applications can be chained as well to perform multiple operations inside one canvas. Just seperate them with a comma.gradient => rect, border => roundedRect{radius:60}
Example
The application operation can be used recursively by using regular brackets. This gives a different way of chaining operations.fill => rect, mandala => ([border{color:#fff; width:1}] => roundedRect{radius:10})