|
26 | 26 | */ |
27 | 27 |
|
28 | 28 | // eslint-disable-next-line security/detect-unsafe-regex, sonarjs/slow-regex |
29 | | -const interpolationPattern = /{{\s*([^}|]+)(?:\|([^}|]+)\|([^}]+))?\s*}}/g; |
| 29 | +const interpolationPattern = /{{\s*([^|}]+)(?:\|([^|}]+)\|([^}]+))?\s*}}/g; |
30 | 30 |
|
31 | 31 | export function interpolate( |
32 | 32 | template: string, |
33 | 33 | variables: Record<string, string | number> = {} |
34 | 34 | ): string { |
35 | 35 | // eslint-disable-next-line unicorn/prefer-string-replace-all |
36 | | - return template.replace(interpolationPattern, (_match, variable, singular, plural) => { |
37 | | - const key = variable.trim(); |
38 | | - const value = variables[key]; |
| 36 | + return template.replace( |
| 37 | + interpolationPattern, |
| 38 | + (_match, variable, singular, plural) => { |
| 39 | + const key = variable.trim(); |
| 40 | + const value = variables[key]; |
39 | 41 |
|
40 | | - if (singular !== undefined && plural !== undefined) { |
41 | | - const count = Number(value); |
| 42 | + if (singular !== undefined && plural !== undefined) { |
| 43 | + const count = Number(value); |
42 | 44 |
|
43 | | - if (Number.isNaN(count)) return plural; |
44 | | - return count === 1 ? singular : plural; |
45 | | - } |
| 45 | + if (Number.isNaN(count)) return plural; |
| 46 | + return count === 1 ? singular : plural; |
| 47 | + } |
46 | 48 |
|
47 | | - return value == null ? '' : String(value); |
48 | | - }); |
| 49 | + return value == null ? '' : String(value); |
| 50 | + } |
| 51 | + ); |
49 | 52 | } |
0 commit comments