console.log 'hello'
print 'world!'
$ cat demo.coffee.md | |
Demo | |
==== | |
console.log 'hello' | |
```python | |
print 'world!' | |
``` | |
$ marko.coffee -h | |
marko [options] FILES | |
options: | |
-h, --help show help | |
-r, --run run code blocks | |
-x, --extract extract code blocks | |
[-l, --lang LANG extract fenced code blocks of specified sort] | |
$ marko.coffee -x demo.coffee.md | |
console.log 'hello' | |
$ marko.coffee -x --lang=python demo.coffee.md | |
print 'world!' | |
$ marko.coffee -x --lang=python demo.coffee.md | python - | |
world! |
#!/usr/bin/env coffee | |
help = ''' | |
marko [options] FILES | |
options: | |
-h, --help show help | |
-r, --run run code blocks | |
-x, --extract extract code blocks | |
[-l, --lang LANG extract fenced code blocks of specified sort] | |
''' | |
fs = require 'fs' | |
coffee = require 'coffee-script' | |
marked = require 'marked' | |
argv = require('optimist') | |
.boolean(['h', 'r', 'x']) | |
.alias('h', 'help') | |
.alias('r', 'run') | |
.alias('x', 'extract') | |
.alias('l', 'lang') | |
.argv | |
print = console.log | |
print help if argv.help | |
head = ''' | |
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<link rel="stylesheet" href="style.css"> | |
<body> | |
''' | |
codeFrom = (source, lang) -> | |
(t.text for t in marked.lexer(source) \ | |
when t.type is 'code' and t.lang is lang).join "\n" | |
for file in argv._ when file.match /\.(litcoffee|md)/i | |
source = fs.readFileSync file, 'utf8' | |
if argv.run and /coffee/.test file | |
coffee.eval codeFrom source | |
else if argv.extract | |
print codeFrom(source, argv.lang) | |
else | |
print head, marked source |