예제 #1
0
        /// <inheritdoc />
        protected override void DrawContents()
        {
            var txBps = _metricProvider.GetNetworkTxSpeed(_adapter).Bits;
            var rxBps = _metricProvider.GetNetworkRxSpeed(_adapter).Bits;

            AddData(txBps, rxBps);

            Program.Out.WriteLine();

            Program.Out.WriteLine($"Sending: {MetricNumeralExtensions.ToMetric(txBps, false, true, 2)}bps");
            Program.Out.WriteLine($"Total Sent: {_metricProvider.GetNetworkTxTotal(_adapter).Bytes.ToMetric(false, true, 2)}B");
            DrawSparkline(_dataTx, Color.FromArgb(225, 247, 213));

            Program.Out.WriteLine($"Receiving: {MetricNumeralExtensions.ToMetric(rxBps, false, true, 2)}bps");
            Program.Out.WriteLine($"Total Received: {_metricProvider.GetNetworkRxTotal(_adapter).Bytes.ToMetric(false, true, 2)}B");
            DrawSparkline(_dataRx, Color.FromArgb(201, 201, 255));
        }
예제 #2
0
        private void DrawAxes()
        {
            var axisW = Width - maxYLabelLen - 2;
            var axisH = Height - 2;

            Program.Out.StartWindow(X + 1 + maxYLabelLen, Y + 1, axisW, axisH);

            BoxDrawing.DrawBox(string.Empty, BoxDrawing.Alignment.Left, axisW, axisH, BoxDrawing.LineWidth.None, BoxDrawing.LineWidth.Single, BoxDrawing.LineWidth.Single, BoxDrawing.LineWidth.None);

            Program.Out.EndWindow();

            for (var i = 0; i < axisH - 1; i += 2)
            {
                Program.Out.SetCursorPosition(0, i);

                var valHere = KoiExtensions.Remap(i, 0, axisH - 2, MaxValue, MinValue);

                Program.Out.Write($"{MetricNumeralExtensions.ToMetric(valHere, false, true, 2)}".PadLeft(maxYLabelLen));
            }
        }
예제 #3
0
 private static string DisplayNumber(double number)
 {
     return(MetricNumeralExtensions.ToMetric(number, decimals: 2));
 }
