README.md in skim-0.10.0 vs README.md in skim-0.11.0
- old
+ new
@@ -1,15 +1,19 @@
-Skim [ ![Build status](https://travis-ci.org/jfirebaugh/skim.png) ](https://travis-ci.org/jfirebaugh/skim)
+Skim [ ![Build status](https://travis-ci.org/appjudo/skim.png) ](https://travis-ci.org/appjudo/skim)
====
Take the fat out of your client-side templates with Skim. Skim is the [Slim](http://slim-lang.com/) templating engine
with embedded CoffeeScript. It compiles to JavaScript templates (`.jst`), which can then be served by Rails or any other
Sprockets-based asset pipeline.
+# Install
+
+`gem install skim`, or add `skim` to your `Gemfile`.
+
# Usage
-`gem install skim`, or add `skim` to your `Gemfile`. Create template files with the extension
+Create template files with the extension
`.jst.skim`. For example, `test.jst.skim`:
```jade
p Hello #{@world}!
```
@@ -18,20 +22,42 @@
```js
$("body").html(JST["test"]({world: "World"}));
```
-Order up a skinny latte and enjoy!
+## Command Line Interface
+The CLI allows Skim to be used in Gulp and Grunt workflows, extending the reach of Skim from the Ruby world into the JS/ES/CoffeeScript communities.
+
+Features:
+- Options to output Skim asset and templates separately.
+- Options to assign template function to `module.exports`, a global function variable, or a global object (keyed by filename, as Sprockets does with its `JST` object).
+
+Usage: `skim [options]`
+
+```
+-s, --stdin Read input from standard input instead of an input file
+-e, --export Assign to module.exports for CommonJS require
+-n, --node-global Use Node.js global object for global assignments
+ --jst Assign to global JST object keyed by truncated filename
+ --assign variableName Assign to a global variable
+ --assign-object objectName Assign to a global object keyed by truncated filename
+ --asset-only Output only the Skim preamble asset
+ --omit-asset Omit Skim preamble asset from output
+ --trace Show a full traceback on error
+-o, --option name=code Set skim option
+-r, --require library Load library or plugin
+-h, --help Show this help message
+-v, --version Print version number
+```
+
# Caveats
Skim is an early proof-of-concept. Some Slim features are still missing:
-* Skim does not currently support embedded engines. Being a client-side templating languages, it will only be able to
- support embedded engines with a client-side implementation.
-* Skim does not currently support HTML pretty-printing (Slim's `:pretty` option). This is low priority, as
- pretty-printing is even less important client-side than server-side.
+* Skim does not currently support embedded engines. Being a client-side templating languages, it will only be able to support embedded engines with a client-side implementation.
+* Skim does not currently support HTML pretty-printing (Slim's `:pretty` option). This is low priority, as pretty-printing is even less important client-side than server-side.
* Skim does not currently support backslash line continuations.
# Language reference
Skim supports the following Slim language features:
@@ -51,20 +77,21 @@
* When interpolating the results of evaluating code, Skim will replace `null` and `undefined` results with an empty
string.
* You will typically want to use the fat arrow `=>` function definition to create callbacks, to preserve the binding of
`this` analogously to how `self` behaves in a Ruby block.
-## The context object
+## The Context Object
The context object you pass to the compiled template function becomes the value of this inside your template. You can
use CoffeeScript's `@` sigil to easily access properties and call helper methods on the context object.
-## Escaping and unescaping
+## Escaping and Unescaping
Like Slim, Skim escapes dynamic output by default, and it supports the same `==` and `#{{}}` syntaxes for bypassing
escaping. In addition, the special `safe` method on the context object tells Skim that the string can be output without
being escaped. You can use this in conjunction with `escape` context method to selectively sanitize parts of the string.
+
For example, given the template:
```jade
= @linkTo(@project)
```
@@ -84,11 +111,11 @@
```html
<a href='/projects/4'>Crate & Barrel</a>
```
-## The Skim asset
+## The Skim Asset
By default, all you need to do to start using Skim is add it to your Gemfile. Skim will embed a small amount of
supporting code in each generated template asset. You can remove this duplication by manually including Skim's asset,
and setting Skim's `:use_asset` option to true.
@@ -102,13 +129,21 @@
```ruby
Skim::Engine.default_options[:use_asset] = true
```
+Skim templates also support dependency injection for the Skim asset, instead of using a global Skim variable. Example in Node.js:
+
+```js
+var Skim = require('./skim_asset_module.js')
+var template = require('./template_module.js');
+console.log(template({Skim: Skim, first_name: 'Dave', last_name: 'Smith'}));
+```
+
# License (MIT)
-Copyright (c) 2012 John Firebaugh
+Copyright (c) 2012 John Firebaugh, (c) 2015 AppJudo Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
@@ -127,8 +162,9 @@
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# Special Thanks
+* John Firebaugh, for creating Skim
* Andrew Stone, for Slim
* Magnus Holm, for Temple
-* Daniel Mendler, for maintenance of both
+* Daniel Mendler, for maintenance of Slim and Temple