From 20691f8ab5e73fde271d3e72c865f95742bf6593 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Fri, 6 Aug 2021 16:45:22 -0400 Subject: [PATCH 1/3] Update markdown.js --- shared/naturalcrit/markdown.js | 44 +++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/shared/naturalcrit/markdown.js b/shared/naturalcrit/markdown.js index 3a341f379..438f68b37 100644 --- a/shared/naturalcrit/markdown.js +++ b/shared/naturalcrit/markdown.js @@ -284,16 +284,18 @@ const spanTable = { } } + let prevRow; + // Get any remaining header rows l = item.header.length; for (i = 1; i < l; i++) { - item.header[i] = splitCells(item.header[i], colCount); + item.header[i] = splitCells(item.header[i], colCount, item.header[i-1]); } // Get main table cells l = item.rows.length; for (i = 0; i < l; i++) { - item.rows[i] = splitCells(item.rows[i], colCount); + item.rows[i] = splitCells(item.rows[i], colCount, item.rows[i-1]); } // header child tokens @@ -330,7 +332,7 @@ const spanTable = { for (j = 0; j < row.length; j++) { cell = row[j]; text = this.parseInline(cell.tokens); - output += getTableCell(text, cell.colspan, 'th', token.align[col]); + output += getTableCell(text, cell.colspan, cell.rowspan, 'th', token.align[col]); col += cell.colspan; } output += ``; @@ -345,7 +347,7 @@ const spanTable = { for (j = 0; j < row.length; j++) { cell = row[j]; text = this.parseInline(cell.tokens); - output += getTableCell(text, cell.colspan, 'td', token.align[col]); + output += getTableCell(text, cell.colspan, cell.rowspan, 'td', token.align[col]); col += cell.colspan; } output += ``; @@ -357,14 +359,18 @@ const spanTable = { } }; -const getTableCell = (text, colspan, type, align)=>{ +const getTableCell = (text, colspan, rowspan, type, align)=>{ + if(!rowspan) { + return ''; + } const tag = `<${type}` + `${colspan > 1 ? ` colspan=${colspan}` : ''}` + + `${rowspan > 1 ? ` rowspan=${rowspan}` : ''}` + `${align ? ` align=${align}` : ''}>`; return `${tag + text}\n`; }; -const splitCells = (tableRow, count)=>{ +const splitCells = (tableRow, count, prevRow = [])=>{ // ensure that every cell-delimiting pipe has a space // before it to distinguish it from an escaped pipe const row = tableRow.replace(/(\|+)/g, (match, p1, offset, str)=>{ @@ -391,12 +397,34 @@ const splitCells = (tableRow, count)=>{ let numCols = 0; for (; i < cells.length; i++) { - const trimmedCell = cells[i].split(/(? numCols) + break; + } + } + numCols += cells[i].colspan; } From f23b661a4b4309b1804feb07f3e7f865cc2a05f1 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Fri, 6 Aug 2021 16:49:53 -0400 Subject: [PATCH 2/3] Lint --- shared/naturalcrit/markdown.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/shared/naturalcrit/markdown.js b/shared/naturalcrit/markdown.js index 438f68b37..2a6f0e3b9 100644 --- a/shared/naturalcrit/markdown.js +++ b/shared/naturalcrit/markdown.js @@ -284,8 +284,6 @@ const spanTable = { } } - let prevRow; - // Get any remaining header rows l = item.header.length; for (i = 1; i < l; i++) { @@ -332,7 +330,7 @@ const spanTable = { for (j = 0; j < row.length; j++) { cell = row[j]; text = this.parseInline(cell.tokens); - output += getTableCell(text, cell.colspan, cell.rowspan, 'th', token.align[col]); + output += getTableCell(text, cell, 'th', token.align[col]); col += cell.colspan; } output += ``; @@ -347,7 +345,7 @@ const spanTable = { for (j = 0; j < row.length; j++) { cell = row[j]; text = this.parseInline(cell.tokens); - output += getTableCell(text, cell.colspan, cell.rowspan, 'td', token.align[col]); + output += getTableCell(text, cell, 'td', token.align[col]); col += cell.colspan; } output += ``; @@ -359,13 +357,13 @@ const spanTable = { } }; -const getTableCell = (text, colspan, rowspan, type, align)=>{ - if(!rowspan) { +const getTableCell = (text, cell, type, align)=>{ + if(!cell.rowspan) { return ''; } const tag = `<${type}` - + `${colspan > 1 ? ` colspan=${colspan}` : ''}` - + `${rowspan > 1 ? ` rowspan=${rowspan}` : ''}` + + `${cell.colspan > 1 ? ` colspan=${cell.colspan}` : ''}` + + `${cell.rowspan > 1 ? ` rowspan=${cell.rowspan}` : ''}` + `${align ? ` align=${align}` : ''}>`; return `${tag + text}\n`; }; @@ -411,10 +409,10 @@ const splitCells = (tableRow, count, prevRow = [])=>{ let prevCols = 0; let j, prevCell; for (j = 0; j < prevRow.length; j++) { - let prevCell = prevRow[j]; + prevCell = prevRow[j]; if((prevCols == numCols) && (prevCell.colspan == cells[i].colspan)) { cells[i].rowSpanTarget = prevCell.rowSpanTarget ?? prevCell; - cells[i].rowSpanTarget.text += ' ' + cells[i].text.slice(0, -1); + cells[i].rowSpanTarget.text += ` ${cells[i].text.slice(0, -1)}`; cells[i].rowSpanTarget.rowspan += 1; cells[i].rowspan = 0; break; From 8103d7d31fb74463f9080327edbba29e513928f4 Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Fri, 6 Aug 2021 16:58:10 -0400 Subject: [PATCH 3/3] Update Classtable snippet --- .../editor/snippetbar/snippets/classtable.gen.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js index 867aa625e..c8a2d051f 100644 --- a/client/homebrew/editor/snippetbar/snippets/classtable.gen.js +++ b/client/homebrew/editor/snippetbar/snippets/classtable.gen.js @@ -70,9 +70,10 @@ module.exports = { let cantrips = 3; let spells = 1; let slots = 2; - return `
\n##### The ${classname}\n` + - `| Level | Proficiency Bonus | Features | Cantrips Known | Spells Known | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n`+ - `|:---:|:---:|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ + return `{{classTable,wide\n##### The ${classname}\n` + + `| Level | Proficiency | Features | Cantrips | Spells | --- Spell Slots Per Level --- |||||||||\n`+ + `| ^| Bonus ^| ^| Known ^| Known ^| 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |\n`+ + `|:-----:|:-----------:|:---------|:--------:|:------:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n${ _.map(levels, function(levelName, level){ const res = [ levelName, @@ -88,7 +89,7 @@ module.exports = { slots += _.random(0, 2); return `| ${res} |`; - }).join('\n')}\n
\n\n`; + }).join('\n')}\n}}\n\n`; }, half : function(){