diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
index 2502bc3c..5248b23c 100644
--- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
+++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs
@@ -1851,6 +1851,19 @@ namespace SabreTools.Data.Extensions.Test
Assert.Equal(expected, actual);
}
+ [Theory]
+ [InlineData(null, null)]
+ [InlineData("INVALID", null)]
+ [InlineData("yes", true)]
+ [InlineData("True", true)]
+ [InlineData("no", false)]
+ [InlineData("False", false)]
+ public void AsYesNoTest(string? field, bool? expected)
+ {
+ bool? actual = field.AsYesNo();
+ Assert.Equal(expected, actual);
+ }
+
#endregion
#region Enum to String
@@ -2137,6 +2150,16 @@ namespace SabreTools.Data.Extensions.Test
Assert.Equal(expected, actual);
}
+ [Theory]
+ [InlineData(null, null)]
+ [InlineData(true, "yes")]
+ [InlineData(false, "no")]
+ public void FromYesNo(bool? field, string? expected)
+ {
+ string? actual = field.FromYesNo();
+ Assert.Equal(expected, actual);
+ }
+
#endregion
}
}
diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs
index 2a96b95c..59643ac3 100644
--- a/SabreTools.Data.Extensions/MetadataExtensions.cs
+++ b/SabreTools.Data.Extensions/MetadataExtensions.cs
@@ -1214,6 +1214,21 @@ namespace SabreTools.Data.Extensions
};
}
+ ///
+ /// Get bool? value from input string
+ ///
+ /// String to get value from
+ /// bool? corresponding to the string
+ public static bool? AsYesNo(this string? yesno)
+ {
+ return yesno?.ToLowerInvariant() switch
+ {
+ "yes" or "true" => true,
+ "no" or "false" => false,
+ _ => null,
+ };
+ }
+
#endregion
#region Enum to String
@@ -1574,7 +1589,21 @@ namespace SabreTools.Data.Extensions
};
}
- #endregion
+ ///
+ /// Get string value from input bool?
+ ///
+ /// bool? to get value from
+ /// String corresponding to the bool?
+ public static string? FromYesNo(this bool? yesno)
+ {
+ return yesno switch
+ {
+ true => "yes",
+ false => "no",
+ _ => null,
+ };
+ }
+ #endregion
}
}
diff --git a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs
index 68b5c664..36c66ca4 100644
--- a/SabreTools.Metadata.DatItems.Test/DatItemTests.cs
+++ b/SabreTools.Metadata.DatItems.Test/DatItemTests.cs
@@ -1,3 +1,4 @@
+using SabreTools.Data.Extensions;
using SabreTools.Metadata.DatItems.Formats;
using Xunit;
diff --git a/SabreTools.Metadata.DatItems/DatItemT.cs b/SabreTools.Metadata.DatItems/DatItemT.cs
index c24b7094..f0386246 100644
--- a/SabreTools.Metadata.DatItems/DatItemT.cs
+++ b/SabreTools.Metadata.DatItems/DatItemT.cs
@@ -1,4 +1,5 @@
using System;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
index 6112a014..fa62b24d 100644
--- a/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Adjuster.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Analog.cs b/SabreTools.Metadata.DatItems/Formats/Analog.cs
index 610dc644..02e9c43f 100644
--- a/SabreTools.Metadata.DatItems/Formats/Analog.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Analog.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Archive.cs b/SabreTools.Metadata.DatItems/Formats/Archive.cs
index ba2bed03..3cdb978d 100644
--- a/SabreTools.Metadata.DatItems/Formats/Archive.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Archive.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs
index cb92be6b..bb47ae1d 100644
--- a/SabreTools.Metadata.DatItems/Formats/BiosSet.cs
+++ b/SabreTools.Metadata.DatItems/Formats/BiosSet.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs
index 71e0e90c..78750d68 100644
--- a/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs
+++ b/SabreTools.Metadata.DatItems/Formats/ConfLocation.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
index 2bf6ee52..82804d7a 100644
--- a/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
+++ b/SabreTools.Metadata.DatItems/Formats/ConfSetting.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Configuration.cs b/SabreTools.Metadata.DatItems/Formats/Configuration.cs
index aa1e34e7..6e1521ce 100644
--- a/SabreTools.Metadata.DatItems/Formats/Configuration.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Configuration.cs
@@ -1,6 +1,7 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs
index 656ffd97..9814037f 100644
--- a/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DeviceRef.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs
index da5beb4d..6e92ee74 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipLocation.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipLocation.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
index 71f0e90a..c0f9e1d2 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipSwitch.cs
@@ -1,6 +1,7 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/DipValue.cs b/SabreTools.Metadata.DatItems/Formats/DipValue.cs
index 86b2df6e..6380d250 100644
--- a/SabreTools.Metadata.DatItems/Formats/DipValue.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DipValue.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs
index ba8679eb..00f13f02 100644
--- a/SabreTools.Metadata.DatItems/Formats/DiskArea.cs
+++ b/SabreTools.Metadata.DatItems/Formats/DiskArea.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Extension.cs b/SabreTools.Metadata.DatItems/Formats/Extension.cs
index a5954714..4f2bfe5f 100644
--- a/SabreTools.Metadata.DatItems/Formats/Extension.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Extension.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Info.cs b/SabreTools.Metadata.DatItems/Formats/Info.cs
index 29cd1c44..4232db88 100644
--- a/SabreTools.Metadata.DatItems/Formats/Info.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Info.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs
index 2517eef2..a44300d0 100644
--- a/SabreTools.Metadata.DatItems/Formats/Input.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Input.cs
@@ -1,6 +1,7 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Instance.cs b/SabreTools.Metadata.DatItems/Formats/Instance.cs
index 2f5892da..f2f7e954 100644
--- a/SabreTools.Metadata.DatItems/Formats/Instance.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Instance.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Part.cs b/SabreTools.Metadata.DatItems/Formats/Part.cs
index b5dd61c3..32c2fed4 100644
--- a/SabreTools.Metadata.DatItems/Formats/Part.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Part.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Port.cs b/SabreTools.Metadata.DatItems/Formats/Port.cs
index 168c5f55..84eaf426 100644
--- a/SabreTools.Metadata.DatItems/Formats/Port.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Port.cs
@@ -1,6 +1,7 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/RamOption.cs b/SabreTools.Metadata.DatItems/Formats/RamOption.cs
index 6c90c80b..50e32990 100644
--- a/SabreTools.Metadata.DatItems/Formats/RamOption.cs
+++ b/SabreTools.Metadata.DatItems/Formats/RamOption.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Release.cs b/SabreTools.Metadata.DatItems/Formats/Release.cs
index 5a50584a..2eaf01ab 100644
--- a/SabreTools.Metadata.DatItems/Formats/Release.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Release.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Sample.cs b/SabreTools.Metadata.DatItems/Formats/Sample.cs
index 2fe98f31..c1c50baa 100644
--- a/SabreTools.Metadata.DatItems/Formats/Sample.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Sample.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs
index e7bf6d93..274cb9f7 100644
--- a/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SharedFeat.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Slot.cs b/SabreTools.Metadata.DatItems/Formats/Slot.cs
index d666df9b..8e8efced 100644
--- a/SabreTools.Metadata.DatItems/Formats/Slot.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Slot.cs
@@ -1,6 +1,7 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs
index f36080b1..2fa4718c 100644
--- a/SabreTools.Metadata.DatItems/Formats/SlotOption.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SlotOption.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Formats/Sound.cs b/SabreTools.Metadata.DatItems/Formats/Sound.cs
index 85649293..27fbde3a 100644
--- a/SabreTools.Metadata.DatItems/Formats/Sound.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Sound.cs
@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
diff --git a/SabreTools.Metadata.DatItems/Trurip.cs b/SabreTools.Metadata.DatItems/Trurip.cs
index 2aee3148..0541824c 100644
--- a/SabreTools.Metadata.DatItems/Trurip.cs
+++ b/SabreTools.Metadata.DatItems/Trurip.cs
@@ -1,6 +1,7 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
+using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems
{
diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs
index c3e0df41..30cefbd7 100644
--- a/SabreTools.Metadata.Filter/FilterObject.cs
+++ b/SabreTools.Metadata.Filter/FilterObject.cs
@@ -1,5 +1,6 @@
using System;
using System.Text.RegularExpressions;
+using SabreTools.Data.Extensions;
using SabreTools.Data.Models.Metadata;
using SabreTools.Text.Extensions;
diff --git a/SabreTools.Metadata.Test/ConvertersTests.cs b/SabreTools.Metadata.Test/ConvertersTests.cs
deleted file mode 100644
index 725aa233..00000000
--- a/SabreTools.Metadata.Test/ConvertersTests.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using Xunit;
-
-namespace SabreTools.Metadata.Test
-{
- public class ConvertersTests
- {
- #region String to Enum
-
- [Theory]
- [InlineData(null, null)]
- [InlineData("INVALID", null)]
- [InlineData("yes", true)]
- [InlineData("True", true)]
- [InlineData("no", false)]
- [InlineData("False", false)]
- public void AsYesNoTest(string? field, bool? expected)
- {
- bool? actual = field.AsYesNo();
- Assert.Equal(expected, actual);
- }
-
- #endregion
-
- #region Enum to String
-
- [Theory]
- [InlineData(null, null)]
- [InlineData(true, "yes")]
- [InlineData(false, "no")]
- public void FromYesNo(bool? field, string? expected)
- {
- string? actual = field.FromYesNo();
- Assert.Equal(expected, actual);
- }
-
- #endregion
- }
-}
diff --git a/SabreTools.Metadata/Converters.cs b/SabreTools.Metadata/Converters.cs
deleted file mode 100644
index 1286b3be..00000000
--- a/SabreTools.Metadata/Converters.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-namespace SabreTools.Metadata
-{
- public static class Converters
- {
- #region String to Enum
-
- ///
- /// Get bool? value from input string
- ///
- /// String to get value from
- /// bool? corresponding to the string
- public static bool? AsYesNo(this string? yesno)
- {
- return yesno?.ToLowerInvariant() switch
- {
- "yes" or "true" => true,
- "no" or "false" => false,
- _ => null,
- };
- }
-
- #endregion
-
- #region Enum to String
-
- ///
- /// Get string value from input bool?
- ///
- /// bool? to get value from
- /// String corresponding to the bool?
- public static string? FromYesNo(this bool? yesno)
- {
- return yesno switch
- {
- true => "yes",
- false => "no",
- _ => null,
- };
- }
-
- #endregion
- }
-}
diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs
index 003c1877..0fe77c02 100644
--- a/SabreTools.Metadata/DictionaryBaseExtensions.cs
+++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs
@@ -8,45 +8,6 @@ namespace SabreTools.Metadata
{
public static class DictionaryBaseExtensions
{
- #region Cloning
-
- ///
- /// Deep clone a DictionaryBase object
- ///
- public static DictionaryBase? Clone(this DictionaryBase self)
- {
- // If construction failed, we can't do anything
- if (Activator.CreateInstance(self.GetType()) is not DictionaryBase clone)
- return null;
-
- // Loop through and clone per type
- foreach (string key in self.Keys)
- {
- object? value = self[key];
- clone[key] = value switch
- {
- // Primative types
- bool or long or double or string => value,
-
- // DictionaryBase types
- DictionaryBase db => db.Clone(),
-
- // Enumerable types
- byte[] bytArr => bytArr.Clone(),
- string[] strArr => strArr.Clone(),
- DictionaryBase[] dbArr => Array.ConvertAll(dbArr, Clone),
- ICloneable[] clArr => Array.ConvertAll(clArr, cl => cl.Clone()),
-
- // Everything else just copies
- _ => value,
- };
- }
-
- return clone;
- }
-
- #endregion
-
#region Equality Checking
///