Handle deeper interpolations.

master
Sir Robert Burbridge 2023-11-17 11:12:15 -05:00
parent d258e2c749
commit 725cb7bb92
1 changed files with 9 additions and 3 deletions

View File

@ -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;
}