forked from eslint/eslint
-
Notifications
You must be signed in to change notification settings - Fork 0
/
interpolate.js
35 lines (28 loc) · 958 Bytes
/
interpolate.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* @fileoverview Interpolate keys from an object into a string with {{ }} markers.
* @author Jed Fox
*/
"use strict";
//------------------------------------------------------------------------------
// Public Interface
//------------------------------------------------------------------------------
module.exports = {
getPlaceholderMatcher() {
return /\{\{([^{}]+?)\}\}/gu;
},
interpolate(text, data) {
if (!data) {
return text;
}
const matcher = module.exports.getPlaceholderMatcher();
// Substitution content for any {{ }} markers.
return text.replace(matcher, (fullMatch, termWithWhitespace) => {
const term = termWithWhitespace.trim();
if (term in data) {
return data[term];
}
// Preserve old behavior: If parameter name not provided, don't replace it.
return fullMatch;
});
}
};