• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * @fileoverview Interpolate keys from an object into a string with {{ }} markers.
3 * @author Jed Fox
4 */
5
6"use strict";
7
8//------------------------------------------------------------------------------
9// Public Interface
10//------------------------------------------------------------------------------
11
12module.exports = (text, data) => {
13    if (!data) {
14        return text;
15    }
16
17    // Substitution content for any {{ }} markers.
18    return text.replace(/\{\{([^{}]+?)\}\}/gu, (fullMatch, termWithWhitespace) => {
19        const term = termWithWhitespace.trim();
20
21        if (term in data) {
22            return data[term];
23        }
24
25        // Preserve old behavior: If parameter name not provided, don't replace it.
26        return fullMatch;
27    });
28};
29