diff --git a/public/index.html b/public/index.html index 021d8a4f2f11f20789f47118812573e453c4896d..2706ede6324cd7347cb100d63272e6e1f7e4911c 100644 --- a/public/index.html +++ b/public/index.html @@ -14,11 +14,11 @@ <div class="flex-fill d-flex flex-row py-1"> <div style="width: 50%; height: 100%;" class="d-flex flex-column pr-1"> <label for="text-input" class="mb-0">Markdown Input</label> - <textarea id="text-input" class="form-control flex-fill"></textarea> + <textarea id="text-input" class="form-control flex-fill" style="font-size: x-small; font-family: monospace;"></textarea> </div> <div style="width: 50%; height: 100%;" class="d-flex flex-column pl-1"> <label for="text-input" class="mb-0 ml-auto">Dokuwiki Output</label> - <textarea id="text-output" class="form-control flex-fill" readonly></textarea> + <textarea id="text-output" class="form-control flex-fill" style="font-size: x-small; font-family: monospace;" readonly></textarea> </div> </div> <footer style="text-align: center"><a href="https://legal.cccv.de">Impressum/Privacy Policy</a> - <a href="https://git.cccv.de/infra/static-pages/convert.md.cccv.de">Source Code</a></footer> @@ -28,26 +28,26 @@ const renderer = { code(code, infostring, escaped) { - return '<code>\n' + code + '</code>\n' + return '<code>\n' + code + '\n</code>\n' }, blockquote(quote) { quote = quote.replace(/\n*$/, '').replace(/\\\\ /, '') return '> ' + quote.replace(/\n/g, '\n> ') + '\n\n' }, html(html) { - return '<code>\n' + html + '</code>\n' + return '<code>' + html + '</code>' }, heading(text, level, raw, slugger) { if (level == 1) - return '====== ' + text + ' ======\n\n' + return '\n====== ' + text + ' ======\n\n' if (level == 2) - return '===== ' + text + ' =====\n\n' + return '\n===== ' + text + ' =====\n\n' else if (level == 3) - return '==== ' + text + ' ====\n\n' + return '\n==== ' + text + ' ====\n\n' else if (level == 4) - return '=== ' + text + ' ===\n\n' + return '\n=== ' + text + ' ===\n\n' else - return '== ' + text + ' ==\n\n' + return '\n== ' + text + ' ==\n\n' }, hr() { return '\n----\n\n' @@ -69,13 +69,41 @@ const renderer = { return text + '\n\n' }, table(header, body) { - return 'TABLE(' + body + ')\n' + var colsizes = [] + var rows = (header + body).split('\n') + for (var row = 0; row < rows.length; row ++) { + var cols = rows[row].split('|') + for (var col = 0; col < cols.length; col ++) { + if (!colsizes[col] || colsizes[col] < cols[col].length) + colsizes[col] = cols[col].length + } + } + var res = '' + var rows = header.replace(/\n$/, '').split('\n') + for (var row = 0; row < rows.length; row ++) { + var cols = rows[row].split('|') + res += '^' + for (var col = 0; col < cols.length; col ++) { + res += ' ' + cols[col] + ' '.repeat(colsizes[col] - cols[col].length) + ' ^' + } + res += '\n' + } + var rows = body.replace(/\n$/, '').split('\n') + for (var row = 0; row < rows.length; row ++) { + var cols = rows[row].split('|') + res += '|' + for (var col = 0; col < cols.length; col ++) { + res += ' ' + cols[col] + ' '.repeat(colsizes[col] - cols[col].length) + ' |' + } + res += '\n' + } + return res + '\n' }, tablerow(content) { - return 'TABLEROW(' + content + ')\n' + return content.replace(/[|]$/, '') + '\n' }, tablecell(content, flags) { - return 'TABLECOL(' + content + ')\n' + return content + '|' }, strong(text) { return '**' + text + '**' @@ -93,7 +121,6 @@ const renderer = { return '<del>' + text + '</del>'; }, link(href, title, text) { - console.log('link ' + href + '|' + title + '|' + text) if (href == text) return '[[' + href + ']]' return '[[' + href + '|' + text + ']]' @@ -114,7 +141,6 @@ const renderer = { marked.use({renderer}); function convert_text() { - console.log('converting') let input = document.getElementById("text-input").value; let output = marked(input).replace(/\n\n\n*/g, '\n\n').replace(/^\n*/, '').replace(/\n*$/, ''); document.getElementById("text-output").value = output;