import assert from 'node:assert/strict' import test from 'node:test' import { isMarkdownTableRow, isMarkdownTableSeparator, parseMarkdownTableAlignment, parseMarkdownTableBlock, splitMarkdownTableRow } from '../lib/markdown-table.js' test('마크다운 표 행과 구분선을 판별한다', () => { assert.equal(isMarkdownTableRow('| 제목 | 값 |'), true) assert.equal(isMarkdownTableRow('제목 | 값'), false) assert.equal(isMarkdownTableSeparator('| --- | :---: | ---: |'), true) assert.equal(isMarkdownTableSeparator('| 제목 | 값 |'), false) }) test('마크다운 표 셀과 정렬 값을 파싱한다', () => { assert.deepEqual(splitMarkdownTableRow('| A | B\\|C |'), ['A', 'B|C']) assert.equal(parseMarkdownTableAlignment('---'), 'left') assert.equal(parseMarkdownTableAlignment(':---:'), 'center') assert.equal(parseMarkdownTableAlignment('---:'), 'right') }) test('마크다운 표 블록을 메타 정보로 변환한다', () => { assert.deepEqual(parseMarkdownTableBlock([ '| 이름 | 수량 | 비고 |', '| :--- | ---: | :---: |', '| 사과 | 2 | 빨강 |', '| 배 | 10 | 노랑 |', '', '다음 문단' ], 0), { headers: ['이름', '수량', '비고'], alignments: ['left', 'right', 'center'], rows: [ ['사과', '2', '빨강'], ['배', '10', '노랑'] ], endLine: 3, nextIndex: 4 }) }) test('구분선이 없으면 표 블록으로 처리하지 않는다', () => { assert.equal(parseMarkdownTableBlock([ '| 이름 | 수량 |', '| 사과 | 2 |' ], 0), null) })