Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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}]");
        }
Ejemplo n.º 4
0
 internal static Type SimplifyType([NotNull] Type type, PrettificationSettings?settings)
 {
     settings = Prettification.ResolveSettings(settings);
     return(SimplifyTypeSwitch(type, settings));
 }