| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /**
- * @import {Table} from 'mdast'
- * @import {Element} from 'hast'
- * @import {State} from '../state.js'
- */
- import {pointEnd, pointStart} from 'unist-util-position'
- /**
- * Turn an mdast `table` node into hast.
- *
- * @param {State} state
- * Info passed around.
- * @param {Table} node
- * mdast node.
- * @returns {Element}
- * hast node.
- */
- export function table(state, node) {
- const rows = state.all(node)
- const firstRow = rows.shift()
- /** @type {Array<Element>} */
- const tableContent = []
- if (firstRow) {
- /** @type {Element} */
- const head = {
- type: 'element',
- tagName: 'thead',
- properties: {},
- children: state.wrap([firstRow], true)
- }
- state.patch(node.children[0], head)
- tableContent.push(head)
- }
- if (rows.length > 0) {
- /** @type {Element} */
- const body = {
- type: 'element',
- tagName: 'tbody',
- properties: {},
- children: state.wrap(rows, true)
- }
- const start = pointStart(node.children[1])
- const end = pointEnd(node.children[node.children.length - 1])
- if (start && end) body.position = {start, end}
- tableContent.push(body)
- }
- /** @type {Element} */
- const result = {
- type: 'element',
- tagName: 'table',
- properties: {},
- children: state.wrap(tableContent, true)
- }
- state.patch(node, result)
- return state.applyData(node, result)
- }
|