Refactored attribute values IR

This commit is contained in:
Ajay Bhargav Baaskaran 2017-05-23 16:20:46 -07:00
parent dcccea3004
commit 2f03a39e41
39 changed files with 736 additions and 339 deletions

View File

@ -93,7 +93,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
public override void VisitCSharpExpression(CSharpExpressionIRNode node)
{
if (node.Source != null && !(node.Parent is CSharpAttributeValueIRNode))
if (node.Source != null)
{
Items.Add(new InstrumentationItem(node, isLiteral: false, source: node.Source.Value));
}

View File

@ -21,6 +21,8 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
public abstract void WriteHtmlAttributeValue(CSharpRenderingContext context, HtmlAttributeValueIRNode node);
public abstract void WriteCSharpAttributeValue(CSharpRenderingContext context, CSharpAttributeValueIRNode node);
public abstract void WriteCSharpExpressionAttributeValue(CSharpRenderingContext context, CSharpExpressionAttributeValueIRNode node);
public abstract void WriteCSharpStatementAttributeValue(CSharpRenderingContext context, CSharpStatementAttributeValueIRNode node);
}
}

View File

@ -209,9 +209,14 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
Context.BasicWriter.WriteHtmlAttributeValue(Context, node);
}
public override void VisitCSharpAttributeValue(CSharpAttributeValueIRNode node)
public override void VisitCSharpExpressionAttributeValue(CSharpExpressionAttributeValueIRNode node)
{
Context.BasicWriter.WriteCSharpAttributeValue(Context, node);
Context.BasicWriter.WriteCSharpExpressionAttributeValue(Context, node);
}
public override void VisitCSharpStatementAttributeValue(CSharpStatementAttributeValueIRNode node)
{
Context.BasicWriter.WriteCSharpStatementAttributeValue(Context, node);
}
public override void VisitHtml(HtmlContentIRNode node)

View File

@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using Microsoft.AspNetCore.Razor.Language.Intermediate;
namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
@ -153,9 +154,115 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
context.RenderChildren(node);
}
public override void WriteCSharpAttributeValue(CSharpRenderingContext context, CSharpAttributeValueIRNode node)
public override void WriteCSharpExpressionAttributeValue(CSharpRenderingContext context, CSharpExpressionAttributeValueIRNode node)
{
context.RenderChildren(node);
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
if (node == null)
{
throw new ArgumentNullException(nameof(node));
}
if (node.Children.Count == 0)
{
return;
}
var firstChild = node.Children[0];
if (firstChild.Source != null)
{
using (context.Writer.BuildLinePragma(firstChild.Source.Value))
{
var offset = RazorDesignTimeIRPass.DesignTimeVariable.Length + " = ".Length;
context.Writer.WritePadding(offset, firstChild.Source, context);
context.Writer.WriteStartAssignment(RazorDesignTimeIRPass.DesignTimeVariable);
for (var i = 0; i < node.Children.Count; i++)
{
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
{
context.AddLineMappingFor(token);
context.Writer.Write(token.Content);
}
else
{
// There may be something else inside the expression like a Template or another extension node.
context.RenderNode(node.Children[i]);
}
}
context.Writer.WriteLine(";");
}
}
else
{
context.Writer.WriteStartAssignment(RazorDesignTimeIRPass.DesignTimeVariable);
for (var i = 0; i < node.Children.Count; i++)
{
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
{
if (token.Source != null)
{
context.AddLineMappingFor(token);
}
context.Writer.Write(token.Content);
}
else
{
// There may be something else inside the expression like a Template or another extension node.
context.RenderNode(node.Children[i]);
}
}
context.Writer.WriteLine(";");
}
}
public override void WriteCSharpStatementAttributeValue(CSharpRenderingContext context, CSharpStatementAttributeValueIRNode node)
{
for (var i = 0; i < node.Children.Count; i++)
{
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
{
IDisposable linePragmaScope = null;
var isWhitespaceStatement = string.IsNullOrWhiteSpace(token.Content);
if (token.Source != null)
{
if (!isWhitespaceStatement)
{
linePragmaScope = context.Writer.BuildLinePragma(token.Source.Value);
}
context.Writer.WritePadding(0, token.Source.Value, context);
}
else if (isWhitespaceStatement)
{
// Don't write whitespace if there is no line mapping for it.
continue;
}
context.AddLineMappingFor(token);
context.Writer.Write(token.Content);
if (linePragmaScope != null)
{
linePragmaScope.Dispose();
}
else
{
context.Writer.WriteLine();
}
}
else
{
// There may be something else inside the statement like an extension node.
context.RenderNode(node.Children[i]);
}
}
}
public override void WriteHtmlContent(CSharpRenderingContext context, HtmlContentIRNode node)

View File

@ -147,7 +147,12 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
{
var valuePieceCount = node
.Children
.Count(child => child is HtmlAttributeValueIRNode || child is CSharpAttributeValueIRNode);
.Count(child =>
child is HtmlAttributeValueIRNode ||
child is CSharpExpressionAttributeValueIRNode ||
child is CSharpStatementAttributeValueIRNode ||
child is ExtensionIRNode);
var prefixLocation = node.Source.Value.AbsoluteIndex;
var suffixLocation = node.Source.Value.AbsoluteIndex + node.Source.Value.Length - node.Suffix.Length;
context.Writer
@ -182,8 +187,23 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
.WriteStringLiteral(node.Prefix)
.WriteParameterSeparator()
.Write(prefixLocation.ToString(CultureInfo.InvariantCulture))
.WriteParameterSeparator()
.WriteStringLiteral(node.Content)
.WriteParameterSeparator();
// Write content
for (var i = 0; i < node.Children.Count; i++)
{
if (node.Children[i] is RazorIRToken token && token.IsHtml)
{
context.Writer.WriteStringLiteral(token.Content);
}
else
{
// There may be something else inside the attribute value like an extension node.
context.RenderNode(node.Children[i]);
}
}
context.Writer
.WriteParameterSeparator()
.Write(valueLocation.ToString(CultureInfo.InvariantCulture))
.WriteParameterSeparator()
@ -193,12 +213,48 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
.WriteEndMethodInvocation();
}
public override void WriteCSharpAttributeValue(CSharpRenderingContext context, CSharpAttributeValueIRNode node)
public override void WriteCSharpExpressionAttributeValue(CSharpRenderingContext context, CSharpExpressionAttributeValueIRNode node)
{
using (context.Writer.BuildLinePragma(node.Source.Value))
{
var prefixLocation = node.Source.Value.AbsoluteIndex;
context.Writer
.WriteStartMethodInvocation(WriteAttributeValueMethod)
.WriteStringLiteral(node.Prefix)
.WriteParameterSeparator()
.Write(prefixLocation.ToString(CultureInfo.InvariantCulture))
.WriteParameterSeparator();
for (var i = 0; i < node.Children.Count; i++)
{
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
{
context.Writer.Write(token.Content);
}
else
{
// There may be something else inside the expression like an extension node.
context.RenderNode(node.Children[i]);
}
}
var valueLocation = node.Source.Value.AbsoluteIndex + node.Prefix.Length;
var valueLength = node.Source.Value.Length - node.Prefix.Length;
context.Writer
.WriteParameterSeparator()
.Write(valueLocation.ToString(CultureInfo.InvariantCulture))
.WriteParameterSeparator()
.Write(valueLength.ToString(CultureInfo.InvariantCulture))
.WriteParameterSeparator()
.WriteBooleanLiteral(false)
.WriteEndMethodInvocation();
}
}
public override void WriteCSharpStatementAttributeValue(CSharpRenderingContext context, CSharpStatementAttributeValueIRNode node)
{
const string ValueWriterName = "__razor_attribute_value_writer";
var expressionValue = node.Children.FirstOrDefault() as CSharpExpressionIRNode;
var linePragma = expressionValue != null ? context.Writer.BuildLinePragma(node.Source.Value) : null;
var prefixLocation = node.Source.Value.AbsoluteIndex;
var valueLocation = node.Source.Value.AbsoluteIndex + node.Prefix.Length;
var valueLength = node.Source.Value.Length - node.Prefix.Length;
@ -209,29 +265,56 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
.Write(prefixLocation.ToString(CultureInfo.InvariantCulture))
.WriteParameterSeparator();
if (expressionValue != null)
{
Debug.Assert(node.Children.Count == 1);
context.Writer.WriteStartNewObject(TemplateTypeName);
RenderExpressionInline(context, expressionValue);
}
else
using (context.Writer.BuildAsyncLambda(endLine: false, parameterNames: ValueWriterName))
{
// Not an expression; need to buffer the result.
context.Writer.WriteStartNewObject(TemplateTypeName);
context.Writer.WriteMethodInvocation(PushWriterMethod, ValueWriterName);
using (context.Writer.BuildAsyncLambda(endLine: false, parameterNames: ValueWriterName))
for (var i = 0; i < node.Children.Count; i++)
{
context.Writer.WriteMethodInvocation(PushWriterMethod, ValueWriterName);
if (node.Children[i] is RazorIRToken token && token.IsCSharp)
{
var isWhitespaceStatement = string.IsNullOrWhiteSpace(token.Content);
IDisposable linePragmaScope = null;
if (token.Source != null)
{
if (!isWhitespaceStatement)
{
linePragmaScope = context.Writer.BuildLinePragma(token.Source.Value);
}
context.RenderChildren(node);
context.Writer.WritePadding(0, token.Source.Value, context);
}
else if (isWhitespaceStatement)
{
// Don't write whitespace if there is no line mapping for it.
continue;
}
context.Writer.WriteMethodInvocation(PopWriterMethod);
context.Writer.Write(token.Content);
if (linePragmaScope != null)
{
linePragmaScope.Dispose();
}
else
{
context.Writer.WriteLine();
}
}
else
{
// There may be something else inside the statement like an extension node.
context.RenderNode(node.Children[i]);
}
}
context.Writer.WriteEndMethodInvocation(false);
context.Writer.WriteMethodInvocation(PopWriterMethod);
}
context.Writer.WriteEndMethodInvocation(false);
context.Writer
.WriteParameterSeparator()
.Write(valueLocation.ToString(CultureInfo.InvariantCulture))
@ -240,8 +323,6 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
.WriteParameterSeparator()
.WriteBooleanLiteral(false)
.WriteEndMethodInvocation();
linePragma?.Dispose();
}
public override void WriteHtmlContent(CSharpRenderingContext context, HtmlContentIRNode node)
@ -283,20 +364,5 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
charactersConsumed += textToRender.Length;
}
}
protected static void RenderExpressionInline(CSharpRenderingContext context, RazorIRNode node)
{
if (node is RazorIRToken token && token.IsCSharp)
{
context.Writer.Write(token.Content);
}
else
{
for (var i = 0; i < node.Children.Count; i++)
{
RenderExpressionInline(context, node.Children[i]);
}
}
}
}
}

View File

@ -242,7 +242,8 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
public override void WriteAddTagHelperHtmlAttribute(CSharpRenderingContext context, AddTagHelperHtmlAttributeIRNode node)
{
var attributeValueStyleParameter = $"{HtmlAttributeValueStyleTypeName}.{node.ValueStyle}";
var isConditionalAttributeValue = node.Children.Any(child => child is CSharpAttributeValueIRNode);
var isConditionalAttributeValue = node.Children.Any(
child => child is CSharpExpressionAttributeValueIRNode || child is CSharpStatementAttributeValueIRNode);
// All simple text and minimized attributes will be pre-allocated.
if (isConditionalAttributeValue)
@ -253,7 +254,11 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
// TagHelper attribute rendering is buffered by default. We do not want to write to the current
// writer.
var valuePieceCount = node.Children.Count(
child => child is HtmlAttributeValueIRNode || child is CSharpAttributeValueIRNode);
child =>
child is HtmlAttributeValueIRNode ||
child is CSharpExpressionAttributeValueIRNode ||
child is CSharpStatementAttributeValueIRNode ||
child is ExtensionIRNode);
context.Writer
.WriteStartMethodInvocation(BeginAddHtmlAttributeValuesMethodName)

View File

