turner
v0.0.4
Published
Convert Literate Coffeescript to both rendered Markdown and isomorphic JavaScript
Downloads
18
Maintainers
Readme
Turner
A small utility to get the most out of your Literate CoffeeScript. Let's dig in!
Getting Started
npm install turner
Creating a minified JS file from (Literate) CoffeeScript:
var readStream = fs.createReadStream(path.join(__dirname, '../src/turner.litcoffee'));
var writeStream = fs.createWriteStream(__dirname + '/output.js');
writeStream.on('finish', done)
readStream.pipe(Turner.coffeescript()).pipe(Turner.minify()).pipe(writeStream)
Creating an HTML file from (Literate) CoffeeScript:
var readStream = fs.createReadStream(path.join(__dirname, '../src/turner.litcoffee'));
var writeStream = fs.createWriteStream(__dirname + '/output.html');
writeStream.on('finish', done)
readStream.pipe(Turner.markdown()).pipe(writeStream)
Source
note: The following is a copy of the actual Literate CoffeeScript source code, located here. Check it out, to see LCS in action, acting as both a Markdown file and Coffeescript source code. Legit.
Here, we include the modules we'll need.
coffee = require 'coffee-script'
markdown = require 'marked'
uglify = require 'uglify-stream'
es = require 'event-stream'
A call to require('turner')
will return these three methods: coffeescript
, minify
, and markdown
.
es
, defined above, is an instance of event-stream, an extremely useful and easy syntax for creating transforms to stick in your "pipes".
Turner = {
coffeescript: () ->
return es.through (data) ->
@queue coffee.compile data.toString(), { literate: true }
minify: () ->
return uglify() # note here that uglify-stream already returns a transform. Badass!
markdown: () ->
return es.through (data) ->
@queue markdown data.toString()
}
That's it! Export the module.
module.exports = Turner