[Fixes #739] Newline after text tag rendered only if followed by html

This commit is contained in:
Ajay Bhargav Baaskaran 2016-04-29 11:15:52 -07:00
parent 2950c87651
commit 9bfa74d829
10 changed files with 144 additions and 154 deletions

View File

@ -1100,29 +1100,31 @@ namespace Microsoft.AspNetCore.Razor.Parser
tags.Clear(); tags.Clear();
if (!Context.DesignTimeMode) if (!Context.DesignTimeMode)
{ {
if (At(HtmlSymbolType.WhiteSpace)) var shouldAcceptWhitespaceAndNewLine = true;
{
if (Context.LastSpan.Kind == SpanKind.Transition)
{
// Output current span content as markup.
Output(SpanKind.Markup);
// Accept and mark the whitespace at the end of a <text> tag as code. if (Context.LastSpan.Kind == SpanKind.Transition)
AcceptWhile(HtmlSymbolType.WhiteSpace); {
Span.ChunkGenerator = new StatementChunkGenerator(); var symbols = ReadWhile(
Output(SpanKind.Code); f => (f.Type == HtmlSymbolType.WhiteSpace) || (f.Type == HtmlSymbolType.NewLine));
}
else // Make sure the current symbol is not markup, which can be html start tag or @:
if (!(At(HtmlSymbolType.OpenAngle) ||
(At(HtmlSymbolType.Transition) && Lookahead(count: 1).Content.StartsWith(":"))))
{ {
AcceptWhile(HtmlSymbolType.WhiteSpace); // Don't accept whitespace as markup if the end text tag is followed by csharp.
shouldAcceptWhitespaceAndNewLine = false;
} }
PutCurrentBack();
PutBack(symbols);
EnsureCurrent();
} }
if (!EndOfFile && if (shouldAcceptWhitespaceAndNewLine)
At(HtmlSymbolType.NewLine) &&
Context.LastSpan.Kind != SpanKind.Transition)
{ {
AcceptAndMoveNext(); // Accept whitespace and a single newline if present
AcceptWhile(HtmlSymbolType.WhiteSpace);
Optional(HtmlSymbolType.NewLine);
} }
} }
else if (Span.EditHandler.AcceptedCharacters == AcceptedCharacters.Any) else if (Span.EditHandler.AcceptedCharacters == AcceptedCharacters.Any)

View File

@ -841,255 +841,239 @@ namespace Microsoft.AspNetCore.Razor.Test.Generator
generatedAbsoluteIndex: 3432, generatedAbsoluteIndex: 3432,
generatedLineIndex: 95, generatedLineIndex: 95,
generatedCharacterOffsetIndex: 61, generatedCharacterOffsetIndex: 61,
contentLength: 1), contentLength: 9),
BuildLineMapping(
documentAbsoluteIndex: 605,
documentLineIndex: 17,
documentCharacterOffsetIndex: 63,
generatedAbsoluteIndex: 3567,
generatedLineIndex: 101,
generatedCharacterOffsetIndex: 62,
contentLength: 8),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 635, documentAbsoluteIndex: 635,
documentLineIndex: 17, documentLineIndex: 17,
documentCharacterOffsetIndex: 93, documentCharacterOffsetIndex: 93,
generatedAbsoluteIndex: 3738, generatedAbsoluteIndex: 3604,
generatedLineIndex: 107, generatedLineIndex: 101,
generatedCharacterOffsetIndex: 91, generatedCharacterOffsetIndex: 91,
contentLength: 1), contentLength: 2),
BuildLineMapping(
documentAbsoluteIndex: 636,
documentLineIndex: 17,
documentCharacterOffsetIndex: 94,
generatedAbsoluteIndex: 3903,
generatedLineIndex: 113,
generatedCharacterOffsetIndex: 92,
contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 641, documentAbsoluteIndex: 641,
documentLineIndex: 18, documentLineIndex: 18,
generatedAbsoluteIndex: 4130, generatedAbsoluteIndex: 3832,
generatedLineIndex: 121, generatedLineIndex: 109,
characterOffsetIndex: 0, characterOffsetIndex: 0,
contentLength: 15), contentLength: 15),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 161, documentAbsoluteIndex: 161,
documentLineIndex: 7, documentLineIndex: 7,
generatedAbsoluteIndex: 4341, generatedAbsoluteIndex: 4043,
generatedLineIndex: 128, generatedLineIndex: 116,
characterOffsetIndex: 32, characterOffsetIndex: 32,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 767, documentAbsoluteIndex: 767,
documentLineIndex: 21, documentLineIndex: 21,
generatedAbsoluteIndex: 4424, generatedAbsoluteIndex: 4126,
generatedLineIndex: 133, generatedLineIndex: 121,
characterOffsetIndex: 0, characterOffsetIndex: 0,
contentLength: 12), contentLength: 12),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 781, documentAbsoluteIndex: 781,
documentLineIndex: 21, documentLineIndex: 21,
generatedAbsoluteIndex: 4522, generatedAbsoluteIndex: 4224,
generatedLineIndex: 139, generatedLineIndex: 127,
characterOffsetIndex: 14, characterOffsetIndex: 14,
contentLength: 21), contentLength: 21),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 834, documentAbsoluteIndex: 834,
documentLineIndex: 22, documentLineIndex: 22,
documentCharacterOffsetIndex: 29, documentCharacterOffsetIndex: 29,
generatedAbsoluteIndex: 4865, generatedAbsoluteIndex: 4567,
generatedLineIndex: 147, generatedLineIndex: 135,
generatedCharacterOffsetIndex: 42, generatedCharacterOffsetIndex: 42,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 835, documentAbsoluteIndex: 835,
documentLineIndex: 22, documentLineIndex: 22,
documentCharacterOffsetIndex: 30, documentCharacterOffsetIndex: 30,
generatedAbsoluteIndex: 4866, generatedAbsoluteIndex: 4568,
generatedLineIndex: 147, generatedLineIndex: 135,
generatedCharacterOffsetIndex: 43, generatedCharacterOffsetIndex: 43,
contentLength: 7), contentLength: 7),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 842, documentAbsoluteIndex: 842,
documentLineIndex: 22, documentLineIndex: 22,
documentCharacterOffsetIndex: 37, documentCharacterOffsetIndex: 37,
generatedAbsoluteIndex: 4873, generatedAbsoluteIndex: 4575,
generatedLineIndex: 147, generatedLineIndex: 135,
generatedCharacterOffsetIndex: 50, generatedCharacterOffsetIndex: 50,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 709, documentAbsoluteIndex: 709,
documentLineIndex: 20, documentLineIndex: 20,
documentCharacterOffsetIndex: 39, documentCharacterOffsetIndex: 39,
generatedAbsoluteIndex: 5078, generatedAbsoluteIndex: 4780,
generatedLineIndex: 153, generatedLineIndex: 141,
generatedCharacterOffsetIndex: 38, generatedCharacterOffsetIndex: 38,
contentLength: 23), contentLength: 23),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 732, documentAbsoluteIndex: 732,
documentLineIndex: 20, documentLineIndex: 20,
documentCharacterOffsetIndex: 62, documentCharacterOffsetIndex: 62,
generatedAbsoluteIndex: 5101, generatedAbsoluteIndex: 4803,
generatedLineIndex: 153, generatedLineIndex: 141,
generatedCharacterOffsetIndex: 61, generatedCharacterOffsetIndex: 61,
contentLength: 7), contentLength: 7),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 974, documentAbsoluteIndex: 974,
documentLineIndex: 25, documentLineIndex: 25,
documentCharacterOffsetIndex: 61, documentCharacterOffsetIndex: 61,
generatedAbsoluteIndex: 5447, generatedAbsoluteIndex: 5149,
generatedLineIndex: 160, generatedLineIndex: 148,
generatedCharacterOffsetIndex: 60, generatedCharacterOffsetIndex: 60,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 975, documentAbsoluteIndex: 975,
documentLineIndex: 25, documentLineIndex: 25,
documentCharacterOffsetIndex: 62, documentCharacterOffsetIndex: 62,
generatedAbsoluteIndex: 5448, generatedAbsoluteIndex: 5150,
generatedLineIndex: 160, generatedLineIndex: 148,
generatedCharacterOffsetIndex: 61, generatedCharacterOffsetIndex: 61,
contentLength: 30), contentLength: 30),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1005, documentAbsoluteIndex: 1005,
documentLineIndex: 25, documentLineIndex: 25,
documentCharacterOffsetIndex: 92, documentCharacterOffsetIndex: 92,
generatedAbsoluteIndex: 5478, generatedAbsoluteIndex: 5180,
generatedLineIndex: 160, generatedLineIndex: 148,
generatedCharacterOffsetIndex: 91, generatedCharacterOffsetIndex: 91,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 877, documentAbsoluteIndex: 877,
documentLineIndex: 24, documentLineIndex: 24,
documentCharacterOffsetIndex: 16, documentCharacterOffsetIndex: 16,
generatedAbsoluteIndex: 5678, generatedAbsoluteIndex: 5380,
generatedLineIndex: 166, generatedLineIndex: 154,
generatedCharacterOffsetIndex: 33, generatedCharacterOffsetIndex: 33,
contentLength: 8), contentLength: 8),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 885, documentAbsoluteIndex: 885,
documentLineIndex: 24, documentLineIndex: 24,
documentCharacterOffsetIndex: 24, documentCharacterOffsetIndex: 24,
generatedAbsoluteIndex: 5686, generatedAbsoluteIndex: 5388,
generatedLineIndex: 166, generatedLineIndex: 154,
generatedCharacterOffsetIndex: 41, generatedCharacterOffsetIndex: 41,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 886, documentAbsoluteIndex: 886,
documentLineIndex: 24, documentLineIndex: 24,
documentCharacterOffsetIndex: 25, documentCharacterOffsetIndex: 25,
generatedAbsoluteIndex: 5687, generatedAbsoluteIndex: 5389,
generatedLineIndex: 166, generatedLineIndex: 154,
generatedCharacterOffsetIndex: 42, generatedCharacterOffsetIndex: 42,
contentLength: 23), contentLength: 23),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1104, documentAbsoluteIndex: 1104,
documentLineIndex: 28, documentLineIndex: 28,
documentCharacterOffsetIndex: 28, documentCharacterOffsetIndex: 28,
generatedAbsoluteIndex: 6031, generatedAbsoluteIndex: 5733,
generatedLineIndex: 173, generatedLineIndex: 161,
generatedCharacterOffsetIndex: 42, generatedCharacterOffsetIndex: 42,
contentLength: 30), contentLength: 30),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1042, documentAbsoluteIndex: 1042,
documentLineIndex: 27, documentLineIndex: 27,
documentCharacterOffsetIndex: 16, documentCharacterOffsetIndex: 16,
generatedAbsoluteIndex: 6260, generatedAbsoluteIndex: 5962,
generatedLineIndex: 179, generatedLineIndex: 167,
generatedCharacterOffsetIndex: 33, generatedCharacterOffsetIndex: 33,
contentLength: 30), contentLength: 30),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1232, documentAbsoluteIndex: 1232,
documentLineIndex: 31, documentLineIndex: 31,
documentCharacterOffsetIndex: 28, documentCharacterOffsetIndex: 28,
generatedAbsoluteIndex: 6611, generatedAbsoluteIndex: 6313,
generatedLineIndex: 186, generatedLineIndex: 174,
generatedCharacterOffsetIndex: 42, generatedCharacterOffsetIndex: 42,
contentLength: 3), contentLength: 3),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1235, documentAbsoluteIndex: 1235,
documentLineIndex: 31, documentLineIndex: 31,
documentCharacterOffsetIndex: 31, documentCharacterOffsetIndex: 31,
generatedAbsoluteIndex: 6614, generatedAbsoluteIndex: 6316,
generatedLineIndex: 186, generatedLineIndex: 174,
generatedCharacterOffsetIndex: 45, generatedCharacterOffsetIndex: 45,
contentLength: 2), contentLength: 2),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1237, documentAbsoluteIndex: 1237,
documentLineIndex: 31, documentLineIndex: 31,
documentCharacterOffsetIndex: 33, documentCharacterOffsetIndex: 33,
generatedAbsoluteIndex: 6616, generatedAbsoluteIndex: 6318,
generatedLineIndex: 186, generatedLineIndex: 174,
generatedCharacterOffsetIndex: 47, generatedCharacterOffsetIndex: 47,
contentLength: 27), contentLength: 27),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1264, documentAbsoluteIndex: 1264,
documentLineIndex: 31, documentLineIndex: 31,
documentCharacterOffsetIndex: 60, documentCharacterOffsetIndex: 60,
generatedAbsoluteIndex: 6643, generatedAbsoluteIndex: 6345,
generatedLineIndex: 186, generatedLineIndex: 174,
generatedCharacterOffsetIndex: 74, generatedCharacterOffsetIndex: 74,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1265, documentAbsoluteIndex: 1265,
documentLineIndex: 31, documentLineIndex: 31,
documentCharacterOffsetIndex: 61, documentCharacterOffsetIndex: 61,
generatedAbsoluteIndex: 6644, generatedAbsoluteIndex: 6346,
generatedLineIndex: 186, generatedLineIndex: 174,
generatedCharacterOffsetIndex: 75, generatedCharacterOffsetIndex: 75,
contentLength: 10), contentLength: 10),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1169, documentAbsoluteIndex: 1169,
documentLineIndex: 30, documentLineIndex: 30,
documentCharacterOffsetIndex: 17, documentCharacterOffsetIndex: 17,
generatedAbsoluteIndex: 6853, generatedAbsoluteIndex: 6555,
generatedLineIndex: 192, generatedLineIndex: 180,
generatedCharacterOffsetIndex: 33, generatedCharacterOffsetIndex: 33,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1170, documentAbsoluteIndex: 1170,
documentLineIndex: 30, documentLineIndex: 30,
documentCharacterOffsetIndex: 18, documentCharacterOffsetIndex: 18,
generatedAbsoluteIndex: 6854, generatedAbsoluteIndex: 6556,
generatedLineIndex: 192, generatedLineIndex: 180,
generatedCharacterOffsetIndex: 34, generatedCharacterOffsetIndex: 34,
contentLength: 29), contentLength: 29),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1199, documentAbsoluteIndex: 1199,
documentLineIndex: 30, documentLineIndex: 30,
documentCharacterOffsetIndex: 47, documentCharacterOffsetIndex: 47,
generatedAbsoluteIndex: 6883, generatedAbsoluteIndex: 6585,
generatedLineIndex: 192, generatedLineIndex: 180,
generatedCharacterOffsetIndex: 63, generatedCharacterOffsetIndex: 63,
contentLength: 1), contentLength: 1),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1304, documentAbsoluteIndex: 1304,
documentLineIndex: 33, documentLineIndex: 33,
generatedAbsoluteIndex: 6964, generatedAbsoluteIndex: 6666,
generatedLineIndex: 197, generatedLineIndex: 185,
characterOffsetIndex: 9, characterOffsetIndex: 9,
contentLength: 11), contentLength: 11),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1359, documentAbsoluteIndex: 1359,
documentLineIndex: 33, documentLineIndex: 33,
documentCharacterOffsetIndex: 64, documentCharacterOffsetIndex: 64,
generatedAbsoluteIndex: 7325, generatedAbsoluteIndex: 7027,
generatedLineIndex: 201, generatedLineIndex: 189,
generatedCharacterOffsetIndex: 63, generatedCharacterOffsetIndex: 63,
contentLength: 7), contentLength: 7),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1324, documentAbsoluteIndex: 1324,
documentLineIndex: 33, documentLineIndex: 33,
documentCharacterOffsetIndex: 29, documentCharacterOffsetIndex: 29,
generatedAbsoluteIndex: 7523, generatedAbsoluteIndex: 7225,
generatedLineIndex: 207, generatedLineIndex: 195,
generatedCharacterOffsetIndex: 33, generatedCharacterOffsetIndex: 33,
contentLength: 3), contentLength: 3),
BuildLineMapping( BuildLineMapping(
documentAbsoluteIndex: 1388, documentAbsoluteIndex: 1388,
documentLineIndex: 35, documentLineIndex: 35,
generatedAbsoluteIndex: 7638, generatedAbsoluteIndex: 7340,
generatedLineIndex: 218, generatedLineIndex: 206,
characterOffsetIndex: 0, characterOffsetIndex: 0,
contentLength: 1), contentLength: 1),
} }

