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

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,76 @@
using System.Collections.Generic;
using System.IO;
using AngleSharp.Dom;
using Newtonsoft.Json.Linq;
using Pf2e.Database.Model.Base.Targets;
using Pf2e.Database.Model.Structure;
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
/// <summary>
/// Глобальные константы и утилиты для импорта данных в формате Foundry En.
/// </summary>
internal class FoundryEnGlobals
{
/// <summary>
/// Цель внешних ссылок для Foundry En.
/// </summary>
public ExternalTarget FoundryTarget { get; set; } = null!;
/// <summary>
/// Список идентификаторв пропускаемых сущностей.
/// </summary>
public List<string> Ignore { get; } = [];
/// <summary>
/// Словарей суффиксов для сущностей.
/// </summary>
public Dictionary<string, string> SlugSuffixes { get; } = [];
/// <summary>
/// Словарь соответствий идентификаторов Aonprd к Foundry En.
/// </summary>
public Dictionary<string, string> MatchToAonprd { get; } = [];
/// <summary>
/// Конструктор класса <see cref="FoundryEnGlobals"/>.
/// </summary>
public FoundryEnGlobals()
{
using StreamReader fileReader = new("Resources\\ImportAdaptation.json");
JObject? json = JObject
.Parse(fileReader.ReadToEnd())
.SelectToken("Foundry")
?.ToObject<JObject>();
if (json is not null)
{
Ignore = json.SelectToken("Ignore")?.ToObject<List<string>>() ?? []; // JsonToDictionary(json, "Ignore");
SlugSuffixes = JsonToDictionary(json, "SlugSuffixes");
MatchToAonprd = JsonToDictionary(json, "MatchToAonprd");
}
}
/// <summary>
/// Получить суффикс для ссылки.
/// </summary>
/// <param name="id">Идентификатор Aonprd.</param>
/// <returns>Суффикс для ссылки или пустая строка.</returns>
public string GetSlugSuffix(string id)
{
return SlugSuffixes.TryGetValue(id, out string? slug) ? $"-{slug}" : string.Empty;
}
/// <summary>
/// Преобразовать JSON-объект в словарь.
/// </summary>
/// <param name="json">Исходный JSON-объект.</param>
/// <param name="tokenPath">Путь к токену в JSON.</param>
/// <returns>Результирующий словарь.</returns>
public static Dictionary<string, string> JsonToDictionary(JObject json, string tokenPath)
{
return json.SelectToken(tokenPath)?.ToObject<Dictionary<string, string>>() ?? [];
}
}