const _ = require('lodash'); const Markdown = require('marked'); // Copied directly from Marked helpers.js source with permission const splitCells = function(tableRow, count) { // ensure that every cell-delimiting pipe has a space // before it to distinguish it from an escaped pipe const row = tableRow.replace(/\|/g, (match, offset, str)=>{ let escaped = false, curr = offset; while (--curr >= 0 && str[curr] === '\\') escaped = !escaped; if(escaped) { // odd number of slashes means | is escaped // so we leave it alone return '|'; } else { // add space before unescaped | return ' |'; } }), cells = row.split(/ \|/); let i = 0; if(cells.length > count) { cells.splice(count); } else { while (cells.length < count) cells.push(''); } for (; i < cells.length; i++) { // leading or trailing whitespace is ignored per the gfm spec cells[i] = cells[i].trim().replace(/\\\|/g, '|'); } return cells; }; const renderer = { // Adjust the way html is handled html(html) { html = _.trim(html); // Process the markdown within Divs if(_.startsWith(html, '