using System.Text; using Humanizer; namespace Jtr.Tools; public static partial class Json2CSharpTranslator { public class Context { public enum TranslationScope { Array, Object, } public const string DefaultRootClassName = "Root"; public const string DefaultNamespace = "My.Namespace"; public string RootClassName { get; init; } = DefaultRootClassName; public string Namespace { get; init; } = DefaultNamespace; public Stack Name { get; init; } = new(); public Stack Class { get; init; } = new(); public Stack Scope { get; init; } = new(); public List Classes { get; } = new(); public readonly StringBuilder Builder = new(); public string CurrentClassName => string.Join( string.Empty, Class .SkipLast(1) .Select(cls => cls.Name.Pascalize().Singularize()) .Prepend(Name.Peek().Pascalize().Singularize()) .Reverse() .ToArray() ); } }