ROTATES 2
This commit is contained in:
@@ -1,70 +1,39 @@
|
||||
namespace QWERTYkez.WordProcessor;
|
||||
|
||||
/// <summary>
|
||||
/// Определяет тип разрыва или смены ориентации страницы, применяется к элементам следующим после замены
|
||||
/// </summary>
|
||||
public enum PageBreakType
|
||||
/// <summary> Определяет тип разрыва или смены ориентации страницы </summary>
|
||||
public enum BreakType
|
||||
{
|
||||
/// <summary>Без разрыва или смены ориентации.</summary>
|
||||
None,
|
||||
|
||||
/// <summary>Обычный разрыв страницы (новый лист).</summary>
|
||||
PageBreak,
|
||||
|
||||
/// <summary>Начать новую секцию с альбомной ориентацией страницы.</summary>
|
||||
NewLandscapeSection,
|
||||
|
||||
/// <summary>Начать новую секцию с книжной ориентацией страницы.</summary>
|
||||
NewPortraitSection,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Представляет элемент замены текста, содержащий сам текст и указание
|
||||
/// на тип разрыва или смены ориентации, который должен быть применён
|
||||
/// после вставки этого текста.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Используется в методах множественной замены, например,
|
||||
/// <see cref="IWordWriter.ReplaceItem(string, IEnumerable{ReplaceItem})"/>.
|
||||
/// </remarks>
|
||||
public readonly struct ReplaceItem
|
||||
public class ReplaceItem
|
||||
{
|
||||
/// <summary>
|
||||
/// Инициализирует новый экземпляр <see cref="ReplaceItem"/> с пустым текстом
|
||||
/// и типом разрыва <see cref="PageBreakType.None"/>.
|
||||
/// </summary>
|
||||
public ReplaceItem() { }
|
||||
private ReplaceItem() { }
|
||||
public ReplaceItem(string text) => _Text = text;
|
||||
public ReplaceItem(BreakType item) => _BreakValue = item;
|
||||
|
||||
/// <summary>
|
||||
/// Инициализирует новый экземпляр <see cref="ReplaceItem"/> с указанным текстом
|
||||
/// и типом разрыва/смены ориентации.
|
||||
/// </summary>
|
||||
/// <param name="text">Текст, который будет вставлен вместо плейсхолдера.</param>
|
||||
/// <param name="splitValue">
|
||||
/// Тип разрыва или смены ориентации, который будет применён после вставки текста.
|
||||
/// По умолчанию <see cref="PageBreakType.None"/>.
|
||||
/// </param>
|
||||
public ReplaceItem(string text, PageBreakType splitValue = PageBreakType.None)
|
||||
{
|
||||
Text = text;
|
||||
SplitValue = splitValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получает текст, который будет вставлен вместо плейсхолдера.
|
||||
/// </summary>
|
||||
public string Text { get; init; } = string.Empty;
|
||||
public static implicit operator ReplaceItem(string text) => new(text);
|
||||
public static implicit operator ReplaceItem(BreakType item) => item switch
|
||||
{
|
||||
BreakType.PageBreak => PageBreak,
|
||||
BreakType.NewLandscapeSection => NewLandscapeSection,
|
||||
BreakType.NewPortraitSection => NewPortraitSection,
|
||||
_ => throw new NotImplementedException()
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Получает тип разрыва или смены ориентации, который будет применён
|
||||
/// после вставки текста.
|
||||
/// </summary>
|
||||
public PageBreakType SplitValue { get; init; } = PageBreakType.None;
|
||||
public static ReplaceItem PageBreak { get; } = new() { _BreakValue = BreakType.PageBreak };
|
||||
public static ReplaceItem NewLandscapeSection { get; } = new() { _BreakValue = BreakType.NewLandscapeSection };
|
||||
public static ReplaceItem NewPortraitSection { get; } = new() { _BreakValue = BreakType.NewPortraitSection };
|
||||
|
||||
/// <summary>
|
||||
/// Определяет явное преобразование из строки в <see cref="ReplaceItem"/>.
|
||||
/// </summary>
|
||||
/// <param name="text">Строка текста.</param>
|
||||
/// <returns>Новый экземпляр <see cref="ReplaceItem"/> с указанным текстом и <see cref="PageBreakType.None"/>.</returns>
|
||||
public static explicit operator ReplaceItem(string text) => new() { Text = text };
|
||||
public string Text => _Text;
|
||||
public string _Text = string.Empty;
|
||||
|
||||
public BreakType? BreakValue => _BreakValue;
|
||||
public BreakType? _BreakValue;
|
||||
}
|
||||
Reference in New Issue
Block a user