diff --git a/README.MD b/README.MD index 2627d81c..524478ba 100644 --- a/README.MD +++ b/README.MD @@ -4,22 +4,29 @@ This library comprises of serializers that both read and write from files and st Find the link to the Nuget package [here](https://www.nuget.org/packages/SabreTools.Serialization). +## Interfaces + +Below is a table representing the various interfaces that are implemented within this library. + | Interface Name | Source Type | Destination Type | | --- | --- | --- | | `IByteDeserializer` | `byte[]?` | Model | -| `IFileDeserializer` | `string?` Path | Model | -| `IFileSerializer` | Model | `string?` Path | +| `IFileDeserializer` | `string?` path | Model | +| `IFileSerializer` | Model | `string?` path | +| `IModelSerializer` | Model | Model | | `IStreamDeserializer` | `Stream?` | Model | | `IStreamSerializer` | Model | `Stream?` | +| `IStringDeserializer` | `string?` representation | Model | +| `IStringSerializer` | Model | `string?` representation | +| `IWrapper` | N/A | N/A | -## `SabreTools.Serialization.CrossModel` +## Namespaces -This namespace comprises of serializers and deserializers that convert models to other common ones. This is mainly used for metadata files converting to and from a common, `Dictionary`-based model. +Below is a table of all namespaces within the library and what they represent -## `SabreTools.Serialization.Strings` - -This namespace comprises of serializers and deserializers that can convert to and from strings. Most of the serializers are symmetric, but this is not guaranteed. Unimplemented methods will throw `NotImplementedException`. - -## `SabreTools.Serialization.Wrappers` - -This namespace comrpises of wrapping classes that include keeping a reference to the source of each serializable model. Some of the wrappers may also include what are referred to as "extension properties", which are generated properties derived from either parts of the model or the underlying source. +| Namespace | Description | +| --- | --- | +| `SabreTools.Serialization.CrossModel` | Convert between models; mainly used for metadata files converting to and from a common, `Dictionary`-based model | +| `SabreTools.Serialization.Deserializers` | Convert from external sources to models | +| `SabreTools.Serialization.Serializers` | Convert from models to external sources | +| `SabreTools.Serialization.Wrappers` | Classes that wrap serialization and models to allow for including extension properties | diff --git a/SabreTools.Serialization/Strings/XMID.Deserializer.cs b/SabreTools.Serialization/Deserializers/XMID.cs similarity index 71% rename from SabreTools.Serialization/Strings/XMID.Deserializer.cs rename to SabreTools.Serialization/Deserializers/XMID.cs index 273d4fe6..c89e432e 100644 --- a/SabreTools.Serialization/Strings/XMID.Deserializer.cs +++ b/SabreTools.Serialization/Deserializers/XMID.cs @@ -1,9 +1,19 @@ using SabreTools.Serialization.Interfaces; -namespace SabreTools.Serialization.Strings +namespace SabreTools.Serialization.Deserializers { - public partial class XMID : IStringSerializer + public partial class XMID : + IStringDeserializer { + #region IStringDeserializer + + /// + public static Models.Xbox.XMID? DeserializeString(string? str) + { + var deserializer = new XMID(); + return deserializer.Deserialize(str); + } + /// public Models.Xbox.XMID? Deserialize(string? str) { @@ -36,5 +46,7 @@ namespace SabreTools.Serialization.Strings return xmid; } + + #endregion } } \ No newline at end of file diff --git a/SabreTools.Serialization/Strings/XeMID.Deserializer.cs b/SabreTools.Serialization/Deserializers/XeMID.cs similarity index 83% rename from SabreTools.Serialization/Strings/XeMID.Deserializer.cs rename to SabreTools.Serialization/Deserializers/XeMID.cs index d3f825ed..aab22976 100644 --- a/SabreTools.Serialization/Strings/XeMID.Deserializer.cs +++ b/SabreTools.Serialization/Deserializers/XeMID.cs @@ -1,9 +1,19 @@ using SabreTools.Serialization.Interfaces; -namespace SabreTools.Serialization.Strings +namespace SabreTools.Serialization.Deserializers { - public partial class XeMID : IStringSerializer + public partial class XeMID : + IStringDeserializer { + #region IStringDeserializer + + /// + public static Models.Xbox.XeMID? DeserializeString(string? str) + { + var deserializer = new XeMID(); + return deserializer.Deserialize(str); + } + /// public Models.Xbox.XeMID? Deserialize(string? str) { @@ -60,5 +70,7 @@ namespace SabreTools.Serialization.Strings return xemid; } + + #endregion } } \ No newline at end of file diff --git a/SabreTools.Serialization/Interfaces/IStringDeserializer.cs b/SabreTools.Serialization/Interfaces/IStringDeserializer.cs new file mode 100644 index 00000000..af1e1497 --- /dev/null +++ b/SabreTools.Serialization/Interfaces/IStringDeserializer.cs @@ -0,0 +1,16 @@ +namespace SabreTools.Serialization.Interfaces +{ + /// + /// Defines how to serialize from strings + /// + public interface IStringDeserializer + { + /// + /// Deserialize a string into + /// + /// Type of object to deserialize to + /// String to deserialize from + /// Filled object on success, null on error + T? Deserialize(string? str); + } +} \ No newline at end of file diff --git a/SabreTools.Serialization/Interfaces/IStringSerializer.cs b/SabreTools.Serialization/Interfaces/IStringSerializer.cs index 2b7db4be..9dc91339 100644 --- a/SabreTools.Serialization/Interfaces/IStringSerializer.cs +++ b/SabreTools.Serialization/Interfaces/IStringSerializer.cs @@ -1,18 +1,10 @@ namespace SabreTools.Serialization.Interfaces { /// - /// Defines how to serialize to and from strings + /// Defines how to serialize from strings /// public interface IStringSerializer { - /// - /// Deserialize a string into - /// - /// Type of object to deserialize to - /// String to deserialize from - /// Filled object on success, null on error - T? Deserialize(string? str); - /// /// Serialize a into a string /// diff --git a/SabreTools.Serialization/Strings/XMID.Serializer.cs b/SabreTools.Serialization/Serializers/XMID.cs similarity index 53% rename from SabreTools.Serialization/Strings/XMID.Serializer.cs rename to SabreTools.Serialization/Serializers/XMID.cs index c8fd342a..5e829b48 100644 --- a/SabreTools.Serialization/Strings/XMID.Serializer.cs +++ b/SabreTools.Serialization/Serializers/XMID.cs @@ -1,10 +1,20 @@ using System.Text; using SabreTools.Serialization.Interfaces; -namespace SabreTools.Serialization.Strings +namespace SabreTools.Serialization.Serializers { - public partial class XMID : IStringSerializer + public partial class XMID : + IStringSerializer { + #region IStringSerializer + + /// + public static string? SerializeString(Models.Xbox.XMID? obj) + { + var deserializer = new XMID(); + return deserializer.Serialize(obj); + } + /// public string? Serialize(Models.Xbox.XMID? obj) { @@ -20,5 +30,7 @@ namespace SabreTools.Serialization.Strings return sb.ToString(); } + + #endregion } } \ No newline at end of file diff --git a/SabreTools.Serialization/Strings/XeMID.Serializer.cs b/SabreTools.Serialization/Serializers/XeMID.cs similarity index 65% rename from SabreTools.Serialization/Strings/XeMID.Serializer.cs rename to SabreTools.Serialization/Serializers/XeMID.cs index b2b95a24..b7474253 100644 --- a/SabreTools.Serialization/Strings/XeMID.Serializer.cs +++ b/SabreTools.Serialization/Serializers/XeMID.cs @@ -1,10 +1,20 @@ using System.Text; using SabreTools.Serialization.Interfaces; -namespace SabreTools.Serialization.Strings +namespace SabreTools.Serialization.Serializers { - public partial class XeMID : IStringSerializer + public partial class XeMID : + IStringSerializer { + #region IStringSerializer + + /// + public static string? SerializeString(Models.Xbox.XeMID? obj) + { + var deserializer = new XeMID(); + return deserializer.Serialize(obj); + } + /// public string? Serialize(Models.Xbox.XeMID? obj) { @@ -26,5 +36,7 @@ namespace SabreTools.Serialization.Strings return sb.ToString(); } + + #endregion } } \ No newline at end of file diff --git a/SabreTools.Serialization/Wrappers/XMID.cs b/SabreTools.Serialization/Wrappers/XMID.cs index 10cce582..045f60eb 100644 --- a/SabreTools.Serialization/Wrappers/XMID.cs +++ b/SabreTools.Serialization/Wrappers/XMID.cs @@ -87,7 +87,7 @@ namespace SabreTools.Serialization.Wrappers if (data == null || data.Length == 0) return null; - var binary = new Strings.XMID().Deserialize(data); + var binary = Deserializers.XMID.DeserializeString(data); if (binary == null) return null; diff --git a/SabreTools.Serialization/Wrappers/XeMID.cs b/SabreTools.Serialization/Wrappers/XeMID.cs index 8d2bd677..b8a2e362 100644 --- a/SabreTools.Serialization/Wrappers/XeMID.cs +++ b/SabreTools.Serialization/Wrappers/XeMID.cs @@ -102,7 +102,7 @@ namespace SabreTools.Serialization.Wrappers if (data == null || data.Length == 0) return null; - var binary = new Strings.XeMID().Deserialize(data); + var binary = Deserializers.XeMID.DeserializeString(data); if (binary == null) return null;