View File

@ -622,10 +622,8 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.CSharp
Factory.MarkupTransition("<text>").Accepts(AcceptedCharacters.None)), Factory.MarkupTransition("<text>").Accepts(AcceptedCharacters.None)),
Factory.Markup(";").Accepts(AcceptedCharacters.None), Factory.Markup(";").Accepts(AcceptedCharacters.None),
new MarkupTagBlock( new MarkupTagBlock(
Factory.MarkupTransition("</text>").Accepts(AcceptedCharacters.None)), Factory.MarkupTransition("</text>").Accepts(AcceptedCharacters.None))),
Factory.CodeMarkup(" ").With(new StatementChunkGenerator()).Accepts(AcceptedCharacters.None) Factory.Code(" }").AsStatement()));
),
Factory.Code("}").AsStatement()));
} }
[Fact] [Fact]
@ -642,10 +640,8 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.CSharp
Factory.MarkupTransition("<text>").Accepts(AcceptedCharacters.None)), Factory.MarkupTransition("<text>").Accepts(AcceptedCharacters.None)),
Factory.Markup(";").Accepts(AcceptedCharacters.None), Factory.Markup(";").Accepts(AcceptedCharacters.None),
new MarkupTagBlock( new MarkupTagBlock(
Factory.MarkupTransition("</text>").Accepts(AcceptedCharacters.None)), Factory.MarkupTransition("</text>").Accepts(AcceptedCharacters.None))),
Factory.CodeMarkup(" ").With(new StatementChunkGenerator()).Accepts(AcceptedCharacters.None) Factory.Code(" } ").AsStatement(),
),
Factory.Code("} ").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None))); Factory.MetaCode("}").Accepts(AcceptedCharacters.None)));
} }