@ -295,11 +295,23 @@ namespace Microsoft.AspNetCore.Razor.Language
// Children will contain a token for @false.
public override void VisitDynamicAttributeBlock(DynamicAttributeBlockChunkGenerator chunkGenerator, Block block)
{
_builder.Push(new CSharpAttributeValueIRNode()
var firstChild = block.Children.FirstOrDefault(c => c.IsBlock) as Block;
if (firstChild == null || firstChild.Type == BlockKindInternal.Expression)
{
Prefix = chunkGenerator.Prefix,
Source = BuildSourceSpanFromNode(block),
});
_builder.Push(new CSharpExpressionAttributeValueIRNode()
{
Prefix = chunkGenerator.Prefix,
Source = BuildSourceSpanFromNode(block),
});
}
else
{
_builder.Push(new CSharpStatementAttributeValueIRNode()
{
Prefix = chunkGenerator.Prefix,
Source = BuildSourceSpanFromNode(block),
});
}
VisitDefault(block);
@ -308,12 +320,32 @@ namespace Microsoft.AspNetCore.Razor.Language
public override void VisitLiteralAttributeSpan(LiteralAttributeChunkGenerator chunkGenerator, Span span)
{
_builder.Add(new HtmlAttributeValueIRNode()
_builder.Push(new HtmlAttributeValueIRNode()
{
Prefix = chunkGenerator.Prefix,
Content = chunkGenerator.Value,
Source = BuildSourceSpanFromNode(span),
});
var location = chunkGenerator.Value.Location;
SourceSpan? valueSpan = null;
if (location != SourceLocation.Undefined)
{
valueSpan = new SourceSpan(
location.FilePath ?? FileName,
location.AbsoluteIndex,
location.LineIndex,
location.CharacterIndex,
chunkGenerator.Value.Value.Length);
}
_builder.Add(new RazorIRToken()
{
Content = chunkGenerator.Value,
Kind = RazorIRToken.TokenKind.Html,
Source = valueSpan
});
_builder.Pop();
}
public override void VisitTemplateBlock(TemplateBlockChunkGenerator chunkGenerator, Block block)
@ -354,7 +386,14 @@ namespace Microsoft.AspNetCore.Razor.Language
// We need to capture this in the IR so that we can give each piece the correct source mappings
public override void VisitExpressionBlock(ExpressionChunkGenerator chunkGenerator, Block block)
{
if (_builder.Current is CSharpExpressionAttributeValueIRNode)
{
VisitDefault(block);
return;
}
var expressionNode = new CSharpExpressionIRNode();
_builder.Push(expressionNode);
VisitDefault(block);
@ -394,11 +433,16 @@ namespace Microsoft.AspNetCore.Razor.Language
public override void VisitStatementSpan(StatementChunkGenerator chunkGenerator, Span span)
{
var statementNode = new CSharpStatementIRNode()
var isAttributeValue = _builder.Current is CSharpStatementAttributeValueIRNode;
if (!isAttributeValue)
{
Source = BuildSourceSpanFromNode(span)
};
_builder.Push(statementNode);
var statementNode = new CSharpStatementIRNode()
{
Source = BuildSourceSpanFromNode(span)
};
_builder.Push(statementNode);
}
_builder.Add(new RazorIRToken()
{
@ -407,7 +451,10 @@ namespace Microsoft.AspNetCore.Razor.Language
Source = BuildSourceSpanFromNode(span),
});
_builder.Pop();
if (!isAttributeValue)
{
_builder.Pop();
}
}
public override void VisitMarkupSpan(MarkupChunkGenerator chunkGenerator, Span span)

View File

@ -0,0 +1,31 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
{
public sealed class CSharpExpressionAttributeValueIRNode : RazorIRNode
{
public override ItemCollection Annotations => ReadOnlyItemCollection.Empty;
public override IList<RazorIRNode> Children { get; } = new List<RazorIRNode>();
public override RazorIRNode Parent { get; set; }
public override SourceSpan? Source { get; set; }
public string Prefix { get; set; }
public override void Accept(RazorIRNodeVisitor visitor)
{
if (visitor == null)
{
throw new ArgumentNullException(nameof(visitor));
}
visitor.VisitCSharpExpressionAttributeValue(this);
}
}
}

View File

@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
{
public sealed class CSharpAttributeValueIRNode : RazorIRNode
public sealed class CSharpStatementAttributeValueIRNode : RazorIRNode
{
public override ItemCollection Annotations => ReadOnlyItemCollection.Empty;
@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
throw new ArgumentNullException(nameof(visitor));
}
visitor.VisitCSharpAttributeValue(this);
visitor.VisitCSharpStatementAttributeValue(this);
}
}
}

View File

@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
{
public override ItemCollection Annotations => ReadOnlyItemCollection.Empty;
public override IList<RazorIRNode> Children { get; } = EmptyArray;
public override IList<RazorIRNode> Children { get; } = new List<RazorIRNode>();
public override RazorIRNode Parent { get; set; }
@ -18,8 +18,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
public string Prefix { get; set; }
public string Content { get; set; }
public override void Accept(RazorIRNodeVisitor visitor)
{
if (visitor == null)

View File

@ -54,7 +54,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
VisitDefault(node);
}
public virtual void VisitCSharpAttributeValue(CSharpAttributeValueIRNode node)
public virtual void VisitCSharpExpressionAttributeValue(CSharpExpressionAttributeValueIRNode node)
{
VisitDefault(node);
}
public virtual void VisitCSharpStatementAttributeValue(CSharpStatementAttributeValueIRNode node)
{
VisitDefault(node);
}

View File

@ -30,9 +30,8 @@ Document -
HtmlContent - (0:0,0 [4] Basic.cshtml)
RazorIRToken - (0:0,0 [4] Basic.cshtml) - Html - <div
HtmlAttribute - (4:0,4 [25] Basic.cshtml) - class=" - "
CSharpAttributeValue - (12:0,12 [16] Basic.cshtml) -
CSharpExpression - (13:0,13 [15] Basic.cshtml)
RazorIRToken - (13:0,13 [15] Basic.cshtml) - CSharp - this.ToString()
CSharpExpressionAttributeValue - (12:0,12 [16] Basic.cshtml) -
RazorIRToken - (13:0,13 [15] Basic.cshtml) - CSharp - this.ToString()
HtmlContent - (29:0,29 [24] Basic.cshtml)
RazorIRToken - (29:0,29 [1] Basic.cshtml) - Html - >
RazorIRToken - (30:0,30 [23] Basic.cshtml) - Html - \n Hello world\n
@ -47,13 +46,11 @@ Document -
HtmlContent - (123:7,0 [2] Basic.cshtml)
RazorIRToken - (123:7,0 [2] Basic.cshtml) - Html - <p
HtmlAttribute - (125:7,2 [34] Basic.cshtml) - class=" - "
CSharpAttributeValue - (133:7,10 [25] Basic.cshtml) -
CSharpStatement - (134:7,11 [18] Basic.cshtml)
RazorIRToken - (134:7,11 [18] Basic.cshtml) - CSharp - if(cls != null) {
CSharpStatementAttributeValue - (133:7,10 [25] Basic.cshtml) -
RazorIRToken - (134:7,11 [18] Basic.cshtml) - CSharp - if(cls != null) {
CSharpExpression - (153:7,30 [3] Basic.cshtml)
RazorIRToken - (153:7,30 [3] Basic.cshtml) - CSharp - cls
CSharpStatement - (156:7,33 [2] Basic.cshtml)
RazorIRToken - (156:7,33 [2] Basic.cshtml) - CSharp - }
RazorIRToken - (156:7,33 [2] Basic.cshtml) - CSharp - }
HtmlContent - (159:7,36 [5] Basic.cshtml)
RazorIRToken - (159:7,36 [3] Basic.cshtml) - Html - />
RazorIRToken - (162:7,39 [2] Basic.cshtml) - Html - \n

View File

@ -54,11 +54,13 @@ Write(string.Format("{0}", "Hello"));
#line default
#line hidden
BeginContext(153, 3, false);
#line 8 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Basic.cshtml"
Write(cls);
#line default
#line hidden
EndContext();
#line 8 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/Basic.cshtml"
}

View File

@ -17,9 +17,8 @@ Document -
CSharpStatement -
RazorIRToken - - CSharp - EndContext();
HtmlAttribute - (4:0,4 [25] Basic.cshtml) - class=" - "
CSharpAttributeValue - (12:0,12 [16] Basic.cshtml) -
CSharpExpression - (13:0,13 [15] Basic.cshtml)
RazorIRToken - (13:0,13 [15] Basic.cshtml) - CSharp - this.ToString()
CSharpExpressionAttributeValue - (12:0,12 [16] Basic.cshtml) -
RazorIRToken - (13:0,13 [15] Basic.cshtml) - CSharp - this.ToString()
CSharpStatement -
RazorIRToken - - CSharp - BeginContext(29, 24, true);
HtmlContent - (29:0,29 [24] Basic.cshtml)
@ -51,13 +50,15 @@ Document -
CSharpStatement -
RazorIRToken - - CSharp - EndContext();
HtmlAttribute - (125:7,2 [34] Basic.cshtml) - class=" - "
CSharpAttributeValue - (133:7,10 [25] Basic.cshtml) -
CSharpStatement - (134:7,11 [18] Basic.cshtml)
RazorIRToken - (134:7,11 [18] Basic.cshtml) - CSharp - if(cls != null) {
CSharpStatementAttributeValue - (133:7,10 [25] Basic.cshtml) -
RazorIRToken - (134:7,11 [18] Basic.cshtml) - CSharp - if(cls != null) {
CSharpStatement -
RazorIRToken - - CSharp - BeginContext(153, 3, false);
CSharpExpression - (153:7,30 [3] Basic.cshtml)
RazorIRToken - (153:7,30 [3] Basic.cshtml) - CSharp - cls
CSharpStatement - (156:7,33 [2] Basic.cshtml)
RazorIRToken - (156:7,33 [2] Basic.cshtml) - CSharp - }
CSharpStatement -
RazorIRToken - - CSharp - EndContext();
RazorIRToken - (156:7,33 [2] Basic.cshtml) - CSharp - }
CSharpStatement -
RazorIRToken - - CSharp - BeginContext(159, 5, true);
HtmlContent - (159:7,36 [5] Basic.cshtml)

View File

