#!/usr/bin/env node /** * Marked CLI * Copyright (c) 2011-2012, Christopher Jeffrey (MIT License) */ var fs = require('fs') , util = require('util') , marked = require('../'); /** * Man Page */ var help = function() { var spawn = require('child_process').spawn; var options = { cwd: process.cwd(), env: process.env, setsid: false, customFds: [0, 1, 2] }; spawn('man', [__dirname + '/../man/marked.1'], options); }; /** * Main */ var main = function(argv) { var files = [] , data = '' , input , output , arg , tokens; var getarg = function() { var arg = argv.shift(); arg = arg.split('='); if (arg.length > 1) { argv.unshift(arg.slice(1).join('=')); } return arg[0]; }; while (argv.length) { arg = getarg(); switch (arg) { case '-o': case '--output': output = argv.shift(); break; case '-i': case '--input': input = argv.shift(); break; case '-t': case '--tokens': tokens = true; break; case '-h': case '--help': return help(); default: files.push(arg); break; } } if (!input) { if (files.length <= 2) { var stdin = process.stdin; stdin.setEncoding('utf8'); stdin.resume(); stdin.on('data', function(text) { data += text; }); stdin.on('end', write); return; } input = files.pop(); } data = fs.readFileSync(input, 'utf8'); write(); function write() { data = tokens ? JSON.stringify(marked.lexer(data), null, 2) : marked(data); if (!output) { process.stdout.write(data + '\n'); } else { fs.writeFileSync(output, data); } } }; if (!module.parent) { process.title = 'marked'; main(process.argv.slice()); } else { module.exports = main; }