View File

@ -511,9 +511,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.Html
Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)), Factory.Markup("<foo>").Accepts(AcceptedCharacters.None)),
Factory.Markup(" Baz"), Factory.Markup(" Baz"),
new MarkupTagBlock( new MarkupTagBlock(
Factory.MarkupTransition("</text>")), Factory.MarkupTransition("</text>"))));
Factory.CodeMarkup(" ").With(new StatementChunkGenerator()).Accepts(AcceptedCharacters.None)
));
} }
[Fact] [Fact]
@ -532,9 +530,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.Html
new MarkupTagBlock( new MarkupTagBlock(
Factory.Markup("</text>").Accepts(AcceptedCharacters.None)), Factory.Markup("</text>").Accepts(AcceptedCharacters.None)),
new MarkupTagBlock( new MarkupTagBlock(
Factory.MarkupTransition("</text>")), Factory.MarkupTransition("</text>"))));
Factory.CodeMarkup(" ").With(new StatementChunkGenerator()).Accepts(AcceptedCharacters.None)
));
} }
[Fact] [Fact]

View File

@ -3,11 +3,13 @@
using System; using System;
using Microsoft.AspNetCore.Razor.Chunks.Generators; using Microsoft.AspNetCore.Razor.Chunks.Generators;
using Microsoft.AspNetCore.Razor.Editor;
using Microsoft.AspNetCore.Razor.Parser; using Microsoft.AspNetCore.Razor.Parser;
using Microsoft.AspNetCore.Razor.Parser.SyntaxTree; using Microsoft.AspNetCore.Razor.Parser.SyntaxTree;
using Microsoft.AspNetCore.Razor.Test.Framework; using Microsoft.AspNetCore.Razor.Test.Framework;
using Microsoft.AspNetCore.Razor.Text; using Microsoft.AspNetCore.Razor.Text;
using Microsoft.AspNetCore.Razor.Tokenizer; using Microsoft.AspNetCore.Razor.Tokenizer;
using Microsoft.AspNetCore.Razor.Tokenizer.Symbols;
using Xunit; using Xunit;
namespace Microsoft.AspNetCore.Razor.Test.Parser.Html namespace Microsoft.AspNetCore.Razor.Test.Parser.Html
@ -321,7 +323,7 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.Html
} }
[Fact] [Fact]
public void ParseDocumentDoesNotRenderExtraNewlineAtTheEndTextTagInVerbatimBlock() public void ParseDocumentDoesNotRenderExtraNewlineAtTheEndTextTagInVerbatimBlockIfFollowedByCSharp()
{ {
ParseDocumentTest("@{<text>Blah</text>\r\n\r\n}<html>", ParseDocumentTest("@{<text>Blah</text>\r\n\r\n}<html>",
new MarkupBlock( new MarkupBlock(
@ -340,6 +342,58 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.Html
BlockFactory.MarkupTagBlock("<html>"))); BlockFactory.MarkupTagBlock("<html>")));
} }
[Fact]
public void ParseDocumentRendersExtraNewlineAtTheEndTextTagInVerbatimBlockIfFollowedByHtml()
{
ParseDocumentTest("@{<text>Blah</text>\r\n<input/>\r\n}<html>",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
Factory.Markup("Blah").Accepts(AcceptedCharacters.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>")),
Factory.Markup("\r\n").Accepts(AcceptedCharacters.None)),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<input/>").Accepts(AcceptedCharacters.None)),
Factory.Markup("\r\n").Accepts(AcceptedCharacters.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("<html>")));
}
[Fact]
public void ParseDocumentRendersExtraNewlineAtTheEndTextTagInVerbatimBlockIfFollowedByMarkupTransition()
{
ParseDocumentTest("@{<text>Blah</text>\r\n@: Bleh\r\n}<html>",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharacters.None),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
Factory.Markup("Blah").Accepts(AcceptedCharacters.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>")),
Factory.Markup("\r\n").Accepts(AcceptedCharacters.None)),
new MarkupBlock(
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup(" Bleh\r\n")
.With(new SingleLineMarkupEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString))
.Accepts(AcceptedCharacters.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("<html>")));
}
[Fact] [Fact]
public void ParseDocumentDoesNotIgnoreNewLineAtTheEndOfMarkupBlock() public void ParseDocumentDoesNotIgnoreNewLineAtTheEndOfMarkupBlock()
{ {

View File

@ -1500,13 +1500,9 @@ namespace Microsoft.AspNetCore.Razor.Compilation.TagHelpers
factory.MarkupTransition("<text>")), factory.MarkupTransition("<text>")),
factory.Markup("Foo").Accepts(AcceptedCharacters.None), factory.Markup("Foo").Accepts(AcceptedCharacters.None),
new MarkupTagBlock( new MarkupTagBlock(
factory.MarkupTransition("</text>")), factory.MarkupTransition("</text>"))),
factory
.CodeMarkup(" ")
.With(new StatementChunkGenerator())
.Accepts(AcceptedCharacters.None)),
factory factory
.Code("foo++; } while (foo<bar>);") .Code(" foo++; } while (foo<bar>);")
.AsStatement() .AsStatement()
.Accepts(AcceptedCharacters.None))))); .Accepts(AcceptedCharacters.None)))));