@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Razor.Language.Intermediate;
using Xunit;
@ -405,6 +406,147 @@ if (true) { }
ignoreLineEndingDifferences: true);
}
[Fact]
public void WriteCSharpExpressionAttributeValue_RendersCorrectly()
{
var writer = new DesignTimeBasicWriter();
var context = GetCSharpRenderingContext(writer);
var content = "<input checked=\"hello-world @false\" />";
var sourceDocument = TestRazorSourceDocument.Create(content);
var codeDocument = RazorCodeDocument.Create(sourceDocument);
context.CodeDocument = codeDocument;
var irDocument = Lower(codeDocument);
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpExpressionAttributeValueIRNode;
// Act
writer.WriteCSharpExpressionAttributeValue(context, node);
// Assert
var csharp = context.Writer.Builder.ToString();
Assert.Equal(
@"#line 1 ""test.cshtml""
__o = false;
#line default
#line hidden
",
csharp,
ignoreLineEndingDifferences: true);
}
[Fact]
public void WriteCSharpStatementAttributeValue_RendersCorrectly()
{
var writer = new DesignTimeBasicWriter();
var context = GetCSharpRenderingContext(writer);
var content = "<input checked=\"hello-world @if(@true){ }\" />";
var sourceDocument = TestRazorSourceDocument.Create(content);
var codeDocument = RazorCodeDocument.Create(sourceDocument);
context.CodeDocument = codeDocument;
var irDocument = Lower(codeDocument);
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpStatementAttributeValueIRNode;
// Act
writer.WriteCSharpStatementAttributeValue(context, node);
// Assert
var csharp = context.Writer.Builder.ToString();
Assert.Equal(
@"#line 1 ""test.cshtml""
if(@true){ }
#line default
#line hidden
",
csharp,
ignoreLineEndingDifferences: true);
}
[Fact]
public void WriteCSharpStatementAttributeValue_WithExpression_RendersCorrectly()
{
var writer = new DesignTimeBasicWriter();
var context = GetCSharpRenderingContext(writer);
var content = "<input checked=\"hello-world @if(@true){ @false }\" />";
var sourceDocument = TestRazorSourceDocument.Create(content);
var codeDocument = RazorCodeDocument.Create(sourceDocument);
context.CodeDocument = codeDocument;
var irDocument = Lower(codeDocument);
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpStatementAttributeValueIRNode;
// Act
writer.WriteCSharpStatementAttributeValue(context, node);
// Assert
var csharp = context.Writer.Builder.ToString();
Assert.Equal(
@"#line 1 ""test.cshtml""
if(@true){
#line default
#line hidden
Render Node - CSharpExpressionIRNode
#line 1 ""test.cshtml""
}
#line default
#line hidden
",
csharp,
ignoreLineEndingDifferences: true);
}
private static CSharpRenderingContext GetCSharpRenderingContext(BasicWriter writer)
{
var options = RazorCodeGenerationOptions.CreateDefault();
var codeWriter = new Legacy.CSharpCodeWriter();
var context = new CSharpRenderingContext()
{
Writer = codeWriter,
Options = options,
BasicWriter = writer,
RenderChildren = n =>
{
codeWriter.WriteLine("Render Children");
},
RenderNode = n =>
{
codeWriter.WriteLine($"Render Node - {n.GetType().Name}");
}
};
return context;
}
private static DocumentIRNode Lower(RazorCodeDocument codeDocument)
{
var engine = RazorEngine.Create();
return Lower(codeDocument, engine);
}
private static DocumentIRNode Lower(RazorCodeDocument codeDocument, RazorEngine engine)
{
for (var i = 0; i < engine.Phases.Count; i++)
{
var phase = engine.Phases[i];
phase.Execute(codeDocument);
if (phase is IRazorIRLoweringPhase)
{
break;
}
}
var irDocument = codeDocument.GetIRDocument();
Assert.NotNull(irDocument);
return irDocument;
}
private class MyExtensionIRNode : ExtensionIRNode
{
public override IList<RazorIRNode> Children => throw new NotImplementedException();

View File

@ -543,7 +543,7 @@ EndWriteAttribute();
}
[Fact]
public void WriteCSharpAttributeValue_RendersCorrectly()
public void WriteCSharpExpressionAttributeValue_RendersCorrectly()
{
var writer = new RuntimeBasicWriter();
var context = GetCSharpRenderingContext(writer);
@ -552,10 +552,10 @@ EndWriteAttribute();
var sourceDocument = TestRazorSourceDocument.Create(content);
var codeDocument = RazorCodeDocument.Create(sourceDocument);
var irDocument = Lower(codeDocument);
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpAttributeValueIRNode;
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpExpressionAttributeValueIRNode;
// Act
writer.WriteCSharpAttributeValue(context, node);
writer.WriteCSharpExpressionAttributeValue(context, node);
// Assert
var csharp = context.Writer.Builder.ToString();
@ -571,7 +571,7 @@ WriteAttributeValue("" "", 27, false, 28, 6, false);
}
[Fact]
public void WriteCSharpAttributeValue_NonExpression_BuffersResult()
public void WriteCSharpStatementAttributeValue_BuffersResult()
{
var writer = new RuntimeBasicWriter();
var context = GetCSharpRenderingContext(writer);
@ -579,18 +579,23 @@ WriteAttributeValue("" "", 27, false, 28, 6, false);
var content = "<input checked=\"hello-world @if(@true){ }\" />";
var sourceDocument = TestRazorSourceDocument.Create(content);
var codeDocument = RazorCodeDocument.Create(sourceDocument);
context.CodeDocument = codeDocument;
var irDocument = Lower(codeDocument);
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpAttributeValueIRNode;
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpStatementAttributeValueIRNode;
// Act
writer.WriteCSharpAttributeValue(context, node);
writer.WriteCSharpStatementAttributeValue(context, node);
// Assert
var csharp = context.Writer.Builder.ToString();
Assert.Equal(
@"WriteAttributeValue("" "", 27, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
PushWriter(__razor_attribute_value_writer);
Render Children
#line 1 ""test.cshtml""
if(@true){ }
#line default
#line hidden
PopWriter();
}
), 28, 13, false);

View File

@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
}
[Fact]
public void WriteCSharpAttributeValue_RendersCorrectly()
public void WriteCSharpExpressionAttributeValue_RendersCorrectly()
{
var writer = new TagHelperHtmlAttributeRuntimeBasicWriter();
var context = GetCSharpRenderingContext(writer);
@ -43,10 +43,10 @@ namespace Microsoft.AspNetCore.Razor.Language.CodeGeneration
var sourceDocument = TestRazorSourceDocument.Create(content);
var codeDocument = RazorCodeDocument.Create(sourceDocument);
var irDocument = Lower(codeDocument);
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpAttributeValueIRNode;
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpExpressionAttributeValueIRNode;
// Act
writer.WriteCSharpAttributeValue(context, node);
writer.WriteCSharpExpressionAttributeValue(context, node);
// Assert
var csharp = context.Writer.Builder.ToString();
@ -62,7 +62,7 @@ AddHtmlAttributeValue("" "", 27, false, 28, 6, false);
}
[Fact]
public void WriteCSharpAttributeValue_NonExpression_BuffersResult()
public void WriteCSharpStatementAttributeValue_BuffersResult()
{
var writer = new TagHelperHtmlAttributeRuntimeBasicWriter();
var context = GetCSharpRenderingContext(writer);
@ -70,18 +70,23 @@ AddHtmlAttributeValue("" "", 27, false, 28, 6, false);
var content = "<input checked=\"hello-world @if(@true){ }\" />";
var sourceDocument = TestRazorSourceDocument.Create(content);
var codeDocument = RazorCodeDocument.Create(sourceDocument);
context.CodeDocument = codeDocument;
var irDocument = Lower(codeDocument);
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpAttributeValueIRNode;
var node = irDocument.Children.OfType<HtmlAttributeIRNode>().Single().Children[1] as CSharpStatementAttributeValueIRNode;
// Act
writer.WriteCSharpAttributeValue(context, node);
writer.WriteCSharpStatementAttributeValue(context, node);
// Assert
var csharp = context.Writer.Builder.ToString();
Assert.Equal(
@"AddHtmlAttributeValue("" "", 27, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
PushWriter(__razor_attribute_value_writer);
Render Children
#line 1 ""test.cshtml""
if(@true){ }
#line default
#line hidden
PopWriter();
}
), 28, 13, false);

View File

@ -3,7 +3,6 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Razor.Language.Legacy;
using Microsoft.AspNetCore.Razor.Language.Intermediate;
using Xunit;
@ -145,7 +144,7 @@ namespace Microsoft.AspNetCore.Razor.Language
node: n,
valueValidators: new Action<RazorIRNode>[]
{
value => CSharpAttributeValue(string.Empty, "Hello", value),
value => CSharpExpressionAttributeValue(string.Empty, "Hello", value),
value => LiteralAttributeValue(" ", "World", value)
}),
n => Html(@" />
@ -226,7 +225,7 @@ namespace Microsoft.AspNetCore.Razor.Language
"val",
HtmlAttributeValueStyle.DoubleQuotes,
c,
v => CSharpAttributeValue(string.Empty, "Hello", v),
v => CSharpExpressionAttributeValue(string.Empty, "Hello", v),
v => LiteralAttributeValue(" ", "World", v))));
}
@ -270,7 +269,7 @@ namespace Microsoft.AspNetCore.Razor.Language
"val",
HtmlAttributeValueStyle.DoubleQuotes,
c,
v => CSharpAttributeValue(string.Empty, "Hello", v),
v => CSharpExpressionAttributeValue(string.Empty, "Hello", v),
v => LiteralAttributeValue(" ", "World", v))));
}
@ -316,7 +315,7 @@ namespace Microsoft.AspNetCore.Razor.Language
"val",
HtmlAttributeValueStyle.DoubleQuotes,
c2,
v => CSharpAttributeValue(string.Empty, "Hello", v),
v => CSharpExpressionAttributeValue(string.Empty, "Hello", v),
v => LiteralAttributeValue(" ", "World", v))),
c1 => Html(Environment.NewLine, c1)),
n => TagHelperFieldDeclaration(n, "SpanTagHelper"));

View File

