<PackageReference Include="NJsonSchema" Version="10.7.2" />

ConversionUtilities

public class ConversionUtilities
Provides name conversion utility methods.
using System.Globalization; using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Text.RegularExpressions; using System.Xml.Linq; namespace NJsonSchema { public class ConversionUtilities { private static readonly char[] _whiteSpaceChars = new char[4] { '\n', '\r', '\t', ' ' }; private static readonly char[] _lineBreakTrimChars = new char[3] { '\n', '\t', ' ' }; 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(Capitalize(input).Replace(" ", "_").Replace("/", "_")); if (firstCharacterMustBeAlpha && char.IsNumber(input[0])) return "_" + input; return input; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static string Capitalize(string input) { if (char.IsUpper(input[0])) return input; char c; if (input.Length == 1) { c = char.ToUpperInvariant(input[0]); return c.ToString(); } c = char.ToUpperInvariant(input[0]); return c.ToString() + input.Substring(1); } 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(_whiteSpaceChars); } public static string RemoveLineBreaks(string text) { return text?.Replace("\r", "").Replace("\n", " \n").Replace("\n ", "\n") .Replace(" \n", " \n") .Replace("\n", "") .Trim(_lineBreakTrimChars); } 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) { if (input == null) return ""; StringWriter stringWriter = new StringWriter(new StringBuilder(input.Length), CultureInfo.CurrentCulture); Tab(input, tabCount, stringWriter); return stringWriter.ToString(); } public static void Tab(string input, int tabCount, TextWriter writer) { string tabString = CreateTabString(tabCount); AddPrefixToBeginningOfNonEmptyLines(input, tabString, writer); } private static void AddPrefixToBeginningOfNonEmptyLines(string input, string tabString, TextWriter writer) { if (tabString.Length != 0) { for (int i = 0; i < input.Length; i++) { char c = input[i]; writer.Write(c); if (c == '\n') { bool flag = false; for (int j = i + 1; j < input.Length; j++) { char c2 = input[j]; if (c2 == '\n') break; if (!char.IsWhiteSpace(c2)) { flag = true; break; } } if (flag) writer.Write(tabString); } } } } public static string ConvertCSharpDocs(string input, int tabCount) { input = (input?.Replace("\r", string.Empty).Replace("\n", "\n" + string.Join("", Enumerable.Repeat(" ", tabCount)) + "/// ") ?? string.Empty); string input2 = new XText(input).ToString(); return Regex.Replace(input2, "^( *)/// ", (Match m) => m.Groups[1]?.ToString() + "/// <br/>", RegexOptions.Multiline); } private static string CreateTabString(int tabCount) { switch (tabCount) { case 0: return ""; case 1: return " "; case 2: return " "; default: return new string(' ', 4 * tabCount); } } private static string ConvertDashesToCamelCase(string input) { if (input.IndexOf('-') == -1) return input; StringBuilder stringBuilder = new StringBuilder(input.Length - 1); 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(); } } }