From ecc88316bd73d75d601a4c91e7740424ad184f48 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 21 Mar 2026 16:34:52 -0400 Subject: [PATCH] Nicer readme linking --- README.MD | 53 ++++++----------------------------- SabreTools.Wrappers/README.MD | 21 ++++++++++++++ 2 files changed, 29 insertions(+), 45 deletions(-) diff --git a/README.MD b/README.MD index 1507cf2f..b47b2286 100644 --- a/README.MD +++ b/README.MD @@ -6,16 +6,6 @@ This meta-library comprises of serializers that both read and write from files a Find the link to the Nuget package [here](https://www.nuget.org/packages/SabreTools.Serialization). -The following non-project libraries (or ports thereof) are used for file handling: - -- [GrindCore.SharpCompress](https://github.com/Nanook/GrindCore.SharpCompress) - Common archive format extraction -- [StormLibSharp](https://github.com/robpaveza/stormlibsharp) - MoPaQ extraction [Unused in non-Windows builds due to Windows-specific libraries] - -The following projects have influenced this library: - -- [libmspack](https://github.com/kyz/libmspack) - Documentation around the MS-CAB format and associated compression methods. -- [Unshield](https://github.com/twogood/unshield/) - InstallShield CAB extraction tool that influenced internal handling - ## Releases For the most recent stable build, download the latest release here: [Releases Page](https://github.com/SabreTools/SabreTools.Serialization/releases) @@ -83,41 +73,14 @@ Options: | XBox Package File (XZP) | | | xz archive (XZ) | .NET Framework 4.6.2 and greater | -## Interfaces - -Below is a table representing the various conversion interfaces that are implemented within this library. - -| Interface Name | Source Type | Destination Type | -| --- | --- | --- | -| `SabreTools.Serialization.CrossModel.ICrossModel` | `TSource`/`TDest` | `TDest`/`TSource` | -| `SabreTools.Serialization.Readers.IByteReader` | `byte[]?` | `TModel` | -| `SabreTools.Serialization.Readers.IFileReader` | `string?` path | `TModel` | -| `SabreTools.Serialization.Readers.IStreamReader` | `Stream?` | `TModel` | -| `SabreTools.Serialization.Readers.IStringReader` | `string?` representation | `TModel` | -| `SabreTools.Serialization.Writers.IByteWriter` | `TModel` | `byte[]?` | -| `SabreTools.Serialization.Writers.IFileWriter` | `TModel` | `string?` path | -| `SabreTools.Serialization.Writers.IStreamWriter` | `TModel` | `Stream?` | -| `SabreTools.Serialization.Writers.IStringWriter` | `TModel` | `string?` representation | - -Below is a table representing the various non-conversion interfaces that are implemented within this library. - -| Interface Name | Purpose | -| --- | --- | -| `SabreTools.Wrappers.IExtractable` | Marks a wrapper as able to be extracted | -| `SabreTools.Wrappers.IPrintable` | Marks a wrapper as able to print model information | -| `SabreTools.Wrappers.IWrapper` | Represents an item with a description and JSON serializable state, allowing for extensions | -| `SabreTools.Wrappers.IWrapper` | Wraps a `TModel` with source data, allowing for extensions | - ## Namespaces -Below is a table of all namespaces within the library and what they represent +Below are a list of the included namespaces with links to their README files: -| Namespace | Description | -| --- | --- | -| `SabreTools.Data.Extensions` | Extension methods related to models | -| `SabreTools.Data.Models` | Models representing different file and structure types | -| `SabreTools.ObjectIdentifier` | Object Identifier (OID) parsing | -| `SabreTools.Serialization.CrossModel` | Convert between models; mainly used for metadata files converting to and from a common, `Dictionary`-based model | -| `SabreTools.Serialization.Readers` | Convert from external sources to models | -| `SabreTools.Serialization.Writers` | Convert from models to external sources | -| `SabreTools.Wrappers` | Classes that wrap serialization and models to allow for including extension properties | +- [SabreTools.Data.Extensions](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Data.Extensions) +- [SabreTools.Data.Models](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Data.Models) +- [SabreTools.ObjectIdentifier](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.ObjectIdentifier) +- [SabreTools.Serialization.CrossModel](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Serialization.CrossModel) +- [SabreTools.Serialization.Readers](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Serialization.Readers) +- [SabreTools.Serialization.Writers](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Serialization.Writers) +- [SabreTools.Wrappers](https://github.com/SabreTools/SabreTools.Serialization/tree/main/SabreTools.Wrappers) diff --git a/SabreTools.Wrappers/README.MD b/SabreTools.Wrappers/README.MD index 6b5d3e07..010670e5 100644 --- a/SabreTools.Wrappers/README.MD +++ b/SabreTools.Wrappers/README.MD @@ -9,3 +9,24 @@ Common extension functionality includes: - Extension methods for reference or conversion - Format information printing - Content extraction + +Wrapper classes can inherit from one or more interfaces, as seen in the table below: + +| Interface Name | Purpose | +| --- | --- | +| `SabreTools.Wrappers.IExtractable` | Marks a wrapper as able to be extracted | +| `SabreTools.Wrappers.IPrintable` | Marks a wrapper as able to print model information | +| `SabreTools.Wrappers.IWrapper` | **REQUIRED** Represents an item with a description and JSON serializable state, allowing for extensions | +| `SabreTools.Wrappers.IWrapper` | Wraps a `TModel` with source data, allowing for extensions | + +## Additional Information + +The following projects have influenced this library: + +- [libmspack](https://github.com/kyz/libmspack) - Documentation around the MS-CAB format and associated compression methods. +- [Unshield](https://github.com/twogood/unshield/) - InstallShield CAB extraction tool that influenced internal handling + +The following non-project libraries (or ports thereof) are used for file handling: + +- [GrindCore.SharpCompress](https://github.com/Nanook/GrindCore.SharpCompress) - Common archive format extraction +- [StormLibSharp](https://github.com/robpaveza/stormlibsharp) - MoPaQ extraction [Unused in non-Windows builds due to Windows-specific libraries]