/** * @typedef {import('hast').ElementContent} ElementContent * * @typedef {import('mdast').Content} Content * @typedef {import('mdast').Reference} Reference * @typedef {import('mdast').Root} Root * * @typedef {import('./state.js').State} State */ /** * @typedef {Root | Content} Nodes * @typedef {Extract} References */ // To do: next major: always return array. /** * Return the content of a reference without definition as plain text. * * @param {State} state * Info passed around. * @param {References} node * Reference node (image, link). * @returns {ElementContent | Array} * hast content. */ export function revert(state, node) { const subtype = node.referenceType let suffix = ']' if (subtype === 'collapsed') { suffix += '[]' } else if (subtype === 'full') { suffix += '[' + (node.label || node.identifier) + ']' } if (node.type === 'imageReference') { return {type: 'text', value: '![' + node.alt + suffix} } const contents = state.all(node) const head = contents[0] if (head && head.type === 'text') { head.value = '[' + head.value } else { contents.unshift({type: 'text', value: '['}) } const tail = contents[contents.length - 1] if (tail && tail.type === 'text') { tail.value += suffix } else { contents.push({type: 'text', value: suffix}) } return contents }