Vitaly Puzrin
10 years ago
2 changed files with 107 additions and 1 deletions
@ -0,0 +1,105 @@ |
|||
#!/usr/bin/env node
|
|||
/*eslint no-console:0*/ |
|||
|
|||
'use strict'; |
|||
|
|||
|
|||
var fs = require('fs'); |
|||
var argparse = require('argparse'); |
|||
|
|||
|
|||
////////////////////////////////////////////////////////////////////////////////
|
|||
|
|||
var cli = new argparse.ArgumentParser({ |
|||
prog: 'markdown-it', |
|||
version: require('../package.json').version, |
|||
addHelp: true |
|||
}); |
|||
|
|||
cli.addArgument([ '--no-html' ], { |
|||
help: 'Disable embedded HTML', |
|||
action: 'storeTrue' |
|||
}); |
|||
|
|||
cli.addArgument([ '-l', '--linkify' ], { |
|||
help: 'Autolink text', |
|||
action: 'storeTrue' |
|||
}); |
|||
|
|||
cli.addArgument([ '-t', '--typographer' ], { |
|||
help: 'Enable smartquotes and other typographic replacements', |
|||
action: 'storeTrue' |
|||
}); |
|||
|
|||
cli.addArgument([ '--trace' ], { |
|||
help: 'Show stack trace on error', |
|||
action: 'storeTrue' |
|||
}); |
|||
|
|||
cli.addArgument([ 'file' ], { |
|||
help: 'File to read', |
|||
nargs: '?', |
|||
defaultValue: '-' |
|||
}); |
|||
|
|||
var options = cli.parseArgs(); |
|||
|
|||
|
|||
function readFile(filename, encoding, callback) { |
|||
if (options.file === '-') { |
|||
// read from stdin
|
|||
var chunks = []; |
|||
|
|||
process.stdin.on('data', function(chunk) { chunks.push(chunk); }); |
|||
|
|||
process.stdin.on('end', function() { |
|||
return callback(null, Buffer.concat(chunks).toString(encoding)); |
|||
}); |
|||
} else { |
|||
fs.readFile(filename, encoding, callback); |
|||
} |
|||
} |
|||
|
|||
|
|||
////////////////////////////////////////////////////////////////////////////////
|
|||
|
|||
readFile(options.file, 'utf8', function (err, input) { |
|||
var output, md; |
|||
|
|||
if (err) { |
|||
if (err.code === 'ENOENT') { |
|||
console.error('File not found: ' + options.file); |
|||
process.exit(2); |
|||
} |
|||
|
|||
console.error( |
|||
options.trace && err.stack || |
|||
err.message || |
|||
String(err)); |
|||
|
|||
process.exit(1); |
|||
} |
|||
|
|||
md = require('..')({ |
|||
html: !options['no-html'], |
|||
xhtmlOut: false, |
|||
typographer: options.typographer, |
|||
linkify: options.linkify |
|||
}); |
|||
|
|||
try { |
|||
output = md.render(input); |
|||
|
|||
} catch (e) { |
|||
console.error( |
|||
options.trace && e.stack || |
|||
e.message || |
|||
String(e)); |
|||
|
|||
process.exit(1); |
|||
} |
|||
|
|||
process.stdout.write(output); |
|||
|
|||
process.exit(0); |
|||
}); |
Loading…
Reference in new issue