View File

@ -26,14 +26,6 @@ namespace TestOutput
Instrumentation.EndContext(); Instrumentation.EndContext();
#line 2 "CodeBlockWithTextElement.cshtml" #line 2 "CodeBlockWithTextElement.cshtml"
#line default
#line hidden
Instrumentation.BeginContext(38, 2, true);
WriteLiteral("\r\n");
Instrumentation.EndContext();
#line 3 "CodeBlockWithTextElement.cshtml"
var b = 1; var b = 1;
#line default #line default

View File

@ -89,24 +89,12 @@ if (true)
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
if(true) { if(true) {
#line default
#line hidden
#line 18 "ComplexTagHelpers.cshtml"
#line default #line default
#line hidden #line hidden
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
} else { } else {
#line default
#line hidden
#line 18 "ComplexTagHelpers.cshtml"
#line default #line default
#line hidden #line hidden

View File

@ -204,12 +204,6 @@ namespace TestOutput
#line hidden #line hidden
WriteLiteral("checkbox"); WriteLiteral("checkbox");
#line 18 "ComplexTagHelpers.cshtml"
#line default
#line hidden
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
} else { } else {
@ -217,12 +211,6 @@ namespace TestOutput
#line hidden #line hidden
WriteLiteral("anything"); WriteLiteral("anything");
#line 18 "ComplexTagHelpers.cshtml"
#line default
#line hidden
#line 18 "ComplexTagHelpers.cshtml" #line 18 "ComplexTagHelpers.cshtml"
} }

View File

@ -44,12 +44,6 @@ WriteTo(__razor_attribute_value_writer, link);
Instrumentation.BeginContext(84, 1, true); Instrumentation.BeginContext(84, 1, true);
WriteLiteralTo(__razor_attribute_value_writer, "#"); WriteLiteralTo(__razor_attribute_value_writer, "#");
Instrumentation.EndContext(); Instrumentation.EndContext();
#line 2 "InlineBlocks.cshtml"
#line default
#line hidden
#line 2 "InlineBlocks.cshtml" #line 2 "InlineBlocks.cshtml"
} }