30 lines
843 B
JavaScript
30 lines
843 B
JavaScript
/**
|
|
* @typedef {import('hast').Text} Text
|
|
* @typedef {import('estree').Literal} Literal
|
|
* @typedef {import('estree-jsx').JSXExpressionContainer} JsxExpressionContainer
|
|
* @typedef {import('../state.js').State} State
|
|
*/
|
|
|
|
/**
|
|
* Turn a hast text node into an estree node.
|
|
*
|
|
* @param {Text} node
|
|
* hast node to transform.
|
|
* @param {State} state
|
|
* Info passed around about the current state.
|
|
* @returns {JsxExpressionContainer | void}
|
|
* JSX expression.
|
|
*/
|
|
export function text(node, state) {
|
|
const value = String(node.value || '')
|
|
|
|
if (value) {
|
|
/** @type {Literal} */
|
|
const result = {type: 'Literal', value}
|
|
state.inherit(node, result)
|
|
/** @type {JsxExpressionContainer} */
|
|
const container = {type: 'JSXExpressionContainer', expression: result}
|
|
state.patch(node, container)
|
|
return container
|
|
}
|
|
}
|