예제 #1
0
            public override SyntaxNode VisitMarkupDynamicAttributeValue(MarkupDynamicAttributeValueSyntax node)
            {
                // Move the prefix to be part of the actual value.
                var builder = SyntaxListBuilder <RazorSyntaxNode> .Create();

                if (node.Prefix != null)
                {
                    builder.Add(node.Prefix);
                }
                if (node.Value?.Children != null)
                {
                    builder.AddRange(node.Value.Children);
                }
                var rewrittenValue = SyntaxFactory.MarkupBlock(builder.ToList());

                return(base.VisitMarkupBlock(rewrittenValue));
            }
예제 #2
0
            // Example
            // <input checked="hello-world `@false`"/>
            //  Prefix= (space)
            //  Children will contain a token for @false.
            public override void VisitMarkupDynamicAttributeValue(MarkupDynamicAttributeValueSyntax node)
            {
                var containsExpression = false;
                var descendantNodes    = node.DescendantNodes(n =>
                {
                    // Don't go into sub block. They may contain expressions but we only care about the top level.
                    return(!(n.Parent is CSharpCodeBlockSyntax));
                });

                foreach (var child in descendantNodes)
                {
                    if (child is CSharpImplicitExpressionSyntax || child is CSharpExplicitExpressionSyntax)
                    {
                        containsExpression = true;
                    }
                }

                if (containsExpression)
                {
                    _builder.Push(new CSharpExpressionAttributeValueIntermediateNode()
                    {
                        Prefix = node.Prefix?.GetContent() ?? string.Empty,
                        Source = BuildSourceSpanFromNode(node),
                    });
                }
                else
                {
                    _builder.Push(new CSharpCodeAttributeValueIntermediateNode()
                    {
                        Prefix = node.Prefix?.GetContent() ?? string.Empty,
                        Source = BuildSourceSpanFromNode(node),
                    });
                }

                Visit(node.Value);

                _builder.Pop();
            }
예제 #3
0
 public override void VisitMarkupDynamicAttributeValue(MarkupDynamicAttributeValueSyntax node)
 {
     WriteBlock(node, FormattingBlockKind.Markup, base.VisitMarkupDynamicAttributeValue);
 }
예제 #4
0
 public override void VisitMarkupDynamicAttributeValue(MarkupDynamicAttributeValueSyntax node)
 {
     WriteBlock(node, BlockKindInternal.Markup, base.VisitMarkupDynamicAttributeValue);
 }