/// <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)); }
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)); } }
private static string DisplayNumber(double number) { return(MetricNumeralExtensions.ToMetric(number, decimals: 2)); }
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)); }); }