예제 #4
0
        public static void Register()
        {
            // case functions
            Expression.Functions.Add($"humanizer.allCaps", (args) => CasingExtensions.ApplyCase(args[0], LetterCasing.AllCaps));
            Expression.Functions.Add($"humanizer.lowerCase", (args) => CasingExtensions.ApplyCase(args[0], LetterCasing.LowerCase));
            Expression.Functions.Add($"humanizer.sentence", (args) => CasingExtensions.ApplyCase(args[0], LetterCasing.Sentence));
            Expression.Functions.Add($"humanizer.title", (args) => CasingExtensions.ApplyCase(args[0], LetterCasing.Title));

            // humanize collections
            Expression.Functions.Add($"humanizer.humanizeList", (args) =>
            {
                CollectionHumanizeExtensions.Humanize <object>(args[0], args[1]);
                return(string.Empty);
            });

            // DateTime functions
            Expression.Functions.Add($"humanizer.humanizeDateTime", (args) =>
            {
                var culture       = ParseCulture(args);
                var referenceDate = ParseDate((object)args.Skip(1).FirstOrDefault());

                if (referenceDate.HasValue)
                {
                    return(DateHumanizeExtensions.Humanize(ParseDate(args[0]), referenceDate.Value, culture));
                }

                return(DateHumanizeExtensions.Humanize(ParseDate(args[0]), culture: culture));
            });

            Expression.Functions.Add($"humanizer.dateTimeToOrdinalWords", (args) =>
            {
                if (args.Count == 2)
                {
                    return(DateToOrdinalWordsExtensions.ToOrdinalWords(ParseDate(args[0]), ParseEnum <GrammaticalCase>(args.Skip(1).FirstOrDefault())));
                }
                return(DateToOrdinalWordsExtensions.ToOrdinalWords(ParseDate(args[0])));
            });

            // timespan functions
            Expression.Functions.Add($"humanizer.humanizeTimeSpan", (args) =>
            {
                var culture   = ParseCulture(args);
                var precision = (int)ParseInt(args.Skip(1).FirstOrDefault(), 1);
                return(TimeSpanHumanizeExtensions.Humanize(timeSpan: ParseTimeSpan(args[0]), precision: precision, culture: culture));
            });
            Expression.Functions.Add($"humanizer.weeks", (args) => NumberToTimeSpanExtensions.Weeks(ParseNumber((object)args[0])));
            Expression.Functions.Add($"humanizer.days", (args) => NumberToTimeSpanExtensions.Days(ParseNumber((object)args[0])));
            Expression.Functions.Add($"humanizer.hours", (args) => NumberToTimeSpanExtensions.Hours(ParseNumber((object)args[0])));
            Expression.Functions.Add($"humanizer.minutes", (args) => NumberToTimeSpanExtensions.Minutes(ParseNumber((object)args[0])));
            Expression.Functions.Add($"humanizer.seconds", (args) => NumberToTimeSpanExtensions.Seconds(ParseNumber((object)args[0])));
            Expression.Functions.Add($"humanizer.milliseconds", (args) => NumberToTimeSpanExtensions.Milliseconds(ParseNumber((object)args[0])));

            // bytesize functions
            Expression.Functions.Add($"humanizer.bits", (args) => ByteSizeExtensions.Bits(ParseInt((object)args[0])).ToString());
            Expression.Functions.Add($"humanizer.bytes", (args) => ByteSizeExtensions.Bytes(ParseNumber((object)args[0])).ToString());
            Expression.Functions.Add($"humanizer.kilobytes", (args) => ByteSizeExtensions.Kilobytes(ParseNumber((object)args[0])).ToString());
            Expression.Functions.Add($"humanizer.megabytes", (args) => ByteSizeExtensions.Megabytes(ParseNumber((object)args[0])).ToString());
            Expression.Functions.Add($"humanizer.gigabytes", (args) => ByteSizeExtensions.Gigabytes(ParseNumber((object)args[0])).ToString());
            Expression.Functions.Add($"humanizer.terabytes", (args) => ByteSizeExtensions.Terabytes(ParseNumber((object)args[0])).ToString());

            // headings (float => North) "north" => float
            Expression.Functions.Add($"humanizer.degrees2heading", (args) =>
            {
                var culture = ParseCulture(args);

                if (TryParseEnum <HeadingStyle>((object)args.Skip(1).FirstOrDefault(), out var style))
                {
                    return(HeadingExtensions.ToHeading(ParseNumber((object)args[0]), style, culture: culture));
                }
                return(HeadingExtensions.ToHeading(ParseNumber((object)args[0]), culture: culture));
            });
            Expression.Functions.Add($"humanizer.heading2degrees", (args) => HeadingExtensions.FromAbbreviatedHeading((string)args[0].ToString()));

            // inflector
            Expression.Functions.Add($"humanizer.pluralize", (args) => InflectorExtensions.Pluralize(((object)args[0]).ToString(), ParseBool(args.Skip(1).FirstOrDefault())));
            Expression.Functions.Add($"humanizer.camelize", (args) => InflectorExtensions.Camelize(((object)args[0]).ToString()));
            Expression.Functions.Add($"humanizer.dasherize", (args) => InflectorExtensions.Dasherize(((object)args[0]).ToString()));
            Expression.Functions.Add($"humanizer.hyphenate", (args) => InflectorExtensions.Hyphenate(((object)args[0]).ToString()));
            Expression.Functions.Add($"humanizer.kebaberize", (args) => InflectorExtensions.Kebaberize(((object)args[0]).ToString()));
            Expression.Functions.Add($"humanizer.pascalize", (args) => InflectorExtensions.Pascalize(((object)args[0]).ToString()));
            Expression.Functions.Add($"humanizer.singularize", (args) => InflectorExtensions.Singularize(((object)args[0]).ToString(), ParseBool(args.Skip(1).FirstOrDefault(), true), ParseBool(args.Skip(2).FirstOrDefault())));
            Expression.Functions.Add($"humanizer.titleize", (args) => InflectorExtensions.Titleize(((object)args[0]).ToString()));

            // metric
            Expression.Functions.Add($"humanizer.metric2number", (args) => MetricNumeralExtensions.FromMetric(((object)args[0]).ToString()));
            Expression.Functions.Add($"humanizer.number2metric", (args) =>
            {
                if (args.Count == 4)
                {
                    return(MetricNumeralExtensions.ToMetric(ParseNumber(args[0]), hasSpace: ParseBool(args[2]), useSymbol: ParseBool(args[3]), decimals: (Int32)ParseInt(args[1])));
                }
                else if (args.Count == 3)
                {
                    return(MetricNumeralExtensions.ToMetric(ParseNumber(args[0]), hasSpace: ParseBool(args[2]), decimals: (Int32)ParseInt(args[1])));
                }
                else if (args.Count == 2)
                {
                    return(MetricNumeralExtensions.ToMetric(ParseNumber(args[0]), decimals: (Int32)ParseInt(args[1])));
                }

                return(MetricNumeralExtensions.ToMetric(ParseNumber(args[0])));
            });

            // numberToWords functions
            Expression.Functions.Add($"humanizer.number2words", (args) =>
            {
                var culture = ParseCulture(args);
                if (TryParseEnum <GrammaticalGender>((object)args.Skip(1).FirstOrDefault(), out var enm))
                {
                    return(NumberToWordsExtension.ToWords(ParseInt(args[0]), enm, culture: culture));
                }
                return(NumberToWordsExtension.ToWords(ParseInt(args[0]), culture: culture));
            });

            Expression.Functions.Add($"humanizer.number2ordinalWords", (args) =>
            {
                var culture = ParseCulture(args);

                if (TryParseEnum <GrammaticalGender>((object)args.Skip(1).FirstOrDefault(), out var gender))
                {
                    return(NumberToWordsExtension.ToOrdinalWords((Int32)ParseInt(args[0]), gender, culture: culture));
                }

                return(NumberToWordsExtension.ToOrdinalWords((Int32)ParseInt(args[0]), culture: culture));
            });

            Expression.Functions.Add($"humanizer.number2ordinal", (args) =>
            {
                var culture = ParseCulture(args);

                if (TryParseEnum <GrammaticalGender>((object)args.Skip(1).FirstOrDefault(), out var gender))
                {
                    return(OrdinalizeExtensions.Ordinalize((Int32)ParseInt(args[0]), gender, culture: culture));
                }

                return(OrdinalizeExtensions.Ordinalize((Int32)ParseInt(args[0]), culture: culture));
            });

            // roman functions
            Expression.Functions.Add($"humanizer.fromRoman", (args) => RomanNumeralExtensions.FromRoman(((object)args[0]).ToString()));
            Expression.Functions.Add($"humanizer.toRoman", (args) => RomanNumeralExtensions.ToRoman((Int32)ParseInt(args[0])));

            // toQuantity functions
            Expression.Functions.Add($"humanizer.toQuantity", (args) =>
            {
                if (args.Count == 3)
                {
                    string arg3 = ((object)args[2]).ToString();
                    if (Enum.TryParse <ShowQuantityAs>(arg3, out var showQuanityAs))
                    {
                        return(ToQuantityExtensions.ToQuantity(((object)args[0]).ToString(), ParseInt(args[1]), showQuanityAs));
                    }

                    // use arg[2] as format string
                    return(ToQuantityExtensions.ToQuantity(((object)args[0]).ToString(), ParseInt(args[1]), format: arg3));
                }

                if (args.Count == 3)
                {
                    return(ToQuantityExtensions.ToQuantity(((object)args[0]).ToString(), ParseInt(args[1]), ParseEnum <ShowQuantityAs>(args[2])));
                }

                return(ToQuantityExtensions.ToQuantity(((object)args[0]).ToString(), ParseInt(args[1])));
            });

            // truncate functions
            Expression.Functions.Add($"humanizer.truncate", (args) =>
            {
                if (args.Count == 3)
                {
                    return(TruncateExtensions.Truncate(((object)args[0]).ToString(), (int)ParseInt(args[1]), ((object)args[2]).ToString()));
                }
                return(TruncateExtensions.Truncate(((object)args[0]).ToString(), (int)ParseInt(args[1])));
            });

            Expression.Functions.Add($"humanizer.truncateWords", (args) =>
            {
                if (args.Count == 3)
                {
                    return(TruncateExtensions.Truncate(((object)args[0]).ToString(), (int)ParseInt(args[1]), ((object)args[2]).ToString(), truncator: Truncator.FixedNumberOfWords));
                }
                return(TruncateExtensions.Truncate(((object)args[0]).ToString(), (int)ParseInt(args[1]), truncator: Truncator.FixedNumberOfWords));
            });

            // tupelize functions
            Expression.Functions.Add($"humanizer.tupleize", (args) => TupleizeExtensions.Tupleize((int)ParseInt(args[0])));

            // dotnet format functions
            Expression.Functions.Add($"dotnet.numberToString", (args) =>
            {
                var culture = ParseCulture(args);
                var number  = ParseNumber((object)args[0]);
                var format  = ((object)args[1]).ToString();
                return(number.ToString(format, culture));
            });
            Expression.Functions.Add($"dotnet.intToString", (args) =>
            {
                var culture = ParseCulture(args);
                var integer = ParseInt((object)args[0]);
                var format  = ((object)args[1]).ToString();
                return(integer.ToString(format, culture));
            });
            Expression.Functions.Add($"dotnet.dateTimeToString", (args) =>
            {
                var culture  = ParseCulture(args);
                var dateTime = ParseDate((object)args[0]);
                var format   = ((object)args[1]).ToString();
                return(dateTime.Value.ToString(format, culture));
            });
            Expression.Functions.Add($"dotnet.timeSpanToString", (args) =>
            {
                var culture  = ParseCulture(args);
                var timeSpan = ParseTimeSpan((object)args[0]);
                var format   = ((object)args[1]).ToString();
                return(timeSpan.Value.ToString(format, culture));
            });
        }