parent
80ebb4a068
commit
d0bf6bf841
|
|
@ -252,7 +252,30 @@ namespace Microsoft.AspNetCore.Razor.Parser
|
|||
if (CurrentSymbol.Type == HtmlSymbolType.DoubleHyphen)
|
||||
{
|
||||
AcceptAndMoveNext();
|
||||
return AcceptUntilAll(HtmlSymbolType.DoubleHyphen, HtmlSymbolType.CloseAngle);
|
||||
|
||||
Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any;
|
||||
while (!EndOfFile)
|
||||
{
|
||||
SkipToAndParseCode(HtmlSymbolType.DoubleHyphen);
|
||||
if (At(HtmlSymbolType.DoubleHyphen))
|
||||
{
|
||||
AcceptWhile(HtmlSymbolType.DoubleHyphen);
|
||||
|
||||
if (At(HtmlSymbolType.Text) &&
|
||||
string.Equals(CurrentSymbol.Content, "-", StringComparison.Ordinal))
|
||||
{
|
||||
AcceptAndMoveNext();
|
||||
}
|
||||
|
||||
if (At(HtmlSymbolType.CloseAngle))
|
||||
{
|
||||
AcceptAndMoveNext();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (CurrentSymbol.Type == HtmlSymbolType.LeftBracket)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Razor.Parser;
|
|||
using Microsoft.AspNetCore.Razor.Parser.SyntaxTree;
|
||||
using Microsoft.AspNetCore.Razor.Test.Framework;
|
||||
using Microsoft.AspNetCore.Razor.Text;
|
||||
using Microsoft.AspNetCore.Razor.Tokenizer;
|
||||
using Microsoft.AspNetCore.Razor.Tokenizer.Symbols;
|
||||
using Xunit;
|
||||
|
||||
|
|
@ -356,6 +357,66 @@ namespace Microsoft.AspNetCore.Razor.Test.Parser.Html
|
|||
Factory.Markup("</foo>").Accepts(AcceptedCharacters.None))));
|
||||
}
|
||||
|
||||
public static TheoryData HtmlCommentSupportsMultipleDashesData
|
||||
{
|
||||
get
|
||||
{
|
||||
var factory = new SpanFactory
|
||||
{
|
||||
MarkupTokenizerFactory = doc => new HtmlTokenizer(doc),
|
||||
CodeTokenizerFactory = doc => new CSharpTokenizer(doc)
|
||||
};
|
||||
|
||||
return new TheoryData<string, MarkupBlock>
|
||||
{
|
||||
{
|
||||
"<div><!--- Hello World ---></div>",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
factory.Markup("<div>").Accepts(AcceptedCharacters.None)),
|
||||
factory.Markup("<!--- Hello World --->").Accepts(AcceptedCharacters.None),
|
||||
new MarkupTagBlock(
|
||||
factory.Markup("</div>").Accepts(AcceptedCharacters.None)))
|
||||
},
|
||||
{
|
||||
"<div><!---- Hello World ----></div>",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
factory.Markup("<div>").Accepts(AcceptedCharacters.None)),
|
||||
factory.Markup("<!---- Hello World ---->").Accepts(AcceptedCharacters.None),
|
||||
new MarkupTagBlock(
|
||||
factory.Markup("</div>").Accepts(AcceptedCharacters.None)))
|
||||
},
|
||||
{
|
||||
"<div><!----- Hello World -----></div>",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
factory.Markup("<div>").Accepts(AcceptedCharacters.None)),
|
||||
factory.Markup("<!----- Hello World ----->").Accepts(AcceptedCharacters.None),
|
||||
new MarkupTagBlock(
|
||||
factory.Markup("</div>").Accepts(AcceptedCharacters.None)))
|
||||
},
|
||||
{
|
||||
"<div><!----- Hello < --- > World </div> -----></div>",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
factory.Markup("<div>").Accepts(AcceptedCharacters.None)),
|
||||
factory.Markup("<!----- Hello < --- > World </div> ----->").Accepts(AcceptedCharacters.None),
|
||||
new MarkupTagBlock(
|
||||
factory.Markup("</div>").Accepts(AcceptedCharacters.None)))
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(HtmlCommentSupportsMultipleDashesData))]
|
||||
public void HtmlCommentSupportsMultipleDashes(string documentContent, MarkupBlock expectedOutput)
|
||||
{
|
||||
ParseBlockTest(documentContent, expectedOutput);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void ParseBlockProperlyBalancesCommentStartAndEndTags()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue