diff --git a/src/markdown/parse/blocks.ts b/src/markdown/parse/blocks.ts index 488a483..c6eedd9 100644 --- a/src/markdown/parse/blocks.ts +++ b/src/markdown/parse/blocks.ts @@ -378,7 +378,7 @@ function readBlockLine(walk: Walk, line: Line): void { return } if (leaf?.kind === 'pipe-table') { - const cells = pipeTableRow(walk.claims, removeColumns(line, largestOpenerIndentation).text) + const cells = leadingColumns(line) < indentedCodeColumns ? pipeTableRow(walk.claims, removeColumns(line, largestOpenerIndentation).text) : undefined if (cells !== undefined) { leaf.rows.push(cells) return @@ -421,7 +421,7 @@ function openLeaf(walk: Walk, line: Line): void { else pushFault(walk, directive.fault) return } - if (openGfmTable(walk, opener)) return + if (leadingColumns(line) < indentedCodeColumns && openGfmTable(walk, opener)) return const cells = walk.claims.pipeTables === false ? undefined : pipeCells(opener) if (cells !== undefined) { closeLeaf(walk) diff --git a/src/markdown/parse/markdown-to-adf.test.ts b/src/markdown/parse/markdown-to-adf.test.ts index 90be001..a15a024 100644 --- a/src/markdown/parse/markdown-to-adf.test.ts +++ b/src/markdown/parse/markdown-to-adf.test.ts @@ -237,6 +237,7 @@ test('claims the line a pipe opens and gives the rest back to the block walk', ( assert.deepEqual(content(losslessMarkdownToAdf('> | a |\n> | --- |\n')), [quote(header)]) assert.deepEqual(content(losslessMarkdownToAdf('- | a |\n | --- |\n')), [bulletList(item(header))]) assert.deepEqual(content(losslessMarkdownToAdf('| a |\n| --- |\n x\n')), [header, { content: [text('x')], type: 'codeBlock' }]) + assert.deepEqual(content(losslessMarkdownToAdf('| a | b |\n| --- | --- |\nc | d\n')), [table(row(cell('tableHeader', text('a')), cell('tableHeader', text('b')))), paragraph('c | d')]) assert.deepEqual(content(losslessMarkdownToAdf('\\| a |\n')), [paragraph('| a |')]) }) diff --git a/src/markdown/parse/portable-markdown-to-adf.test.ts b/src/markdown/parse/portable-markdown-to-adf.test.ts index c1777a1..64cb76a 100644 --- a/src/markdown/parse/portable-markdown-to-adf.test.ts +++ b/src/markdown/parse/portable-markdown-to-adf.test.ts @@ -293,6 +293,10 @@ test('reads GFM\'s pipe table without its leading pipes or with alignment colons assert.deepEqual(read('a | b\n--- | --- | ---\n'), [said('a | b --- | --- | ---')]) assert.deepEqual(read('- a | b\n--- | ---\n'), [bare('bulletList', bare('listItem', said('a | b --- | ---')))]) assert.deepEqual(read('a | b\n--- | ---\nc\n'), [bare('table', table.content?.[0] ?? said('')), said('c')]) + assert.deepEqual(read('a | b\nc | d\n'), [said('a | b c | d')]) + assert.deepEqual(read('| a | b |\n| --- | --- |\n | c | d |\n'), [bare('table', table.content?.[0] ?? said('')), bare('codeBlock', text('| c | d |'))]) + assert.deepEqual(read('a | b\n--- | ---\n c | d\n'), [bare('table', table.content?.[0] ?? said('')), bare('codeBlock', text('c | d'))]) + assert.deepEqual(read('a | b\n --- | ---\nc | d\n'), [said('a | b --- | --- c | d')]) const ragged = portableMarkdownToAdf('Intro.\na | b\n--- | ---\nc | d | e\n') assert.deepEqual(ragged.ok ? undefined : [ragged.error.code, ragged.error.position], ['malformed-pipe-table', { line: 2, offset: 7 }]) })