예제 #1
0
        private static string MachiningForFormat(string format, IList <FormatEvent> formatEvents)
        {
            foreach (var @event in FormatCommandFactory.CreateCommandEvent(format))
            {
                formatEvents.Add(@event);
            }

            return(format);
        }
예제 #2
0
        private static string MachiningForFormat(string format, IList <FormatEvent> targetFormatEvents, string rendererName)
        {
            foreach (var @event in FormatCommandFactory.CreateCommandEvent(rendererName, format))
            {
                targetFormatEvents.Add(@event);
            }

            //NOTE:
            //If this token is a PreferencesRender type, the name of token is same as the name of renderer.
            //So, here, i used 'rendererName' given by 'Name', which means the name of such token.

            return(format);
        }
예제 #3
0
        internal static void Render(object value, TextWriter output, string format = null, IFormatProvider formatProvider = null)
        {
            if (output is null)
            {
                throw new ArgumentNullException(nameof(output));
            }
            IEnumerable <FormatEvent> __f(string ____f) => FormatCommandFactory.CreateCommandEvent(null, ____f);

            if (value is null)
            {
                output.Write(__f(format).ToFormat("null", formatProvider));
                return;
            }

            if (value is string s)
            {
                output.Write(__f(format).ToFormat(s, formatProvider));
                return;
            }

            if (formatProvider != null)
            {
                var custom = (ICustomFormatter)formatProvider.GetFormat(typeof(ICustomFormatter));
                if (custom != null)
                {
                    output.Write(__f(format).ToFormat(custom.Format(format, value, formatProvider), formatProvider));
                    return;
                }
            }

            if (value is IFormattable f)
            {
                output.Write(__f(format).ToFormat(f.ToString(format, formatProvider ?? CultureInfo.InvariantCulture), formatProvider));
                return;
            }

            output.Write(value.ToString());
        }