Skip to content

Commit 5052ac6

Browse files
author
Adam Jenkins
committed
Add interpolator
1 parent 90272d6 commit 5052ac6

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

Diff for: src/interpolate.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export const defaultInterpolation = /\{\{\s*(.+?)\s*\}\}/g
2+
3+
export const needsInterpolation = (rule,regexp) => regexp.test(rule.toJSON(true));
4+
5+
export const interpolateDeep = (o, params, regexp, resolver) => {
6+
if (!o || typeof o === 'number' || typeof o === 'boolean') return o;
7+
8+
if (typeof o === 'string') return o.replace(regexp, (_, matched) => resolver(params,matched))
9+
10+
if (Array.isArray(o)) return o.map(t => interpolateDeep(t, params, regexp, resolver));
11+
12+
return Object.entries(o).reduce((acc, [k, v]) => ({...acc,[k]: interpolateDeep(v, params, regexp, resolver)}),{});
13+
};

0 commit comments

Comments
 (0)