|
|
@@ -1,134 +0,0 @@ |
|
|
|
fs = require('fs') |
|
|
|
|
|
|
|
function md_trim(str, context) { |
|
|
|
str = str.replace(/(^\s+)|(\s+$)/g, ""); |
|
|
|
|
|
|
|
if (context == 1) { // Name |
|
|
|
// placeholder for any formatting on name value |
|
|
|
} else if (context == 2) { // Description |
|
|
|
str = str.replace(".", ""); // remove ending periods on descriptions |
|
|
|
} else if (context == 3) { // Auth |
|
|
|
if (str.toUpperCase() == "NO") { |
|
|
|
str = null |
|
|
|
} else { |
|
|
|
str = str.replace("`", "").replace("`", "") |
|
|
|
} |
|
|
|
} else if (context == 4) { // HTTPS |
|
|
|
if (str.toUpperCase() == "YES") { |
|
|
|
str = true |
|
|
|
} else { |
|
|
|
str = false |
|
|
|
} |
|
|
|
} else if (context == 5) { // Link |
|
|
|
str = str.replace("[Go!]", "").slice(1, -1); |
|
|
|
} |
|
|
|
return str; |
|
|
|
} |
|
|
|
|
|
|
|
function handle(filename, anchor) { |
|
|
|
fs.readFile(filename, 'utf8', function (err,text) { |
|
|
|
if (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 = []; |
|
|
|
var entry_count = 0; |
|
|
|
|
|
|
|
function read_line() { |
|
|
|
return lines[cur_line++]; |
|
|
|
} |
|
|
|
var root = {}; |
|
|
|
while (true) { |
|
|
|
var cols = []; |
|
|
|
var rows = []; |
|
|
|
while (line.indexOf(anchor) == -1 && cur_line != lines.length) { |
|
|
|
line = read_line(); |
|
|
|
} |
|
|
|
if (cur_line == lines.length) { |
|
|
|
break; |
|
|
|
} |
|
|
|
table_name = line.split(anchor)[1]; |
|
|
|
table_name = md_trim(table_name, 0) |
|
|
|
|
|
|
|
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 expect column title") |
|
|
|
break; |
|
|
|
} |
|
|
|
} else { |
|
|
|
console.error("markdown expect table content") |
|
|
|
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); |
|
|
|
entry_count++; |
|
|
|
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["count"] = entry_count; |
|
|
|
root[table_name] = data; |
|
|
|
} |
|
|
|
console.log(JSON.stringify(root)); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
if (process.argv.length < 3) { |
|
|
|
console.log("No .md file passed!"); |
|
|
|
return; |
|
|
|
} |
|
|
|
if (process.argv.length < 4) { |
|
|
|
anchorText = "###"; |
|
|
|
} else { |
|
|
|
anchorText = process.argv[3]; |
|
|
|
} |
|
|
|
handle(process.argv[2].toString(), anchorText); |