ConversionUtilities
Provides name conversion utility methods.
using System.Linq;
using System.Text;
using System.Xml.Linq;
namespace NJsonSchema
{
public class ConversionUtilities
{
public static string ConvertToLowerCamelCase(string input, bool firstCharacterMustBeAlpha)
{
if (string.IsNullOrEmpty(input))
return string.Empty;
input = ConvertDashesToCamelCase((input[0].ToString().ToLowerInvariant() + ((input.Length > 1) ? input.Substring(1) : "")).Replace(" ", "_").Replace("/", "_"));
if (string.IsNullOrEmpty(input))
return string.Empty;
if (firstCharacterMustBeAlpha && char.IsNumber(input[0]))
return "_" + input;
return input;
}
public static string ConvertToUpperCamelCase(string input, bool firstCharacterMustBeAlpha)
{
if (string.IsNullOrEmpty(input))
return string.Empty;
input = ConvertDashesToCamelCase((input[0].ToString().ToUpperInvariant() + ((input.Length > 1) ? input.Substring(1) : "")).Replace(" ", "_").Replace("/", "_"));
if (firstCharacterMustBeAlpha && char.IsNumber(input[0]))
return "_" + input;
return input;
}
public static string ConvertToStringLiteral(string input)
{
StringBuilder stringBuilder = new StringBuilder(input.Length);
foreach (char c in input) {
switch (c) {
case '\'':
stringBuilder.Append("\\'");
break;
case '"':
stringBuilder.Append("\\\"");
break;
case '\\':
stringBuilder.Append("\\\\");
break;
case ' ':
stringBuilder.Append("\\0");
break;
case '':
stringBuilder.Append("\\a");
break;
case '\b':
stringBuilder.Append("\\b");
break;
case '':
stringBuilder.Append("\\f");
break;
case '\n':
stringBuilder.Append("\\n");
break;
case '\r':
stringBuilder.Append("\\r");
break;
case '\t':
stringBuilder.Append("\\t");
break;
case '':
stringBuilder.Append("\\v");
break;
default:
if (c >= ' ' && c <= '~')
stringBuilder.Append(c);
else {
stringBuilder.Append("\\u");
StringBuilder stringBuilder2 = stringBuilder;
int num = c;
stringBuilder2.Append(num.ToString("x4"));
}
break;
}
}
return stringBuilder.ToString();
}
public static string ConvertToCamelCase(string input)
{
if (string.IsNullOrEmpty(input))
return string.Empty;
return ConvertDashesToCamelCase(input.Replace(" ", "_").Replace("/", "_"));
}
public static string TrimWhiteSpaces(string text)
{
return text?.Trim('\n', '\r', '\t', ' ');
}
public static string RemoveLineBreaks(string text)
{
return text?.Replace("\r", "").Replace("\n", " \n").Replace("\n ", "\n")
.Replace(" \n", " \n")
.Replace("\n", "")
.Trim('\n', '\t', ' ');
}
public static string Singularize(string word)
{
if (word == "people")
return "Person";
if (!word.EndsWith("s"))
return word;
return word.Substring(0, word.Length - 1);
}
public static string Tab(string input, int tabCount)
{
return input?.Replace("\n", "\n" + string.Join("", Enumerable.Repeat(" ", tabCount))) ?? string.Empty;
}
public static string ConvertCSharpDocs(string input, int tabCount)
{
input = (input?.Replace("\r", string.Empty).Replace("\n", "\n" + string.Join("", Enumerable.Repeat(" ", tabCount)) + "/// ") ?? string.Empty);
return new XText(input).ToString();
}
private static string ConvertDashesToCamelCase(string input)
{
StringBuilder stringBuilder = new StringBuilder();
bool flag = false;
foreach (char c in input) {
if (c == '-')
flag = true;
else if (flag) {
stringBuilder.Append(char.ToUpperInvariant(c));
flag = false;
} else {
stringBuilder.Append(c);
}
}
return stringBuilder.ToString();
}
}
}