@snipsonian/core
Version:
Core/base reusable javascript code snippets
20 lines (15 loc) • 691 B
text/typescript
interface IReplacePlaceholdersInput {
msg: string;
placeholders?: { [ key: string]: any }; // eslint-disable-line @typescript-eslint/no-explicit-any
}
export default function replacePlaceholders({ msg, placeholders = {} }: IReplacePlaceholdersInput): string {
const placeholderNames = Object.getOwnPropertyNames(placeholders);
return placeholderNames.reduce(
(prevMsgResult, placeholderName) => {
const placeholderValue = placeholders[placeholderName];
const regex = new RegExp(`{${placeholderName}}`, 'g');
return prevMsgResult.replace(regex, placeholderValue && placeholderValue.toString());
},
msg,
);
}