namespace QWERTYkez.WordProcessor;
///
/// Определяет тип разрыва или смены ориентации страницы, применяется к элементам следующим после замены
///
public enum PageBreakType
{
/// Без разрыва или смены ориентации.
None,
/// Обычный разрыв страницы (новый лист).
PageBreak,
/// Начать новую секцию с альбомной ориентацией страницы.
NewLandscapeSection,
/// Начать новую секцию с книжной ориентацией страницы.
NewPortraitSection,
}
///
/// Представляет элемент замены текста, содержащий сам текст и указание
/// на тип разрыва или смены ориентации, который должен быть применён
/// после вставки этого текста.
///
///
/// Используется в методах множественной замены, например,
/// .
///
public readonly struct ReplaceItem
{
///
/// Инициализирует новый экземпляр с пустым текстом
/// и типом разрыва .
///
public ReplaceItem() { }
///
/// Инициализирует новый экземпляр с указанным текстом
/// и типом разрыва/смены ориентации.
///
/// Текст, который будет вставлен вместо плейсхолдера.
///
/// Тип разрыва или смены ориентации, который будет применён после вставки текста.
/// По умолчанию .
///
public ReplaceItem(string text, PageBreakType splitValue = PageBreakType.None)
{
Text = text;
SplitValue = splitValue;
}
///
/// Получает текст, который будет вставлен вместо плейсхолдера.
///
public string Text { get; init; } = string.Empty;
///
/// Получает тип разрыва или смены ориентации, который будет применён
/// после вставки текста.
///
public PageBreakType SplitValue { get; init; } = PageBreakType.None;
///
/// Определяет явное преобразование из строки в .
///
/// Строка текста.
/// Новый экземпляр с указанным текстом и .
public static explicit operator ReplaceItem(string text) => new() { Text = text };
}