Набор мелких измнений за месяц

This commit is contained in:
2025-07-15 14:45:04 +04:00
parent 2ab05ee592
commit 843d0a4aa3
61 changed files with 954 additions and 37 deletions
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors').[AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor')
## AbstractEntityProcessor\.Context Property
Предоставляет механизм для освобождения неуправляемых ресурсов\.
```csharp
public Pf2eModel.Pf2eDbContext Context { get; }
```
#### Property Value
[Pf2eModel\.Pf2eDbContext](https://docs.microsoft.com/en-us/dotnet/api/Pf2eModel.Pf2eDbContext 'Pf2eModel\.Pf2eDbContext')
@@ -0,0 +1,14 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors').[AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor')
## AbstractEntityProcessor\.GetEntityName\(\) Method
Получает имя сущности из входных данных\.
```csharp
protected virtual string GetEntityName();
```
#### Returns
[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')
Имя сущности\.
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors').[AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor')
## AbstractEntityProcessor\.Globals Property
Класс\-помощник, хранящий необходимые глобальные данные\.
```csharp
public Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers.AonprdBuilderGlobals Globals { get; }
```
#### Property Value
[AonprdBuilderGlobals](AonprdBuilderGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers\.AonprdBuilderGlobals')
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors').[AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor')
## AbstractEntityProcessor\.Helper Property
Класс предоставляет методы для работы с базой данных\.
```csharp
public Pf2eDataScrapper.Helpers.DatabaseHelper Helper { get; }
```
#### Property Value
[DatabaseHelper](DatabaseHelper.md 'Pf2eDataScrapper\.Helpers\.DatabaseHelper')
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors').[AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor')
## AbstractEntityProcessor\.Name Property
Название сущности, которое будет использоваться для обработки данных\.
```csharp
public string Name { get; }
```
#### Property Value
[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')
@@ -39,7 +39,11 @@ Derived
| Properties | | | Properties | |
| :--- | :--- | | :--- | :--- |
| [Context](AbstractEntityProcessor.Context.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Context') | Предоставляет механизм для освобождения неуправляемых ресурсов\. |
| [Entity](AbstractEntityProcessor.Entity.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Entity') | Корневая сущность\. | | [Entity](AbstractEntityProcessor.Entity.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Entity') | Корневая сущность\. |
| [Globals](AbstractEntityProcessor.Globals.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Globals') | Класс\-помощник, хранящий необходимые глобальные данные\. |
| [Helper](AbstractEntityProcessor.Helper.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Helper') | Класс предоставляет методы для работы с базой данных\. |
| [Name](AbstractEntityProcessor.Name.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Name') | Название сущности, которое будет использоваться для обработки данных\. |
| [Object](AbstractEntityProcessor.Object.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Object') | Основная сущность\. | | [Object](AbstractEntityProcessor.Object.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Object') | Основная сущность\. |
| [Type](AbstractEntityProcessor.Type.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Type') | Тип сущности\. | | [Type](AbstractEntityProcessor.Type.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Type') | Тип сущности\. |
@@ -56,5 +60,6 @@ Derived
| [Check\(\)](AbstractEntityProcessor.Check().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Check\(\)') | Проверки необходимости импорта сущности\. | | [Check\(\)](AbstractEntityProcessor.Check().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Check\(\)') | Проверки необходимости импорта сущности\. |
| [GenerateJsonString\(ICollection&lt;string&gt;\)](AbstractEntityProcessor.GenerateJsonString(ICollection_string_).md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GenerateJsonString\(System\.Collections\.Generic\.ICollection\<string\>\)') | Генерация JSON\-строки из объектов, располагаюхися по путям, указанным в [paths](AbstractEntityProcessor.GenerateJsonString(ICollection_string_).md#Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.AbstractEntityProcessor.GenerateJsonString(System.Collections.Generic.ICollection_string_).paths 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GenerateJsonString\(System\.Collections\.Generic\.ICollection\<string\>\)\.paths')\. | | [GenerateJsonString\(ICollection&lt;string&gt;\)](AbstractEntityProcessor.GenerateJsonString(ICollection_string_).md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GenerateJsonString\(System\.Collections\.Generic\.ICollection\<string\>\)') | Генерация JSON\-строки из объектов, располагаюхися по путям, указанным в [paths](AbstractEntityProcessor.GenerateJsonString(ICollection_string_).md#Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.AbstractEntityProcessor.GenerateJsonString(System.Collections.Generic.ICollection_string_).paths 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GenerateJsonString\(System\.Collections\.Generic\.ICollection\<string\>\)\.paths')\. |
| [GetDescription\(\)](AbstractEntityProcessor.GetDescription().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GetDescription\(\)') | Сгенерировать описание сущности\. | | [GetDescription\(\)](AbstractEntityProcessor.GetDescription().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GetDescription\(\)') | Сгенерировать описание сущности\. |
| [GetEntityName\(\)](AbstractEntityProcessor.GetEntityName().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GetEntityName\(\)') | Получает имя сущности из входных данных\. |
| [Process\(\)](AbstractEntityProcessor.Process().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Process\(\)') | Основной метод обработки данных\. | | [Process\(\)](AbstractEntityProcessor.Process().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Process\(\)') | Основной метод обработки данных\. |
| [Save\(\)](AbstractEntityProcessor.Save().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Save\(\)') | Метод для сохранения изменений в базе данных\. | | [Save\(\)](AbstractEntityProcessor.Save().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Save\(\)') | Метод для сохранения изменений в базе данных\. |
@@ -17,6 +17,7 @@ Derived
&#8627; [AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor') &#8627; [AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor')
&#8627; [SkillProcessor](SkillProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Preparation\.SkillProcessor') &#8627; [SkillProcessor](SkillProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Preparation\.SkillProcessor')
&#8627; [SourceProcessor](SourceProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Preparation\.SourceProcessor') &#8627; [SourceProcessor](SourceProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Preparation\.SourceProcessor')
&#8627; [FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
Implements [IProcessor](IProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor') Implements [IProcessor](IProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor')
@@ -0,0 +1,27 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers](Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers').[AonprdBuilderGlobals](AonprdBuilderGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers\.AonprdBuilderGlobals')
## AonprdBuilderGlobals\.JsonToDictionary\(JObject, string\) Method
Преобразовать JSON\-объект в словарь\.
```csharp
public static System.Collections.Generic.Dictionary<string,string> JsonToDictionary(Newtonsoft.Json.Linq.JObject json, string tokenPath);
```
#### Parameters
<a name='Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers.AonprdBuilderGlobals.JsonToDictionary(Newtonsoft.Json.Linq.JObject,string).json'></a>
`json` [Newtonsoft\.Json\.Linq\.JObject](https://docs.microsoft.com/en-us/dotnet/api/Newtonsoft.Json.Linq.JObject 'Newtonsoft\.Json\.Linq\.JObject')
Исходный JSON\-объект\.
<a name='Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers.AonprdBuilderGlobals.JsonToDictionary(Newtonsoft.Json.Linq.JObject,string).tokenPath'></a>
`tokenPath` [System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')
Путь к токену в JSON\.
#### Returns
[System\.Collections\.Generic\.Dictionary&lt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[,](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[&gt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')
Результирующий словарь\.
@@ -28,3 +28,4 @@ Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.
| Methods | | | Methods | |
| :--- | :--- | | :--- | :--- |
| [GetSlugSuffix\(string\)](AonprdBuilderGlobals.GetSlugSuffix(string).md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers\.AonprdBuilderGlobals\.GetSlugSuffix\(string\)') | Получить суффикс для ссылки\. | | [GetSlugSuffix\(string\)](AonprdBuilderGlobals.GetSlugSuffix(string).md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers\.AonprdBuilderGlobals\.GetSlugSuffix\(string\)') | Получить суффикс для ссылки\. |
| [JsonToDictionary\(JObject, string\)](AonprdBuilderGlobals.JsonToDictionary(JObject,string).md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers\.AonprdBuilderGlobals\.JsonToDictionary\(Newtonsoft\.Json\.Linq\.JObject, string\)') | Преобразовать JSON\-объект в словарь\. |
@@ -0,0 +1,10 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.AddExternal\(\) Method
Генерация внешних ссылок сущности\.
```csharp
protected virtual void AddExternal();
```
@@ -0,0 +1,10 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.CheckEntity\(\) Method
Проверяет входные данные на наличие идентификатора сущности и игнорирует её, если она указана в списке игнорируемых\.
```csharp
public virtual void CheckEntity();
```
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.Context Property
Предоставляет механизм для освобождения неуправляемых ресурсов\.
```csharp
public Pf2eModel.Pf2eDbContext Context { get; }
```
#### Property Value
[Pf2eModel\.Pf2eDbContext](https://docs.microsoft.com/en-us/dotnet/api/Pf2eModel.Pf2eDbContext 'Pf2eModel\.Pf2eDbContext')
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.Entity Property
Основная сущность, которая будет использоваться для обработки данных\.
```csharp
public Pf2eModel.Model.Base.Entity Entity { get; }
```
#### Property Value
[Pf2eModel\.Model\.Base\.Entity](https://docs.microsoft.com/en-us/dotnet/api/Pf2eModel.Model.Base.Entity 'Pf2eModel\.Model\.Base\.Entity')
@@ -0,0 +1,37 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\(DatabaseHelper, Pf2eDbContext, FoundryEnGlobals, ProcessorInput\) Constructor
Абстрактный класс\-обработчик сущностей, полученных из молуля Foundry pf2e\.
Класс предназначен для обработки данных с помощью различных обработчиков,
для которых указан атрибут [ProcessorAttribute](ProcessorAttribute.md 'Pf2eDataScrapper\.Processors\.Attributes\.ProcessorAttribute')\.
```csharp
protected FoundryEnAbstractProcessor(Pf2eDataScrapper.Helpers.DatabaseHelper databaseHelper, Pf2eModel.Pf2eDbContext context, Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals globals, Pf2eDataScrapper.Processors.ProcessorInput input);
```
#### Parameters
<a name='Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.FoundryEnAbstractProcessor_TEntity_.FoundryEnAbstractProcessor(Pf2eDataScrapper.Helpers.DatabaseHelper,Pf2eModel.Pf2eDbContext,Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals,Pf2eDataScrapper.Processors.ProcessorInput).databaseHelper'></a>
`databaseHelper` [DatabaseHelper](DatabaseHelper.md 'Pf2eDataScrapper\.Helpers\.DatabaseHelper')
\[DI\] \<inheritdoc cref="T:Pf2eDataScrapper\.Helpers\.DatabaseHelper" /\>
<a name='Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.FoundryEnAbstractProcessor_TEntity_.FoundryEnAbstractProcessor(Pf2eDataScrapper.Helpers.DatabaseHelper,Pf2eModel.Pf2eDbContext,Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals,Pf2eDataScrapper.Processors.ProcessorInput).context'></a>
`context` [Pf2eModel\.Pf2eDbContext](https://docs.microsoft.com/en-us/dotnet/api/Pf2eModel.Pf2eDbContext 'Pf2eModel\.Pf2eDbContext')
\[DI\] \<inheritdoc cref="T:Pf2eModel\.Pf2eDbContext" /\>
<a name='Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.FoundryEnAbstractProcessor_TEntity_.FoundryEnAbstractProcessor(Pf2eDataScrapper.Helpers.DatabaseHelper,Pf2eModel.Pf2eDbContext,Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals,Pf2eDataScrapper.Processors.ProcessorInput).globals'></a>
`globals` [FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')
\[DI\] \<inheritdoc cref="T:Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals" /\>
<a name='Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.FoundryEnAbstractProcessor_TEntity_.FoundryEnAbstractProcessor(Pf2eDataScrapper.Helpers.DatabaseHelper,Pf2eModel.Pf2eDbContext,Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals,Pf2eDataScrapper.Processors.ProcessorInput).input'></a>
`input` [ProcessorInput](ProcessorInput.md 'Pf2eDataScrapper\.Processors\.ProcessorInput')
Объект обработки вводимого JSON\.
@@ -0,0 +1,14 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.GetEntityName\(\) Method
Получить имя сущности из входных данных\.
```csharp
protected virtual string GetEntityName();
```
#### Returns
[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')
Имя сущности\.
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.Globals Property
Глобальные константы и утилиты для импорта данных в формате Foundry En\.
```csharp
public Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals Globals { get; }
```
#### Property Value
[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.Helper Property
Класс предоставляет методы для работы с базой данных\.
```csharp
protected Pf2eDataScrapper.Helpers.DatabaseHelper Helper { protected get; }
```
#### Property Value
[DatabaseHelper](DatabaseHelper.md 'Pf2eDataScrapper\.Helpers\.DatabaseHelper')
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.Name Property
Название сущности, которое будет использоваться для обработки данных\.
```csharp
public string Name { get; }
```
#### Property Value
[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.Object Property
Подчинённая сущность, которая будет использоваться для обработки данных\.
```csharp
public TEntity Object { get; }
```
#### Property Value
[TEntity](FoundryEnAbstractProcessor_TEntity_.md#Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.FoundryEnAbstractProcessor_TEntity_.TEntity 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.TEntity')
@@ -0,0 +1,12 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.Process\(\) Method
Основной метод обработки данных\.
```csharp
public override void Process();
```
Implements [Process\(\)](IProcessor.Process().md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor\.Process\(\)')
@@ -0,0 +1,14 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.ResolveEntity\(\) Method
Разрешает сущность, основываясь на входных данных\.
```csharp
public virtual int ResolveEntity();
```
#### Returns
[System\.Int32](https://docs.microsoft.com/en-us/dotnet/api/System.Int32 'System\.Int32')
Идентификатор сущности\.
@@ -0,0 +1,12 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.Save\(\) Method
Метод для сохранения изменений в базе данных\.
```csharp
public override void Save();
```
Implements [Save\(\)](IProcessor.Save().md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor\.Save\(\)')
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.Type Property
Тип сущности\.
```csharp
public abstract Pf2eModel.Model.Enum.EntityType Type { get; }
```
#### Property Value
[Pf2eModel\.Model\.Enum\.EntityType](https://docs.microsoft.com/en-us/dotnet/api/Pf2eModel.Model.Enum.EntityType 'Pf2eModel\.Model\.Enum\.EntityType')
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>')
## FoundryEnAbstractProcessor\<TEntity\>\.View Property
Представление сущности, которое будет использоваться для обработки данных\.
```csharp
public Pf2eDataScrapper.Helpers.EntityView View { get; private set; }
```
#### Property Value
[EntityView](EntityView.md 'Pf2eDataScrapper\.Helpers\.EntityView')
@@ -0,0 +1,44 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors')
## FoundryEnAbstractProcessor\<TEntity\> Class
Абстрактный класс\-обработчик сущностей, полученных из молуля Foundry pf2e\.
Класс предназначен для обработки данных с помощью различных обработчиков,
для которых указан атрибут [ProcessorAttribute](ProcessorAttribute.md 'Pf2eDataScrapper\.Processors\.Attributes\.ProcessorAttribute')\.
```csharp
internal abstract class FoundryEnAbstractProcessor<TEntity> : Pf2eDataScrapper.Processors.Definitions.AbstractInputProcessor
where TEntity : class, Pf2eModel.Model.IEntity
```
#### Type parameters
<a name='Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.FoundryEnAbstractProcessor_TEntity_.TEntity'></a>
`TEntity`
Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System\.Object') &#129106; [AbstractInputProcessor](AbstractInputProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.AbstractInputProcessor') &#129106; FoundryEnAbstractProcessor<TEntity>
| Constructors | |
| :--- | :--- |
| [FoundryEnAbstractProcessor\(DatabaseHelper, Pf2eDbContext, FoundryEnGlobals, ProcessorInput\)](FoundryEnAbstractProcessor_TEntity_.FoundryEnAbstractProcessor(DatabaseHelper,Pf2eDbContext,FoundryEnGlobals,ProcessorInput).md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.FoundryEnAbstractProcessor\(Pf2eDataScrapper\.Helpers\.DatabaseHelper, Pf2eModel\.Pf2eDbContext, Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals, Pf2eDataScrapper\.Processors\.ProcessorInput\)') | Абстрактный класс\-обработчик сущностей, полученных из молуля Foundry pf2e\. Класс предназначен для обработки данных с помощью различных обработчиков, для которых указан атрибут [ProcessorAttribute](ProcessorAttribute.md 'Pf2eDataScrapper\.Processors\.Attributes\.ProcessorAttribute')\. |
| Properties | |
| :--- | :--- |
| [Context](FoundryEnAbstractProcessor_TEntity_.Context.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.Context') | Предоставляет механизм для освобождения неуправляемых ресурсов\. |
| [Entity](FoundryEnAbstractProcessor_TEntity_.Entity.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.Entity') | Основная сущность, которая будет использоваться для обработки данных\. |
| [Globals](FoundryEnAbstractProcessor_TEntity_.Globals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.Globals') | Глобальные константы и утилиты для импорта данных в формате Foundry En\. |
| [Helper](FoundryEnAbstractProcessor_TEntity_.Helper.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.Helper') | Класс предоставляет методы для работы с базой данных\. |
| [Name](FoundryEnAbstractProcessor_TEntity_.Name.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.Name') | Название сущности, которое будет использоваться для обработки данных\. |
| [Object](FoundryEnAbstractProcessor_TEntity_.Object.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.Object') | Подчинённая сущность, которая будет использоваться для обработки данных\. |
| [Type](FoundryEnAbstractProcessor_TEntity_.Type.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.Type') | Тип сущности\. |
| [View](FoundryEnAbstractProcessor_TEntity_.View.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.View') | Представление сущности, которое будет использоваться для обработки данных\. |
| Methods | |
| :--- | :--- |
| [AddExternal\(\)](FoundryEnAbstractProcessor_TEntity_.AddExternal().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.AddExternal\(\)') | Генерация внешних ссылок сущности\. |
| [CheckEntity\(\)](FoundryEnAbstractProcessor_TEntity_.CheckEntity().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.CheckEntity\(\)') | Проверяет входные данные на наличие идентификатора сущности и игнорирует её, если она указана в списке игнорируемых\. |
| [GetEntityName\(\)](FoundryEnAbstractProcessor_TEntity_.GetEntityName().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.GetEntityName\(\)') | Получить имя сущности из входных данных\. |
| [Process\(\)](FoundryEnAbstractProcessor_TEntity_.Process().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.Process\(\)') | Основной метод обработки данных\. |
| [ResolveEntity\(\)](FoundryEnAbstractProcessor_TEntity_.ResolveEntity().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.ResolveEntity\(\)') | Разрешает сущность, основываясь на входных данных\. |
| [Save\(\)](FoundryEnAbstractProcessor_TEntity_.Save().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>\.Save\(\)') | Метод для сохранения изменений в базе данных\. |
@@ -0,0 +1,10 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')
## FoundryEnGlobals\(\) Constructor
Конструктор класса [FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')\.
```csharp
public FoundryEnGlobals();
```
@@ -0,0 +1,21 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')
## FoundryEnGlobals\.GetSlugSuffix\(string\) Method
Получить суффикс для ссылки\.
```csharp
public string GetSlugSuffix(string id);
```
#### Parameters
<a name='Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals.GetSlugSuffix(string).id'></a>
`id` [System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')
Идентификатор Aonprd\.
#### Returns
[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')
Суффикс для ссылки или пустая строка\.
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')
## FoundryEnGlobals\.Ignore Property
Список идентификаторв пропускаемых сущностей\.
```csharp
public System.Collections.Generic.List<string> Ignore { get; }
```
#### Property Value
[System\.Collections\.Generic\.List&lt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1 'System\.Collections\.Generic\.List\`1')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[&gt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1 'System\.Collections\.Generic\.List\`1')
@@ -0,0 +1,27 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')
## FoundryEnGlobals\.JsonToDictionary\(JObject, string\) Method
Преобразовать JSON\-объект в словарь\.
```csharp
public static System.Collections.Generic.Dictionary<string,string> JsonToDictionary(Newtonsoft.Json.Linq.JObject json, string tokenPath);
```
#### Parameters
<a name='Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals.JsonToDictionary(Newtonsoft.Json.Linq.JObject,string).json'></a>
`json` [Newtonsoft\.Json\.Linq\.JObject](https://docs.microsoft.com/en-us/dotnet/api/Newtonsoft.Json.Linq.JObject 'Newtonsoft\.Json\.Linq\.JObject')
Исходный JSON\-объект\.
<a name='Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals.JsonToDictionary(Newtonsoft.Json.Linq.JObject,string).tokenPath'></a>
`tokenPath` [System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')
Путь к токену в JSON\.
#### Returns
[System\.Collections\.Generic\.Dictionary&lt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[,](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[&gt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')
Результирующий словарь\.
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')
## FoundryEnGlobals\.MatchToAonprd Property
Словарь соответствий идентификаторов Aonprd к Foundry En\.
```csharp
public System.Collections.Generic.Dictionary<string,string> MatchToAonprd { get; }
```
#### Property Value
[System\.Collections\.Generic\.Dictionary&lt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[,](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[&gt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')
## FoundryEnGlobals\.SlugSuffixes Property
Словарей суффиксов для сущностей\.
```csharp
public System.Collections.Generic.Dictionary<string,string> SlugSuffixes { get; }
```
#### Property Value
[System\.Collections\.Generic\.Dictionary&lt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[,](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[&gt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')
@@ -11,6 +11,18 @@ internal class FoundryEnGlobals
Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System\.Object') &#129106; FoundryEnGlobals Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System\.Object') &#129106; FoundryEnGlobals
| Constructors | |
| :--- | :--- |
| [FoundryEnGlobals\(\)](FoundryEnGlobals.FoundryEnGlobals().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.FoundryEnGlobals\(\)') | Конструктор класса [FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')\. |
| Properties | | | Properties | |
| :--- | :--- | | :--- | :--- |
| [FoundryTarget](FoundryEnGlobals.FoundryTarget.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.FoundryTarget') | Цель внешних ссылок для Foundry En\. | | [FoundryTarget](FoundryEnGlobals.FoundryTarget.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.FoundryTarget') | Цель внешних ссылок для Foundry En\. |
| [Ignore](FoundryEnGlobals.Ignore.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.Ignore') | Список идентификаторв пропускаемых сущностей\. |
| [MatchToAonprd](FoundryEnGlobals.MatchToAonprd.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.MatchToAonprd') | Словарь соответствий идентификаторов Aonprd к Foundry En\. |
| [SlugSuffixes](FoundryEnGlobals.SlugSuffixes.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.SlugSuffixes') | Словарей суффиксов для сущностей\. |
| Methods | |
| :--- | :--- |
| [GetSlugSuffix\(string\)](FoundryEnGlobals.GetSlugSuffix(string).md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.GetSlugSuffix\(string\)') | Получить суффикс для ссылки\. |
| [JsonToDictionary\(JObject, string\)](FoundryEnGlobals.JsonToDictionary(JObject,string).md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.JsonToDictionary\(Newtonsoft\.Json\.Linq\.JObject, string\)') | Преобразовать JSON\-объект в словарь\. |
@@ -0,0 +1,7 @@
#### [Pf2eDataScrapper](index.md 'index')
## Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors Namespace
| Classes | |
| :--- | :--- |
| [FoundryEnAbstractProcessor&lt;TEntity&gt;](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\<TEntity\>') | Абстрактный класс\-обработчик сущностей, полученных из молуля Foundry pf2e\. Класс предназначен для обработки данных с помощью различных обработчиков, для которых указан атрибут [ProcessorAttribute](ProcessorAttribute.md 'Pf2eDataScrapper\.Processors\.Attributes\.ProcessorAttribute')\. |
@@ -8,6 +8,7 @@
| :--- | :--- | | :--- | :--- |
| [EnumSolver&lt;TEnum&gt;](EnumSolver_TEnum_.md 'Pf2eDataScrapper\.Processors\.EnumSolver\<TEnum\>') | Абстрактный класс для разрешения значений перечислений\. | | [EnumSolver&lt;TEnum&gt;](EnumSolver_TEnum_.md 'Pf2eDataScrapper\.Processors\.EnumSolver\<TEnum\>') | Абстрактный класс для разрешения значений перечислений\. |
| [LegacyItemException](LegacyItemException.md 'Pf2eDataScrapper\.Processors\.LegacyItemException') | Исключение, показывающее, что обработка сущности пропускается как устаревшая\. | | [LegacyItemException](LegacyItemException.md 'Pf2eDataScrapper\.Processors\.LegacyItemException') | Исключение, показывающее, что обработка сущности пропускается как устаревшая\. |
| [ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') | Класс, выполняющий обработку коллекции обработчиков\. |
| [ProcessorInput](ProcessorInput.md 'Pf2eDataScrapper\.Processors\.ProcessorInput') | Класс для работы с JSON\-объектом\. | | [ProcessorInput](ProcessorInput.md 'Pf2eDataScrapper\.Processors\.ProcessorInput') | Класс для работы с JSON\-объектом\. |
| [ProcessorInput\.InvalidEnumStringException](ProcessorInput.InvalidEnumStringException.md 'Pf2eDataScrapper\.Processors\.ProcessorInput\.InvalidEnumStringException') | Исключение при неверном значении для перечисленния\. | | [ProcessorInput\.InvalidEnumStringException](ProcessorInput.InvalidEnumStringException.md 'Pf2eDataScrapper\.Processors\.ProcessorInput\.InvalidEnumStringException') | Исключение при неверном значении для перечисленния\. |
| [SilentSkipItemException](SilentSkipItemException.md 'Pf2eDataScrapper\.Processors\.SilentSkipItemException') | Исключение, показывающее, что обработка сущности пропускается без вывода сообщения\. | | [SilentSkipItemException](SilentSkipItemException.md 'Pf2eDataScrapper\.Processors\.SilentSkipItemException') | Исключение, показывающее, что обработка сущности пропускается без вывода сообщения\. |
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor')
## ProcessorExecutor\.Collection Property
Класс с коллекцией обработчиков\.
```csharp
public Pf2eDataScrapper.Processors.Collection.ProcessorCollection Collection { get; }
```
#### Property Value
[ProcessorCollection](ProcessorCollection.md 'Pf2eDataScrapper\.Processors\.Collection\.ProcessorCollection')
@@ -0,0 +1,14 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor')
## ProcessorExecutor\.Continue\(\) Method
Переходит к обработке следующего элемента в коллекции или завершает процесс, если все элементы были обработаны\.
```csharp
private void Continue();
```
### Remarks
Этот метод увеличивает текущий индекс и определяет, начинать ли обработку следующего элемента или завершить
процесс\. Если текущий индекс превышает количество элементов в коллекции, процесс помечается как завершенный\.
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor')
## ProcessorExecutor\.CurrentFactory Property
Текущая фабрика процессоров, которая используется для обработки\.
```csharp
private Pf2eDataScrapper.Processors.Factory.AbstractProcessorFactory CurrentFactory { private get; private set; }
```
#### Property Value
[AbstractProcessorFactory](AbstractProcessorFactory.md 'Pf2eDataScrapper\.Processors\.Factory\.AbstractProcessorFactory')
@@ -0,0 +1,20 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor')
## ProcessorExecutor\.IterateProcessors\(\) Method
Выполняет итерацию по всем процессорам, предоставленным текущей фабрикой\.
```csharp
private System.Collections.Generic.IEnumerable<Pf2eDataScrapper.Processors.Definitions.IProcessor> IterateProcessors();
```
#### Returns
[System\.Collections\.Generic\.IEnumerable&lt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.IEnumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')[IProcessor](IProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor')[&gt;](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.IEnumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')
Перечисляемая коллекция экземпляров [IProcessor](IProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor'),
представляющая процессоры, доступные в текущей фабрике\.
### Remarks
Этот метод выдает каждый процессор последовательно, позволяя вызывающему
обрабатывать их по одному за раз\. Отслеживание прогресса обновляется для каждого
процессора во время итерации\.
@@ -0,0 +1,29 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor')
## ProcessorExecutor\(ProcessorCollection, ProcessProgress, ApplicationSettings\) Constructor
Класс, выполняющий обработку коллекции обработчиков\.
```csharp
public ProcessorExecutor(Pf2eDataScrapper.Processors.Collection.ProcessorCollection collection, Pf2eDataScrapper.Helpers.ProcessProgress progress, Pf2eDataScrapper.ApplicationSettings settings);
```
#### Parameters
<a name='Pf2eDataScrapper.Processors.ProcessorExecutor.ProcessorExecutor(Pf2eDataScrapper.Processors.Collection.ProcessorCollection,Pf2eDataScrapper.Helpers.ProcessProgress,Pf2eDataScrapper.ApplicationSettings).collection'></a>
`collection` [ProcessorCollection](ProcessorCollection.md 'Pf2eDataScrapper\.Processors\.Collection\.ProcessorCollection')
\[DI\] \<inheritdoc cref="T:Pf2eDataScrapper\.Processors\.Collection\.ProcessorCollection" /\>
<a name='Pf2eDataScrapper.Processors.ProcessorExecutor.ProcessorExecutor(Pf2eDataScrapper.Processors.Collection.ProcessorCollection,Pf2eDataScrapper.Helpers.ProcessProgress,Pf2eDataScrapper.ApplicationSettings).progress'></a>
`progress` [ProcessProgress](ProcessProgress.md 'Pf2eDataScrapper\.Helpers\.ProcessProgress')
\[DI\] \<inheritdoc cref="T:Pf2eDataScrapper\.Helpers\.ProcessProgress" /\>
<a name='Pf2eDataScrapper.Processors.ProcessorExecutor.ProcessorExecutor(Pf2eDataScrapper.Processors.Collection.ProcessorCollection,Pf2eDataScrapper.Helpers.ProcessProgress,Pf2eDataScrapper.ApplicationSettings).settings'></a>
`settings` [ApplicationSettings](ApplicationSettings.md 'Pf2eDataScrapper\.ApplicationSettings')
\[DI\] \<inheritdoc cref="T:Pf2eDataScrapper\.ApplicationSettings" /\>
@@ -0,0 +1,35 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor')
## ProcessorExecutor\.RunProcessor\(IProcessor, ParallelLoopState, long\) Method
Запускает указанный процессор для выполнения операций обработки и сохранения\.
```csharp
private void RunProcessor(Pf2eDataScrapper.Processors.Definitions.IProcessor processor, System.Threading.Tasks.ParallelLoopState state, long arg3);
```
#### Parameters
<a name='Pf2eDataScrapper.Processors.ProcessorExecutor.RunProcessor(Pf2eDataScrapper.Processors.Definitions.IProcessor,System.Threading.Tasks.ParallelLoopState,long).processor'></a>
`processor` [IProcessor](IProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor')
Экземпляр процессора, выполняющий операции обработки и сохранения\.
<a name='Pf2eDataScrapper.Processors.ProcessorExecutor.RunProcessor(Pf2eDataScrapper.Processors.Definitions.IProcessor,System.Threading.Tasks.ParallelLoopState,long).state'></a>
`state` [System\.Threading\.Tasks\.ParallelLoopState](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.Tasks.ParallelLoopState 'System\.Threading\.Tasks\.ParallelLoopState')
Экземпляр [System\.Threading\.Tasks\.ParallelLoopState](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.Tasks.ParallelLoopState 'System\.Threading\.Tasks\.ParallelLoopState'), который можно использовать для управления выполнением
параллельного цикла\.
<a name='Pf2eDataScrapper.Processors.ProcessorExecutor.RunProcessor(Pf2eDataScrapper.Processors.Definitions.IProcessor,System.Threading.Tasks.ParallelLoopState,long).arg3'></a>
`arg3` [System\.Int64](https://docs.microsoft.com/en-us/dotnet/api/System.Int64 'System\.Int64')
Длинное значение, представляющее текущий индекс итерации или связанные данные для процессора\.
### Remarks
Если процессор выдает [SkipItemException](SkipItemException.md 'Pf2eDataScrapper\.Processors\.SkipItemException'), сообщение об исключении
регистрируется как информационный прогресс\. Если выдается [SilentSkipItemException](SilentSkipItemException.md 'Pf2eDataScrapper\.Processors\.SilentSkipItemException'),
оно молча игнорируется\.
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor')
## ProcessorExecutor\.Settings Property
Настройки программы\.
```csharp
public Pf2eDataScrapper.ApplicationSettings Settings { get; }
```
#### Property Value
[ApplicationSettings](ApplicationSettings.md 'Pf2eDataScrapper\.ApplicationSettings')
@@ -0,0 +1,10 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor')
## ProcessorExecutor\.Start\(\) Method
Запускает обработку коллекции обработчиков\.
```csharp
public void Start();
```
@@ -0,0 +1,17 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor')
## ProcessorExecutor\.StartItem\(\) Method
Инициирует обработку текущего элемента в коллекции\.
```csharp
private void StartItem();
```
### Remarks
Этот метод извлекает текущий элемент из коллекции, подготавливает связанную
фабрику и запускает фоновый обработчик для обработки задач элемента\. Обработка
выполняется параллельно, если конфигурация элемента это позволяет, со степенью
параллелизма, определяемой настройками приложения\. После завершения обработки метод
переходит к следующему шагу рабочего процесса\.
@@ -0,0 +1,13 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor')
## ProcessorExecutor\.\_currentIndex Field
Текущий индекс обрабатываемого элемента в коллекции\.
```csharp
private int _currentIndex;
```
#### Field Value
[System\.Int32](https://docs.microsoft.com/en-us/dotnet/api/System.Int32 'System\.Int32')
@@ -0,0 +1,34 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors')
## ProcessorExecutor Class
Класс, выполняющий обработку коллекции обработчиков\.
```csharp
internal sealed class ProcessorExecutor
```
Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System\.Object') &#129106; ProcessorExecutor
| Constructors | |
| :--- | :--- |
| [ProcessorExecutor\(ProcessorCollection, ProcessProgress, ApplicationSettings\)](ProcessorExecutor.ProcessorExecutor(ProcessorCollection,ProcessProgress,ApplicationSettings).md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.ProcessorExecutor\(Pf2eDataScrapper\.Processors\.Collection\.ProcessorCollection, Pf2eDataScrapper\.Helpers\.ProcessProgress, Pf2eDataScrapper\.ApplicationSettings\)') | Класс, выполняющий обработку коллекции обработчиков\. |
| Fields | |
| :--- | :--- |
| [\_currentIndex](ProcessorExecutor._currentIndex.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.\_currentIndex') | Текущий индекс обрабатываемого элемента в коллекции\. |
| Properties | |
| :--- | :--- |
| [Collection](ProcessorExecutor.Collection.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.Collection') | Класс с коллекцией обработчиков\. |
| [CurrentFactory](ProcessorExecutor.CurrentFactory.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.CurrentFactory') | Текущая фабрика процессоров, которая используется для обработки\. |
| [Settings](ProcessorExecutor.Settings.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.Settings') | Настройки программы\. |
| Methods | |
| :--- | :--- |
| [Continue\(\)](ProcessorExecutor.Continue().md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.Continue\(\)') | Переходит к обработке следующего элемента в коллекции или завершает процесс, если все элементы были обработаны\. |
| [IterateProcessors\(\)](ProcessorExecutor.IterateProcessors().md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.IterateProcessors\(\)') | Выполняет итерацию по всем процессорам, предоставленным текущей фабрикой\. |
| [RunProcessor\(IProcessor, ParallelLoopState, long\)](ProcessorExecutor.RunProcessor(IProcessor,ParallelLoopState,long).md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.RunProcessor\(Pf2eDataScrapper\.Processors\.Definitions\.IProcessor, System\.Threading\.Tasks\.ParallelLoopState, long\)') | Запускает указанный процессор для выполнения операций обработки и сохранения\. |
| [Start\(\)](ProcessorExecutor.Start().md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.Start\(\)') | Запускает обработку коллекции обработчиков\. |
| [StartItem\(\)](ProcessorExecutor.StartItem().md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.StartItem\(\)') | Инициирует обработку текущего элемента в коллекции\. |
+1
View File
@@ -18,6 +18,7 @@
| [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn](Pf2eDataScrapper.Importers.Implementations.FoundryEn.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn') | Импортёр данных из модуля [pf2e](https://github.com/foundryvtt/pf2e 'https://github\.com/foundryvtt/pf2e') для FoundryVTT\. | | [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn](Pf2eDataScrapper.Importers.Implementations.FoundryEn.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn') | Импортёр данных из модуля [pf2e](https://github.com/foundryvtt/pf2e 'https://github\.com/foundryvtt/pf2e') для FoundryVTT\. |
| [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Compendium](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Compendium') | Компендиум данных из модуля [pf2e](https://github.com/foundryvtt/pf2e 'https://github\.com/foundryvtt/pf2e') для FoundryVTT\. | | [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Compendium](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Compendium') | Компендиум данных из модуля [pf2e](https://github.com/foundryvtt/pf2e 'https://github\.com/foundryvtt/pf2e') для FoundryVTT\. |
| [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers') | | | [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers') | |
| [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors') | |
| [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.Preparation](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Preparation.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.Preparation') | Обработчики для подготовки данных из модуля [pf2e](https://github.com/foundryvtt/pf2e 'https://github\.com/foundryvtt/pf2e') для FoundryVTT\. | | [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.Preparation](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Preparation.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.Preparation') | Обработчики для подготовки данных из модуля [pf2e](https://github.com/foundryvtt/pf2e 'https://github\.com/foundryvtt/pf2e') для FoundryVTT\. |
| [Pf2eDataScrapper\.Importers\.Repositories](Pf2eDataScrapper.Importers.Repositories.md 'Pf2eDataScrapper\.Importers\.Repositories') | Общее описание репозиториев для хранения данных, которые используются в импортёрах и процессорах\. | | [Pf2eDataScrapper\.Importers\.Repositories](Pf2eDataScrapper.Importers.Repositories.md 'Pf2eDataScrapper\.Importers\.Repositories') | Общее описание репозиториев для хранения данных, которые используются в импортёрах и процессорах\. |
| [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors') | Общее описание обработчиков данных\. | | [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors') | Общее описание обработчиков данных\. |
@@ -0,0 +1,13 @@
#### [Pf2eModel](index.md 'index')
### [Pf2eModel\.Model\.Base](Pf2eModel.Model.Base.md 'Pf2eModel\.Model\.Base').[Entity](Entity.md 'Pf2eModel\.Model\.Base\.Entity')
## Entity\.IsLegacy Property
Флаг, указывающий, что сущность является устаревшей\.
```csharp
public System.Nullable<bool> IsLegacy { get; set; }
```
#### Property Value
[System\.Nullable&lt;](https://docs.microsoft.com/en-us/dotnet/api/System.Nullable-1 'System\.Nullable\`1')[System\.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System\.Boolean')[&gt;](https://docs.microsoft.com/en-us/dotnet/api/System.Nullable-1 'System\.Nullable\`1')
+1
View File
@@ -19,6 +19,7 @@ Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.
| [Id](Entity.Id.md 'Pf2eModel\.Model\.Base\.Entity\.Id') | Идентификатор сущности\. | | [Id](Entity.Id.md 'Pf2eModel\.Model\.Base\.Entity\.Id') | Идентификатор сущности\. |
| [Img](Entity.Img.md 'Pf2eModel\.Model\.Base\.Entity\.Img') | Изображение сущности\. | | [Img](Entity.Img.md 'Pf2eModel\.Model\.Base\.Entity\.Img') | Изображение сущности\. |
| [IsChecked](Entity.IsChecked.md 'Pf2eModel\.Model\.Base\.Entity\.IsChecked') | Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи\. | | [IsChecked](Entity.IsChecked.md 'Pf2eModel\.Model\.Base\.Entity\.IsChecked') | Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи\. |
| [IsLegacy](Entity.IsLegacy.md 'Pf2eModel\.Model\.Base\.Entity\.IsLegacy') | Флаг, указывающий, что сущность является устаревшей\. |
| [IsTranslated](Entity.IsTranslated.md 'Pf2eModel\.Model\.Base\.Entity\.IsTranslated') | Флаг, указывающий, что у объекта существует перевод\. | | [IsTranslated](Entity.IsTranslated.md 'Pf2eModel\.Model\.Base\.Entity\.IsTranslated') | Флаг, указывающий, что у объекта существует перевод\. |
| [Keywords](Entity.Keywords.md 'Pf2eModel\.Model\.Base\.Entity\.Keywords') | Коллекция ключевых слов, связанных с сущностью\. | | [Keywords](Entity.Keywords.md 'Pf2eModel\.Model\.Base\.Entity\.Keywords') | Коллекция ключевых слов, связанных с сущностью\. |
| [LegacyEntities](Entity.LegacyEntities.md 'Pf2eModel\.Model\.Base\.Entity\.LegacyEntities') | Коллекция устаревших сущностей\. | | [LegacyEntities](Entity.LegacyEntities.md 'Pf2eModel\.Model\.Base\.Entity\.LegacyEntities') | Коллекция устаревших сущностей\. |
@@ -80,7 +80,13 @@ internal class AonprdBuilderGlobals
return SlugSuffixes.TryGetValue(id, out string? slug) ? $"-{slug}" : string.Empty; return SlugSuffixes.TryGetValue(id, out string? slug) ? $"-{slug}" : string.Empty;
} }
private Dictionary<string, string> JsonToDictionary(JObject json, string tokenPath) /// <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>>() ?? []; return json.SelectToken(tokenPath)?.ToObject<Dictionary<string, string>>() ?? [];
} }
@@ -63,6 +63,15 @@ internal abstract class AbstractEntityProcessor(
/// </summary> /// </summary>
public abstract IEntity Object { get; } public abstract IEntity Object { get; }
/// <summary>
/// Название сущности, которое будет использоваться для обработки данных.
/// </summary>
public string Name
{
get { return _name ??= GetEntityName(); }
}
private string? _name = null;
/// <summary> /// <summary>
/// Добавление основной сущности в контекст базы данных. /// Добавление основной сущности в контекст базы данных.
/// </summary> /// </summary>
@@ -93,7 +102,7 @@ internal abstract class AbstractEntityProcessor(
{ {
if (Globals.MergeSources.ContainsKey(Input.GetRequired<string>("id"))) if (Globals.MergeSources.ContainsKey(Input.GetRequired<string>("id")))
{ {
throw new SkipItemException(GetEntityName(), "помечено на слияние."); throw new SkipItemException(Name, "помечено на слияние.");
} }
} }
@@ -156,7 +165,7 @@ internal abstract class AbstractEntityProcessor(
/// Получает имя сущности из входных данных. /// Получает имя сущности из входных данных.
/// </summary> /// </summary>
/// <returns>Имя сущности.</returns> /// <returns>Имя сущности.</returns>
protected virtual string GetEntityName() => Input.GetRequired<string>("name"); protected virtual string GetEntityName() => Input.GetRequired<string>("name").Replace("’", "'");
/// <summary> /// <summary>
/// Генерация основных полей корневой сущности. /// Генерация основных полей корневой сущности.
@@ -169,7 +178,7 @@ internal abstract class AbstractEntityProcessor(
} }
Entity.Type = Type; Entity.Type = Type;
Entity.Name[LocaleType.English] = GetEntityName(); Entity.Name[LocaleType.English] = Name;
Entity.Img = ""; Entity.Img = "";
Entity.Description = GetDescription(); Entity.Description = GetDescription();
Entity.Rarity = Input.EnumOptional("rarity", EntityRarity.Common); Entity.Rarity = Input.EnumOptional("rarity", EntityRarity.Common);
@@ -34,6 +34,8 @@ internal class LegacyRemasterProcessors(ProcessorInput input) : AbstractInputPro
Context.Entities.FirstOrDefault(e => e.Id == entityId) Context.Entities.FirstOrDefault(e => e.Id == entityId)
?? throw new($"Неизвестная сущность с ID {entityId}"); ?? throw new($"Неизвестная сущность с ID {entityId}");
legacyEntity.IsLegacy = true;
foreach (int remasterId in GetEntityIds("remaster_id")) foreach (int remasterId in GetEntityIds("remaster_id"))
{ {
Context.LegacyRemasters.Add(new() { LegacyId = entityId, RemasterId = remasterId }); Context.LegacyRemasters.Add(new() { LegacyId = entityId, RemasterId = remasterId });
@@ -75,6 +75,8 @@ internal class MissingLegacyRemasterProcessor(string legacyId, string remasterId
new() { LegacyId = legacyEntity.Id, RemasterId = remasterEntity.Id } new() { LegacyId = legacyEntity.Id, RemasterId = remasterEntity.Id }
); );
legacyEntity.IsLegacy = true;
if (legacyEntity.Slug == remasterEntity.Slug) if (legacyEntity.Slug == remasterEntity.Slug)
{ {
legacyEntity.Slug += "-legacy"; legacyEntity.Slug += "-legacy";
@@ -1,4 +1,7 @@
using System.IO; using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using Pf2eDataScrapper.Helpers; using Pf2eDataScrapper.Helpers;
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium; using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
@@ -51,5 +54,14 @@ internal class CompendiumLoadProcessor(
Progress.Local.Complete(); Progress.Local.Complete();
} }
public void Save() { } public void Save()
{
List<AonprdCompendiumItem> result = Compendium.Items.OrderBy(item => item.Id).ToList();
Compendium.Items.Clear();
foreach (AonprdCompendiumItem item in result)
{
Compendium.Items.Add(item);
}
}
} }
@@ -1,8 +1,12 @@
using Pf2eDataScrapper.Helpers; using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using Newtonsoft.Json.Linq;
using Pf2eDataScrapper.Helpers;
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers; using Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers;
using Pf2eDataScrapper.Processors; using Pf2eDataScrapper.Processors;
using Pf2eDataScrapper.Processors.Attributes; using Pf2eDataScrapper.Processors.Attributes;
using Pf2eDataScrapper.Processors.Collection; using Pf2eModel.Model.Common.I18n;
using Pf2eModel.Model.Enum; using Pf2eModel.Model.Enum;
using StringHelper = Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers.StringHelper; using StringHelper = Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers.StringHelper;
@@ -16,7 +20,7 @@ namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Types;
Group = ProcessorGroupEnum.AonprdEntities Group = ProcessorGroupEnum.AonprdEntities
)] )]
[ProcessorDependencies(["aonprd:trait", "aonprd:source"])] [ProcessorDependencies(["aonprd:trait", "aonprd:source"])]
internal class ActionProcessor( internal partial class ActionProcessor(
ProcessorInput input, ProcessorInput input,
StringHelper stringHelper, StringHelper stringHelper,
DatabaseHelper helper, DatabaseHelper helper,
@@ -1,10 +1,9 @@
using System; using System.Collections.Generic;
using System.Collections.Generic; using System.IO;
using System.Linq; using AngleSharp.Dom;
using System.Text; using Newtonsoft.Json.Linq;
using System.Threading.Tasks;
using Pf2eModel.Model.Base.Source;
using Pf2eModel.Model.Base.Targets; using Pf2eModel.Model.Base.Targets;
using Pf2eModel.Model.Structure;
namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers; namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers;
@@ -17,4 +16,61 @@ internal class FoundryEnGlobals
/// Цель внешних ссылок для Foundry En. /// Цель внешних ссылок для Foundry En.
/// </summary> /// </summary>
public ExternalTarget FoundryTarget { get; set; } = null!; 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>>() ?? [];
}
} }
@@ -1,8 +1,13 @@
using Pf2eDataScrapper.Helpers; using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using Newtonsoft.Json.Linq;
using Pf2eDataScrapper.Helpers;
using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers; using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers;
using Pf2eDataScrapper.Processors; using Pf2eDataScrapper.Processors;
using Pf2eDataScrapper.Processors.Attributes; using Pf2eDataScrapper.Processors.Attributes;
using Pf2eModel; using Pf2eModel;
using Pf2eModel.Model.Common.I18n;
using Pf2eModel.Model.Enum; using Pf2eModel.Model.Enum;
namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Entities; namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Entities;
@@ -16,16 +21,16 @@ namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Entiti
Active = false Active = false
)] )]
[ProcessorDependencies(["foundry-en:compendium", "foundry-en:external"])] [ProcessorDependencies(["foundry-en:compendium", "foundry-en:external"])]
internal class ActionProcessor( internal partial class ActionProcessor(
DatabaseHelper databaseHelper, DatabaseHelper databaseHelper,
Pf2eDbContext context, Pf2eDbContext context,
FoundryEnGlobals enGlobals, FoundryEnGlobals globals,
ProcessorInput input ProcessorInput input
) )
: FoundryEnAbstractProcessor<Pf2eModel.Model.Structure.Action>( : FoundryEnAbstractProcessor<Pf2eModel.Model.Structure.Action>(
databaseHelper, databaseHelper,
context, context,
enGlobals, globals,
input input
) )
{ {
@@ -22,9 +22,9 @@ namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Entiti
internal class ConditionProcessor( internal class ConditionProcessor(
DatabaseHelper databaseHelper, DatabaseHelper databaseHelper,
Pf2eDbContext context, Pf2eDbContext context,
FoundryEnGlobals enGlobals, FoundryEnGlobals globals,
ProcessorInput input ProcessorInput input
) : FoundryEnAbstractProcessor<Condition>(databaseHelper, context, enGlobals, input) ) : FoundryEnAbstractProcessor<Condition>(databaseHelper, context, globals, input)
{ {
public override EntityType Type => EntityType.Condition; public override EntityType Type => EntityType.Condition;
@@ -25,12 +25,12 @@ namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors;
/// <typeparam name="TEntity"></typeparam> /// <typeparam name="TEntity"></typeparam>
/// <param name="databaseHelper">[DI] <inheritdoc cref="DatabaseHelper"/></param> /// <param name="databaseHelper">[DI] <inheritdoc cref="DatabaseHelper"/></param>
/// <param name="context">[DI] <inheritdoc cref="Pf2eDbContext"/></param> /// <param name="context">[DI] <inheritdoc cref="Pf2eDbContext"/></param>
/// <param name="enGlobals">[DI] <inheritdoc cref="FoundryEnGlobals"/></param> /// <param name="globals">[DI] <inheritdoc cref="FoundryEnGlobals"/></param>
/// <param name="input">Объект обработки вводимого JSON.</param> /// <param name="input">Объект обработки вводимого JSON.</param>
internal abstract class FoundryEnAbstractProcessor<TEntity>( internal abstract class FoundryEnAbstractProcessor<TEntity>(
DatabaseHelper databaseHelper, DatabaseHelper databaseHelper,
Pf2eDbContext context, Pf2eDbContext context,
FoundryEnGlobals enGlobals, FoundryEnGlobals globals,
ProcessorInput input ProcessorInput input
) : AbstractInputProcessor(input) ) : AbstractInputProcessor(input)
where TEntity : class, IEntity where TEntity : class, IEntity
@@ -42,7 +42,7 @@ internal abstract class FoundryEnAbstractProcessor<TEntity>(
public Pf2eDbContext Context { get; } = context; public Pf2eDbContext Context { get; } = context;
/// <inheritdoc cref="FoundryEnGlobals"/> /// <inheritdoc cref="FoundryEnGlobals"/>
public FoundryEnGlobals EnGlobals { get; } = enGlobals; public FoundryEnGlobals Globals { get; } = globals;
/// <summary> /// <summary>
/// Тип сущности. /// Тип сущности.
@@ -68,13 +68,46 @@ internal abstract class FoundryEnAbstractProcessor<TEntity>(
$"Сущность {View.SubEntity} некорректного типа, ожидался тип {typeof(TEntity)}." $"Сущность {View.SubEntity} некорректного типа, ожидался тип {typeof(TEntity)}."
); );
/// <summary>
/// Название сущности, которое будет использоваться для обработки данных.
/// </summary>
public string Name
{
get { return _name ??= GetEntityName(); }
}
private string? _name = null;
/// <summary>
/// Проверяет входные данные на наличие идентификатора сущности и игнорирует её, если она указана в списке игнорируемых.
/// </summary>
public virtual void CheckEntity()
{
string id = Input.GetRequired<string>("id");
if (Globals.Ignore.Any(s => s == id))
{
throw new SkipItemException(
id,
$"Сущность с идентификатором \"{id}\" пропущена, так как она указана в списке игнорируемых."
);
}
}
/// <summary> /// <summary>
/// Разрешает сущность, основываясь на входных данных. /// Разрешает сущность, основываясь на входных данных.
/// </summary> /// </summary>
/// <returns>Идентификатор сущности.</returns> /// <returns>Идентификатор сущности.</returns>
public virtual int ResolveEntity() public virtual int ResolveEntity()
{ {
string name = GetEntityName(); string name = Name;
if (Globals.MatchToAonprd.TryGetValue(name, out string? aonprdId))
{
return Context
.EntityExternals.Where(ex => ex.ExternalId == aonprdId)
.Select(ex => ex.EntityId)
.First();
}
try try
{ {
@@ -126,6 +159,8 @@ internal abstract class FoundryEnAbstractProcessor<TEntity>(
/// <inheritdoc/> /// <inheritdoc/>
public override void Process() public override void Process()
{ {
CheckEntity();
View = new(Context, Type, ResolveEntity()); View = new(Context, Type, ResolveEntity());
AddExternal(); AddExternal();
@@ -138,7 +173,7 @@ internal abstract class FoundryEnAbstractProcessor<TEntity>(
} }
/// <summary> /// <summary>
/// Получает имя сущности из входных данных. /// Получить имя сущности из входных данных.
/// </summary> /// </summary>
/// <returns>Имя сущности.</returns> /// <returns>Имя сущности.</returns>
protected virtual string GetEntityName() => Input.GetRequired<string>("name"); protected virtual string GetEntityName() => Input.GetRequired<string>("name");
@@ -152,7 +187,7 @@ internal abstract class FoundryEnAbstractProcessor<TEntity>(
EntityExternal external = new() EntityExternal external = new()
{ {
EntityId = Entity.Id, EntityId = Entity.Id,
TargetId = EnGlobals.FoundryTarget.Id, TargetId = Globals.FoundryTarget.Id,
ExternalId = Input.GetOptional<string>("_id"), ExternalId = Input.GetOptional<string>("_id"),
Suffix = Input.GetRequired<string>("_id"), Suffix = Input.GetRequired<string>("_id"),
Md5 = Input.Md5(), Md5 = Input.Md5(),
@@ -9,16 +9,30 @@ using Pf2eDataScrapper.Processors.Factory;
namespace Pf2eDataScrapper.Processors; namespace Pf2eDataScrapper.Processors;
/// <summary>
/// Класс, выполняющий обработку коллекции обработчиков.
/// </summary>
/// <param name="collection">[DI] <inheritdoc cref="ProcessorCollection"/></param>
/// <param name="progress">[DI] <inheritdoc cref="ProcessProgress"/></param>
/// <param name="settings">[DI] <inheritdoc cref="ApplicationSettings"/></param>
internal sealed class ProcessorExecutor( internal sealed class ProcessorExecutor(
ProcessorCollection collection, ProcessorCollection collection,
ProcessProgress progress, ProcessProgress progress,
ApplicationSettings settings ApplicationSettings settings
) )
{ {
/// <inheritdoc cref="ProcessorCollection"/>
public ProcessorCollection Collection { get; } = collection; public ProcessorCollection Collection { get; } = collection;
/// <inheritdoc cref="ProcessProgress"/>
public ProcessProgress Progress { get; } = progress; public ProcessProgress Progress { get; } = progress;
/// <inheritdoc cref="ApplicationSettings"/>
public ApplicationSettings Settings { get; } = settings; public ApplicationSettings Settings { get; } = settings;
/// <summary>
/// Запускает обработку коллекции обработчиков.
/// </summary>
public void Start() public void Start()
{ {
Collection.SortItems(); Collection.SortItems();
@@ -28,10 +42,24 @@ internal sealed class ProcessorExecutor(
StartItem(); StartItem();
} }
/// <summary>
/// Текущий индекс обрабатываемого элемента в коллекции.
/// </summary>
private int _currentIndex; private int _currentIndex;
/// <summary>
/// Текущая фабрика процессоров, которая используется для обработки.
/// </summary>
private AbstractProcessorFactory CurrentFactory { get; set; } = null!; private AbstractProcessorFactory CurrentFactory { get; set; } = null!;
/// <summary>
/// Инициирует обработку текущего элемента в коллекции.
/// </summary>
/// <remarks>Этот метод извлекает текущий элемент из коллекции, подготавливает связанную
/// фабрику и запускает фоновый обработчик для обработки задач элемента. Обработка
/// выполняется параллельно, если конфигурация элемента это позволяет, со степенью
/// параллелизма, определяемой настройками приложения. После завершения обработки метод
/// переходит к следующему шагу рабочего процесса.</remarks>
private void StartItem() private void StartItem()
{ {
ProcessorRecord item = Collection.Items[_currentIndex]; ProcessorRecord item = Collection.Items[_currentIndex];
@@ -58,6 +86,16 @@ internal sealed class ProcessorExecutor(
worker.RunWorkerAsync(); worker.RunWorkerAsync();
} }
/// <summary>
/// Запускает указанный процессор для выполнения операций обработки и сохранения.
/// </summary>
/// <remarks>Если процессор выдает <see cref="SkipItemException"/>, сообщение об исключении
/// регистрируется как информационный прогресс. Если выдается <see cref="SilentSkipItemException"/>,
/// оно молча игнорируется.</remarks>
/// <param name="processor">Экземпляр процессора, выполняющий операции обработки и сохранения.</param>
/// <param name="state">Экземпляр <see cref="ParallelLoopState"/>, который можно использовать для управления выполнением
/// параллельного цикла.</param>
/// <param name="arg3">Длинное значение, представляющее текущий индекс итерации или связанные данные для процессора.</param>
private void RunProcessor(IProcessor processor, ParallelLoopState state, long arg3) private void RunProcessor(IProcessor processor, ParallelLoopState state, long arg3)
{ {
try try
@@ -75,6 +113,11 @@ internal sealed class ProcessorExecutor(
} }
} }
/// <summary>
/// Переходит к обработке следующего элемента в коллекции или завершает процесс, если все элементы были обработаны.
/// </summary>
/// <remarks>Этот метод увеличивает текущий индекс и определяет, начинать ли обработку следующего элемента или завершить
/// процесс. Если текущий индекс превышает количество элементов в коллекции, процесс помечается как завершенный.</remarks>
private void Continue() private void Continue()
{ {
Progress.Processors.End(); Progress.Processors.End();
@@ -90,6 +133,14 @@ internal sealed class ProcessorExecutor(
} }
} }
/// <summary>
/// Выполняет итерацию по всем процессорам, предоставленным текущей фабрикой.
/// </summary>
/// <remarks>Этот метод выдает каждый процессор последовательно, позволяя вызывающему
/// обрабатывать их по одному за раз. Отслеживание прогресса обновляется для каждого
/// процессора во время итерации.</remarks>
/// <returns>Перечисляемая коллекция экземпляров <see cref="IProcessor" />,
/// представляющая процессоры, доступные в текущей фабрике.</returns>
private IEnumerable<IProcessor> IterateProcessors() private IEnumerable<IProcessor> IterateProcessors()
{ {
Progress.Local.Reset(CurrentFactory.Count()); Progress.Local.Reset(CurrentFactory.Count());
@@ -1,8 +1,8 @@
{ {
"Aonprd": { "Aonprd": {
"SlugSuffixes": { "SlugSuffixes": {
"feat-455": "initial",
"spell-843": "initial", "spell-843": "initial",
"feat-455": "initial",
"feat-2664": "archetype", "feat-2664": "archetype",
"feat-3247": "game-hunter", "feat-3247": "game-hunter",
"feat-3477": "undead-slayer", "feat-3477": "undead-slayer",
@@ -24,10 +24,8 @@
"action-14": "action-2273", "action-14": "action-2273",
"action-15": "action-2275", "action-15": "action-2275",
"action-558": "action-2277", "action-558": "action-2277",
"archetype-83": "archetype-129", "archetype-83": "archetype-129",
"archetype-86": "archetype-198", "archetype-86": "archetype-198",
"feat-455": "feat-6007", "feat-455": "feat-6007",
"feat-480": "feat-4850", "feat-480": "feat-4850",
"feat-936": "feat-2269", "feat-936": "feat-2269",
@@ -46,11 +44,8 @@
"feat-2993": "feat-4352", "feat-2993": "feat-4352",
"feat-4088": "feat-5491", "feat-4088": "feat-5491",
"feat-5997": "feat-7108", "feat-5997": "feat-7108",
"language-91": "language-180", "language-91": "language-180",
"ritual-31": "ritual-191", "ritual-31": "ritual-191",
"spell-641": "spell-1413", "spell-641": "spell-1413",
"spell-646": "spell-1394", "spell-646": "spell-1394",
"spell-841": "spell-1107", "spell-841": "spell-1107",
@@ -69,7 +64,6 @@
"feat-1167": "feat-5880", "feat-1167": "feat-5880",
"feat-1169": "feat-5055", "feat-1169": "feat-5055",
"feat-1171": "feat-4858", "feat-1171": "feat-4858",
"spell-551": "spell-2003", "spell-551": "spell-2003",
"spell-553": "spell-2012", "spell-553": "spell-2012",
"spell-559": "spell-2417", "spell-559": "spell-2417",
@@ -110,5 +104,39 @@
"Hellknight Order": "_null", "Hellknight Order": "_null",
"Eidolon": "_null" "Eidolon": "_null"
} }
},
"Foundry": {
"Ignore": [
"34E7k2YRcsOU5uyl",
"XyfC1zPgSTP01ZUr",
"2Kz5whXqnRsL4fEl",
"QW2gYIKce3W31xXf",
"Vt6CuD83hPiyoiOZ"
],
"MatchToAonprd": {
"3ZzoI9MTtJFd1Kjl": "action-759",
"Vr3w3t028ZKDg0mO": "action-767",
"Xg57qG1rOfSSobke": "action-560",
"IL8wtCi23ch62zXG": "action-1425",
"xJEkXFJgEfEida27": "action-464",
"IQtb58p4EaeUzTN1": "action-2807",
"EAP98XaChJEbgKcK": "action-5"
},
"SlugSuffixes": {
"4AN6IgzsbhjCPYIZ": "zombie",
"08egiRxOvMX97XTc": "werecreature",
"DWku0nZzkqmYjrQ5": "nosferatu",
"eXleBXdAemiEoHA8": "nymph-queen",
"hEWAzlIoJg3NzA7Q": "spring-heeled-jack",
"mEbrInCpag7YThH2": "dragon",
"sECjzfaYaW68vbLV": "vrykolakas-master",
"ZMTnwyXjyfy7Ryi6": "true-vampire",
"eQM5hQ1W3d1uen97": "monster-core",
"3Pr6Jk6AobttQRqN": "age-of-ashes",
"W7SbTykXrNwxDzJc": "npc",
"MAC97gjFcdiqLyhp": "skeleton",
"XTDd73QzhETeXY3g": "age-of-ashes",
"0K3vhX14UEPftqu8": "ghost"
}
} }
} }
+9 -2
View File
@@ -70,16 +70,23 @@ public class Entity
/// Флаг, указывающий, что у объекта существует перевод. /// Флаг, указывающий, что у объекта существует перевод.
/// </summary> /// </summary>
[Column(Order = 8)] [Column(Order = 8)]
[Comment("Флаг, указывающий, что у сущности существует перевод")] [Comment("Есть перевод?")]
public bool? IsTranslated { get; set; } = false; public bool? IsTranslated { get; set; } = false;
/// <summary> /// <summary>
/// Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи. /// Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи.
/// </summary> /// </summary>
[Column(Order = 9)] [Column(Order = 9)]
[Comment("Флаг, указывающий, что сущность был проверен и не требует автоматической перезаписи")] [Comment("Проверено?")]
public bool? IsChecked { get; set; } = false; public bool? IsChecked { get; set; } = false;
/// <summary>
/// Флаг, указывающий, что сущность является устаревшей.
/// </summary>
[Column(Order = 10)]
[Comment("Устаревшая?")]
public bool? IsLegacy { get; set; } = false;
/// <summary> /// <summary>
/// Коллекция алиасов /// Коллекция алиасов
/// </summary> /// </summary>