import { Meta, Source } from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/functional-basic/Functions/applyTemplate - Применение шаблона к тексту'/>

# `applyTemplate`

Утилита для замены меток в тексте на значения из объекта или массива.

**Параметры:**
- `text: string` — Исходный текст с шаблоном.
- `replacement: Record<string, string | number | boolean> | string[]` — Объект или массив со значениями.

**Форматы замены (replacement)**
- **Массив**: Используется для позиционных меток `%d`, `%e`, `%f` и далее по алфавиту.
- **Объект**: Используется для именованных меток в скобках `[key]` или `{key}`, а также для парных тегов `[tag]текст[/tag]`.

**Возвращает:**
`string` — Текст с подставленными значениями.

## Примеры

<Source
  language='typescript'
  code={`
import { applyTemplate } from '@dxtmisha/functional-basic'

// 1. Позиционные маркеры (массив)
applyTemplate('Привет, %d %e!', ['Иван', 'Иванов']) // 'Привет, Иван Иванов!'

// 2. Именованные маркеры (объект)
applyTemplate('Цена: [price] {currency}', { price: 100, currency: 'USD' }) // 'Цена: 100 USD'

// 3. Обработка 0 и false
applyTemplate('Значение: [val]', { val: 0 })      // 'Значение: 0'
applyTemplate('Статус: [val]', { val: false })    // 'Статус: false'

// 4. Пропуск отсутствующих ключей
applyTemplate('Отсутствует: [none]', {})           // 'Отсутствует: [none]'

// 5. Парные теги с подстановкой контента
const tags = { link: '<a href="https://google.com">[content]</a>' }
applyTemplate('Нажми [link]здесь[/link]', tags)  // 'Нажми <a href="https://google.com">здесь</a>'

// 6. Макросы списка (выход за границы)
applyTemplate('Список: %d, %e, %f', ['A', 'B'])  // 'Список: A, B, '
  `}
/>
