void RenderOutputTemplateTextToken( MessageTemplateToken outputToken, IReadOnlyDictionary <string, LogEventPropertyValue> outputProperties) { Console.ForegroundColor = Punctuation; outputToken.Render(outputProperties, Console.Out, _formatProvider); }
private static DocumentRange GetTokenDocumentRange( MessageTemplateToken token, DocumentRange documentRange) { var startOffset = documentRange.TextRange.StartOffset + token.StartIndex + 1; return(new DocumentRange(documentRange.Document, new TextRange(startOffset, startOffset + token.Length))); }
void RenderExceptionToken(Palette palette, MessageTemplateToken outputToken, IReadOnlyDictionary <string, LogEventPropertyValue> outputProperties, TextWriter output) { var sw = new StringWriter(); outputToken.Render(outputProperties, sw, _formatProvider); var lines = new StringReader(sw.ToString()); string nextLine; while ((nextLine = lines.ReadLine()) != null) { if (nextLine.StartsWith(StackFrameLinePrefix)) { SetBaseColors(palette); } else { SetHighlightColors(palette); } output.WriteLine(nextLine); } }
void RenderLevelToken( LogEventLevel level, MessageTemplateToken token, IReadOnlyDictionary <string, LogEventPropertyValue> properties, TextWriter outputStream) { LevelFormat format; if (!_levels.TryGetValue(level, out format)) { format = _levels[LogEventLevel.Warning]; } SysConsole.ForegroundColor = format.Color; if (level == LogEventLevel.Error || level == LogEventLevel.Fatal) { SysConsole.BackgroundColor = format.Color; SysConsole.ForegroundColor = ConsoleColor.White; } token.Render(properties, outputStream); SysConsole.ResetColor(); }
void RenderOutputToken(Palette palette, MessageTemplateToken outputToken, IReadOnlyDictionary <string, LogEventPropertyValue> outputProperties, TextWriter output) { SetBaseColors(palette); outputToken.Render(outputProperties, output, _formatProvider); }
private static (TextRange, IStringLiteralAlterer) FindTokenTextRange(this ICSharpArgument argument, MessageTemplateToken token) { if (argument.Value is IAdditiveExpression additiveExpression && additiveExpression.ConstantValue.IsString()) { var arguments = new LinkedList <ExpressionArgumentInfo>(); FlattenAdditiveExpression(additiveExpression, arguments); var globalOffset = 0; foreach (var additiveArgument in arguments) { var range = additiveArgument.GetDocumentRange(); var start = range.StartOffset.Offset; var end = range.EndOffset.Offset; // Usually there are two quotes in the string expression // But if it's a verbatim string, we should count @ symbol as well var isVerbatimString = additiveArgument.Expression.IsVerbatimString(); var nonTemplateTokenCount = isVerbatimString ? 3 : 2; // The token index is zero-based so we need to subtract 1 if (token.StartIndex < end - start - 1 - nonTemplateTokenCount + globalOffset) { var tokenStartIndex = start + token.StartIndex - globalOffset + 1; if (isVerbatimString) { tokenStartIndex++; } var tokenEndIndex = tokenStartIndex + token.Length; return(new TextRange(tokenStartIndex, end > tokenEndIndex ? tokenEndIndex : end), StringLiteralAltererUtil.TryCreateStringLiteralByExpression(additiveArgument.Expression)); } globalOffset += end - start - nonTemplateTokenCount; } } var startOffset = argument.GetDocumentRange().TextRange.StartOffset + token.StartIndex + 1; if (argument.Expression.IsVerbatimString()) { startOffset++; } // ReSharper disable once AssignNullToNotNullAttribute return(new TextRange(startOffset, startOffset + token.Length), StringLiteralAltererUtil.TryCreateStringLiteralByExpression(argument.Expression)); }
public static MessageTemplateTokenInformation GetTokenInformation(this ICSharpArgument argument, MessageTemplateToken token) { var(tokenTextRange, tokenArgument) = FindTokenTextRange(argument, token); var tokenDocument = argument.GetDocumentRange().Document; var documentRange = new DocumentRange(tokenDocument, tokenTextRange); return(new MessageTemplateTokenInformation(documentRange, tokenArgument)); }
void RenderOutputToken(Palette palette, MessageTemplateToken outputToken, IPropertyDictionary outputProperties, TextWriter output) { SetBaseColors(palette); outputToken.Render(outputProperties, output, _formatProvider); }
public static DocumentRange GetTokenDocumentRange(this IStringLiteralAlterer stringLiteralAlterer, MessageTemplateToken token) { var documentRange = stringLiteralAlterer.Expression.GetDocumentRange(); return(GetTokenDocumentRange(token, documentRange)); }
public static DocumentRange GetTokenDocumentRange(this ICSharpArgument argument, MessageTemplateToken token) { var documentRange = argument.GetDocumentRange(); return(GetTokenDocumentRange(token, documentRange)); }
private static (TextRange, IStringLiteralAlterer) FindTokenTextRange(this ICSharpArgument argument, MessageTemplateToken token) { var documentRange = argument.GetDocumentRange(); if (argument.Value is IAdditiveExpression additiveExpression && additiveExpression.ConstantValue.IsString()) { var arguments = new LinkedList <ExpressionArgumentInfo>(); FlattenAdditiveExpression(additiveExpression, arguments); var globalOffset = 0; foreach (var additiveArgument in arguments) { var range = additiveArgument.GetDocumentRange(); var start = range.StartOffset.Offset; var end = range.EndOffset.Offset; // The token index is zero-based and we remove two quotes if (token.StartIndex < end - start - 3 + globalOffset) { var tokenStartIndex = start + token.StartIndex - globalOffset + 1; var tokenEndIndex = tokenStartIndex + token.Length; return(new TextRange(tokenStartIndex, end > tokenEndIndex ? tokenEndIndex : end), StringLiteralAltererUtil.TryCreateStringLiteralByExpression(additiveArgument.Expression)); } globalOffset += end - start - 2; } } var startOffset = documentRange.TextRange.StartOffset + token.StartIndex + 1; // ReSharper disable once AssignNullToNotNullAttribute return(new TextRange(startOffset, startOffset + token.Length), StringLiteralAltererUtil.TryCreateStringLiteralByExpression(argument.Expression)); }