Глобальный рефакторинг пространств имён

This commit is contained in:
2025-10-02 13:29:30 +04:00
parent d23d81fb53
commit 2fa94851cb
3176 changed files with 27146 additions and 30584 deletions
@@ -0,0 +1,35 @@
using System;
namespace Pf2e.Scrapper.Processors.Attributes;
/// <summary>
/// Абстрактный аттрибут обработчика.
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
internal class AbstractProcessorAttribute(string name) : Attribute
{
/// <summary>
/// Название обработчика.
/// </summary>
public string Name { get; } = name;
/// <summary>
/// Описание обработчика.
/// </summary>
public string Description { get; init; } = name;
/// <summary>
/// Группа обработчиков, к которому относится обработчик.
/// </summary>
public ProcessorGroupEnum Group { get; init; } = ProcessorGroupEnum.General;
/// <summary>
/// Процессор включён по умолчанию.
/// </summary>
public bool Active { get; init; } = true;
/// <summary>
/// Разрешить выполнять процессов в параллельном режиме
/// </summary>
public bool Parallel { get; init; } = false;
}
@@ -0,0 +1,10 @@
using System;
namespace Pf2e.Scrapper.Processors.Attributes;
/// <summary>
/// Общий аттрибут обработчика.
/// </summary>
/// <param name="name">Название обработчика.</param>
[AttributeUsage(AttributeTargets.Class)]
internal class ProcessorAttribute(string name) : AbstractProcessorAttribute(name) { }
@@ -0,0 +1,22 @@
using System;
namespace Pf2e.Scrapper.Processors.Attributes;
/// <summary>
/// Аттрибут обработчика набор элементов.
/// </summary>
/// <param name="name">Название обработчика.</param>
[AttributeUsage(AttributeTargets.Class)]
internal class ProcessorCollectionAttribute(string name) : AbstractProcessorAttribute(name)
{
/// <summary>
/// Название типов, который обрабатывает этот оброботчик.
/// <c>null</c> - обработать все типы.
/// </summary>
public required string? InnerType { get; init; }
/// <summary>
/// Тип используемого компендиума.
/// </summary>
public required ProcessorCompendiumEnum CompendiumType { get; init; }
}
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
namespace Pf2e.Scrapper.Processors.Attributes;
/// <summary>
/// Аттрибут зависимостей обработчика.
/// </summary>
/// <param name="dependencies">Коллекция названий обработчиков, которые должны быть выполнены до этого оброботчика.</param>
[AttributeUsage(AttributeTargets.Class)]
public class ProcessorDependenciesAttribute(string[] dependencies) : Attribute
{
/// <summary>
/// Коллекция названий обработчиков, которые должны быть выполнены до этого оброботчика.
/// </summary>
public ICollection<string> Dependencies { get; } = dependencies;
}
@@ -0,0 +1,11 @@
using System;
namespace Pf2e.Scrapper.Processors.Attributes;
internal class ProcessorFactoryAttribute(string name) : AbstractProcessorAttribute(name)
{
/// <summary>
/// Тип обрабатывающего процессора
/// </summary>
public required Type ProcessorType { get; init; }
}
@@ -0,0 +1,109 @@
using System.ComponentModel;
using System.Reflection;
namespace Pf2e.Scrapper.Processors.Attributes;
/// <summary>
/// Перечисление для групп обработчиков.
/// </summary>
public enum ProcessorGroupEnum
{
/// <summary>
/// Общий обработчик.
/// </summary>
[Description("Общие процессоры")]
General,
/// <summary>
/// Обработчик для подготовки данных с сайта <see href="https://aonprd.com/">Archives of Nethys Pathfinder 2e</see>.
/// </summary>
[Description("Архивы Нефиса: Подготовка")]
AonprdPreparation,
/// <summary>
/// Обработчик основных сущностей с сайта <see href="https://aonprd.com/">Archives of Nethys Pathfinder 2e</see>.
/// </summary>
[Description("Архивы Нефиса: Основные сущности")]
AonprdEntities,
/// <summary>
/// Обработчик подклассов с сайта <see href="https://aonprd.com/">Archives of Nethys Pathfinder 2e</see>.
/// </summary>
[Description("Архивы Нефиса: Подклассы")]
AonprdSubclasses,
/// <summary>
/// Обработчик для завершения обработки данных с сайта <see href="https://aonprd.com/">Archives of Nethys Pathfinder 2e</see>.
/// </summary>
[Description("Архивы Нефиса: Завершение")]
AonprdFinalization,
/// <summary>
/// Обработчик для подготовки данных из модуля <see href="https://github.com/foundryvtt/pf2e">pf2e</see> для FoundryVTT.
/// </summary>
[Description("Foundry EN: Подготовка")]
FoundryEnPreparation,
/// <summary>
/// Обработчик основных сущностей из модуля <see href="https://github.com/foundryvtt/pf2e">pf2e</see> для FoundryVTT.
/// </summary>
[Description("Foundry EN: Основные сущности")]
FoundryEnEntities,
}
/// <summary>
/// Перечисление для типов компендиумов обработчиков.
/// </summary>
public enum ProcessorCompendiumEnum
{
/// <summary>
/// Компедиум Архивов Нефиса.
/// </summary>
Aonprd,
/// <summary>
/// Компедиум Foundry EN.
/// </summary>
FoundryEn,
}
/// <summary>
/// Перечисление для типов фабрик обработчиков.
/// </summary>
public enum ProcessorFactoryTypeEnum
{
/// <summary>
/// Простая фабрика одиночного обработчика.
/// </summary>
Simple,
/// <summary>
/// Фабрика для создания обработчиков, которые могут обрабатывать типы данных компедиума.
/// </summary>
Compendium,
/// <summary>
/// Фабрика для создания обработчиков, которые могут обрабатывать итераторы данных.
/// </summary>
Iterator,
}
/// <summary>
/// Расширение для перечисления <see cref="ProcessorGroupEnum"/>.
/// </summary>
public static class ProcessorGroupEnumExtension
{
/// <summary>
/// Получает описание группы обработчика из атрибута <see cref="DescriptionAttribute"/>.
/// </summary>
/// <param name="group">Перечисление группы обработчика.</param>
/// <returns>Строка с описанием группы обработчика.</returns>
public static string GetDescription(this ProcessorGroupEnum group)
{
return group
.GetType()
.GetField(group.ToString())
?.GetCustomAttribute<DescriptionAttribute>()
?.Description ?? group.ToString();
}
}