public override SyntaxNode VisitMarkupTextLiteral(MarkupTextLiteralSyntax node) { if (!_tryParseResult.IsBoundNonStringAttribute) { return(base.VisitMarkupTextLiteral(node)); } _rewriteAsMarkup = true; node = (MarkupTextLiteralSyntax)ConfigureNonStringAttribute(node); var tokens = new SyntaxList <SyntaxToken>(node.LiteralTokens); var value = SyntaxFactory.CSharpExpressionLiteral(tokens); return(value.WithSpanContext(node.GetSpanContext())); }
public override void VisitMarkupTextLiteral(MarkupTextLiteralSyntax node) { var context = node.GetSpanContext(); if (context != null && context.ChunkGenerator == SpanChunkGenerator.Null) { base.VisitMarkupTextLiteral(node); return; } if (node.LiteralTokens.Count == 1) { var token = node.LiteralTokens[0]; if (token != null && token.Kind == SyntaxKind.Marker && token.Content.Length == 0) { // We don't want to create IR nodes for marker tokens. base.VisitMarkupTextLiteral(node); return; } } var source = BuildSourceSpanFromNode(node); var currentChildren = _builder.Current.Children; if (currentChildren.Count > 0 && currentChildren[currentChildren.Count - 1] is HtmlContentIntermediateNode) { var existingHtmlContent = (HtmlContentIntermediateNode)currentChildren[currentChildren.Count - 1]; if (existingHtmlContent.Source == null && source == null) { Combine(existingHtmlContent, node); base.VisitMarkupTextLiteral(node); return; } if (source != null && existingHtmlContent.Source != null && existingHtmlContent.Source.Value.FilePath == source.Value.FilePath && existingHtmlContent.Source.Value.AbsoluteIndex + existingHtmlContent.Source.Value.Length == source.Value.AbsoluteIndex) { Combine(existingHtmlContent, node); base.VisitMarkupTextLiteral(node); return; } } var contentNode = new HtmlContentIntermediateNode() { Source = source }; _builder.Push(contentNode); _builder.Add(new IntermediateToken() { Content = node.GetContent(), Kind = TokenKind.Html, Source = source, }); _builder.Pop(); base.VisitMarkupTextLiteral(node); }