Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CaseConverter/CaseConverter.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
<Compile Include="Converters\ICaseConverter.cs" />
<Compile Include="Converters\PascalCaseConverter.cs" />
<Compile Include="Converters\ScreamingSnakeCaseConverter.cs" />
<Compile Include="Converters\SpacedPascalCaseConverter.cs" />
<Compile Include="Converters\SnakeCaseConverter.cs" />
<Compile Include="Options\GeneralOption.cs" />
<Compile Include="Options\GeneralOptionPage.cs">
Expand Down
24 changes: 24 additions & 0 deletions CaseConverter/Converters/SpacedPascalCaseConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using CaseConverter.Utils;

namespace CaseConverter.Converters
{
/// <summary>
/// 文字列をスネークケースに変換するクラスです。
/// </summary>
public class SpacedPascalCaseConverter : ICaseConverter
{
/// <inheritdoc />
public string Convert(IEnumerable<string> words)
{
if (words == null)
{
return string.Empty;
}

return string.Join(" ", words.Select(StringUtil.ToFirstUpper));
}
}
}
7 changes: 6 additions & 1 deletion CaseConverter/Converters/StringCaseConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ public static class StringCaseConverter
[StringCasePattern.SnakeCase] = new SnakeCaseConverter(),
[StringCasePattern.PascalSnakeCase] = new PascalSnakeCaseConverter(),
[StringCasePattern.ScreamingSnakeCase] = new ScreamingSnakeCaseConverter(),
[StringCasePattern.KebabCase] = new KebabCaseConverter()
[StringCasePattern.KebabCase] = new KebabCaseConverter(),
[StringCasePattern.SpacedPascalCase] = new SpacedPascalCaseConverter()
};

/// <summary>
Expand Down Expand Up @@ -84,6 +85,10 @@ internal static StringCasePattern GetCasePattern(string input)
{
return StringCasePattern.KebabCase;
}
else if (input.Contains(' '))
{
return StringCasePattern.SpacedPascalCase;
}
else if (char.IsUpper(input[0]))
{
return 1 < input.Length && input.Skip(1).All(x => char.IsUpper(x)) ? StringCasePattern.ScreamingSnakeCase : StringCasePattern.PascalCase;
Expand Down
7 changes: 6 additions & 1 deletion CaseConverter/Converters/StringCasePattern.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ public enum StringCasePattern
/// <summary>
/// ケバブケースです。
/// </summary>
KebabCase
KebabCase,

/// <summary>
/// スペースを含むパスカルケース。
/// </summary>
SpacedPascalCase
}
}
3 changes: 2 additions & 1 deletion CaseConverter/Options/StringCasePatternConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public class StringCasePatternConverter : EnumConverter
[StringCasePattern.SnakeCase] = "snake_case",
[StringCasePattern.PascalSnakeCase] = "Pascal_Snake_Case",
[StringCasePattern.ScreamingSnakeCase] = "SCREAMING_SNAKE_CASE",
[StringCasePattern.KebabCase] = "kebab-case"
[StringCasePattern.KebabCase] = "kebab-case",
[StringCasePattern.SpacedPascalCase] = "Spaced Pascal Case"
};

/// <summary>
Expand Down
18 changes: 18 additions & 0 deletions Test.CaseConverter/Converters/SpacedPascalCaseConverterTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using CaseConverter.Converters;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Test.CaseConverter.Converters
{
/// <summary>
/// <see cref="SpacedPascalCaseConverterTest"/>のテストクラスです。
/// </summary>
[TestClass]
public class SpacedPascalCaseConverterTest : CaseConverterTestBase<SpacedPascalCaseConverter>
{
[TestMethod]
public void ConvertTest()
{
ConvertTest("Hoge Fuga Piyo", "Hoge", "H");
}
}
}
1 change: 1 addition & 0 deletions Test.CaseConverter/Test.CaseConverter.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
</Choose>
<ItemGroup>
<Compile Include="Converters\CaseConverterTestBase.cs" />
<Compile Include="Converters\SpacedPascalCaseConverterTest.cs" />
<Compile Include="Converters\StringCaseConverterTest.cs" />
<Compile Include="Converters\CamelCaseConverterTest.cs" />
<Compile Include="Converters\PascalCaseConverterTest.cs" />
Expand Down