forked from commonmark/commonmark.js
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommonmark
More file actions
executable file
·95 lines (81 loc) · 2.54 KB
/
commonmark
File metadata and controls
executable file
·95 lines (81 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env node
"use strict";
var util = require('util');
var fs = require('fs');
var os = require('os');
var commonmark = require('../');
var version = require('../package.json').version;
var parseArgs = require('minimist');
var args = process.argv.slice(2);
var argv = parseArgs(args,
{boolean: ["ast", "xml", "time", "smart",
"safe", "sourcepos", "help", "version"],
string: ["_", "to", "t"],
unknown: function(o) {
if (/^-/.test(o)) {
process.stderr.write("Unknown option " + o + "\n");
process.exit(1);
}
}
});
var inps = [];
var i;
var usage = function() {
process.stdout.write("commonmark [options] [file..]\n\n" +
"Convert CommonMark to HTML. Files are concatenated before\n" +
"parsing. If no files are given, input is read from stdin.\n\n" +
"-t,--to FORMAT Specify output format (xml, html, ast)\n" +
"--time Produce timings for phases of parsing and rendering\n" +
"--smart Parse 'smart' punctuation\n" +
"--safe Omit raw HTML and potentially unsafe attributes\n" +
"--sourcepos Include source position attributes in HTML tags\n" +
"--version Print version information\n" +
"--help Print usage information\n");
process.exit(0);
};
if (argv.help) {
usage();
process.exit(0);
}
if (argv.version) {
process.stdout.write('commonmark.js ' + version + '\n');
process.exit(0);
}
var format = argv.to || argv.t || (argv.xml ? 'xml' :
(argv.ast ? 'ast' : 'html'));
var options = {
time: argv.time,
smart: argv.smart,
safe: argv.safe,
sourcepos: argv.sourcepos
};
var files = argv._;
var parser = new commonmark.Parser(options);
var renderer;
if (format === 'html') {
renderer = new commonmark.HtmlRenderer(options);
} else if (format === 'xml') {
renderer = new commonmark.XmlRenderer(options);
} else if (format === 'ast') {
renderer = { render: function(node) {
return util.inspect(node, null, 20, true) + '\n';
},
options: {} };
} else {
process.stderr.write("Unknown format: " + format + "\n");
process.exit(1);
}
if (files.length === 0) {
files = ['/dev/stdin'];
}
for (i = 0; i < files.length; i++) {
var file = files[i];
if (file === "/dev/stdin" && os.platform() === "win32") {
file = 0;
}
inps.push(fs.readFileSync(file, 'utf8'));
}
var inp = inps.join('\n');
var doc = parser.parse(inp);
var rendered = renderer.render(doc);
if (!options.time) { process.stdout.write(rendered); }