/// <inheritdoc/> public override int Set(TextWriter output, RichTextBoxThemeStyle style) { if (_styles.TryGetValue(style, out var runStyle)) { var buffer = new StringBuilder(); buffer.Append("<Run"); var _ = 0; var backgroundColor = runStyle.Background; if (!string.IsNullOrWhiteSpace(backgroundColor)) { buffer.AppendFormat(" Background=\"{0}\"", SpecialCharsEscaping.Apply(backgroundColor, ref _)); } var foregroundColor = runStyle.Foreground; if (!string.IsNullOrWhiteSpace(foregroundColor)) { buffer.AppendFormat(" Foreground=\"{0}\"", SpecialCharsEscaping.Apply(foregroundColor, ref _)); } var fontWeight = runStyle.FontWeight; if (!string.IsNullOrWhiteSpace(fontWeight)) { buffer.AppendFormat(" FontWeight=\"{0}\"", SpecialCharsEscaping.Apply(fontWeight, ref _)); } buffer.Append('>'); output.Write(buffer); return(buffer.Length); } return(0); }
protected override int VisitStructureValue(ThemedValueFormatterState state, StructureValue structure) { var count = 0; if (structure.TypeTag != null) { using (ApplyStyle(state.Output, RichTextBoxThemeStyle.Name, ref count)) { state.Output.Write(structure.TypeTag); } state.Output.Write(' '); } using (ApplyStyle(state.Output, RichTextBoxThemeStyle.TertiaryText, ref count)) { state.Output.Write('{'); } var delim = string.Empty; // ReSharper disable once ForCanBeConvertedToForeach for (var index = 0; index < structure.Properties.Count; ++index) { if (delim.Length != 0) { using (ApplyStyle(state.Output, RichTextBoxThemeStyle.TertiaryText, ref count)) { state.Output.Write(delim); } } delim = ", "; var property = structure.Properties[index]; using (ApplyStyle(state.Output, RichTextBoxThemeStyle.Name, ref count)) { var escapedPropertyName = SpecialCharsEscaping.Apply(property.Name, ref count); state.Output.Write(escapedPropertyName); } using (ApplyStyle(state.Output, RichTextBoxThemeStyle.TertiaryText, ref count)) { state.Output.Write('='); } count += Visit(state.Nest(), property.Value); } using (ApplyStyle(state.Output, RichTextBoxThemeStyle.TertiaryText, ref count)) { state.Output.Write('}'); } return count; }
public override void Render(LogEvent logEvent, TextWriter output) { var _ = 0; var text = _text; using (_theme.Apply(output, RichTextBoxThemeStyle.TertiaryText, ref _)) { text = SpecialCharsEscaping.Apply(text, ref _); output.Write(text); } }
protected override int VisitDictionaryValue(ThemedValueFormatterState state, DictionaryValue dictionary) { var count = 0; using (ApplyStyle(state.Output, RichTextBoxThemeStyle.TertiaryText, ref count)) { state.Output.Write('{'); } var delim = string.Empty; foreach (var element in dictionary.Elements) { if (delim.Length != 0) { using (ApplyStyle(state.Output, RichTextBoxThemeStyle.TertiaryText, ref count)) { state.Output.Write(delim); } } delim = ", "; var style = element.Key.Value is null ? RichTextBoxThemeStyle.Null : element.Key.Value is string ?RichTextBoxThemeStyle.String : RichTextBoxThemeStyle.Scalar; using (ApplyStyle(state.Output, style, ref count)) { var escapedKey = SpecialCharsEscaping.Apply((element.Key.Value ?? "null").ToString(), ref count); JsonValueFormatter.WriteQuotedJsonString(escapedKey, state.Output); } using (ApplyStyle(state.Output, RichTextBoxThemeStyle.TertiaryText, ref count)) { state.Output.Write(": "); } count += Visit(state.Nest(), element.Value); } using (ApplyStyle(state.Output, RichTextBoxThemeStyle.TertiaryText, ref count)) { state.Output.Write('}'); } return(count); }
public override void Render(LogEvent logEvent, TextWriter output) { // Padding is never applied by this renderer. if (logEvent.Exception is null) { return; } var lines = new StringReader(logEvent.Exception.ToString()); string nextLine; while ((nextLine = lines.ReadLine()) != null) { var style = nextLine.StartsWith(_stackFrameLinePrefix) ? RichTextBoxThemeStyle.SecondaryText : RichTextBoxThemeStyle.Text; var _ = 0; using (_theme.Apply(output, style, ref _)) { output.WriteLine(SpecialCharsEscaping.Apply(nextLine, ref _)); } } }
public int FormatLiteralValue(ScalarValue scalar, TextWriter output, string format) { var value = scalar.Value; var count = 0; if (value is null) { using (ApplyStyle(output, RichTextBoxThemeStyle.Null, ref count)) { output.Write("null"); } return count; } if (value is string str) { using (ApplyStyle(output, RichTextBoxThemeStyle.String, ref count)) { var escapedStr = SpecialCharsEscaping.Apply(str, ref count); if (format != "l") { JsonValueFormatter.WriteQuotedJsonString(escapedStr, output); } else { output.Write(escapedStr); } } return count; } if (value is ValueType) { if (value is int || value is uint || value is long || value is ulong || value is decimal || value is byte || value is sbyte || value is short || value is ushort || value is float || value is double) { using (ApplyStyle(output, RichTextBoxThemeStyle.Number, ref count)) { scalar.Render(output, format, _formatProvider); } return count; } if (value is bool b) { using (ApplyStyle(output, RichTextBoxThemeStyle.Boolean, ref count)) { output.Write(b.ToString(CultureInfo.InvariantCulture)); } return count; } if (value is char ch) { using (ApplyStyle(output, RichTextBoxThemeStyle.Scalar, ref count)) { output.Write('\''); output.Write(SpecialCharsEscaping.Apply(ch.ToString(), ref count)); output.Write('\''); } return count; } } using (ApplyStyle(output, RichTextBoxThemeStyle.Scalar, ref count)) { scalar.Render(output, format, _formatProvider); } return count; }
private int FormatLiteralValue(ScalarValue scalar, TextWriter output) { var value = scalar.Value; var count = 0; if (value is null) { using (ApplyStyle(output, RichTextBoxThemeStyle.Null, ref count)) { output.Write("null"); } return(count); } if (value is string str) { using (ApplyStyle(output, RichTextBoxThemeStyle.String, ref count)) { var escapedValue = SpecialCharsEscaping.Apply(str, ref count); JsonValueFormatter.WriteQuotedJsonString(escapedValue, output); } return(count); } if (value is ValueType) { if (value is int || value is uint || value is long || value is ulong || value is decimal || value is byte || value is sbyte || value is short || value is ushort) { using (ApplyStyle(output, RichTextBoxThemeStyle.Number, ref count)) { output.Write(((IFormattable)value).ToString(null, CultureInfo.InvariantCulture)); } return(count); } if (value is double d) { using (ApplyStyle(output, RichTextBoxThemeStyle.Number, ref count)) { if (double.IsNaN(d) || double.IsInfinity(d)) { JsonValueFormatter.WriteQuotedJsonString(d.ToString(CultureInfo.InvariantCulture), output); } else { output.Write(d.ToString("R", CultureInfo.InvariantCulture)); } } return(count); } if (value is float f) { using (ApplyStyle(output, RichTextBoxThemeStyle.Number, ref count)) { if (double.IsNaN(f) || double.IsInfinity(f)) { JsonValueFormatter.WriteQuotedJsonString(f.ToString(CultureInfo.InvariantCulture), output); } else { output.Write(f.ToString("R", CultureInfo.InvariantCulture)); } } return(count); } if (value is bool b) { using (ApplyStyle(output, RichTextBoxThemeStyle.Boolean, ref count)) { output.Write(b ? "true" : "false"); } return(count); } if (value is char ch) { using (ApplyStyle(output, RichTextBoxThemeStyle.Scalar, ref count)) { var charString = SpecialCharsEscaping.Apply(ch.ToString(), ref count); JsonValueFormatter.WriteQuotedJsonString(charString, output); } return(count); } if (value is DateTime || value is DateTimeOffset) { using (ApplyStyle(output, RichTextBoxThemeStyle.Scalar, ref count)) { output.Write('\"'); output.Write(((IFormattable)value).ToString("O", CultureInfo.InvariantCulture)); output.Write('\"'); } return(count); } } using (ApplyStyle(output, RichTextBoxThemeStyle.Scalar, ref count)) { var escapedValue = SpecialCharsEscaping.Apply(value.ToString(), ref count); JsonValueFormatter.WriteQuotedJsonString(escapedValue, output); } return(count); }