I18n через jsonb-поля
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using Konsole;
|
||||
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
|
||||
using static Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.AbstractProcessor;
|
||||
using Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
using static Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.AbstractProcessor;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder;
|
||||
|
||||
|
||||
+13
-39
@@ -7,13 +7,15 @@ using Pf2eModel.Model;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Base.Source;
|
||||
using Pf2eModel.Model.Base.Targets;
|
||||
using Pf2eModel.Model.Common.I18n;
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure;
|
||||
using System.Collections.Generic;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
|
||||
internal abstract partial class AbstractProcessor(AonprdProcessorInput input)
|
||||
{
|
||||
@@ -65,11 +67,11 @@ internal abstract partial class AbstractProcessor(AonprdProcessorInput input)
|
||||
{
|
||||
Entity.Id = Helper.NextEntityId;
|
||||
Entity.Type = Type;
|
||||
Entity.Name = Input.GetRequired<string>("name");
|
||||
Entity.Name[LocaleType.English] = Input.GetRequired<string>("name");
|
||||
Entity.Img = "";
|
||||
Entity.Description = GetDescription();
|
||||
Entity.Rarity = Input.EnumOptional<EntityRarity>("rarity", EntityRarity.Common);
|
||||
Entity.Slug = Helper.GenerateSlug(Entity.Name);
|
||||
Entity.Slug = Helper.GenerateSlug(Entity.Name[LocaleType.English]);
|
||||
Entity.IsTranslated = false;
|
||||
Entity.IsChecked = false;
|
||||
|
||||
@@ -81,15 +83,6 @@ internal abstract partial class AbstractProcessor(AonprdProcessorInput input)
|
||||
|
||||
protected virtual void AddAlias()
|
||||
{
|
||||
EntityAlias alias = new()
|
||||
{
|
||||
Type = AliasType.English,
|
||||
Alias = Entity.Name,
|
||||
Entity = Entity
|
||||
};
|
||||
|
||||
Context.EntityAliases.Add(alias);
|
||||
|
||||
JArray? legacyIdArray = Input.GetOptional<JArray>("legacy_id");
|
||||
|
||||
if (legacyIdArray is null)
|
||||
@@ -101,17 +94,8 @@ internal abstract partial class AbstractProcessor(AonprdProcessorInput input)
|
||||
|
||||
if (LegacyAliases.TryGetValue(legacyId, out string? legacyName))
|
||||
{
|
||||
if (legacyName != Entity.Name)
|
||||
{
|
||||
EntityAlias legacyAlias = new()
|
||||
{
|
||||
Type = AliasType.LegacyEnglish,
|
||||
Alias = legacyName,
|
||||
Entity = Entity
|
||||
};
|
||||
|
||||
Context.EntityAliases.Add(legacyAlias);
|
||||
}
|
||||
// if (legacyName != Entity.Name[LocaleType.English])
|
||||
Entity.Name[LocaleType.LegacyEnglish] = legacyName;
|
||||
|
||||
LegacyAliases.Remove(legacyId);
|
||||
}
|
||||
@@ -187,20 +171,18 @@ internal abstract partial class AbstractProcessor(AonprdProcessorInput input)
|
||||
|
||||
IEnumerable<string> names = traitsJson.ToArray().Select(jToken => jToken.ToString());
|
||||
List<Entity> traitEntities = Context.Traits
|
||||
.SelectMany(t => t.Entity.Aliases)
|
||||
.Where(a => names.Contains(a.Alias))
|
||||
.Select(a => a.Entity)
|
||||
.Select(t => t.Entity)
|
||||
.Where(e => Pf2eDbContext.LocaleSearchArray(e.Name, names))
|
||||
.ToList();
|
||||
|
||||
List<Trait> traits = Context.Traits
|
||||
.Include(t => t.Entity)
|
||||
.ThenInclude(e => e.Aliases)
|
||||
.Where(t => traitEntities.Contains(t.Entity))
|
||||
.ToList();
|
||||
|
||||
foreach (string name in names)
|
||||
{
|
||||
if (!traits.Any(t => t.Entity.Aliases.Select(a => a.Alias).Contains(name)))
|
||||
if (!traits.Any(t => t.Entity.Name.Contains(name)))
|
||||
{
|
||||
throw new Exception($"Trait '{name}' is not found!!!");
|
||||
}
|
||||
@@ -216,18 +198,10 @@ internal abstract partial class AbstractProcessor(AonprdProcessorInput input)
|
||||
{
|
||||
if (RemasterWithoutLegacy.TryGetValue(id, out Entity? remastered))
|
||||
{
|
||||
if (remastered.Name == name)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// if (remastered.ToString() != name)
|
||||
remastered.Name[LocaleType.LegacyEnglish] = name;
|
||||
|
||||
EntityAlias alias = new()
|
||||
{
|
||||
Type = AliasType.LegacyEnglish,
|
||||
Alias = name,
|
||||
Entity = remastered!
|
||||
};
|
||||
Context.EntityAliases.Add(alias);
|
||||
RemasterWithoutLegacy.Remove(id);
|
||||
}
|
||||
else
|
||||
{
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
|
||||
[AttributeUsage(AttributeTargets.Class)]
|
||||
public class AonprdProcessorAttribute(string name, string type, string[] dependencies) : Attribute
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
using System.Reflection;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
|
||||
internal class AonprdProcessorCollection
|
||||
{
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
using Pf2eModel.Model;
|
||||
using Pf2eModel.Model.Enum;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.Types;
|
||||
|
||||
[AonprdProcessor("action")]
|
||||
internal class ActionProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||
+1
-1
@@ -6,7 +6,7 @@ using Pf2eModel.Model.Structure;
|
||||
using Pf2eModel.Model.Structure.AncestryRelation;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.Types;
|
||||
|
||||
[AonprdProcessor("ancestry", ["trait", "language"])]
|
||||
internal class AncestryProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||
+1
-2
@@ -6,7 +6,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.Types;
|
||||
|
||||
[AonprdProcessor("archetype")]
|
||||
internal class ArchetypeProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||
@@ -23,7 +23,6 @@ internal class ArchetypeProcessor(AonprdProcessorInput input) : AbstractProcesso
|
||||
|
||||
Object.Level = Input.GetOptional<int>("level");
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected override string GetDescription()
|
||||
+1
-1
@@ -9,7 +9,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.Types;
|
||||
|
||||
[AonprdProcessor("background")]
|
||||
internal class BackgroundProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||
+2
-1
@@ -14,7 +14,7 @@ using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.Types;
|
||||
|
||||
[AonprdProcessor("class", ["trait", "source", "skill"])]
|
||||
internal class ClassProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||
@@ -89,6 +89,7 @@ internal class ClassProcessor(AonprdProcessorInput input) : AbstractProcessor(in
|
||||
.ToArray();
|
||||
|
||||
Training[] skills = Context.Trainings.Where(t => skillNames.Contains(t.Name)).ToArray();
|
||||
// Training[] skills = Context.Trainings.Where(t => Pf2eDbContext.LocaleSearchArray(t.Name, skillNames)).ToArray();
|
||||
|
||||
return skills.Select(skill => new ClassTraining()
|
||||
{
|
||||
+7
-3
@@ -1,8 +1,9 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Pf2eModel;
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.Types;
|
||||
|
||||
[AonprdProcessor("feat", ["trait", "source", "archetype"])]
|
||||
internal class FeatProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||
@@ -42,7 +43,10 @@ internal class FeatProcessor(AonprdProcessorInput input) : AbstractProcessor(inp
|
||||
|
||||
string[] archetypeStrings = Input.GetOptional<JArray>("archetype")?.Select(t => t.ToString()).ToArray() ?? [];
|
||||
|
||||
var archetypes = Context.Archetypes.Where(a => archetypeStrings.Contains(a.Entity.Name)).ToArray();
|
||||
var archetypes = Context.Archetypes
|
||||
.Where(a => Pf2eDbContext.LocaleSearchArray(a.Entity.Name, archetypeStrings))
|
||||
// .Where(a => archetypeStrings.Contains(a.Entity.Name.ToString()))
|
||||
.ToArray();
|
||||
|
||||
if (archetypes.Length != 0)
|
||||
{
|
||||
@@ -53,7 +57,7 @@ internal class FeatProcessor(AonprdProcessorInput input) : AbstractProcessor(inp
|
||||
{
|
||||
Object.Archetypes.Add(archetype);
|
||||
|
||||
if (Entity.Name.Contains("Dedication"))
|
||||
if (Entity.Name.Any(l => l.Value.Contains("Dedication")))
|
||||
{
|
||||
archetype.DedicationFeat = Object;
|
||||
}
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.Types;
|
||||
|
||||
[AonprdProcessor("language")]
|
||||
internal class LanguageProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||
+1
-1
@@ -8,7 +8,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.Types;
|
||||
|
||||
[AonprdProcessor("source", new string[] { })]
|
||||
internal class SourceProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||
+1
-1
@@ -8,7 +8,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.Types;
|
||||
|
||||
[AonprdProcessor("skill", new string[] { })]
|
||||
internal class TrainingProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure;
|
||||
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors.Types;
|
||||
|
||||
[AonprdProcessor("trait", new string[] { })]
|
||||
internal class TraitProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||
+8
-6
@@ -4,6 +4,7 @@ using Pf2eModel.Model;
|
||||
using Pf2eModel.Model.Base;
|
||||
using Pf2eModel.Model.Base.Source;
|
||||
using Pf2eModel.Model.Base.Targets;
|
||||
using Pf2eModel.Model.Common.I18n;
|
||||
using Pf2eModel.Model.Enum;
|
||||
using Pf2eModel.Model.Structure;
|
||||
using System.Security.Cryptography;
|
||||
@@ -30,14 +31,14 @@ internal abstract class AbstractProcessor(ProcessorInput input)
|
||||
Entity.Id = Helper.NextEntityId;
|
||||
Entity.Type = Type;
|
||||
|
||||
Entity.Name = Input.GetRequired<string>("name");
|
||||
Entity.Name[LocaleType.English] = Input.GetRequired<string>("name");
|
||||
Entity.Img = Input.GetRequired<string>("img");
|
||||
Entity.Description = Input.GetRequired<string>("system.description.value");
|
||||
|
||||
Entity.IsTranslated = false;
|
||||
Entity.IsChecked = false;
|
||||
|
||||
Entity.Slug = Helper.GenerateSlug(Entity.Name);
|
||||
Entity.Slug = Helper.GenerateSlug(Entity.Name[LocaleType.English]);
|
||||
Entity.Rarity = Input.EnumOptional<EntityRarity>("system.traits.rarity", EntityRarity.Common);
|
||||
|
||||
Object.Id = Entity.Id;
|
||||
@@ -45,15 +46,16 @@ internal abstract class AbstractProcessor(ProcessorInput input)
|
||||
Context.Entities.Add(Entity);
|
||||
|
||||
// Alias
|
||||
/*
|
||||
EntityAlias alias = new()
|
||||
{
|
||||
Type = AliasType.English,
|
||||
Type = LocaleType.English,
|
||||
Alias = Entity.Name,
|
||||
EntityId = Entity.Id,
|
||||
Entity = Entity
|
||||
};
|
||||
Context.EntityAliases.Add(alias);
|
||||
|
||||
*/
|
||||
// Source
|
||||
EntitySource source = new()
|
||||
{
|
||||
@@ -138,11 +140,11 @@ internal abstract class AbstractProcessor(ProcessorInput input)
|
||||
|
||||
protected IEnumerable<Trait> GetTraits(IEnumerable<string> names)
|
||||
{
|
||||
List<Trait> result = Context.Traits.Where(t => names.Contains(t.Entity.Name)).ToList();
|
||||
List<Trait> result = Context.Traits.Where(t => names.Contains(t.Entity.ToString())).ToList();
|
||||
|
||||
foreach (string name in names)
|
||||
{
|
||||
if (result.Any(t => t.Entity.Name == name))
|
||||
if (result.Any(t => t.Entity.Name.Contains(name)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -37,4 +37,8 @@
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Importers\Implementations\Aonprd\DataBuilder\Processors\Subclasses\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
Reference in New Issue
Block a user