From cabcb5481641142fb44410fa21a89d667893575a Mon Sep 17 00:00:00 2001 From: Ilya Kozhemyakin Date: Sat, 29 Mar 2025 16:02:37 +0400 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B8=D0=BF=D0=BE=D0=B2=20?= =?UTF-8?q?=D1=81=D1=85=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Compendium/CompendiumSchemaBuilder.cs | 2 ++ .../CompendiumSchemaTypeResolver.cs | 9 +++---- Pf2eDataScrapper/SchemaBuilder/SchemaNode.cs | 6 ++++- .../SchemaBuilder/TypeResolver.cs | 1 + .../{ => Types}/AbstractSchemaType.cs | 7 +++-- .../{ => Types}/ArraySchemaType.cs | 5 ++-- .../{ => Types}/DictionarySchemaType.cs | 4 +-- .../SchemaBuilder/Types/IgnoreSchemaType.cs | 27 +++++++++++++++++++ .../{ => Types}/ObjectSchemaType.cs | 8 +++--- .../{ => Types}/StaticSchemaType.cs | 5 ++-- 10 files changed, 54 insertions(+), 20 deletions(-) rename Pf2eDataScrapper/SchemaBuilder/{ => Types}/AbstractSchemaType.cs (90%) rename Pf2eDataScrapper/SchemaBuilder/{ => Types}/ArraySchemaType.cs (93%) rename Pf2eDataScrapper/SchemaBuilder/{ => Types}/DictionarySchemaType.cs (92%) create mode 100644 Pf2eDataScrapper/SchemaBuilder/Types/IgnoreSchemaType.cs rename Pf2eDataScrapper/SchemaBuilder/{ => Types}/ObjectSchemaType.cs (89%) rename Pf2eDataScrapper/SchemaBuilder/{ => Types}/StaticSchemaType.cs (94%) diff --git a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Compendium/CompendiumSchemaBuilder.cs b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Compendium/CompendiumSchemaBuilder.cs index 9c544c3..19c7723 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Compendium/CompendiumSchemaBuilder.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Compendium/CompendiumSchemaBuilder.cs @@ -144,6 +144,8 @@ namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.Compendium using var writer = new StreamWriter(path); + schema.Beautify(); + writer.WriteLine(name); writer.WriteLine($"Different values: {schema.Values}"); writer.WriteLine("====================================="); diff --git a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Compendium/CompendiumSchemaTypeResolver.cs b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Compendium/CompendiumSchemaTypeResolver.cs index f81df51..ab9420a 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Compendium/CompendiumSchemaTypeResolver.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Compendium/CompendiumSchemaTypeResolver.cs @@ -5,20 +5,17 @@ using System.Text; using System.Threading.Tasks; using Newtonsoft.Json.Linq; using Pf2eDataScrapper.SchemaBuilder; +using Pf2eDataScrapper.SchemaBuilder.Types; namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.Compendium { internal class CompendiumSchemaTypeResolver : TypeResolver { - public class FoundryRulesSchemaType(SchemaNode parent) : ArraySchemaType(parent) + public class FoundryRulesSchemaType(SchemaNode parent) : IgnoreSchemaType(parent) { public override string GetTypeName() { - return "###FoundryRulesObject###"; - } - public override string ToString() - { - return GetTypeName(); + return "ignored (Foundry rules object)"; } } diff --git a/Pf2eDataScrapper/SchemaBuilder/SchemaNode.cs b/Pf2eDataScrapper/SchemaBuilder/SchemaNode.cs index e9a5786..6bfc4bc 100644 --- a/Pf2eDataScrapper/SchemaBuilder/SchemaNode.cs +++ b/Pf2eDataScrapper/SchemaBuilder/SchemaNode.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json.Linq; +using Pf2eDataScrapper.SchemaBuilder.Types; namespace Pf2eDataScrapper.SchemaBuilder { @@ -98,7 +99,10 @@ namespace Pf2eDataScrapper.SchemaBuilder public void Beautify() { - + foreach (var type in Types) + { + type.Beautify(); + } } } } diff --git a/Pf2eDataScrapper/SchemaBuilder/TypeResolver.cs b/Pf2eDataScrapper/SchemaBuilder/TypeResolver.cs index 167fdae..bd52f34 100644 --- a/Pf2eDataScrapper/SchemaBuilder/TypeResolver.cs +++ b/Pf2eDataScrapper/SchemaBuilder/TypeResolver.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json.Linq; +using Pf2eDataScrapper.SchemaBuilder.Types; namespace Pf2eDataScrapper.SchemaBuilder { diff --git a/Pf2eDataScrapper/SchemaBuilder/AbstractSchemaType.cs b/Pf2eDataScrapper/SchemaBuilder/Types/AbstractSchemaType.cs similarity index 90% rename from Pf2eDataScrapper/SchemaBuilder/AbstractSchemaType.cs rename to Pf2eDataScrapper/SchemaBuilder/Types/AbstractSchemaType.cs index 5b1457b..56669bd 100644 --- a/Pf2eDataScrapper/SchemaBuilder/AbstractSchemaType.cs +++ b/Pf2eDataScrapper/SchemaBuilder/Types/AbstractSchemaType.cs @@ -1,7 +1,7 @@ using System.ComponentModel.Design.Serialization; using Newtonsoft.Json.Linq; -namespace Pf2eDataScrapper.SchemaBuilder +namespace Pf2eDataScrapper.SchemaBuilder.Types { internal abstract class AbstractSchemaType(SchemaNode parent) { @@ -32,7 +32,10 @@ namespace Pf2eDataScrapper.SchemaBuilder /// public abstract string GetTypeName(); - public abstract override string ToString(); + public override string ToString() + { + return $"{GetTypeName()} {Parent.Path}"; + } /// diff --git a/Pf2eDataScrapper/SchemaBuilder/ArraySchemaType.cs b/Pf2eDataScrapper/SchemaBuilder/Types/ArraySchemaType.cs similarity index 93% rename from Pf2eDataScrapper/SchemaBuilder/ArraySchemaType.cs rename to Pf2eDataScrapper/SchemaBuilder/Types/ArraySchemaType.cs index 5e754d8..56063b4 100644 --- a/Pf2eDataScrapper/SchemaBuilder/ArraySchemaType.cs +++ b/Pf2eDataScrapper/SchemaBuilder/Types/ArraySchemaType.cs @@ -3,9 +3,10 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Transactions; using Newtonsoft.Json.Linq; -namespace Pf2eDataScrapper.SchemaBuilder +namespace Pf2eDataScrapper.SchemaBuilder.Types { internal class ArraySchemaType(SchemaNode parent) : AbstractSchemaType(parent) { @@ -53,7 +54,7 @@ namespace Pf2eDataScrapper.SchemaBuilder public override string ToString() { return string.Join("\n" + Tab, [ - GetTypeName() + $" {{{Parent?.Path ?? ""}}}", + base.ToString(), $"Length: min={MinCount} max={MaxCount}", "Value type: " + Indent(ElementSchema.ToString()) ]); diff --git a/Pf2eDataScrapper/SchemaBuilder/DictionarySchemaType.cs b/Pf2eDataScrapper/SchemaBuilder/Types/DictionarySchemaType.cs similarity index 92% rename from Pf2eDataScrapper/SchemaBuilder/DictionarySchemaType.cs rename to Pf2eDataScrapper/SchemaBuilder/Types/DictionarySchemaType.cs index 7ba1bb8..9bead9c 100644 --- a/Pf2eDataScrapper/SchemaBuilder/DictionarySchemaType.cs +++ b/Pf2eDataScrapper/SchemaBuilder/Types/DictionarySchemaType.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; using Newtonsoft.Json.Linq; -namespace Pf2eDataScrapper.SchemaBuilder +namespace Pf2eDataScrapper.SchemaBuilder.Types { internal class DictionarySchemaType(SchemaNode parent) : AbstractSchemaType(parent) { @@ -42,7 +42,7 @@ namespace Pf2eDataScrapper.SchemaBuilder public override string ToString() { return string.Join("\n" + Tab, [ - GetTypeName() + $" {{{Parent?.Path ?? ""}}}", + base.ToString(), "Key:" + Indent(KeyNode.ToString()), "Value:" + Indent(ItemNode.ToString()) ]); diff --git a/Pf2eDataScrapper/SchemaBuilder/Types/IgnoreSchemaType.cs b/Pf2eDataScrapper/SchemaBuilder/Types/IgnoreSchemaType.cs new file mode 100644 index 0000000..2d2ce19 --- /dev/null +++ b/Pf2eDataScrapper/SchemaBuilder/Types/IgnoreSchemaType.cs @@ -0,0 +1,27 @@ +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Pf2eDataScrapper.SchemaBuilder.Types +{ + internal class IgnoreSchemaType(SchemaNode parent) : AbstractSchemaType(parent) + { + public override bool IsCompatibleValue(JToken value) + { + return true; + } + public override void AddValue(JToken value) + { + } + public override void Beautify() + { + } + public override string GetTypeName() + { + return "ignore"; + } + } +} diff --git a/Pf2eDataScrapper/SchemaBuilder/ObjectSchemaType.cs b/Pf2eDataScrapper/SchemaBuilder/Types/ObjectSchemaType.cs similarity index 89% rename from Pf2eDataScrapper/SchemaBuilder/ObjectSchemaType.cs rename to Pf2eDataScrapper/SchemaBuilder/Types/ObjectSchemaType.cs index 589db02..9a299b5 100644 --- a/Pf2eDataScrapper/SchemaBuilder/ObjectSchemaType.cs +++ b/Pf2eDataScrapper/SchemaBuilder/Types/ObjectSchemaType.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Pf2eDataScrapper.SchemaBuilder +namespace Pf2eDataScrapper.SchemaBuilder.Types { internal class ObjectSchemaType(SchemaNode parent) : AbstractSchemaType(parent) { @@ -34,7 +34,7 @@ namespace Pf2eDataScrapper.SchemaBuilder if (field is null) { - field = new SchemaNode(this.Parent, pair.Key); + field = new SchemaNode(Parent, pair.Key); Fields.Add(field); } @@ -67,11 +67,11 @@ namespace Pf2eDataScrapper.SchemaBuilder public override string ToString() { - List rows = [$"object {{{Parent?.Path ?? ""}}}"]; + List rows = [base.ToString()]; foreach (var field in Fields) { - string s = field.Name; + var s = field.Name; if (field.IsNullable) { diff --git a/Pf2eDataScrapper/SchemaBuilder/StaticSchemaType.cs b/Pf2eDataScrapper/SchemaBuilder/Types/StaticSchemaType.cs similarity index 94% rename from Pf2eDataScrapper/SchemaBuilder/StaticSchemaType.cs rename to Pf2eDataScrapper/SchemaBuilder/Types/StaticSchemaType.cs index 7993e36..ab3d565 100644 --- a/Pf2eDataScrapper/SchemaBuilder/StaticSchemaType.cs +++ b/Pf2eDataScrapper/SchemaBuilder/Types/StaticSchemaType.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json.Linq; -namespace Pf2eDataScrapper.SchemaBuilder +namespace Pf2eDataScrapper.SchemaBuilder.Types { internal class StaticSchemaType(SchemaNode parent, JTokenType type) : AbstractSchemaType(parent) { @@ -46,7 +46,7 @@ namespace Pf2eDataScrapper.SchemaBuilder public override string ToString() { - var result = GetTypeName() + $" {{{Parent?.Path ?? ""}}}"; + var result = base.ToString(); var count = Values.Count; if (count == Root.Values) @@ -68,7 +68,6 @@ namespace Pf2eDataScrapper.SchemaBuilder return result.Trim(); } - result += "\n"; result = Values.Aggregate(result, (current, value) => current + $"{Tab}{value.Key} (x{value.Value})\n");