internal static Optional <IPrettifier> FindPrettifier( IPrettifierDatabase prettifierDatabase, [NotNull] Type type, [CanBeNull] PrettificationSettings settings, [NotNull, ItemNotNull, InstantHandle] IEnumerable <OptionalPrettifierFinder> finders ) { settings = Prettification.ResolveSettings(settings); settings.TraceWriter.Verbose(() => $"🔎 Attempting to find an {nameof(IPrettifier)} for the type {type.Name}"); var simplified = PrettificationTypeSimplifier.SimplifyType(type, settings); var prettifier = Optional.Optional.FirstWithValue <OptionalPrettifierFinder, IPrettifier>( finders, prettifierDatabase, simplified, settings ); settings.TraceWriter.Info( () => prettifier.IfPresentOrElse( it => $"⛳ Found: {it}", () => "🐸 No prettifier found!" ), 2 ); return(prettifier); }
public string PrettifySafely(object cinderella, PrettificationSettings settings = default) { settings ??= Prettification.DefaultPrettificationSettings; settings.TraceWriter.Verbose(() => $"🦺 SAFELY prettifying [{cinderella?.GetType().Name}]"); try { return(Prettify(cinderella, settings)); } catch (Exception e) { var str = $"🧨 Error during prettification of [{cinderella?.GetType().Name}]{cinderella}:\n{e})"; Console.WriteLine(str); return(Prettification.LastResortPrettifier(cinderella, settings)); } }
public static string GetTypeLabel(this Type?type, PrettificationSettings?settings) { settings = Prettification.ResolveSettings(settings); var style = type?.IsEnum == true ? settings.EnumLabelStyle : settings.TypeLabelStyle; settings?.TraceWriter.Verbose(() => $"Using style: {style} (type: {settings.TypeLabelStyle}/{settings.TypeLabelStyle.Value}, enum: {settings.EnumLabelStyle}/{settings.EnumLabelStyle.Value})"); if (type == null || style == TypeNameStyle.None) { return(""); } var str = type.PrettifyType(settings); if (type.IsArray || type.IsEnum || type.IsEnumerable()) { return(str); } return($"[{str}]"); }
internal static Type SimplifyType([NotNull] Type type, PrettificationSettings?settings) { settings = Prettification.ResolveSettings(settings); return(SimplifyTypeSwitch(type, settings)); }