Skip to content

Commit 4108633

Browse files
committed
Add support for position tracking
1 parent 619e3bd commit 4108633

File tree

2 files changed

+34
-15
lines changed

2 files changed

+34
-15
lines changed

index.js

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
* @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension
1111
* @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle
1212
* @typedef {import('mdast-util-to-markdown').Context} ToMarkdownContext
13+
* @typedef {import('mdast-util-to-markdown').SafeOptions} SafeOptions
1314
*
1415
* @typedef Options
1516
* @property {boolean} [tableCellPadding=true]
@@ -142,9 +143,12 @@ export function gfmTableToMarkdown(options) {
142143
* @type {ToMarkdownHandle}
143144
* @param {Table} node
144145
*/
145-
function handleTable(node, _, context) {
146-
// @ts-expect-error: fixed in `markdown-table@3.0.1`.
147-
return serializeData(handleTableAsData(node, context), node.align)
146+
function handleTable(node, _, context, safeOptions) {
147+
return serializeData(
148+
handleTableAsData(node, context, safeOptions),
149+
// @ts-expect-error: fixed in `markdown-table@3.0.1`.
150+
node.align
151+
)
148152
}
149153

150154
/**
@@ -155,8 +159,8 @@ export function gfmTableToMarkdown(options) {
155159
* @type {ToMarkdownHandle}
156160
* @param {TableRow} node
157161
*/
158-
function handleTableRow(node, _, context) {
159-
const row = handleTableRowAsData(node, context)
162+
function handleTableRow(node, _, context, safeOptions) {
163+
const row = handleTableRowAsData(node, context, safeOptions)
160164
// `markdown-table` will always add an align row
161165
const value = serializeData([row])
162166
return value.slice(0, value.indexOf('\n'))
@@ -166,10 +170,11 @@ export function gfmTableToMarkdown(options) {
166170
* @type {ToMarkdownHandle}
167171
* @param {TableCell} node
168172
*/
169-
function handleTableCell(node, _, context) {
173+
function handleTableCell(node, _, context, safeOptions) {
170174
const exit = context.enter('tableCell')
171175
const subexit = context.enter('phrasing')
172176
const value = containerPhrasing(node, context, {
177+
...safeOptions,
173178
before: around,
174179
after: around
175180
})
@@ -179,8 +184,8 @@ export function gfmTableToMarkdown(options) {
179184
}
180185

181186
/**
182-
* @param {Array.<Array.<string>>} matrix
183-
* @param {Array.<string>} [align]
187+
* @param {Array<Array<string>>} matrix
188+
* @param {Array<string>} [align]
184189
*/
185190
function serializeData(matrix, align) {
186191
return markdownTable(matrix, {
@@ -194,16 +199,21 @@ export function gfmTableToMarkdown(options) {
194199
/**
195200
* @param {Table} node
196201
* @param {ToMarkdownContext} context
202+
* @param {SafeOptions} safeOptions
197203
*/
198-
function handleTableAsData(node, context) {
204+
function handleTableAsData(node, context, safeOptions) {
199205
const children = node.children
200206
let index = -1
201-
/** @type {Array.<Array.<string>>} */
207+
/** @type {Array<Array<string>>} */
202208
const result = []
203209
const subexit = context.enter('table')
204210

205211
while (++index < children.length) {
206-
result[index] = handleTableRowAsData(children[index], context)
212+
result[index] = handleTableRowAsData(
213+
children[index],
214+
context,
215+
safeOptions
216+
)
207217
}
208218

209219
subexit()
@@ -214,16 +224,25 @@ export function gfmTableToMarkdown(options) {
214224
/**
215225
* @param {TableRow} node
216226
* @param {ToMarkdownContext} context
227+
* @param {SafeOptions} safeOptions
217228
*/
218-
function handleTableRowAsData(node, context) {
229+
function handleTableRowAsData(node, context, safeOptions) {
219230
const children = node.children
220231
let index = -1
221-
/** @type {Array.<string>} */
232+
/** @type {Array<string>} */
222233
const result = []
223234
const subexit = context.enter('tableRow')
224235

225236
while (++index < children.length) {
226-
result[index] = handleTableCell(children[index], node, context)
237+
// Note: the positional info as used here is incorrect.
238+
// Making it correct would be impossible due to aligning cells?
239+
// And it would need copy/pasting `markdown-table` into this project.
240+
result[index] = handleTableCell(
241+
children[index],
242+
node,
243+
context,
244+
safeOptions
245+
)
227246
}
228247

229248
subexit()

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
],
3939
"dependencies": {
4040
"markdown-table": "^3.0.0",
41-
"mdast-util-to-markdown": "^1.0.0"
41+
"mdast-util-to-markdown": "^1.3.0"
4242
},
4343
"devDependencies": {
4444
"@types/tape": "^4.0.0",

0 commit comments

Comments
 (0)