@ -131,11 +131,12 @@ Document -
RazorIRToken - (705:19,13 [10] ComplexTagHelpers.cshtml) - Html - \n
CreateTagHelper - - TestNamespace.PTagHelper
AddTagHelperHtmlAttribute - - time - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (197:8,17 [7] ComplexTagHelpers.cshtml) - - Current
HtmlAttributeValue - (204:8,24 [6] ComplexTagHelpers.cshtml) - - Time:
CSharpAttributeValue - (210:8,30 [14] ComplexTagHelpers.cshtml) -
CSharpExpression - (212:8,32 [12] ComplexTagHelpers.cshtml)
RazorIRToken - (212:8,32 [12] ComplexTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (197:8,17 [7] ComplexTagHelpers.cshtml) -
RazorIRToken - (197:8,17 [7] ComplexTagHelpers.cshtml) - Html - Current
HtmlAttributeValue - (204:8,24 [6] ComplexTagHelpers.cshtml) -
RazorIRToken - (205:8,25 [5] ComplexTagHelpers.cshtml) - Html - Time:
CSharpExpressionAttributeValue - (210:8,30 [14] ComplexTagHelpers.cshtml) -
RazorIRToken - (212:8,32 [12] ComplexTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlContent - (719:20,12 [10] ComplexTagHelpers.cshtml)
RazorIRToken - (719:20,12 [10] ComplexTagHelpers.cshtml) - Html - \n
TagHelper - (729:21,8 [181] ComplexTagHelpers.cshtml) - p - TagMode.StartTagAndEndTag

View File

@ -140,11 +140,12 @@ Document -
RazorIRToken - (707:20,0 [8] ComplexTagHelpers.cshtml) - Html -
CreateTagHelper - - TestNamespace.PTagHelper
AddTagHelperHtmlAttribute - - time - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (197:8,17 [7] ComplexTagHelpers.cshtml) - - Current
HtmlAttributeValue - (204:8,24 [6] ComplexTagHelpers.cshtml) - - Time:
CSharpAttributeValue - (210:8,30 [14] ComplexTagHelpers.cshtml) -
CSharpExpression - (212:8,32 [12] ComplexTagHelpers.cshtml)
RazorIRToken - (212:8,32 [12] ComplexTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (197:8,17 [7] ComplexTagHelpers.cshtml) -
RazorIRToken - (197:8,17 [7] ComplexTagHelpers.cshtml) - Html - Current
HtmlAttributeValue - (204:8,24 [6] ComplexTagHelpers.cshtml) -
RazorIRToken - (205:8,25 [5] ComplexTagHelpers.cshtml) - Html - Time:
CSharpExpressionAttributeValue - (210:8,30 [14] ComplexTagHelpers.cshtml) -
RazorIRToken - (212:8,32 [12] ComplexTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlContent - (719:20,12 [10] ComplexTagHelpers.cshtml)
RazorIRToken - (719:20,12 [10] ComplexTagHelpers.cshtml) - Html - \n
TagHelper - (729:21,8 [181] ComplexTagHelpers.cshtml) - p - TagMode.StartTagAndEndTag

View File

@ -17,9 +17,8 @@ Document -
HtmlContent - (72:4,4 [2] ConditionalAttributes.cshtml)
RazorIRToken - (72:4,4 [2] ConditionalAttributes.cshtml) - Html - <p
HtmlAttribute - (74:4,6 [13] ConditionalAttributes.cshtml) - class=" - "
CSharpAttributeValue - (82:4,14 [4] ConditionalAttributes.cshtml) -
CSharpExpression - (83:4,15 [3] ConditionalAttributes.cshtml)
RazorIRToken - (83:4,15 [3] ConditionalAttributes.cshtml) - CSharp - cls
CSharpExpressionAttributeValue - (82:4,14 [4] ConditionalAttributes.cshtml) -
RazorIRToken - (83:4,15 [3] ConditionalAttributes.cshtml) - CSharp - cls
HtmlContent - (87:4,19 [3] ConditionalAttributes.cshtml)
RazorIRToken - (87:4,19 [3] ConditionalAttributes.cshtml) - Html - />
CSharpStatement - (90:4,22 [6] ConditionalAttributes.cshtml)
@ -27,10 +26,10 @@ Document -
HtmlContent - (96:5,4 [2] ConditionalAttributes.cshtml)
RazorIRToken - (96:5,4 [2] ConditionalAttributes.cshtml) - Html - <p
HtmlAttribute - (98:5,6 [17] ConditionalAttributes.cshtml) - class=" - "
HtmlAttributeValue - (106:5,14 [3] ConditionalAttributes.cshtml) - - foo
CSharpAttributeValue - (109:5,17 [5] ConditionalAttributes.cshtml) -
CSharpExpression - (111:5,19 [3] ConditionalAttributes.cshtml)
RazorIRToken - (111:5,19 [3] ConditionalAttributes.cshtml) - CSharp - cls
HtmlAttributeValue - (106:5,14 [3] ConditionalAttributes.cshtml) -
RazorIRToken - (106:5,14 [3] ConditionalAttributes.cshtml) - Html - foo
CSharpExpressionAttributeValue - (109:5,17 [5] ConditionalAttributes.cshtml) -
RazorIRToken - (111:5,19 [3] ConditionalAttributes.cshtml) - CSharp - cls
HtmlContent - (115:5,23 [3] ConditionalAttributes.cshtml)
RazorIRToken - (115:5,23 [3] ConditionalAttributes.cshtml) - Html - />
CSharpStatement - (118:5,26 [6] ConditionalAttributes.cshtml)
@ -38,10 +37,10 @@ Document -
HtmlContent - (124:6,4 [2] ConditionalAttributes.cshtml)
RazorIRToken - (124:6,4 [2] ConditionalAttributes.cshtml) - Html - <p
HtmlAttribute - (126:6,6 [17] ConditionalAttributes.cshtml) - class=" - "
CSharpAttributeValue - (134:6,14 [4] ConditionalAttributes.cshtml) -
CSharpExpression - (135:6,15 [3] ConditionalAttributes.cshtml)
RazorIRToken - (135:6,15 [3] ConditionalAttributes.cshtml) - CSharp - cls
HtmlAttributeValue - (138:6,18 [4] ConditionalAttributes.cshtml) - - foo
CSharpExpressionAttributeValue - (134:6,14 [4] ConditionalAttributes.cshtml) -
RazorIRToken - (135:6,15 [3] ConditionalAttributes.cshtml) - CSharp - cls
HtmlAttributeValue - (138:6,18 [4] ConditionalAttributes.cshtml) -
RazorIRToken - (139:6,19 [3] ConditionalAttributes.cshtml) - Html - foo
HtmlContent - (143:6,23 [3] ConditionalAttributes.cshtml)
RazorIRToken - (143:6,23 [3] ConditionalAttributes.cshtml) - Html - />
CSharpStatement - (146:6,26 [6] ConditionalAttributes.cshtml)
@ -50,9 +49,8 @@ Document -
RazorIRToken - (152:7,4 [6] ConditionalAttributes.cshtml) - Html - <input
RazorIRToken - (158:7,10 [16] ConditionalAttributes.cshtml) - Html - type="checkbox"
HtmlAttribute - (174:7,26 [14] ConditionalAttributes.cshtml) - checked=" - "
CSharpAttributeValue - (184:7,36 [3] ConditionalAttributes.cshtml) -
CSharpExpression - (185:7,37 [2] ConditionalAttributes.cshtml)
RazorIRToken - (185:7,37 [2] ConditionalAttributes.cshtml) - CSharp - ch
CSharpExpressionAttributeValue - (184:7,36 [3] ConditionalAttributes.cshtml) -
RazorIRToken - (185:7,37 [2] ConditionalAttributes.cshtml) - CSharp - ch
HtmlContent - (188:7,40 [3] ConditionalAttributes.cshtml)
RazorIRToken - (188:7,40 [3] ConditionalAttributes.cshtml) - Html - />
CSharpStatement - (191:7,43 [6] ConditionalAttributes.cshtml)
@ -61,10 +59,10 @@ Document -
RazorIRToken - (197:8,4 [6] ConditionalAttributes.cshtml) - Html - <input
RazorIRToken - (203:8,10 [16] ConditionalAttributes.cshtml) - Html - type="checkbox"
HtmlAttribute - (219:8,26 [18] ConditionalAttributes.cshtml) - checked=" - "
HtmlAttributeValue - (229:8,36 [3] ConditionalAttributes.cshtml) - - foo
CSharpAttributeValue - (232:8,39 [4] ConditionalAttributes.cshtml) -
CSharpExpression - (234:8,41 [2] ConditionalAttributes.cshtml)
RazorIRToken - (234:8,41 [2] ConditionalAttributes.cshtml) - CSharp - ch
HtmlAttributeValue - (229:8,36 [3] ConditionalAttributes.cshtml) -
RazorIRToken - (229:8,36 [3] ConditionalAttributes.cshtml) - Html - foo
CSharpExpressionAttributeValue - (232:8,39 [4] ConditionalAttributes.cshtml) -
RazorIRToken - (234:8,41 [2] ConditionalAttributes.cshtml) - CSharp - ch
HtmlContent - (237:8,44 [3] ConditionalAttributes.cshtml)
RazorIRToken - (237:8,44 [3] ConditionalAttributes.cshtml) - Html - />
CSharpStatement - (240:8,47 [6] ConditionalAttributes.cshtml)
@ -72,13 +70,11 @@ Document -
HtmlContent - (246:9,4 [2] ConditionalAttributes.cshtml)
RazorIRToken - (246:9,4 [2] ConditionalAttributes.cshtml) - Html - <p
HtmlAttribute - (248:9,6 [34] ConditionalAttributes.cshtml) - class=" - "
CSharpAttributeValue - (256:9,14 [25] ConditionalAttributes.cshtml) -
CSharpStatement - (257:9,15 [18] ConditionalAttributes.cshtml)
RazorIRToken - (257:9,15 [18] ConditionalAttributes.cshtml) - CSharp - if(cls != null) {
CSharpStatementAttributeValue - (256:9,14 [25] ConditionalAttributes.cshtml) -
RazorIRToken - (257:9,15 [18] ConditionalAttributes.cshtml) - CSharp - if(cls != null) {
CSharpExpression - (276:9,34 [3] ConditionalAttributes.cshtml)
RazorIRToken - (276:9,34 [3] ConditionalAttributes.cshtml) - CSharp - cls
CSharpStatement - (279:9,37 [2] ConditionalAttributes.cshtml)
RazorIRToken - (279:9,37 [2] ConditionalAttributes.cshtml) - CSharp - }
RazorIRToken - (279:9,37 [2] ConditionalAttributes.cshtml) - CSharp - }
HtmlContent - (282:9,40 [3] ConditionalAttributes.cshtml)
RazorIRToken - (282:9,40 [3] ConditionalAttributes.cshtml) - Html - />
CSharpStatement - (285:9,43 [6] ConditionalAttributes.cshtml)
@ -92,9 +88,8 @@ Document -
HtmlContent - (315:11,4 [7] ConditionalAttributes.cshtml)
RazorIRToken - (315:11,4 [7] ConditionalAttributes.cshtml) - Html - <script
HtmlAttribute - (322:11,11 [52] ConditionalAttributes.cshtml) - src=" - "
CSharpAttributeValue - (328:11,17 [45] ConditionalAttributes.cshtml) -
CSharpExpression - (329:11,18 [44] ConditionalAttributes.cshtml)
RazorIRToken - (329:11,18 [44] ConditionalAttributes.cshtml) - CSharp - Url.Content("~/Scripts/jquery-1.6.2.min.js")
CSharpExpressionAttributeValue - (328:11,17 [45] ConditionalAttributes.cshtml) -
RazorIRToken - (329:11,18 [44] ConditionalAttributes.cshtml) - CSharp - Url.Content("~/Scripts/jquery-1.6.2.min.js")
HtmlContent - (374:11,63 [33] ConditionalAttributes.cshtml)
RazorIRToken - (374:11,63 [23] ConditionalAttributes.cshtml) - Html - type="text/javascript"
RazorIRToken - (397:11,86 [1] ConditionalAttributes.cshtml) - Html - >
@ -104,9 +99,8 @@ Document -
HtmlContent - (413:12,4 [7] ConditionalAttributes.cshtml)
RazorIRToken - (413:12,4 [7] ConditionalAttributes.cshtml) - Html - <script
HtmlAttribute - (420:12,11 [68] ConditionalAttributes.cshtml) - src=" - "
CSharpAttributeValue - (426:12,17 [61] ConditionalAttributes.cshtml) -
CSharpExpression - (427:12,18 [60] ConditionalAttributes.cshtml)
RazorIRToken - (427:12,18 [60] ConditionalAttributes.cshtml) - CSharp - Url.Content("~/Scripts/modernizr-2.0.6-development-only.js")
CSharpExpressionAttributeValue - (426:12,17 [61] ConditionalAttributes.cshtml) -
RazorIRToken - (427:12,18 [60] ConditionalAttributes.cshtml) - CSharp - Url.Content("~/Scripts/modernizr-2.0.6-development-only.js")
HtmlContent - (488:12,79 [33] ConditionalAttributes.cshtml)
RazorIRToken - (488:12,79 [23] ConditionalAttributes.cshtml) - Html - type="text/javascript"
RazorIRToken - (511:12,102 [1] ConditionalAttributes.cshtml) - Html - >

View File

@ -14,29 +14,28 @@ Document -
RazorIRToken - (68:4,0 [4] ConditionalAttributes.cshtml) - Html -
RazorIRToken - (72:4,4 [2] ConditionalAttributes.cshtml) - Html - <p
HtmlAttribute - (74:4,6 [13] ConditionalAttributes.cshtml) - class=" - "
CSharpAttributeValue - (82:4,14 [4] ConditionalAttributes.cshtml) -
CSharpExpression - (83:4,15 [3] ConditionalAttributes.cshtml)
RazorIRToken - (83:4,15 [3] ConditionalAttributes.cshtml) - CSharp - cls
CSharpExpressionAttributeValue - (82:4,14 [4] ConditionalAttributes.cshtml) -
RazorIRToken - (83:4,15 [3] ConditionalAttributes.cshtml) - CSharp - cls
HtmlContent - (87:4,19 [11] ConditionalAttributes.cshtml)
RazorIRToken - (87:4,19 [3] ConditionalAttributes.cshtml) - Html - />
RazorIRToken - (90:4,22 [2] ConditionalAttributes.cshtml) - Html - \n
RazorIRToken - (92:5,0 [4] ConditionalAttributes.cshtml) - Html -
RazorIRToken - (96:5,4 [2] ConditionalAttributes.cshtml) - Html - <p
HtmlAttribute - (98:5,6 [17] ConditionalAttributes.cshtml) - class=" - "
HtmlAttributeValue - (106:5,14 [3] ConditionalAttributes.cshtml) - - foo
CSharpAttributeValue - (109:5,17 [5] ConditionalAttributes.cshtml) -
CSharpExpression - (111:5,19 [3] ConditionalAttributes.cshtml)
RazorIRToken - (111:5,19 [3] ConditionalAttributes.cshtml) - CSharp - cls
HtmlAttributeValue - (106:5,14 [3] ConditionalAttributes.cshtml) -
RazorIRToken - (106:5,14 [3] ConditionalAttributes.cshtml) - Html - foo
CSharpExpressionAttributeValue - (109:5,17 [5] ConditionalAttributes.cshtml) -
RazorIRToken - (111:5,19 [3] ConditionalAttributes.cshtml) - CSharp - cls
HtmlContent - (115:5,23 [11] ConditionalAttributes.cshtml)
RazorIRToken - (115:5,23 [3] ConditionalAttributes.cshtml) - Html - />
RazorIRToken - (118:5,26 [2] ConditionalAttributes.cshtml) - Html - \n
RazorIRToken - (120:6,0 [4] ConditionalAttributes.cshtml) - Html -
RazorIRToken - (124:6,4 [2] ConditionalAttributes.cshtml) - Html - <p
HtmlAttribute - (126:6,6 [17] ConditionalAttributes.cshtml) - class=" - "
CSharpAttributeValue - (134:6,14 [4] ConditionalAttributes.cshtml) -
CSharpExpression - (135:6,15 [3] ConditionalAttributes.cshtml)
RazorIRToken - (135:6,15 [3] ConditionalAttributes.cshtml) - CSharp - cls
HtmlAttributeValue - (138:6,18 [4] ConditionalAttributes.cshtml) - - foo
CSharpExpressionAttributeValue - (134:6,14 [4] ConditionalAttributes.cshtml) -
RazorIRToken - (135:6,15 [3] ConditionalAttributes.cshtml) - CSharp - cls
HtmlAttributeValue - (138:6,18 [4] ConditionalAttributes.cshtml) -
RazorIRToken - (139:6,19 [3] ConditionalAttributes.cshtml) - Html - foo
HtmlContent - (143:6,23 [31] ConditionalAttributes.cshtml)
RazorIRToken - (143:6,23 [3] ConditionalAttributes.cshtml) - Html - />
RazorIRToken - (146:6,26 [2] ConditionalAttributes.cshtml) - Html - \n
@ -44,9 +43,8 @@ Document -
RazorIRToken - (152:7,4 [6] ConditionalAttributes.cshtml) - Html - <input
RazorIRToken - (158:7,10 [16] ConditionalAttributes.cshtml) - Html - type="checkbox"
HtmlAttribute - (174:7,26 [14] ConditionalAttributes.cshtml) - checked=" - "
CSharpAttributeValue - (184:7,36 [3] ConditionalAttributes.cshtml) -
CSharpExpression - (185:7,37 [2] ConditionalAttributes.cshtml)
RazorIRToken - (185:7,37 [2] ConditionalAttributes.cshtml) - CSharp - ch
CSharpExpressionAttributeValue - (184:7,36 [3] ConditionalAttributes.cshtml) -
RazorIRToken - (185:7,37 [2] ConditionalAttributes.cshtml) - CSharp - ch
HtmlContent - (188:7,40 [31] ConditionalAttributes.cshtml)
RazorIRToken - (188:7,40 [3] ConditionalAttributes.cshtml) - Html - />
RazorIRToken - (191:7,43 [2] ConditionalAttributes.cshtml) - Html - \n
@ -54,23 +52,21 @@ Document -
RazorIRToken - (197:8,4 [6] ConditionalAttributes.cshtml) - Html - <input
RazorIRToken - (203:8,10 [16] ConditionalAttributes.cshtml) - Html - type="checkbox"
HtmlAttribute - (219:8,26 [18] ConditionalAttributes.cshtml) - checked=" - "
HtmlAttributeValue - (229:8,36 [3] ConditionalAttributes.cshtml) - - foo
CSharpAttributeValue - (232:8,39 [4] ConditionalAttributes.cshtml) -
CSharpExpression - (234:8,41 [2] ConditionalAttributes.cshtml)
RazorIRToken - (234:8,41 [2] ConditionalAttributes.cshtml) - CSharp - ch
HtmlAttributeValue - (229:8,36 [3] ConditionalAttributes.cshtml) -
RazorIRToken - (229:8,36 [3] ConditionalAttributes.cshtml) - Html - foo
CSharpExpressionAttributeValue - (232:8,39 [4] ConditionalAttributes.cshtml) -
RazorIRToken - (234:8,41 [2] ConditionalAttributes.cshtml) - CSharp - ch
HtmlContent - (237:8,44 [11] ConditionalAttributes.cshtml)
RazorIRToken - (237:8,44 [3] ConditionalAttributes.cshtml) - Html - />
RazorIRToken - (240:8,47 [2] ConditionalAttributes.cshtml) - Html - \n
RazorIRToken - (242:9,0 [4] ConditionalAttributes.cshtml) - Html -
RazorIRToken - (246:9,4 [2] ConditionalAttributes.cshtml) - Html - <p
HtmlAttribute - (248:9,6 [34] ConditionalAttributes.cshtml) - class=" - "
CSharpAttributeValue - (256:9,14 [25] ConditionalAttributes.cshtml) -
CSharpStatement - (257:9,15 [18] ConditionalAttributes.cshtml)
RazorIRToken - (257:9,15 [18] ConditionalAttributes.cshtml) - CSharp - if(cls != null) {
CSharpStatementAttributeValue - (256:9,14 [25] ConditionalAttributes.cshtml) -
RazorIRToken - (257:9,15 [18] ConditionalAttributes.cshtml) - CSharp - if(cls != null) {
CSharpExpression - (276:9,34 [3] ConditionalAttributes.cshtml)
RazorIRToken - (276:9,34 [3] ConditionalAttributes.cshtml) - CSharp - cls
CSharpStatement - (279:9,37 [2] ConditionalAttributes.cshtml)
RazorIRToken - (279:9,37 [2] ConditionalAttributes.cshtml) - CSharp - }
RazorIRToken - (279:9,37 [2] ConditionalAttributes.cshtml) - CSharp - }
HtmlContent - (282:9,40 [40] ConditionalAttributes.cshtml)
RazorIRToken - (282:9,40 [3] ConditionalAttributes.cshtml) - Html - />
RazorIRToken - (285:9,43 [2] ConditionalAttributes.cshtml) - Html - \n
@ -82,9 +78,8 @@ Document -
RazorIRToken - (311:11,0 [4] ConditionalAttributes.cshtml) - Html -
RazorIRToken - (315:11,4 [7] ConditionalAttributes.cshtml) - Html - <script
HtmlAttribute - (322:11,11 [52] ConditionalAttributes.cshtml) - src=" - "
CSharpAttributeValue - (328:11,17 [45] ConditionalAttributes.cshtml) -
CSharpExpression - (329:11,18 [44] ConditionalAttributes.cshtml)
RazorIRToken - (329:11,18 [44] ConditionalAttributes.cshtml) - CSharp - Url.Content("~/Scripts/jquery-1.6.2.min.js")
CSharpExpressionAttributeValue - (328:11,17 [45] ConditionalAttributes.cshtml) -
RazorIRToken - (329:11,18 [44] ConditionalAttributes.cshtml) - CSharp - Url.Content("~/Scripts/jquery-1.6.2.min.js")
HtmlContent - (374:11,63 [46] ConditionalAttributes.cshtml)
RazorIRToken - (374:11,63 [23] ConditionalAttributes.cshtml) - Html - type="text/javascript"
RazorIRToken - (397:11,86 [1] ConditionalAttributes.cshtml) - Html - >
@ -93,9 +88,8 @@ Document -
RazorIRToken - (409:12,0 [4] ConditionalAttributes.cshtml) - Html -
RazorIRToken - (413:12,4 [7] ConditionalAttributes.cshtml) - Html - <script
HtmlAttribute - (420:12,11 [68] ConditionalAttributes.cshtml) - src=" - "
CSharpAttributeValue - (426:12,17 [61] ConditionalAttributes.cshtml) -
CSharpExpression - (427:12,18 [60] ConditionalAttributes.cshtml)
RazorIRToken - (427:12,18 [60] ConditionalAttributes.cshtml) - CSharp - Url.Content("~/Scripts/modernizr-2.0.6-development-only.js")
CSharpExpressionAttributeValue - (426:12,17 [61] ConditionalAttributes.cshtml) -
RazorIRToken - (427:12,18 [60] ConditionalAttributes.cshtml) - CSharp - Url.Content("~/Scripts/modernizr-2.0.6-development-only.js")
HtmlContent - (488:12,79 [152] ConditionalAttributes.cshtml)
RazorIRToken - (488:12,79 [23] ConditionalAttributes.cshtml) - Html - type="text/javascript"
RazorIRToken - (511:12,102 [1] ConditionalAttributes.cshtml) - Html - >

View File

@ -48,11 +48,12 @@ Document -
CreateTagHelper - - TestNamespace.ATagHelperMultipleSelectors
CreateTagHelper - - TestNamespace.CatchAllTagHelper
AddTagHelperHtmlAttribute - - href - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (153:5,9 [2] CssSelectorTagHelperAttributes.cshtml) - - ~/
CSharpAttributeValue - (155:5,11 [6] CssSelectorTagHelperAttributes.cshtml) -
CSharpExpression - (156:5,12 [5] CssSelectorTagHelperAttributes.cshtml)
RazorIRToken - (156:5,12 [5] CssSelectorTagHelperAttributes.cshtml) - CSharp - false
HtmlAttributeValue - (161:5,17 [12] CssSelectorTagHelperAttributes.cshtml) - - ?hello=world
HtmlAttributeValue - (153:5,9 [2] CssSelectorTagHelperAttributes.cshtml) -
RazorIRToken - (153:5,9 [2] CssSelectorTagHelperAttributes.cshtml) - Html - ~/
CSharpExpressionAttributeValue - (155:5,11 [6] CssSelectorTagHelperAttributes.cshtml) -
RazorIRToken - (156:5,12 [5] CssSelectorTagHelperAttributes.cshtml) - CSharp - false
HtmlAttributeValue - (161:5,17 [12] CssSelectorTagHelperAttributes.cshtml) -
RazorIRToken - (161:5,17 [12] CssSelectorTagHelperAttributes.cshtml) - Html - ?hello=world
HtmlContent - (191:5,47 [35] CssSelectorTagHelperAttributes.cshtml)
RazorIRToken - (191:5,47 [2] CssSelectorTagHelperAttributes.cshtml) - Html - \n
RazorIRToken - (193:6,0 [2] CssSelectorTagHelperAttributes.cshtml) - Html - <a
@ -67,10 +68,10 @@ Document -
RazorIRToken - (243:7,17 [11] CssSelectorTagHelperAttributes.cshtml) - Html - 1 TagHelper
CreateTagHelper - - TestNamespace.CatchAllTagHelper
AddTagHelperHtmlAttribute - - href - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (234:7,8 [2] CssSelectorTagHelperAttributes.cshtml) - - ~/
CSharpAttributeValue - (236:7,10 [6] CssSelectorTagHelperAttributes.cshtml) -
CSharpExpression - (237:7,11 [5] CssSelectorTagHelperAttributes.cshtml)
RazorIRToken - (237:7,11 [5] CssSelectorTagHelperAttributes.cshtml) - CSharp - false
HtmlAttributeValue - (234:7,8 [2] CssSelectorTagHelperAttributes.cshtml) -
RazorIRToken - (234:7,8 [2] CssSelectorTagHelperAttributes.cshtml) - Html - ~/
CSharpExpressionAttributeValue - (236:7,10 [6] CssSelectorTagHelperAttributes.cshtml) -
RazorIRToken - (237:7,11 [5] CssSelectorTagHelperAttributes.cshtml) - CSharp - false
HtmlContent - (258:7,32 [2] CssSelectorTagHelperAttributes.cshtml)
RazorIRToken - (258:7,32 [2] CssSelectorTagHelperAttributes.cshtml) - Html - \n
TagHelper - (260:8,0 [46] CssSelectorTagHelperAttributes.cshtml) - a - TagMode.StartTagAndEndTag
@ -87,10 +88,10 @@ Document -
RazorIRToken - (340:9,32 [11] CssSelectorTagHelperAttributes.cshtml) - Html - 1 TagHelper
CreateTagHelper - - TestNamespace.CatchAllTagHelper
AddTagHelperHtmlAttribute - - href - HtmlAttributeValueStyle.SingleQuotes
HtmlAttributeValue - (317:9,9 [14] CssSelectorTagHelperAttributes.cshtml) - - ~/?hello=world
CSharpAttributeValue - (331:9,23 [7] CssSelectorTagHelperAttributes.cshtml) -
CSharpExpression - (333:9,25 [5] CssSelectorTagHelperAttributes.cshtml)
RazorIRToken - (333:9,25 [5] CssSelectorTagHelperAttributes.cshtml) - CSharp - false
HtmlAttributeValue - (317:9,9 [14] CssSelectorTagHelperAttributes.cshtml) -
RazorIRToken - (317:9,9 [14] CssSelectorTagHelperAttributes.cshtml) - Html - ~/?hello=world
CSharpExpressionAttributeValue - (331:9,23 [7] CssSelectorTagHelperAttributes.cshtml) -
RazorIRToken - (333:9,25 [5] CssSelectorTagHelperAttributes.cshtml) - CSharp - false
HtmlContent - (355:9,47 [2] CssSelectorTagHelperAttributes.cshtml)
RazorIRToken - (355:9,47 [2] CssSelectorTagHelperAttributes.cshtml) - Html - \n
TagHelper - (357:10,0 [42] CssSelectorTagHelperAttributes.cshtml) - input - TagMode.SelfClosing

View File

@ -14,28 +14,26 @@ Document -
TagHelperBody -
CreateTagHelper - - TestNamespace.InputTagHelper
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (51:2,16 [6] DynamicAttributeTagHelpers.cshtml) - - prefix
CSharpAttributeValue - (57:2,22 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (59:2,24 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (59:2,24 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (51:2,16 [6] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (51:2,16 [6] DynamicAttributeTagHelpers.cshtml) - Html - prefix
CSharpExpressionAttributeValue - (57:2,22 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (59:2,24 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlContent - (75:2,40 [4] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (75:2,40 [4] DynamicAttributeTagHelpers.cshtml) - Html - \n\n
TagHelper - (79:4,0 [71] DynamicAttributeTagHelpers.cshtml) - input - TagMode.SelfClosing
TagHelperBody -
CreateTagHelper - - TestNamespace.InputTagHelper
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (95:4,16 [44] DynamicAttributeTagHelpers.cshtml) -
CSharpStatement - (96:4,17 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (96:4,17 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpStatementAttributeValue - (95:4,16 [44] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (96:4,17 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpExpression - (109:4,30 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (109:4,30 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - string.Empty
CSharpStatement - (121:4,42 [10] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (121:4,42 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
RazorIRToken - (121:4,42 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
CSharpExpression - (132:4,53 [5] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (132:4,53 [5] DynamicAttributeTagHelpers.cshtml) - CSharp - false
CSharpStatement - (137:4,58 [2] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (137:4,58 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }
HtmlAttributeValue - (139:4,60 [7] DynamicAttributeTagHelpers.cshtml) - - suffix
RazorIRToken - (137:4,58 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }
HtmlAttributeValue - (139:4,60 [7] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (140:4,61 [6] DynamicAttributeTagHelpers.cshtml) - Html - suffix
HtmlContent - (150:4,71 [4] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (150:4,71 [4] DynamicAttributeTagHelpers.cshtml) - Html - \n\n
TagHelper - (154:6,0 [83] DynamicAttributeTagHelpers.cshtml) - input - TagMode.SelfClosing
@ -50,11 +48,12 @@ Document -
HtmlContent - (188:6,34 [7] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (188:6,34 [7] DynamicAttributeTagHelpers.cshtml) - Html - suffix
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (206:6,52 [6] DynamicAttributeTagHelpers.cshtml) - - prefix
CSharpAttributeValue - (212:6,58 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (214:6,60 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (214:6,60 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (226:6,72 [7] DynamicAttributeTagHelpers.cshtml) - - suffix
HtmlAttributeValue - (206:6,52 [6] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (206:6,52 [6] DynamicAttributeTagHelpers.cshtml) - Html - prefix
CSharpExpressionAttributeValue - (212:6,58 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (214:6,60 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (226:6,72 [7] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (227:6,73 [6] DynamicAttributeTagHelpers.cshtml) - Html - suffix
HtmlContent - (237:6,83 [4] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (237:6,83 [4] DynamicAttributeTagHelpers.cshtml) - Html - \n\n
TagHelper - (241:8,0 [183] DynamicAttributeTagHelpers.cshtml) - input - TagMode.SelfClosing
@ -80,54 +79,45 @@ Document -
CSharpExpression - (316:8,75 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (316:8,75 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - int.MaxValue
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (347:9,16 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (348:9,17 [13] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (348:9,17 [13] DynamicAttributeTagHelpers.cshtml) - CSharp - long.MinValue
CSharpAttributeValue - (361:9,30 [45] DynamicAttributeTagHelpers.cshtml) -
CSharpStatement - (363:9,32 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (363:9,32 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpExpressionAttributeValue - (347:9,16 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (348:9,17 [13] DynamicAttributeTagHelpers.cshtml) - CSharp - long.MinValue
CSharpStatementAttributeValue - (361:9,30 [45] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (363:9,32 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpExpression - (376:9,45 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (376:9,45 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - string.Empty
CSharpStatement - (388:9,57 [10] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (388:9,57 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
RazorIRToken - (388:9,57 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
CSharpExpression - (399:9,68 [5] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (399:9,68 [5] DynamicAttributeTagHelpers.cshtml) - CSharp - false
CSharpStatement - (404:9,73 [2] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (404:9,73 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }
CSharpAttributeValue - (406:9,75 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (408:9,77 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (408:9,77 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - int.MaxValue
RazorIRToken - (404:9,73 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }
CSharpExpressionAttributeValue - (406:9,75 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (408:9,77 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - int.MaxValue
HtmlContent - (424:9,93 [4] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (424:9,93 [4] DynamicAttributeTagHelpers.cshtml) - Html - \n\n
TagHelper - (428:11,0 [80] DynamicAttributeTagHelpers.cshtml) - input - TagMode.SelfClosing
TagHelperBody -
CreateTagHelper - - TestNamespace.InputTagHelper
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (444:11,16 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (445:11,17 [13] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (445:11,17 [13] DynamicAttributeTagHelpers.cshtml) - CSharp - long.MinValue
CSharpAttributeValue - (458:11,30 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (460:11,32 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (460:11,32 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (472:11,44 [7] DynamicAttributeTagHelpers.cshtml) - - static
HtmlAttributeValue - (479:11,51 [11] DynamicAttributeTagHelpers.cshtml) - - content
CSharpAttributeValue - (490:11,62 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (492:11,64 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (492:11,64 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - int.MaxValue
CSharpExpressionAttributeValue - (444:11,16 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (445:11,17 [13] DynamicAttributeTagHelpers.cshtml) - CSharp - long.MinValue
CSharpExpressionAttributeValue - (458:11,30 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (460:11,32 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (472:11,44 [7] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (473:11,45 [6] DynamicAttributeTagHelpers.cshtml) - Html - static
HtmlAttributeValue - (479:11,51 [11] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (483:11,55 [7] DynamicAttributeTagHelpers.cshtml) - Html - content
CSharpExpressionAttributeValue - (490:11,62 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (492:11,64 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - int.MaxValue
HtmlContent - (508:11,80 [4] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (508:11,80 [4] DynamicAttributeTagHelpers.cshtml) - Html - \n\n
TagHelper - (512:13,0 [64] DynamicAttributeTagHelpers.cshtml) - input - TagMode.SelfClosing
TagHelperBody -
CreateTagHelper - - TestNamespace.InputTagHelper
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (528:13,16 [44] DynamicAttributeTagHelpers.cshtml) -
CSharpStatement - (529:13,17 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (529:13,17 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpStatementAttributeValue - (528:13,16 [44] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (529:13,17 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpExpression - (542:13,30 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (542:13,30 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - string.Empty
CSharpStatement - (554:13,42 [10] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (554:13,42 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
RazorIRToken - (554:13,42 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
CSharpExpression - (565:13,53 [5] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (565:13,53 [5] DynamicAttributeTagHelpers.cshtml) - CSharp - false
CSharpStatement - (570:13,58 [2] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (570:13,58 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }
RazorIRToken - (570:13,58 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }

View File

@ -10,28 +10,26 @@ Document -
TagHelperBody -
CreateTagHelper - - TestNamespace.InputTagHelper
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (51:2,16 [6] DynamicAttributeTagHelpers.cshtml) - - prefix
CSharpAttributeValue - (57:2,22 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (59:2,24 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (59:2,24 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (51:2,16 [6] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (51:2,16 [6] DynamicAttributeTagHelpers.cshtml) - Html - prefix
CSharpExpressionAttributeValue - (57:2,22 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (59:2,24 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlContent - (75:2,40 [4] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (75:2,40 [4] DynamicAttributeTagHelpers.cshtml) - Html - \n\n
TagHelper - (79:4,0 [71] DynamicAttributeTagHelpers.cshtml) - input - TagMode.SelfClosing
TagHelperBody -
CreateTagHelper - - TestNamespace.InputTagHelper
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (95:4,16 [44] DynamicAttributeTagHelpers.cshtml) -
CSharpStatement - (96:4,17 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (96:4,17 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpStatementAttributeValue - (95:4,16 [44] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (96:4,17 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpExpression - (109:4,30 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (109:4,30 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - string.Empty
CSharpStatement - (121:4,42 [10] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (121:4,42 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
RazorIRToken - (121:4,42 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
CSharpExpression - (132:4,53 [5] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (132:4,53 [5] DynamicAttributeTagHelpers.cshtml) - CSharp - false
CSharpStatement - (137:4,58 [2] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (137:4,58 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }
HtmlAttributeValue - (139:4,60 [7] DynamicAttributeTagHelpers.cshtml) - - suffix
RazorIRToken - (137:4,58 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }
HtmlAttributeValue - (139:4,60 [7] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (140:4,61 [6] DynamicAttributeTagHelpers.cshtml) - Html - suffix
HtmlContent - (150:4,71 [4] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (150:4,71 [4] DynamicAttributeTagHelpers.cshtml) - Html - \n\n
TagHelper - (154:6,0 [83] DynamicAttributeTagHelpers.cshtml) - input - TagMode.SelfClosing
@ -46,11 +44,12 @@ Document -
HtmlContent - (188:6,34 [7] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (188:6,34 [7] DynamicAttributeTagHelpers.cshtml) - Html - suffix
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (206:6,52 [6] DynamicAttributeTagHelpers.cshtml) - - prefix
CSharpAttributeValue - (212:6,58 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (214:6,60 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (214:6,60 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (226:6,72 [7] DynamicAttributeTagHelpers.cshtml) - - suffix
HtmlAttributeValue - (206:6,52 [6] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (206:6,52 [6] DynamicAttributeTagHelpers.cshtml) - Html - prefix
CSharpExpressionAttributeValue - (212:6,58 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (214:6,60 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (226:6,72 [7] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (227:6,73 [6] DynamicAttributeTagHelpers.cshtml) - Html - suffix
HtmlContent - (237:6,83 [4] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (237:6,83 [4] DynamicAttributeTagHelpers.cshtml) - Html - \n\n
TagHelper - (241:8,0 [183] DynamicAttributeTagHelpers.cshtml) - input - TagMode.SelfClosing
@ -76,54 +75,45 @@ Document -
CSharpExpression - (316:8,75 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (316:8,75 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - int.MaxValue
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (347:9,16 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (348:9,17 [13] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (348:9,17 [13] DynamicAttributeTagHelpers.cshtml) - CSharp - long.MinValue
CSharpAttributeValue - (361:9,30 [45] DynamicAttributeTagHelpers.cshtml) -
CSharpStatement - (363:9,32 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (363:9,32 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpExpressionAttributeValue - (347:9,16 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (348:9,17 [13] DynamicAttributeTagHelpers.cshtml) - CSharp - long.MinValue
CSharpStatementAttributeValue - (361:9,30 [45] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (363:9,32 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpExpression - (376:9,45 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (376:9,45 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - string.Empty
CSharpStatement - (388:9,57 [10] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (388:9,57 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
RazorIRToken - (388:9,57 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
CSharpExpression - (399:9,68 [5] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (399:9,68 [5] DynamicAttributeTagHelpers.cshtml) - CSharp - false
CSharpStatement - (404:9,73 [2] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (404:9,73 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }
CSharpAttributeValue - (406:9,75 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (408:9,77 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (408:9,77 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - int.MaxValue
RazorIRToken - (404:9,73 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }
CSharpExpressionAttributeValue - (406:9,75 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (408:9,77 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - int.MaxValue
HtmlContent - (424:9,93 [4] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (424:9,93 [4] DynamicAttributeTagHelpers.cshtml) - Html - \n\n
TagHelper - (428:11,0 [80] DynamicAttributeTagHelpers.cshtml) - input - TagMode.SelfClosing
TagHelperBody -
CreateTagHelper - - TestNamespace.InputTagHelper
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (444:11,16 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (445:11,17 [13] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (445:11,17 [13] DynamicAttributeTagHelpers.cshtml) - CSharp - long.MinValue
CSharpAttributeValue - (458:11,30 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (460:11,32 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (460:11,32 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (472:11,44 [7] DynamicAttributeTagHelpers.cshtml) - - static
HtmlAttributeValue - (479:11,51 [11] DynamicAttributeTagHelpers.cshtml) - - content
CSharpAttributeValue - (490:11,62 [14] DynamicAttributeTagHelpers.cshtml) -
CSharpExpression - (492:11,64 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (492:11,64 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - int.MaxValue
CSharpExpressionAttributeValue - (444:11,16 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (445:11,17 [13] DynamicAttributeTagHelpers.cshtml) - CSharp - long.MinValue
CSharpExpressionAttributeValue - (458:11,30 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (460:11,32 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (472:11,44 [7] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (473:11,45 [6] DynamicAttributeTagHelpers.cshtml) - Html - static
HtmlAttributeValue - (479:11,51 [11] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (483:11,55 [7] DynamicAttributeTagHelpers.cshtml) - Html - content
CSharpExpressionAttributeValue - (490:11,62 [14] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (492:11,64 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - int.MaxValue
HtmlContent - (508:11,80 [4] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (508:11,80 [4] DynamicAttributeTagHelpers.cshtml) - Html - \n\n
TagHelper - (512:13,0 [64] DynamicAttributeTagHelpers.cshtml) - input - TagMode.SelfClosing
TagHelperBody -
CreateTagHelper - - TestNamespace.InputTagHelper
AddTagHelperHtmlAttribute - - unbound - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (528:13,16 [44] DynamicAttributeTagHelpers.cshtml) -
CSharpStatement - (529:13,17 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (529:13,17 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpStatementAttributeValue - (528:13,16 [44] DynamicAttributeTagHelpers.cshtml) -
RazorIRToken - (529:13,17 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - if (true) {
CSharpExpression - (542:13,30 [12] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (542:13,30 [12] DynamicAttributeTagHelpers.cshtml) - CSharp - string.Empty
CSharpStatement - (554:13,42 [10] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (554:13,42 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
RazorIRToken - (554:13,42 [10] DynamicAttributeTagHelpers.cshtml) - CSharp - } else {
CSharpExpression - (565:13,53 [5] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (565:13,53 [5] DynamicAttributeTagHelpers.cshtml) - CSharp - false
CSharpStatement - (570:13,58 [2] DynamicAttributeTagHelpers.cshtml)
RazorIRToken - (570:13,58 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }
RazorIRToken - (570:13,58 [2] DynamicAttributeTagHelpers.cshtml) - CSharp - }

View File

@ -28,9 +28,8 @@ Document -
CreateTagHelper - - TestNamespace.InputTagHelper
CreateTagHelper - - TestNamespace.CatchAllTagHelper
AddTagHelperHtmlAttribute - - class - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (130:7,14 [21] EnumTagHelpers.cshtml) -
CSharpExpression - (131:7,15 [20] EnumTagHelpers.cshtml)
RazorIRToken - (131:7,15 [20] EnumTagHelpers.cshtml) - CSharp - MyEnum.MySecondValue
CSharpExpressionAttributeValue - (130:7,14 [21] EnumTagHelpers.cshtml) -
RazorIRToken - (131:7,15 [20] EnumTagHelpers.cshtml) - CSharp - MyEnum.MySecondValue
HtmlContent - (155:7,39 [2] EnumTagHelpers.cshtml)
RazorIRToken - (155:7,39 [2] EnumTagHelpers.cshtml) - Html - \n
TagHelper - (157:8,0 [25] EnumTagHelpers.cshtml) - input - TagMode.SelfClosing

View File

@ -24,9 +24,8 @@ Document -
CreateTagHelper - - TestNamespace.InputTagHelper
CreateTagHelper - - TestNamespace.CatchAllTagHelper
AddTagHelperHtmlAttribute - - class - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (130:7,14 [21] EnumTagHelpers.cshtml) -
CSharpExpression - (131:7,15 [20] EnumTagHelpers.cshtml)
RazorIRToken - (131:7,15 [20] EnumTagHelpers.cshtml) - CSharp - MyEnum.MySecondValue
CSharpExpressionAttributeValue - (130:7,14 [21] EnumTagHelpers.cshtml) -
RazorIRToken - (131:7,15 [20] EnumTagHelpers.cshtml) - CSharp - MyEnum.MySecondValue
HtmlContent - (155:7,39 [2] EnumTagHelpers.cshtml)
RazorIRToken - (155:7,39 [2] EnumTagHelpers.cshtml) - Html - \n
TagHelper - (157:8,0 [25] EnumTagHelpers.cshtml) - input - TagMode.SelfClosing

View File

@ -15,17 +15,14 @@ Document -
RazorIRToken - (13:0,13 [21] InlineBlocks.cshtml) - Html - (string link) {\n
RazorIRToken - (34:1,4 [2] InlineBlocks.cshtml) - Html - <a
HtmlAttribute - (36:1,6 [59] InlineBlocks.cshtml) - href=" - "
CSharpAttributeValue - (43:1,13 [51] InlineBlocks.cshtml) -
CSharpStatement - (44:1,14 [19] InlineBlocks.cshtml)
RazorIRToken - (44:1,14 [19] InlineBlocks.cshtml) - CSharp - if(link != null) {
CSharpStatementAttributeValue - (43:1,13 [51] InlineBlocks.cshtml) -
RazorIRToken - (44:1,14 [19] InlineBlocks.cshtml) - CSharp - if(link != null) {
CSharpExpression - (64:1,34 [4] InlineBlocks.cshtml)
RazorIRToken - (64:1,34 [4] InlineBlocks.cshtml) - CSharp - link
CSharpStatement - (68:1,38 [10] InlineBlocks.cshtml)
RazorIRToken - (68:1,38 [10] InlineBlocks.cshtml) - CSharp - } else {
RazorIRToken - (68:1,38 [10] InlineBlocks.cshtml) - CSharp - } else {
HtmlContent - (84:1,54 [1] InlineBlocks.cshtml)
RazorIRToken - (84:1,54 [1] InlineBlocks.cshtml) - Html - #
CSharpStatement - (92:1,62 [2] InlineBlocks.cshtml)
RazorIRToken - (92:1,62 [2] InlineBlocks.cshtml) - CSharp - }
RazorIRToken - (92:1,62 [2] InlineBlocks.cshtml) - CSharp - }
HtmlContent - (95:1,65 [6] InlineBlocks.cshtml)
RazorIRToken - (95:1,65 [3] InlineBlocks.cshtml) - Html - />
RazorIRToken - (98:1,68 [3] InlineBlocks.cshtml) - Html - \n}

View File

@ -11,17 +11,14 @@ Document -
RazorIRToken - (13:0,13 [21] InlineBlocks.cshtml) - Html - (string link) {\n
RazorIRToken - (34:1,4 [2] InlineBlocks.cshtml) - Html - <a
HtmlAttribute - (36:1,6 [58] InlineBlocks.cshtml) - href=" - "
CSharpAttributeValue - (43:1,13 [50] InlineBlocks.cshtml) -
CSharpStatement - (44:1,14 [19] InlineBlocks.cshtml)
RazorIRToken - (44:1,14 [19] InlineBlocks.cshtml) - CSharp - if(link != null) {
CSharpStatementAttributeValue - (43:1,13 [50] InlineBlocks.cshtml) -
RazorIRToken - (44:1,14 [19] InlineBlocks.cshtml) - CSharp - if(link != null) {
CSharpExpression - (64:1,34 [4] InlineBlocks.cshtml)
RazorIRToken - (64:1,34 [4] InlineBlocks.cshtml) - CSharp - link
CSharpStatement - (68:1,38 [9] InlineBlocks.cshtml)
RazorIRToken - (68:1,38 [9] InlineBlocks.cshtml) - CSharp - } else {
RazorIRToken - (68:1,38 [9] InlineBlocks.cshtml) - CSharp - } else {
HtmlContent - (84:1,54 [1] InlineBlocks.cshtml)
RazorIRToken - (84:1,54 [1] InlineBlocks.cshtml) - Html - #
CSharpStatement - (92:1,62 [2] InlineBlocks.cshtml)
RazorIRToken - (92:1,62 [2] InlineBlocks.cshtml) - CSharp - }
RazorIRToken - (92:1,62 [2] InlineBlocks.cshtml) - CSharp - }
HtmlContent - (95:1,65 [6] InlineBlocks.cshtml)
RazorIRToken - (95:1,65 [3] InlineBlocks.cshtml) - Html - />
RazorIRToken - (98:1,68 [3] InlineBlocks.cshtml) - Html - \n}

View File

@ -21,10 +21,10 @@ Document -
RazorIRToken - (99:6,19 [6] Sections.cshtml) - Html - \n
RazorIRToken - (105:7,4 [4] Sections.cshtml) - Html - <div
HtmlAttribute - (109:7,8 [20] Sections.cshtml) - class=" - "
HtmlAttributeValue - (117:7,16 [4] Sections.cshtml) - - some
CSharpAttributeValue - (121:7,20 [7] Sections.cshtml) -
CSharpExpression - (123:7,22 [5] Sections.cshtml)
RazorIRToken - (123:7,22 [5] Sections.cshtml) - CSharp - thing
HtmlAttributeValue - (117:7,16 [4] Sections.cshtml) -
RazorIRToken - (117:7,16 [4] Sections.cshtml) - Html - some
CSharpExpressionAttributeValue - (121:7,20 [7] Sections.cshtml) -
RazorIRToken - (123:7,22 [5] Sections.cshtml) - CSharp - thing
HtmlContent - (129:7,28 [29] Sections.cshtml)
RazorIRToken - (129:7,28 [1] Sections.cshtml) - Html - >
RazorIRToken - (130:7,29 [20] Sections.cshtml) - Html - This is in Section 2

View File

@ -15,10 +15,10 @@ Document -
RazorIRToken - (99:6,19 [6] Sections.cshtml) - Html - \n
RazorIRToken - (105:7,4 [4] Sections.cshtml) - Html - <div
HtmlAttribute - (109:7,8 [20] Sections.cshtml) - class=" - "
HtmlAttributeValue - (117:7,16 [4] Sections.cshtml) - - some
CSharpAttributeValue - (121:7,20 [7] Sections.cshtml) -
CSharpExpression - (123:7,22 [5] Sections.cshtml)
RazorIRToken - (123:7,22 [5] Sections.cshtml) - CSharp - thing
HtmlAttributeValue - (117:7,16 [4] Sections.cshtml) -
RazorIRToken - (117:7,16 [4] Sections.cshtml) - Html - some
CSharpExpressionAttributeValue - (121:7,20 [7] Sections.cshtml) -
RazorIRToken - (123:7,22 [5] Sections.cshtml) - CSharp - thing
HtmlContent - (129:7,28 [29] Sections.cshtml)
RazorIRToken - (129:7,28 [1] Sections.cshtml) - Html - >
RazorIRToken - (130:7,29 [20] Sections.cshtml) - Html - This is in Section 2

View File

@ -38,11 +38,12 @@ Document -
CSharpExpression - (157:8,51 [12] TagHelpersInSection.cshtml)
RazorIRToken - (157:8,51 [12] TagHelpersInSection.cshtml) - CSharp - DateTime.Now
AddTagHelperHtmlAttribute - - unboundproperty - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (188:8,82 [7] TagHelpersInSection.cshtml) - - Current
HtmlAttributeValue - (195:8,89 [6] TagHelpersInSection.cshtml) - - Time:
CSharpAttributeValue - (201:8,95 [14] TagHelpersInSection.cshtml) -
CSharpExpression - (203:8,97 [12] TagHelpersInSection.cshtml)
RazorIRToken - (203:8,97 [12] TagHelpersInSection.cshtml) - CSharp - DateTime.Now
HtmlAttributeValue - (188:8,82 [7] TagHelpersInSection.cshtml) -
RazorIRToken - (188:8,82 [7] TagHelpersInSection.cshtml) - Html - Current
HtmlAttributeValue - (195:8,89 [6] TagHelpersInSection.cshtml) -
RazorIRToken - (196:8,90 [5] TagHelpersInSection.cshtml) - Html - Time:
CSharpExpressionAttributeValue - (201:8,95 [14] TagHelpersInSection.cshtml) -
RazorIRToken - (203:8,97 [12] TagHelpersInSection.cshtml) - CSharp - DateTime.Now
HtmlContent - (359:11,22 [14] TagHelpersInSection.cshtml)
RazorIRToken - (359:11,22 [6] TagHelpersInSection.cshtml) - Html - \n
RazorIRToken - (365:12,4 [6] TagHelpersInSection.cshtml) - Html - </div>

View File

@ -31,9 +31,8 @@ Document -
HtmlContent - (409:16,33 [2] Templates.cshtml)
RazorIRToken - (409:16,33 [2] Templates.cshtml) - Html - <p
HtmlAttribute - (411:16,35 [14] Templates.cshtml) - class=" - "
CSharpAttributeValue - (419:16,43 [5] Templates.cshtml) -
CSharpExpression - (420:16,44 [4] Templates.cshtml)
RazorIRToken - (420:16,44 [4] Templates.cshtml) - CSharp - item
CSharpExpressionAttributeValue - (419:16,43 [5] Templates.cshtml) -
RazorIRToken - (420:16,44 [4] Templates.cshtml) - CSharp - item
HtmlContent - (425:16,49 [10] Templates.cshtml)
RazorIRToken - (425:16,49 [1] Templates.cshtml) - Html - >
RazorIRToken - (426:16,50 [5] Templates.cshtml) - Html - Hello

View File

@ -28,9 +28,8 @@ Document -
HtmlContent - (409:16,33 [2] Templates.cshtml)
RazorIRToken - (409:16,33 [2] Templates.cshtml) - Html - <p
HtmlAttribute - (411:16,35 [14] Templates.cshtml) - class=" - "
CSharpAttributeValue - (419:16,43 [5] Templates.cshtml) -
CSharpExpression - (420:16,44 [4] Templates.cshtml)
RazorIRToken - (420:16,44 [4] Templates.cshtml) - CSharp - item
CSharpExpressionAttributeValue - (419:16,43 [5] Templates.cshtml) -
RazorIRToken - (420:16,44 [4] Templates.cshtml) - CSharp - item
HtmlContent - (425:16,49 [10] Templates.cshtml)
RazorIRToken - (425:16,49 [1] Templates.cshtml) - Html - >
RazorIRToken - (426:16,50 [5] Templates.cshtml) - Html - Hello

View File

@ -20,7 +20,7 @@ Document -
RazorIRToken - (128:6,29 [11] TransitionsInTagHelperAttributes.cshtml) - Html - Body of Tag
CreateTagHelper - - TestNamespace.PTagHelper
AddTagHelperHtmlAttribute - - class - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (109:6,10 [6] TransitionsInTagHelperAttributes.cshtml) -
CSharpStatementAttributeValue - (109:6,10 [6] TransitionsInTagHelperAttributes.cshtml) -
SetTagHelperProperty - (122:6,23 [4] TransitionsInTagHelperAttributes.cshtml) - age - Age - HtmlAttributeValueStyle.DoubleQuotes
RazorIRToken - (122:6,23 [4] TransitionsInTagHelperAttributes.cshtml) - CSharp - 1337
HtmlContent - (143:6,44 [2] TransitionsInTagHelperAttributes.cshtml)
@ -29,9 +29,8 @@ Document -
TagHelperBody -
CreateTagHelper - - TestNamespace.PTagHelper
AddTagHelperHtmlAttribute - - class - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (155:7,10 [9] TransitionsInTagHelperAttributes.cshtml) -
CSharpExpression - (157:7,12 [6] TransitionsInTagHelperAttributes.cshtml)
RazorIRToken - (157:7,12 [6] TransitionsInTagHelperAttributes.cshtml) - CSharp - @class
CSharpExpressionAttributeValue - (155:7,10 [9] TransitionsInTagHelperAttributes.cshtml) -
RazorIRToken - (157:7,12 [6] TransitionsInTagHelperAttributes.cshtml) - CSharp - @class
SetTagHelperProperty - (171:7,26 [2] TransitionsInTagHelperAttributes.cshtml) - age - Age - HtmlAttributeValueStyle.DoubleQuotes
RazorIRToken - (171:7,26 [2] TransitionsInTagHelperAttributes.cshtml) - CSharp - 42
HtmlContent - (179:7,34 [2] TransitionsInTagHelperAttributes.cshtml)
@ -79,10 +78,10 @@ Document -
TagHelperBody -
CreateTagHelper - - TestNamespace.PTagHelper
AddTagHelperHtmlAttribute - - class - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (298:11,10 [7] TransitionsInTagHelperAttributes.cshtml) - - custom-
CSharpAttributeValue - (305:11,17 [9] TransitionsInTagHelperAttributes.cshtml) -
CSharpExpression - (307:11,19 [6] TransitionsInTagHelperAttributes.cshtml)
RazorIRToken - (307:11,19 [6] TransitionsInTagHelperAttributes.cshtml) - CSharp - @class
HtmlAttributeValue - (298:11,10 [7] TransitionsInTagHelperAttributes.cshtml) -
RazorIRToken - (298:11,10 [7] TransitionsInTagHelperAttributes.cshtml) - Html - custom-
CSharpExpressionAttributeValue - (305:11,17 [9] TransitionsInTagHelperAttributes.cshtml) -
RazorIRToken - (307:11,19 [6] TransitionsInTagHelperAttributes.cshtml) - CSharp - @class
SetTagHelperProperty - (321:11,33 [15] TransitionsInTagHelperAttributes.cshtml) - age - Age - HtmlAttributeValueStyle.DoubleQuotes
RazorIRToken - (321:11,33 [1] TransitionsInTagHelperAttributes.cshtml) - CSharp - 4
RazorIRToken - (322:11,34 [2] TransitionsInTagHelperAttributes.cshtml) - CSharp - *

View File

@ -15,7 +15,7 @@ Document -
RazorIRToken - (128:6,29 [11] TransitionsInTagHelperAttributes.cshtml) - Html - Body of Tag
CreateTagHelper - - TestNamespace.PTagHelper
AddTagHelperHtmlAttribute - - class - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (109:6,10 [6] TransitionsInTagHelperAttributes.cshtml) -
CSharpStatementAttributeValue - (109:6,10 [6] TransitionsInTagHelperAttributes.cshtml) -
SetTagHelperProperty - (122:6,23 [4] TransitionsInTagHelperAttributes.cshtml) - age - Age - HtmlAttributeValueStyle.DoubleQuotes
RazorIRToken - (122:6,23 [4] TransitionsInTagHelperAttributes.cshtml) - CSharp - 1337
HtmlContent - (143:6,44 [2] TransitionsInTagHelperAttributes.cshtml)
@ -24,9 +24,8 @@ Document -
TagHelperBody -
CreateTagHelper - - TestNamespace.PTagHelper
AddTagHelperHtmlAttribute - - class - HtmlAttributeValueStyle.DoubleQuotes
CSharpAttributeValue - (155:7,10 [9] TransitionsInTagHelperAttributes.cshtml) -
CSharpExpression - (157:7,12 [6] TransitionsInTagHelperAttributes.cshtml)
RazorIRToken - (157:7,12 [6] TransitionsInTagHelperAttributes.cshtml) - CSharp - @class
CSharpExpressionAttributeValue - (155:7,10 [9] TransitionsInTagHelperAttributes.cshtml) -
RazorIRToken - (157:7,12 [6] TransitionsInTagHelperAttributes.cshtml) - CSharp - @class
SetTagHelperProperty - (171:7,26 [2] TransitionsInTagHelperAttributes.cshtml) - age - Age - HtmlAttributeValueStyle.DoubleQuotes
RazorIRToken - (171:7,26 [2] TransitionsInTagHelperAttributes.cshtml) - CSharp - 42
HtmlContent - (179:7,34 [2] TransitionsInTagHelperAttributes.cshtml)
@ -68,10 +67,10 @@ Document -
TagHelperBody -
CreateTagHelper - - TestNamespace.PTagHelper
AddTagHelperHtmlAttribute - - class - HtmlAttributeValueStyle.DoubleQuotes
HtmlAttributeValue - (298:11,10 [7] TransitionsInTagHelperAttributes.cshtml) - - custom-
CSharpAttributeValue - (305:11,17 [9] TransitionsInTagHelperAttributes.cshtml) -
CSharpExpression - (307:11,19 [6] TransitionsInTagHelperAttributes.cshtml)
RazorIRToken - (307:11,19 [6] TransitionsInTagHelperAttributes.cshtml) - CSharp - @class
HtmlAttributeValue - (298:11,10 [7] TransitionsInTagHelperAttributes.cshtml) -
RazorIRToken - (298:11,10 [7] TransitionsInTagHelperAttributes.cshtml) - Html - custom-
CSharpExpressionAttributeValue - (305:11,17 [9] TransitionsInTagHelperAttributes.cshtml) -
RazorIRToken - (307:11,19 [6] TransitionsInTagHelperAttributes.cshtml) - CSharp - @class
SetTagHelperProperty - (321:11,33 [15] TransitionsInTagHelperAttributes.cshtml) - age - Age - HtmlAttributeValueStyle.DoubleQuotes
RazorIRToken - (321:11,33 [1] TransitionsInTagHelperAttributes.cshtml) - CSharp - 4
RazorIRToken - (322:11,34 [2] TransitionsInTagHelperAttributes.cshtml) - CSharp - *

View File

@ -10,9 +10,8 @@ Document -
RazorIRToken - (14:1,6 [6] HtmlWithConditionalAttribute.cshtml) - Html - \n
RazorIRToken - (20:2,4 [5] HtmlWithConditionalAttribute.cshtml) - Html - <span
HtmlAttribute - (25:2,9 [13] HtmlWithConditionalAttribute.cshtml) - val=" - "
CSharpAttributeValue - (31:2,15 [6] HtmlWithConditionalAttribute.cshtml) -
CSharpExpression - (32:2,16 [5] HtmlWithConditionalAttribute.cshtml)
RazorIRToken - (32:2,16 [5] HtmlWithConditionalAttribute.cshtml) - CSharp - Hello
CSharpExpressionAttributeValue - (31:2,15 [6] HtmlWithConditionalAttribute.cshtml) -
RazorIRToken - (32:2,16 [5] HtmlWithConditionalAttribute.cshtml) - CSharp - Hello
HtmlContent - (38:2,22 [22] HtmlWithConditionalAttribute.cshtml)
RazorIRToken - (38:2,22 [3] HtmlWithConditionalAttribute.cshtml) - Html - />
RazorIRToken - (41:2,25 [2] HtmlWithConditionalAttribute.cshtml) - Html - \n

View File

@ -31,7 +31,12 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
WriteContentNode(node, node.AccessModifier, node.Name, node.BaseType, string.Join(", ", node.Interfaces ?? new List<string>()));
}
public override void VisitCSharpAttributeValue(CSharpAttributeValueIRNode node)
public override void VisitCSharpExpressionAttributeValue(CSharpExpressionAttributeValueIRNode node)
{
WriteContentNode(node, node.Prefix);
}
public override void VisitCSharpStatementAttributeValue(CSharpStatementAttributeValueIRNode node)
{
WriteContentNode(node, node.Prefix);
}
@ -58,7 +63,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
public override void VisitHtmlAttributeValue(HtmlAttributeValueIRNode node)
{
WriteContentNode(node, node.Prefix, node.Content);
WriteContentNode(node, node.Prefix);
}
public override void VisitNamespaceDeclaration(NamespaceDeclarationIRNode node)

View File

@ -199,14 +199,22 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
}
}
public static void CSharpAttributeValue(string prefix, string expected, RazorIRNode node)
public static void CSharpExpressionAttributeValue(string prefix, string expected, RazorIRNode node)
{
var attributeValue = Assert.IsType<CSharpAttributeValueIRNode>(node);
var attributeValue = Assert.IsType<CSharpExpressionAttributeValueIRNode>(node);
try
{
var content = new StringBuilder();
for (var i = 0; i < attributeValue.Children.Count; i++)
{
var token = Assert.IsType<RazorIRToken>(attributeValue.Children[i]);
Assert.True(token.IsCSharp);
content.Append(token.Content);
}
Assert.Equal(prefix, attributeValue.Prefix);
Children(attributeValue, n => CSharpExpression(expected, n));
Assert.Equal(expected, content.ToString());
}
catch (XunitException e)
{
@ -217,11 +225,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
public static void LiteralAttributeValue(string prefix, string expected, RazorIRNode node)
{
var attributeValue = Assert.IsType<HtmlAttributeValueIRNode>(node);
try
{
var content = new StringBuilder();
for (var i = 0; i < attributeValue.Children.Count; i++)
{
var token = Assert.IsType<RazorIRToken>(attributeValue.Children[i]);
Assert.True(token.IsHtml);
content.Append(token.Content);
}
Assert.Equal(prefix, attributeValue.Prefix);
Assert.Equal(expected, attributeValue.Content);
Assert.Equal(expected, content.ToString());
}
catch (XunitException e)
{
@ -272,7 +288,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
for (var i = 0; i < beginNode.Children.Count; i++)
{
var token = Assert.IsType<RazorIRToken>(beginNode.Children[i]);
Assert.Equal(RazorIRToken.TokenKind.CSharp, token.Kind);
Assert.True(token.IsCSharp);
content.Append(token.Content);
}