마크다운 표 파싱 로직 분리
This commit is contained in:
50
tests/markdown-table.test.js
Normal file
50
tests/markdown-table.test.js
Normal file
@@ -0,0 +1,50 @@
|
||||
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)
|
||||
})
|
||||
Reference in New Issue
Block a user