Compare commits
4 commits
master
...
build-chan
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c32b48da0f | ||
|
|
085e76d7bb | ||
|
|
2fb885282b | ||
|
|
1207f9a87c |
1 changed files with 100 additions and 86 deletions
186
build/md2json.js
186
build/md2json.js
|
|
@ -3,23 +3,23 @@ fs = require('fs')
|
||||||
function md_trim(str, context) {
|
function md_trim(str, context) {
|
||||||
str = str.replace(/(^\s+)|(\s+$)/g, "");
|
str = str.replace(/(^\s+)|(\s+$)/g, "");
|
||||||
|
|
||||||
if (context == 1) { // Name
|
if (context === 1) { // Name
|
||||||
// placeholder for any formatting on name value
|
// placeholder for any formatting on name value
|
||||||
} else if (context == 2) { // Description
|
} else if (context === 2) { // Description
|
||||||
str = str.replace(".", ""); // remove ending periods on descriptions
|
str = str.replace(".", ""); // remove ending periods on descriptions
|
||||||
} else if (context == 3) { // Auth
|
} else if (context === 3) { // Auth
|
||||||
if (str.toUpperCase() == "NO") {
|
if (str.toUpperCase() === "NO") {
|
||||||
str = null
|
str = null
|
||||||
} else {
|
} else {
|
||||||
str = str.replace("`", "").replace("`", "")
|
str = str.replace("`", "").replace("`", "")
|
||||||
}
|
}
|
||||||
} else if (context == 4) { // HTTPS
|
} else if (context === 4) { // HTTPS
|
||||||
if (str.toUpperCase() == "YES") {
|
if (str.toUpperCase() === "YES") {
|
||||||
str = true
|
str = true
|
||||||
} else {
|
} else {
|
||||||
str = false
|
str = false
|
||||||
}
|
}
|
||||||
} else if (context == 5) { // Link
|
} else if (context === 5) { // Link
|
||||||
str = str.replace("[Go!]", "").slice(1, -1);
|
str = str.replace("[Go!]", "").slice(1, -1);
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
|
|
@ -27,105 +27,119 @@ function md_trim(str, context) {
|
||||||
|
|
||||||
function handle(filename, anchor) {
|
function handle(filename, anchor) {
|
||||||
fs.readFile(filename, 'utf8', function (err,text) {
|
fs.readFile(filename, 'utf8', function (err,text) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return console.log(err);
|
return console.log(err);
|
||||||
}
|
}
|
||||||
var lines = text.split("\n");
|
|
||||||
var cur_line = 0;
|
|
||||||
var line = ""
|
|
||||||
var table_name = "";
|
|
||||||
var col_num = 0;
|
|
||||||
var cols = [];
|
|
||||||
var rows = [];
|
|
||||||
|
|
||||||
function read_line() {
|
var lines = text.split("\n");
|
||||||
return lines[cur_line++];
|
var cur_line = 0;
|
||||||
}
|
var line = ""
|
||||||
var root = {};
|
var table_name = "";
|
||||||
while (true) {
|
var col_num = 0;
|
||||||
var cols = [];
|
var cols = [];
|
||||||
var rows = [];
|
var rows = [];
|
||||||
while (line.indexOf(anchor) == -1 && cur_line != lines.length) {
|
var root = {};
|
||||||
line = read_line();
|
|
||||||
|
function read_line() {
|
||||||
|
return lines[cur_line++];
|
||||||
}
|
}
|
||||||
if (cur_line == lines.length) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
table_name = line.split(anchor)[1];
|
|
||||||
table_name = md_trim(table_name, 0)
|
|
||||||
|
|
||||||
line = read_line()
|
while (true) {
|
||||||
|
var cols = [],
|
||||||
|
rows = [];
|
||||||
|
|
||||||
if (line) {
|
while (line.indexOf(anchor) == -1 && cur_line != lines.length) {
|
||||||
line = line.split("|")
|
line = read_line();
|
||||||
for (var j in line) {
|
|
||||||
|
|
||||||
line[j] = md_trim(line[j], 0)
|
|
||||||
if ((j == 0 || j == line.length - 1) && line[j] === "") {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
cols.push(line[j]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (line.length) {
|
|
||||||
cols = line;
|
if (cur_line == lines.length) {
|
||||||
rows.push(cols)
|
|
||||||
} else {
|
|
||||||
console.error("markdown expect column title")
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
table_name = line.split(anchor)[1];
|
||||||
console.error("markdown expect table content")
|
table_name = md_trim(table_name, 0)
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
line = read_line()
|
|
||||||
|
|
||||||
if (!line) {
|
|
||||||
console.error("markdown expect table spliter")
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
line = read_line()
|
|
||||||
while (line.indexOf("|") != -1 && cur_line != lines.length) {
|
|
||||||
|
|
||||||
var line_this = line.split("|")
|
|
||||||
var row = []
|
|
||||||
for (var j in line_this) {
|
|
||||||
line_this[j] = md_trim(line_this[j], j)
|
|
||||||
if ((j == 0 || j == line_this.length - 1) && line_this[j] === "") {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
row.push(line_this[j]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
rows.push(row);
|
|
||||||
line = read_line()
|
line = read_line()
|
||||||
|
|
||||||
|
if (line) {
|
||||||
|
line = line.split("|")
|
||||||
|
for (var j in line) {
|
||||||
|
line[j] = md_trim(line[j], 0)
|
||||||
|
|
||||||
|
if ((j == 0 || j == line.length - 1) && line[j] === "") {
|
||||||
|
//
|
||||||
|
} else {
|
||||||
|
cols.push(line[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (line.length) {
|
||||||
|
cols = line;
|
||||||
|
rows.push(cols)
|
||||||
|
} else {
|
||||||
|
console.error("Markdown expects column title")
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.error("Markdown expects table content")
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
line = read_line()
|
||||||
|
|
||||||
|
if (!line) {
|
||||||
|
console.error("Markdown expects table spliter")
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
line = read_line()
|
||||||
|
|
||||||
|
while (line.indexOf("|") != -1 && cur_line != lines.length) {
|
||||||
|
var line_this = line.split("|")
|
||||||
|
var row = []
|
||||||
|
|
||||||
|
for (var j in line_this) {
|
||||||
|
line_this[j] = md_trim(line_this[j], j)
|
||||||
|
if ((j == 0 || j == line_this.length - 1) && line_this[j] === "") {
|
||||||
|
//
|
||||||
|
} else {
|
||||||
|
row.push(line_this[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rows.push(row);
|
||||||
|
line = read_line()
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = [];
|
||||||
|
|
||||||
|
for (var j in rows) {
|
||||||
|
if (j != 0) {
|
||||||
|
var ele = {};
|
||||||
|
|
||||||
|
for (var k in rows[j]) {
|
||||||
|
ele[rows[0][k]] = rows[j][k];
|
||||||
|
}
|
||||||
|
|
||||||
|
data.push(ele);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
root[table_name] = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
var data=[];
|
console.log(JSON.stringify(root));
|
||||||
for (var j in rows) {
|
});
|
||||||
if (j != 0) {
|
|
||||||
var ele = {};
|
|
||||||
for (var k in rows[j]) {
|
|
||||||
ele[rows[0][k]] = rows[j][k];
|
|
||||||
}
|
|
||||||
data.push(ele);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
root[table_name] = data;
|
|
||||||
}
|
|
||||||
console.log(JSON.stringify(root));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.argv.length < 3) {
|
if (process.argv.length < 3) {
|
||||||
console.log("No .md file passed!");
|
console.log("No .md file passed!");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.argv.length < 4) {
|
if (process.argv.length < 4) {
|
||||||
anchorText = "###";
|
anchorText = "###";
|
||||||
} else {
|
} else {
|
||||||
anchorText = process.argv[3];
|
anchorText = process.argv[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
handle(process.argv[2].toString(), anchorText);
|
handle(process.argv[2].toString(), anchorText);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue