21 lines
753 B
TypeScript
21 lines
753 B
TypeScript
/**
|
|||
|
|
* Подстановки в текстах блоков: {priceFirst}, {countries} и т. п. (D-029).
|
||
|
|
* Неизвестная подстановка остаётся как есть — так ошибку в админке видно на странице.
|
||
|
|
*/
|
||
|
|
export type Placeholders = Partial<Record<PlaceholderName, string>>
|
||
|
|
|
||
|
|
export const PLACEHOLDER_NAMES = [
|
||
|
|
'priceFirst',
|
||
|
|
'priceRenewal',
|
||
|
|
'priceMonth',
|
||
|
|
'priceYear',
|
||
|
|
'pricePerMonth',
|
||
|
|
'savings',
|
||
|
|
'countries',
|
||
|
|
'devices',
|
||
|
|
] as const
|
||
|
|
|
||
|
|
export type PlaceholderName = (typeof PLACEHOLDER_NAMES)[number]
|
||
|
|
|
||
|
|
export const fillPlaceholders = (text: string, values: Placeholders): string =>
|
||
|
|
text.replace(/\{(\w+)\}/g, (match, name: string) => values[name as PlaceholderName] ?? match)
|