Fix: Newline at the end of text tag in code block is rendered as markup

This commit is contained in:
Ajay Bhargav Baaskaran 2016-04-26 12:33:33 -07:00
parent 68e2727859
commit b520c9c15e
4 changed files with 27 additions and 9 deletions

View File

@ -1118,7 +1118,9 @@ namespace Microsoft.AspNetCore.Razor.Parser
} }
} }
if (!EndOfFile && CurrentSymbol.Type == HtmlSymbolType.NewLine) if (!EndOfFile &&
At(HtmlSymbolType.NewLine) &&
Context.LastSpan.Kind != SpanKind.Transition)
{ {
AcceptAndMoveNext(); AcceptAndMoveNext();
} }

View File

@ -685,10 +685,8 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.CSharp
Factory.Code("p").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace) Factory.Code("p").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)
), ),
new MarkupTagBlock( new MarkupTagBlock(
Factory.MarkupTransition("</text>").Accepts(AcceptedCharacters.None)), Factory.MarkupTransition("</text>").Accepts(AcceptedCharacters.None))),
Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) Factory.Code($"{Environment.NewLine} }}{Environment.NewLine} if(!false) {{{Environment.NewLine}").AsStatement(),
),
Factory.Code($" }}{Environment.NewLine} if(!false) {{{Environment.NewLine}").AsStatement(),
new MarkupBlock( new MarkupBlock(
Factory.Markup(" "), Factory.Markup(" "),
new MarkupTagBlock( new MarkupTagBlock(

View File

@ -320,6 +320,26 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.Html
BlockFactory.MarkupTagBlock("<html>"))); BlockFactory.MarkupTagBlock("<html>")));
} }
[Fact]
public void ParseDocumentDoesNotRenderExtraNewlineAtTheEndTextTagInVerbatimBlock()
{
ParseDocumentTest("@{<text>Blah</text>\r\n\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.Code("\r\n\r\n").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharacters.None)),
BlockFactory.MarkupTagBlock("<html>")));
}
[Fact] [Fact]
public void ParseDocumentDoesNotIgnoreNewLineAtTheEndOfMarkupBlock() public void ParseDocumentDoesNotIgnoreNewLineAtTheEndOfMarkupBlock()
{ {

View File

@ -49,10 +49,8 @@ namespace TestOutput
#line default #line default
#line hidden #line hidden
Instrumentation.EndContext(); Instrumentation.EndContext();
Instrumentation.BeginContext(80, 2, true); #line 3 "CodeBlockWithTextElement.cshtml"
WriteLiteral("\r\n");
Instrumentation.EndContext();
#line 4 "CodeBlockWithTextElement.cshtml"
#line default #line default
#line hidden #line hidden