public static string TraceDescription(this CommandTrace trace, int?truncateTo = null) { if (truncateTo != null) { Match match; if (trace.Arguments.Length >= 4 && (match = _traceRegex.Match(trace.Arguments[3])).Success) { var str = string.Concat(string.Join(" ", trace.Arguments.Take(2)), " ", match.Groups[1].Value); var bytesTotal = int.Parse(match.Groups[2].Value) + match.Groups[1].Value.Length; return($"{str.TruncateWithEllipsis(truncateTo.Value)} ({bytesTotal.Pluralize("byte")} total)"); } return(string.Join(" ", trace.Arguments).TruncateWithEllipsis(truncateTo.Value)); } return(string.Join(" ", trace.Arguments)); }
public static string TraceDescription(this CommandTrace trace, int?truncateTo = null) { if (truncateTo != null && trace.Arguments.Length >= 4) { var match = _traceRegex.Match(trace.Arguments[3]); if (match.Success) { var startStr = string.Join(" ", trace.Arguments.Take(2)); var message = match.Groups[1].Value.TruncateWithEllipsis(truncateTo.Value); var bytesTotal = int.Parse(match.Groups[2].Value) + message.Length; int bytesLeft = truncateTo.Value - startStr.Length; return(startStr + (bytesLeft > 3 ? $" {message.TruncateWithEllipsis(bytesLeft)} ({bytesTotal.Pluralize("byte")} total)" : $" ({bytesTotal.Pluralize("byte")} total)")); } } return(string.Join(" ", trace.Arguments)); }