Skip to content
This repository was archived by the owner on Dec 19, 2018. It is now read-only.

Commit a7846a1

Browse files
committed
Addressed feedback
1 parent f1492ef commit a7846a1

File tree

4 files changed

+65
-7
lines changed

4 files changed

+65
-7
lines changed

src/Microsoft.AspNetCore.Razor.Language/Syntax/MarkupElementRewriter.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
using System.Collections.Generic;
66
using System.Diagnostics;
77
using System.Linq;
8-
using System.Text;
98

109
namespace Microsoft.AspNetCore.Razor.Language.Syntax
1110
{
1211
internal static class MarkupElementRewriter
1312
{
14-
public static RazorSyntaxTree AddMarkupElement(RazorSyntaxTree syntaxTree)
13+
public static RazorSyntaxTree AddMarkupElements(RazorSyntaxTree syntaxTree)
1514
{
1615
var rewriter = new AddMarkupElementRewriter();
1716
var rewrittenRoot = rewriter.Visit(syntaxTree.Root);
@@ -20,7 +19,7 @@ public static RazorSyntaxTree AddMarkupElement(RazorSyntaxTree syntaxTree)
2019
return newSyntaxTree;
2120
}
2221

23-
public static RazorSyntaxTree RemoveMarkupElement(RazorSyntaxTree syntaxTree)
22+
public static RazorSyntaxTree RemoveMarkupElements(RazorSyntaxTree syntaxTree)
2423
{
2524
var rewriter = new RemoveMarkupElementRewriter();
2625
var rewrittenRoot = rewriter.Visit(syntaxTree.Root);
@@ -173,14 +172,17 @@ private void BuildMarkupElement(List<SyntaxNode> rewrittenChildren, MarkupTagBlo
173172
// The call to SyntaxNode.ReplaceNodes() later will take care removing the nodes whose replacement is null.
174173

175174
var body = tagChildren.Where(t => t != null).ToList();
176-
var rewritten = SyntaxFactory.MarkupElement(startTag, new SyntaxList<RazorSyntaxNode>(body), endTag: endTag);
175+
var rewritten = SyntaxFactory.MarkupElement(startTag, new SyntaxList<RazorSyntaxNode>(body), endTag);
177176
if (startTag != null)
178177
{
179178
// If there was a start tag, that is where we want to put our new element.
180179
TrackChild(rewritten, rewrittenChildren);
181180
}
182181

183-
tagChildren.ForEach(c => TrackChild(null, rewrittenChildren));
182+
foreach (var child in tagChildren)
183+
{
184+
TrackChild(null, rewrittenChildren);
185+
}
184186
if (endTag != null)
185187
{
186188
TrackChild(startTag == null ? rewritten : null, rewrittenChildren);

test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/MarkupElementRewriterTest.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,25 @@ public void Rewrites_MalformedVoidTags_RecoversSuccessfully()
122122
RewriterTest(content);
123123
}
124124

125+
[Fact]
126+
public void Rewrites_IncompleteTags()
127+
{
128+
// Arrange
129+
var content = @"
130+
<<div>>Foo</</div>< >
131+
";
132+
133+
// Act & Assert
134+
RewriterTest(content);
135+
}
136+
125137
private void RewriterTest(string input)
126138
{
127139
var syntaxTree = ParseDocument(input, designTime: false);
128-
var rewritten = MarkupElementRewriter.AddMarkupElement(syntaxTree);
140+
var rewritten = MarkupElementRewriter.AddMarkupElements(syntaxTree);
129141
BaselineTest(rewritten);
130142

131-
var unrewritten = MarkupElementRewriter.RemoveMarkupElement(rewritten);
143+
var unrewritten = MarkupElementRewriter.RemoveMarkupElements(rewritten);
132144
Assert.Equal(syntaxTree.Root.SerializedValue, unrewritten.Root.SerializedValue);
133145
}
134146
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Markup span at (0:0,0 [2] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [27] )
2+
Markup span at (2:1,0 [1] ) (Accepts:Any) - Parent: Tag block at (2:1,0 [1] )
3+
Markup span at (3:1,1 [5] ) (Accepts:Any) - Parent: Tag block at (3:1,1 [5] )
4+
Markup span at (8:1,6 [4] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [27] )
5+
Markup span at (12:1,10 [2] ) (Accepts:Any) - Parent: Tag block at (12:1,10 [2] )
6+
Markup span at (14:1,12 [6] ) (Accepts:Any) - Parent: Tag block at (14:1,12 [6] )
7+
Markup span at (20:1,18 [5] ) (Accepts:Any) - Parent: Tag block at (20:1,18 [5] )
8+
Markup span at (25:1,23 [2] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [27] )
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
RazorDocument - [0..27)::27 - [LF<<div>>Foo</</div>< >LF]
2+
MarkupBlock - [0..27)::27
3+
MarkupTextLiteral - [0..2)::2 - [LF] - Gen<Markup> - SpanEditHandler;Accepts:Any
4+
NewLine;[LF];
5+
MarkupElement - [2..3)::1
6+
MarkupTagBlock - [2..3)::1 - [<]
7+
MarkupTextLiteral - [2..3)::1 - [<] - Gen<Markup> - SpanEditHandler;Accepts:Any
8+
OpenAngle;[<];
9+
MarkupElement - [3..20)::17
10+
MarkupTagBlock - [3..8)::5 - [<div>]
11+
MarkupTextLiteral - [3..8)::5 - [<div>] - Gen<Markup> - SpanEditHandler;Accepts:Any
12+
OpenAngle;[<];
13+
Text;[div];
14+
CloseAngle;[>];
15+
MarkupTextLiteral - [8..12)::4 - [>Foo] - Gen<Markup> - SpanEditHandler;Accepts:Any
16+
CloseAngle;[>];
17+
Text;[Foo];
18+
MarkupElement - [12..14)::2
19+
MarkupTagBlock - [12..14)::2 - [</]
20+
MarkupTextLiteral - [12..14)::2 - [</] - Gen<Markup> - SpanEditHandler;Accepts:Any
21+
OpenAngle;[<];
22+
ForwardSlash;[/];
23+
MarkupTagBlock - [14..20)::6 - [</div>]
24+
MarkupTextLiteral - [14..20)::6 - [</div>] - Gen<Markup> - SpanEditHandler;Accepts:Any
25+
OpenAngle;[<];
26+
ForwardSlash;[/];
27+
Text;[div];
28+
CloseAngle;[>];
29+
MarkupElement - [20..25)::5
30+
MarkupTagBlock - [20..25)::5 - [< >]
31+
MarkupTextLiteral - [20..25)::5 - [< >] - Gen<Markup> - SpanEditHandler;Accepts:Any
32+
OpenAngle;[<];
33+
Whitespace;[ ];
34+
CloseAngle;[>];
35+
MarkupTextLiteral - [25..27)::2 - [LF] - Gen<Markup> - SpanEditHandler;Accepts:Any
36+
NewLine;[LF];

0 commit comments

Comments
 (0)