-
Notifications
You must be signed in to change notification settings - Fork 1
/
process.js
39 lines (29 loc) · 823 Bytes
/
process.js
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
const os = require('os');
const fs = require('fs');
// Read a file.
function readFile(pth) {
var txt = fs.readFileSync(pth, 'utf8');
return txt.replace(/\r\n?/g, '\n');
}
// Write a file.
function writeFile(pth, txt) {
var txt = txt.replace(/\r\n?/g, os.EOL);
fs.writeFileSync(pth, txt);
}
// Convert a LaTeX file to Markdown.
function latexToMarkdown(txt) {
var txt = txt.replace(/\\href\{(.+?)\}\{(.+?)\}/g, '[$2]($1)');
var txt = txt.replace(/\\textbf\{(.+?)\}/g, '**$1**');
var txt = txt.replace(/\\textit\{(.+?)\}/g, '*$1*');
var txt = txt.replace(/``(.+?)"/g, '"$1"');
var txt = txt.replace(/\$(.+?)\$/g, '`$1`');
return txt;
}
// Main function.
function main() {
var pth = process.argv[2];
var txt = readFile(pth);
var txt = latexToMarkdown(txt);
writeFile(pth, txt);
}
main();