node-talisman
Version:
A npm package for running Thoughtwork's Talisman tool
26 lines (18 loc) • 656 B
JavaScript
import isObject from "./isObject.js";
const replacePlaceholdersInTargetValue = value => {
const replacePlaceholders = placeholders => {
return Object.keys(placeholders).reduce((accum, placeholder) => accum.replace(new RegExp(`{${placeholder}}`, 'g'), placeholders[placeholder]), value);
};
replacePlaceholders.toString = () => value;
return replacePlaceholders;
};
const createDeepProxy = obj => new Proxy(obj, {
get(target, prop) {
const value = target[prop] || prop;
if (isObject(value)) {
return createDeepProxy(value);
}
return replacePlaceholdersInTargetValue(value);
}
});
export default createDeepProxy;