51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
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)
|
|
})
|