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

<Meta title='@dxtmisha/ru/scripts/Classes/ComponentWikiFile - Утилита для файлов Wiki'/>

# Класс ComponentWikiFile

Специализированный утилитный класс, предназначенный для работы с отдельными файлами в процессе генерации вики. Он предоставляет надежные методы для чтения, записи и управления метаданными, такими как даты обновления и версионность файлов.

## Ключевые особенности

- **Управление метаданными** — автоматически извлекает и обновляет маркер "**Date: ...**" внутри содержимого файла.
- **Умная запись** — автоматически удаляет markdown-блоки кода при сохранении и выполняет запись только при изменении содержимого.
- **Поддержка версионности** — опционально сохраняет предыдущую версию файла, переименовывая её с суффиксом `__old.txt`.
- **Абстракция путей** — интегрируется с `PropertiesFile` для выполнения файловых операций с использованием согласованных сегментов пути.

## Инициализация

Инициализируйте с сегментами пути и конфигурацией для обработки даты и версионности.

**Параметры:**
- `paths: string[]` — сегменты пути к файлу.
- `isDate: boolean = false` — если `true`, автоматически управляет маркером даты в содержимом.
- `isOld: boolean = true` — если `true`, сохраняет предыдущую версию перед перезаписью.

```typescript
import { ComponentWikiFile } from '@dxtmisha/scripts'

const file = new ComponentWikiFile(['docs', 'Guide.mdx'], true, true)
```

## Методы

### Информация

- `getPath(): string` — возвращает полный абсолютный путь к файлу.
- `getDate(): Datetime` — извлекает и возвращает дату из содержимого файла.
- `read(): string` — считывает и возвращает всё содержимое файла.

### Управление

- `write(content: string): void` — записывает обработанное содержимое в файл, обрабатывая версионность и обновление даты, если это настроено.

## Примеры

### Управление обновлениями документации
Автоматическое обновление документации с сохранением резервной копии предыдущей версии.

```typescript
const docFile = new ComponentWikiFile(['wiki', 'MyComponent.mdx'], true, true)
docFile.write('# Новое содержимое')
```
