From 725cb7bb923ca9e1ea3d7cdf8273d4d2a2d4fd38 Mon Sep 17 00:00:00 2001 From: Sir Robert Burbridge Date: Fri, 17 Nov 2023 11:12:15 -0500 Subject: [PATCH] Handle deeper interpolations. --- src/interpolate.mjs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/interpolate.mjs b/src/interpolate.mjs index 95cb3b9..1fd94b4 100644 --- a/src/interpolate.mjs +++ b/src/interpolate.mjs @@ -1,7 +1,7 @@ import { visitParents } from 'unist-util-visit-parents'; import { createContext, runInContext } from 'vm'; -export function interpolate (node, rootData, options = {}) { +export function interpolate(node, rootData, options = {}) { if (!node.data) { node.data = {}; } @@ -12,7 +12,7 @@ export function interpolate (node, rootData, options = {}) { return node; } -function getMaskedData (node, ancestors) { +function getMaskedData(node, ancestors) { let masked = { ...node.data }; for (let i = ancestors.length - 1; i >= 0; i--) { @@ -25,9 +25,10 @@ function getMaskedData (node, ancestors) { return masked; } -function interpolateNode (node, ancestors) { +function interpolateNode(node, ancestors) { const data = getMaskedData(node, ancestors); + // Interpolate properties if (node.properties && typeof node.properties === 'object') { for (const key in node.properties) { if (typeof node.properties[key] === 'string') { @@ -43,6 +44,11 @@ function interpolateNode (node, ancestors) { } } + // Interpolate text content for text nodes + if (node.type === 'text' && node.value) { + node.value = interpolateString(node.value, data.interp); + } + return node; }