diff --git a/build/md2json.js b/build/md2json.js new file mode 100644 index 00000000..2cd73f9e --- /dev/null +++ b/build/md2json.js @@ -0,0 +1,112 @@ +fs = require('fs') + +function md_trim(str) { + return str.replace(/(^\s+)|(\s+$)/g, ""); +} + +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 = []; + + 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) + + line = read_line() + + if (line) { + line = line.split("|") + for (var j in line) { + + line[j] = md_trim(line[j]) + 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) { + + } else { + 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]) + 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; + } + 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);