diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3049b62..b55122b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,13 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
-## [0.5.0] - 2024-10-25
+### Fixed
+
+- Bug with code case converter regex
-## [0.4.3] - 2024-10-25
+## [0.5.0] - 2024-10-25
-## [0.4.2] - 2024-10-25
+### Added
-## [0.4.1] - 2024-10-25
+- Code case converters (Pascal, Camel, Snake, Kebab, Train)
## [0.4.0] - 2024-10-25
@@ -27,10 +29,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Codecov reporting
-## [0.2.2] - 2024-10-20
-
-## [0.2.1] - 2024-10-16
-
## [0.2.0] - 2024-10-10
### Added
diff --git a/TJC.StringExtensions.Tests/Cases/KebabCaseExtensionsTests.cs b/TJC.StringExtensions.Tests/Cases/KebabCaseExtensionsTests.cs
index a56d6d4..f246ba2 100644
--- a/TJC.StringExtensions.Tests/Cases/KebabCaseExtensionsTests.cs
+++ b/TJC.StringExtensions.Tests/Cases/KebabCaseExtensionsTests.cs
@@ -18,4 +18,74 @@ public void ToKebabCaseTest()
// Assert
Assert.AreEqual(expected, result);
}
+
+ [TestMethod]
+ public void FromPascalCase_ToKebabCase()
+ {
+ // Arrange
+ var input = "KebabCaseExtensions";
+ var expected = "kebab-case-extensions";
+
+ // Act
+ var result = input.ToKebabCase();
+
+ // Assert
+ Assert.AreEqual(expected, result);
+ }
+
+ [TestMethod]
+ public void FromCamelCase_ToKebabCase()
+ {
+ // Arrange
+ var input = "kebabCaseExtensions";
+ var expected = "kebab-case-extensions";
+
+ // Act
+ var result = input.ToKebabCase();
+
+ // Assert
+ Assert.AreEqual(expected, result);
+ }
+
+ [TestMethod]
+ public void FromTrainCase_ToKebabCase()
+ {
+ // Arrange
+ var input = "Kebab-Case-Extensions";
+ var expected = "kebab-case-extensions";
+
+ // Act
+ var result = input.ToKebabCase();
+
+ // Assert
+ Assert.AreEqual(expected, result);
+ }
+
+ [TestMethod]
+ public void FromSnakeCase_ToKebabCase()
+ {
+ // Arrange
+ var input = "kebab_case_extensions";
+ var expected = "kebab-case-extensions";
+
+ // Act
+ var result = input.ToKebabCase();
+
+ // Assert
+ Assert.AreEqual(expected, result);
+ }
+
+ [TestMethod]
+ public void FromKebabCase_ToKebabCase()
+ {
+ // Arrange
+ var input = "kebab-case-extensions";
+ var expected = "kebab-case-extensions";
+
+ // Act
+ var result = input.ToKebabCase();
+
+ // Assert
+ Assert.AreEqual(expected, result);
+ }
}
\ No newline at end of file
diff --git a/TJC.StringExtensions/Cases/CodeCaseExtensions.cs b/TJC.StringExtensions/Cases/CodeCaseExtensions.cs
index 92d4590..87746bd 100644
--- a/TJC.StringExtensions/Cases/CodeCaseExtensions.cs
+++ b/TJC.StringExtensions/Cases/CodeCaseExtensions.cs
@@ -36,6 +36,6 @@ public static string[] CodeCaseToWords(this string input)
private static readonly Regex CaseWordSplitter = CaseWordSplitterRegex();
- [GeneratedRegex(@"[a-z][A-Z]|[_\- ]", RegexOptions.Compiled)]
+ [GeneratedRegex(@"(?True
\
-
+
+
+ True
+ \
+
+
diff --git a/Testing.sln b/Testing.sln
index deeb3ac..169483d 100644
--- a/Testing.sln
+++ b/Testing.sln
@@ -3,9 +3,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34316.72
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TJC.StringExtensions", "TJC.StringExtensions\TJC.StringExtensions.csproj", "{1D6CD7D0-42B8-403D-948F-CCC7452257D3}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TJC.StringExtensions", "TJC.StringExtensions\TJC.StringExtensions.csproj", "{1D6CD7D0-42B8-403D-948F-CCC7452257D3}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TJC.StringExtensions.Tests", "TJC.StringExtensions.Tests\TJC.StringExtensions.Tests.csproj", "{AE10271D-F595-48FB-8398-5CE3D1F9FB8C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TJC.StringExtensions.Tests", "TJC.StringExtensions.Tests\TJC.StringExtensions.Tests.csproj", "{AE10271D-F595-48FB-8398-5CE3D1F9FB8C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{6120C59B-01DA-4A50-B125-F98787B726A7}"
+ ProjectSection(SolutionItems) = preProject
+ THIRD-PARTY-LICENSES = THIRD-PARTY-LICENSES
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution