Convert HtmlDocumentTest

This commit is contained in:
Ajay Bhargav Baaskaran 2018-06-27 15:37:38 -07:00
parent 67b5588185
commit 8eef4a4bb3
42 changed files with 1215 additions and 614 deletions

View File

@ -12,92 +12,45 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
private static readonly TestFile Nested1000 = TestFile.Create("TestFiles/nested-1000.html", typeof(HtmlDocumentTest));
public HtmlDocumentTest()
{
UseBaselineTests = true;
}
[Fact]
public void ParseDocument_NestedCodeBlockWithMarkupSetsDotAsMarkup()
{
ParseDocumentTest("@if (true) { @if(false) { <div>@something.</div> } }",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code("if (true) { ").AsStatement(),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code("if(false) {").AsStatement(),
new MarkupBlock(
Factory.Markup(" "),
BlockFactory.MarkupTagBlock("<div>", AcceptedCharactersInternal.None),
Factory.EmptyHtml(),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("something")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup("."),
BlockFactory.MarkupTagBlock("</div>", AcceptedCharactersInternal.None),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
Factory.Code("}").AsStatement()),
Factory.Code(" }").AsStatement())));
ParseDocumentTest("@if (true) { @if(false) { <div>@something.</div> } }");
}
[Fact]
public void ParseDocumentOutputsEmptyBlockWithEmptyMarkupSpanIfContentIsEmptyString()
{
ParseDocumentTest(string.Empty, new MarkupBlock(Factory.EmptyHtml()));
ParseDocumentTest(string.Empty);
}
[Fact]
public void ParseDocumentOutputsWhitespaceOnlyContentAsSingleWhitespaceMarkupSpan()
{
SingleSpanDocumentTest(" ", BlockKindInternal.Markup, SpanKindInternal.Markup);
ParseDocumentTest(" ");
}
[Fact]
public void ParseDocumentAcceptsSwapTokenAtEndOfFileAndOutputsZeroLengthCodeSpan()
{
ParseDocumentTest("@",
new MarkupBlock(
Factory.EmptyHtml(),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.EmptyHtml()),
RazorDiagnosticFactory.CreateParsing_UnexpectedEndOfFileAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1)));
ParseDocumentTest("@");
}
[Fact]
public void ParseDocumentCorrectlyHandlesOddlySpacedHTMLElements()
{
ParseDocumentTest("<div ><p class = 'bar'> Foo </p></div >",
new MarkupBlock(
BlockFactory.MarkupTagBlock("<div >"),
new MarkupTagBlock(
Factory.Markup("<p"),
new MarkupBlock(new AttributeBlockChunkGenerator(name: "class", prefix: new LocationTagged<string>(" class = '", 8, 0, 8), suffix: new LocationTagged<string>("'", 21, 0, 21)),
Factory.Markup(" class = '").With(SpanChunkGenerator.Null),
Factory.Markup("bar").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged<string>(string.Empty, 18, 0, 18), value: new LocationTagged<string>("bar", 18, 0, 18))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(">")),
Factory.Markup(" Foo "),
BlockFactory.MarkupTagBlock("</p>"),
BlockFactory.MarkupTagBlock("</div >")));
ParseDocumentTest("<div ><p class = 'bar'> Foo </p></div >");
}
[Fact]
public void ParseDocumentCorrectlyHandlesSingleLineOfMarkupWithEmbeddedStatement()
{
ParseDocumentTest("<div>Foo @if(true) {} Bar</div>",
new MarkupBlock(
BlockFactory.MarkupTagBlock("<div>"),
Factory.Markup("Foo "),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code("if(true) {}").AsStatement()),
Factory.Markup(" Bar"),
BlockFactory.MarkupTagBlock("</div>")));
ParseDocumentTest("<div>Foo @if(true) {} Bar</div>");
}
[Fact]
@ -106,367 +59,139 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ParseDocumentTest("@section Foo {" + Environment.NewLine
+ " <html></html>" + Environment.NewLine
+ "}",
new[] { SectionDirective.Directive, },
new MarkupBlock(
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(Environment.NewLine + " "),
BlockFactory.MarkupTagBlock("<html>"),
BlockFactory.MarkupTagBlock("</html>"),
Factory.Markup(Environment.NewLine)),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
new[] { SectionDirective.Directive, });
}
[Fact]
public void ParseDocumentParsesWholeContentAsOneSpanIfNoSwapCharacterEncountered()
{
SingleSpanDocumentTest("foo baz", BlockKindInternal.Markup, SpanKindInternal.Markup);
ParseDocumentTest("foo baz");
}
[Fact]
public void ParseDocumentHandsParsingOverToCodeParserWhenAtSignEncounteredAndEmitsOutput()
{
ParseDocumentTest("foo @bar baz",
new MarkupBlock(
Factory.Markup("foo "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup(" baz")));
ParseDocumentTest("foo @bar baz");
}
[Fact]
public void ParseDocumentEmitsAtSignAsMarkupIfAtEndOfFile()
{
ParseDocumentTest("foo @",
new MarkupBlock(
Factory.Markup("foo "),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.EmptyHtml()),
RazorDiagnosticFactory.CreateParsing_UnexpectedEndOfFileAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(5, 0, 5), contentLength: 1)));
ParseDocumentTest("foo @");
}
[Fact]
public void ParseDocumentEmitsCodeBlockIfFirstCharacterIsSwapCharacter()
{
ParseDocumentTest("@bar",
new MarkupBlock(
Factory.EmptyHtml(),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("bar")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.EmptyHtml()));
ParseDocumentTest("@bar");
}
[Fact]
public void ParseDocumentDoesNotSwitchToCodeOnEmailAddressInText()
{
SingleSpanDocumentTest("anurse@microsoft.com", BlockKindInternal.Markup, SpanKindInternal.Markup);
ParseDocument("example@microsoft.com");
}
[Fact]
public void ParseDocumentDoesNotSwitchToCodeOnEmailAddressInAttribute()
{
ParseDocumentTest("<a href=\"mailto:anurse@microsoft.com\">Email me</a>",
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<a"),
new MarkupBlock(new AttributeBlockChunkGenerator("href", new LocationTagged<string>(" href=\"", 2, 0, 2), new LocationTagged<string>("\"", 36, 0, 36)),
Factory.Markup(" href=\"").With(SpanChunkGenerator.Null),
Factory.Markup("mailto:anurse@microsoft.com")
.With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 9, 0, 9), new LocationTagged<string>("mailto:anurse@microsoft.com", 9, 0, 9))),
Factory.Markup("\"").With(SpanChunkGenerator.Null)),
Factory.Markup(">")),
Factory.Markup("Email me"),
BlockFactory.MarkupTagBlock("</a>")));
ParseDocumentTest("<a href=\"mailto:example@microsoft.com\">Email me</a>");
}
[Fact]
public void ParseDocumentDoesNotReturnErrorOnMismatchedTags()
{
ParseDocumentTest("Foo <div><p></p></p> Baz",
new MarkupBlock(
Factory.Markup("Foo "),
BlockFactory.MarkupTagBlock("<div>"),
BlockFactory.MarkupTagBlock("<p>"),
BlockFactory.MarkupTagBlock("</p>"),
BlockFactory.MarkupTagBlock("</p>"),
Factory.Markup(" Baz")));
ParseDocumentTest("Foo <div><p></p></p> Baz");
}
[Fact]
public void ParseDocumentReturnsOneMarkupSegmentIfNoCodeBlocksEncountered()
{
ParseDocumentTest("Foo Baz<!--Foo-->Bar<!--F> Qux",
new MarkupBlock(
Factory.Markup("Foo Baz"),
BlockFactory.HtmlCommentBlock("Foo"),
Factory.Markup("Bar"),
Factory.Markup("<!--F> Qux")));
ParseDocumentTest("Foo Baz<!--Foo-->Bar<!--F> Qux");
}
[Fact]
public void ParseDocumentRendersTextPseudoTagAsMarkup()
{
ParseDocumentTest("Foo <text>Foo</text>",
new MarkupBlock(
Factory.Markup("Foo "),
BlockFactory.MarkupTagBlock("<text>"),
Factory.Markup("Foo"),
BlockFactory.MarkupTagBlock("</text>")));
ParseDocumentTest("Foo <text>Foo</text>");
}
[Fact]
public void ParseDocumentAcceptsEndTagWithNoMatchingStartTag()
{
ParseDocumentTest("Foo </div> Bar",
new MarkupBlock(
Factory.Markup("Foo "),
BlockFactory.MarkupTagBlock("</div>"),
Factory.Markup(" Bar")));
ParseDocumentTest("Foo </div> Bar");
}
[Fact]
public void ParseDocumentNoLongerSupportsDollarOpenBraceCombination()
{
ParseDocumentTest("<foo>${bar}</foo>",
new MarkupBlock(
BlockFactory.MarkupTagBlock("<foo>"),
Factory.Markup("${bar}"),
BlockFactory.MarkupTagBlock("</foo>")));
ParseDocumentTest("<foo>${bar}</foo>");
}
[Fact]
public void ParseDocumentIgnoresTagsInContentsOfScriptTag()
{
ParseDocumentTest(@"<script>foo<bar baz='@boz'></script>",
new MarkupBlock(
BlockFactory.MarkupTagBlock("<script>"),
Factory.Markup("foo<bar baz='"),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("boz")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup("'>"),
BlockFactory.MarkupTagBlock("</script>")));
ParseDocumentTest(@"<script>foo<bar baz='@boz'></script>");
}
[Fact]
public void ParseDocumentDoesNotRenderExtraNewLineAtTheEndOfVerbatimBlock()
{
ParseDocumentTest("@{\r\n}\r\n<html>",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("\r\n").With(SpanChunkGenerator.Null),
BlockFactory.MarkupTagBlock("<html>")));
ParseDocumentTest("@{\r\n}\r\n<html>");
}
[Fact]
public void ParseDocumentDoesNotRenderExtraWhitespaceAndNewLineAtTheEndOfVerbatimBlock()
{
ParseDocumentTest("@{\r\n} \t\r\n<html>",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" \t\r\n").With(SpanChunkGenerator.Null),
BlockFactory.MarkupTagBlock("<html>")));
ParseDocumentTest("@{\r\n} \t\r\n<html>");
}
[Fact]
public void ParseDocumentDoesNotRenderExtraNewlineAtTheEndTextTagInVerbatimBlockIfFollowedByCSharp()
{
ParseDocumentTest("@{<text>Blah</text>\r\n\r\n}<html>",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
Factory.Markup("Blah").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>"))),
Factory.Code("\r\n\r\n").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
BlockFactory.MarkupTagBlock("<html>")));
ParseDocumentTest("@{<text>Blah</text>\r\n\r\n}<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(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
Factory.Markup("Blah").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>")),
Factory.Markup("\r\n").Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<input/>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("\r\n").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
BlockFactory.MarkupTagBlock("<html>")));
ParseDocumentTest("@{<text>Blah</text>\r\n<input/>\r\n}<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(AcceptedCharactersInternal.None),
new MarkupBlock(
new MarkupTagBlock(
Factory.MarkupTransition("<text>")),
Factory.Markup("Blah").Accepts(AcceptedCharactersInternal.None),
new MarkupTagBlock(
Factory.MarkupTransition("</text>")),
Factory.Markup("\r\n").Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
Factory.MarkupTransition(),
Factory.MetaMarkup(":", HtmlSymbolType.Colon),
Factory.Markup(" Bleh\r\n")
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString))
.Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
BlockFactory.MarkupTagBlock("<html>")));
ParseDocumentTest("@{<text>Blah</text>\r\n@: Bleh\r\n}<html>");
}
[Fact]
public void ParseDocumentDoesNotIgnoreNewLineAtTheEndOfMarkupBlock()
{
ParseDocumentTest("@{\r\n}\r\n<html>\r\n",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("\r\n").With(SpanChunkGenerator.Null),
BlockFactory.MarkupTagBlock("<html>"),
Factory.Markup("\r\n")));
ParseDocumentTest("@{\r\n}\r\n<html>\r\n");
}
[Fact]
public void ParseDocumentDoesNotIgnoreWhitespaceAtTheEndOfVerbatimBlockIfNoNewlinePresent()
{
ParseDocumentTest("@{\r\n} \t<html>\r\n",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" \t"),
BlockFactory.MarkupTagBlock("<html>"),
Factory.Markup("\r\n")));
ParseDocumentTest("@{\r\n} \t<html>\r\n");
}
[Fact]
public void ParseDocumentHandlesNewLineInNestedBlock()
{
ParseDocumentTest("@{\r\n@if(true){\r\n} \r\n}\r\n<html>",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code("if(true){\r\n}").AsStatement()),
Factory.Code(" \r\n").AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup("\r\n").With(SpanChunkGenerator.Null),
BlockFactory.MarkupTagBlock("<html>")));
ParseDocumentTest("@{\r\n@if(true){\r\n} \r\n}\r\n<html>");
}
[Fact]
public void ParseDocumentHandlesNewLineAndMarkupInNestedBlock()
{
ParseDocumentTest("@{\r\n@if(true){\r\n} <input> }",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code("if(true){\r\n}").AsStatement()),
new MarkupBlock(
Factory.Markup(" "),
new MarkupTagBlock(
Factory.Markup("<input>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
ParseDocumentTest("@{\r\n@if(true){\r\n} <input> }");
}
[Fact]
public void ParseDocumentHandlesExtraNewLineBeforeMarkupInNestedBlock()
{
ParseDocumentTest("@{\r\n@if(true){\r\n} \r\n<input> \r\n}<html>",
new MarkupBlock(
Factory.EmptyHtml(),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code("\r\n").AsStatement().AutoCompleteWith(null, false),
new StatementBlock(
Factory.CodeTransition(),
Factory.Code("if(true){\r\n}").AsStatement()),
Factory.Code(" \r\n").AsStatement(),
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<input>").Accepts(AcceptedCharactersInternal.None)),
Factory.Markup(" \r\n").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
new MarkupTagBlock(
Factory.Markup("<html>"))));
ParseDocumentTest("@{\r\n@if(true){\r\n} \r\n<input> \r\n}<html>");
}
[Fact]
@ -474,330 +199,71 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
ParseDocumentTest(
@"@section Foo { <script>foo<bar baz='@boz'></script> }",
new[] { SectionDirective.Directive, },
new MarkupBlock(
Factory.EmptyHtml(),
new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive),
Factory.CodeTransition(),
Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None),
Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace),
Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]),
Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace),
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None),
new MarkupBlock(
Factory.Markup(" "),
BlockFactory.MarkupTagBlock("<script>"),
Factory.Markup("foo<bar baz='"),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.Code("boz")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.Markup("'>"),
BlockFactory.MarkupTagBlock("</script>"),
Factory.Markup(" ")),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.EmptyHtml()));
new[] { SectionDirective.Directive, });
}
[Fact]
public void ParseBlockCanParse1000NestedElements()
{
var content = Nested1000.ReadAllText();
// Assert - does not throw
ParseDocument(content);
}
public static TheoryData BlockWithEscapedTransitionData
[Fact]
public void ParseDocument_WithDoubleTransitionInAttributeValue_DoesNotThrow()
{
get
{
var factory = new SpanFactory();
var datetimeBlock = new ExpressionBlock(
factory.CodeTransition(),
factory.Code("DateTime.Now")
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace));
return new TheoryData<string, Block>
{
{
// Double transition in attribute value
"<span foo='@@' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 13, 0, 13)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
// Double transition at the end of attribute value
"<span foo='abc@@' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 16, 0, 16)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
factory.Markup("abc").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("abc", 11, 0, 11))),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 14, 0, 14), new LocationTagged<string>("@", 14, 0, 14))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
// Double transition at the beginning of attribute value
"<span foo='@@def' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 16, 0, 16)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("def").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 13, 0, 13), new LocationTagged<string>("def", 13, 0, 13))),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
// Double transition in between attribute value
"<span foo='abc @@ def' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 21, 0, 21)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
factory.Markup("abc").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("abc", 11, 0, 11))),
new MarkupBlock(
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 14, 0, 14), new LocationTagged<string>("@", 15, 0, 15))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup(" def").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 17, 0, 17), new LocationTagged<string>("def", 18, 0, 18))),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
// Double transition with expression block
"<span foo='@@@DateTime.Now' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 26, 0, 26)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 13, 0, 13), 13, 0, 13),
factory.EmptyHtml().With(SpanChunkGenerator.Null),
datetimeBlock),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
"<span foo='@DateTime.Now @@' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 27, 0, 27)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), 11, 0, 11),
datetimeBlock),
new MarkupBlock(
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 24, 0, 24), new LocationTagged<string>("@", 25, 0, 25))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
"<span foo='@(2+3)@@@DateTime.Now' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 32, 0, 32)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), 11, 0, 11),
new ExpressionBlock(
factory.CodeTransition(),
factory.MetaCode("(").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None),
factory.Code("2+3").AsExpression(),
factory.MetaCode(")").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None))),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 17, 0, 17), new LocationTagged<string>("@", 17, 0, 17))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 19, 0, 19), 19, 0, 19),
factory.EmptyHtml().With(SpanChunkGenerator.Null),
datetimeBlock),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
"<span foo='@@@(2+3)' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 19, 0, 19)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 13, 0, 13), 13, 0, 13),
factory.EmptyHtml().With(SpanChunkGenerator.Null),
new ExpressionBlock(
factory.CodeTransition(),
factory.MetaCode("(").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None),
factory.Code("2+3").AsExpression(),
factory.MetaCode(")").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None))),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
"<span foo='@DateTime.Now@@' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 26, 0, 26)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), 11, 0, 11),
datetimeBlock),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 24, 0, 24), new LocationTagged<string>("@", 24, 0, 24))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
// Double transition with email in attribute value
"<span foo='abc@def.com @@' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 25, 0, 25)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
factory.Markup("abc@def.com").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("abc@def.com", 11, 0, 11))),
new MarkupBlock(
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 22, 0, 22), new LocationTagged<string>("@", 23, 0, 23))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
"<span foo='abc@@def.com @@' />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 26, 0, 26)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
factory.Markup("abc").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("abc", 11, 0, 11))),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 14, 0, 14), new LocationTagged<string>("@", 14, 0, 14))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("def.com").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 16, 0, 16), new LocationTagged<string>("def.com", 16, 0, 16))),
new MarkupBlock(
factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(" ", 23, 0, 23), new LocationTagged<string>("@", 24, 0, 24))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup("'").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
{
// Double transition before end of file
"<span foo='@@",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>(string.Empty, 13, 0, 13)),
factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)))),
factory.EmptyHtml())
},
{
// Double transition in complex regex in attribute value
@"<span foo=""/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@@[a-z0-9]([a-z0-9-]*[a-z0-9])?\.([a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i"" />",
new MarkupBlock(
new MarkupTagBlock(
factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo=\"", 5, 0, 5), new LocationTagged<string>("\"", 111, 0, 111)),
factory.Markup(" foo=\"").With(SpanChunkGenerator.Null),
factory.Markup(@"/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), new LocationTagged<string>(@"/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+", 11, 0, 11))),
new MarkupBlock(
factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 43, 0, 43), new LocationTagged<string>("@", 43, 0, 43))).Accepts(AcceptedCharactersInternal.None),
factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)),
factory.Markup(@"[a-z0-9]([a-z0-9-]*[a-z0-9])?\.([a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 45, 0, 45), new LocationTagged<string>(@"[a-z0-9]([a-z0-9-]*[a-z0-9])?\.([a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i", 45, 0, 45))),
factory.Markup("\"").With(SpanChunkGenerator.Null)),
factory.Markup(" />")))
},
};
}
var input = "{<span foo='@@' />}";
ParseDocumentTest(input);
}
[Theory]
[MemberData(nameof(BlockWithEscapedTransitionData))]
public void ParseBlock_WithDoubleTransition_DoesNotThrow(string input, object expected)
[Fact]
public void ParseDocument_WithDoubleTransitionAtEndOfAttributeValue_DoesNotThrow()
{
FixupSpans = true;
var input = "{<span foo='abc@@' />}";
ParseDocumentTest(input);
}
// Act & Assert
ParseDocumentTest(input, (Block)expected);
[Fact]
public void ParseDocument_WithDoubleTransitionAtBeginningOfAttributeValue_DoesNotThrow()
{
var input = "{<span foo='@@def' />}";
ParseDocumentTest(input);
}
[Fact]
public void ParseDocument_WithDoubleTransitionBetweenAttributeValue_DoesNotThrow()
{
var input = "{<span foo='abc @@ def' />}";
ParseDocumentTest(input);
}
[Fact]
public void ParseDocument_WithDoubleTransitionWithExpressionBlock_DoesNotThrow()
{
var input = "{<span foo='@@@(2+3)' bar='@(2+3)@@@DateTime.Now' baz='@DateTime.Now@@' bat='@DateTime.Now @@' zoo='@@@DateTime.Now' />}";
ParseDocumentTest(input);
}
[Fact]
public void ParseDocument_WithDoubleTransitionInEmail_DoesNotThrow()
{
var input = "{<span foo='abc@def.com abc@@def.com @@' />}";
ParseDocumentTest(input);
}
[Fact]
public void ParseDocument_WithDoubleTransitionInRegex_DoesNotThrow()
{
var input = @"{<span foo=""/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@@[a-z0-9]([a-z0-9-]*[a-z0-9])?\.([a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i"" />}";
ParseDocumentTest(input);
}
[Fact]
public void ParseDocument_WithUnexpectedTransitionsInAttributeValue_Throws()
{
// Arrange
var expected = new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<span"),
new MarkupBlock(
new AttributeBlockChunkGenerator("foo", new LocationTagged<string>(" foo='", 5, 0, 5), new LocationTagged<string>("'", 14, 0, 14)),
Factory.Markup(" foo='").With(SpanChunkGenerator.Null),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(string.Empty, 11, 0, 11), 11, 0, 11),
new ExpressionBlock(
Factory.CodeTransition(),
Factory.EmptyCSharp().AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
new MarkupBlock(
new DynamicAttributeBlockChunkGenerator(new LocationTagged<string>(" ", 12, 0, 12), 12, 0, 12),
Factory.Markup(" ").With(SpanChunkGenerator.Null),
new ExpressionBlock(
Factory.CodeTransition().Accepts(AcceptedCharactersInternal.None).With(SpanChunkGenerator.Null),
Factory.EmptyCSharp().AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace))),
Factory.Markup("'").With(SpanChunkGenerator.Null)),
Factory.Markup(" />")));
var expectedErrors = new RazorDiagnostic[]
{
RazorDiagnosticFactory.CreateParsing_UnexpectedWhiteSpaceAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(12, 0, 12), contentLength: 1)),
RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(14, 0, 14), contentLength: 4),
"' />"),
};
// Act & Assert
ParseDocumentTest("<span foo='@ @' />", expected, expectedErrors);
ParseDocumentTest("<span foo='@ @' />");
}
}
}

View File

@ -0,0 +1,13 @@
Markup block - Gen<None> - 14 - (0:0,0)
Markup span - Gen<Markup> - [Foo ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:2
HtmlSymbolType.Text;[Foo];
HtmlSymbolType.WhiteSpace;[ ];
Tag block - Gen<None> - 6 - (4:0,4)
Markup span - Gen<Markup> - [</div>] - SpanEditHandler;Accepts:Any - (4:0,4) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[div];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [ Bar] - SpanEditHandler;Accepts:Any - (10:0,10) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[Bar];

View File

@ -0,0 +1 @@
(1,2): Error RZ1004: End-of-file was found after the "@" character. "@" must be followed by a valid code block. If you want to output an "@", escape it using the sequence: "@@"

View File

@ -0,0 +1,10 @@
Markup block - Gen<None> - 1 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Expression block - Gen<Expr> - 1 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (1:0,1) - Symbols:1
CSharpSymbolType.Unknown;[];
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:1
HtmlSymbolType.Unknown;[];

View File

@ -0,0 +1,42 @@
Markup block - Gen<None> - 39 - (0:0,0)
Tag block - Gen<None> - 6 - (0:0,0)
Markup span - Gen<Markup> - [<div >] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[div];
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.CloseAngle;[>];
Tag block - Gen<None> - 17 - (6:0,6)
Markup span - Gen<Markup> - [<p] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:2
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[p];
Markup block - Gen<Attr:class, class = '@(8:0,8),'@(21:0,21)> - 14 - (8:0,8)
Markup span - Gen<None> - [ class = '] - SpanEditHandler;Accepts:Any - (8:0,8) - Symbols:6
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[class];
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<LitAttr:@(18:0,18)> - [bar] - SpanEditHandler;Accepts:Any - (18:0,18) - Symbols:1
HtmlSymbolType.Text;[bar];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<Markup> - [>] - SpanEditHandler;Accepts:Any - (22:0,22) - Symbols:1
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [ Foo ] - SpanEditHandler;Accepts:Any - (23:0,23) - Symbols:3
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[Foo];
HtmlSymbolType.WhiteSpace;[ ];
Tag block - Gen<None> - 4 - (28:0,28)
Markup span - Gen<Markup> - [</p>] - SpanEditHandler;Accepts:Any - (28:0,28) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[p];
HtmlSymbolType.CloseAngle;[>];
Tag block - Gen<None> - 7 - (32:0,32)
Markup span - Gen<Markup> - [</div >] - SpanEditHandler;Accepts:Any - (32:0,32) - Symbols:5
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[div];
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,29 @@
Markup block - Gen<None> - 31 - (0:0,0)
Tag block - Gen<None> - 5 - (0:0,0)
Markup span - Gen<Markup> - [<div>] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[div];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [Foo ] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:2
HtmlSymbolType.Text;[Foo];
HtmlSymbolType.WhiteSpace;[ ];
Statement block - Gen<None> - 12 - (9:0,9)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (9:0,9) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Stmt> - [if(true) {}] - SpanEditHandler;Accepts:Any - (10:0,10) - Symbols:7
CSharpSymbolType.Keyword;[if];
CSharpSymbolType.LeftParenthesis;[(];
CSharpSymbolType.Keyword;[true];
CSharpSymbolType.RightParenthesis;[)];
CSharpSymbolType.WhiteSpace;[ ];
CSharpSymbolType.LeftBrace;[{];
CSharpSymbolType.RightBrace;[}];
Markup span - Gen<Markup> - [ Bar] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[Bar];
Tag block - Gen<None> - 6 - (25:0,25)
Markup span - Gen<Markup> - [</div>] - SpanEditHandler;Accepts:Any - (25:0,25) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[div];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,21 @@
Markup block - Gen<None> - 15 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 5 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Code span - Gen<Stmt> - [LF] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[<null>];AtEOL - (2:0,2) - Symbols:1
CSharpSymbolType.NewLine;[LF];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (4:1,0) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Markup span - Gen<None> - [LF] - SpanEditHandler;Accepts:Any - (5:1,1) - Symbols:1
HtmlSymbolType.NewLine;[LF];
Tag block - Gen<None> - 6 - (7:2,0)
Markup span - Gen<Markup> - [<html>] - SpanEditHandler;Accepts:Any - (7:2,0) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [LF] - SpanEditHandler;Accepts:Any - (13:2,6) - Symbols:1
HtmlSymbolType.NewLine;[LF];

View File

@ -0,0 +1,21 @@
Markup block - Gen<None> - 17 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 5 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Code span - Gen<Stmt> - [LF] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[<null>];AtEOL - (2:0,2) - Symbols:1
CSharpSymbolType.NewLine;[LF];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (4:1,0) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Markup span - Gen<Markup> - [ ] - SpanEditHandler;Accepts:Any - (5:1,1) - Symbols:1
HtmlSymbolType.WhiteSpace;[ ];
Tag block - Gen<None> - 6 - (9:1,5)
Markup span - Gen<Markup> - [<html>] - SpanEditHandler;Accepts:Any - (9:1,5) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [LF] - SpanEditHandler;Accepts:Any - (15:1,11) - Symbols:1
HtmlSymbolType.NewLine;[LF];

View File

@ -0,0 +1,19 @@
Markup block - Gen<None> - 13 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 5 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Code span - Gen<Stmt> - [LF] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[<null>];AtEOL - (2:0,2) - Symbols:1
CSharpSymbolType.NewLine;[LF];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (4:1,0) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Markup span - Gen<None> - [LF] - SpanEditHandler;Accepts:Any - (5:1,1) - Symbols:1
HtmlSymbolType.NewLine;[LF];
Tag block - Gen<None> - 6 - (7:2,0)
Markup span - Gen<Markup> - [<html>] - SpanEditHandler;Accepts:Any - (7:2,0) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,32 @@
Markup block - Gen<None> - 30 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 24 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Markup block - Gen<None> - 17 - (2:0,2)
Tag block - Gen<None> - 6 - (2:0,2)
Transition span - Gen<None> - [<text>] - SpanEditHandler;Accepts:None - (2:0,2) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[text];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [Blah] - SpanEditHandler;Accepts:None - (8:0,8) - Symbols:1
HtmlSymbolType.Text;[Blah];
Tag block - Gen<None> - 7 - (12:0,12)
Transition span - Gen<None> - [</text>] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[text];
HtmlSymbolType.CloseAngle;[>];
Code span - Gen<Stmt> - [LFLF] - SpanEditHandler;Accepts:Any - (19:0,19) - Symbols:2
CSharpSymbolType.NewLine;[LF];
CSharpSymbolType.NewLine;[LF];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (23:2,0) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Tag block - Gen<None> - 6 - (24:2,1)
Markup span - Gen<Markup> - [<html>] - SpanEditHandler;Accepts:Any - (24:2,1) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,20 @@
Markup block - Gen<None> - 15 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 5 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Code span - Gen<Stmt> - [LF] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[<null>];AtEOL - (2:0,2) - Symbols:1
CSharpSymbolType.NewLine;[LF];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (4:1,0) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Markup span - Gen<None> - [ LF] - SpanEditHandler;Accepts:Any - (5:1,1) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.NewLine;[LF];
Tag block - Gen<None> - 6 - (9:2,0)
Markup span - Gen<Markup> - [<html>] - SpanEditHandler;Accepts:Any - (9:2,0) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,29 @@
Markup block - Gen<None> - 24 - (0:0,0)
Markup span - Gen<Markup> - [Foo ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:2
HtmlSymbolType.Text;[Foo];
HtmlSymbolType.WhiteSpace;[ ];
Tag block - Gen<None> - 5 - (4:0,4)
Markup span - Gen<Markup> - [<div>] - SpanEditHandler;Accepts:Any - (4:0,4) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[div];
HtmlSymbolType.CloseAngle;[>];
Tag block - Gen<None> - 3 - (9:0,9)
Markup span - Gen<Markup> - [<p>] - SpanEditHandler;Accepts:Any - (9:0,9) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[p];
HtmlSymbolType.CloseAngle;[>];
Tag block - Gen<None> - 4 - (12:0,12)
Markup span - Gen<Markup> - [</p>] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[p];
HtmlSymbolType.CloseAngle;[>];
Tag block - Gen<None> - 4 - (16:0,16)
Markup span - Gen<Markup> - [</p>] - SpanEditHandler;Accepts:Any - (16:0,16) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[p];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [ Baz] - SpanEditHandler;Accepts:Any - (20:0,20) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[Baz];

View File

@ -0,0 +1,27 @@
Markup block - Gen<None> - 51 - (0:0,0)
Tag block - Gen<None> - 39 - (0:0,0)
Markup span - Gen<Markup> - [<a] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:2
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[a];
Markup block - Gen<Attr:href, href="@(2:0,2),"@(37:0,37)> - 36 - (2:0,2)
Markup span - Gen<None> - [ href="] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[href];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.DoubleQuote;["];
Markup span - Gen<LitAttr:@(9:0,9)> - [mailto:example@microsoft.com] - SpanEditHandler;Accepts:Any - (9:0,9) - Symbols:1
HtmlSymbolType.Text;[mailto:example@microsoft.com];
Markup span - Gen<None> - ["] - SpanEditHandler;Accepts:Any - (37:0,37) - Symbols:1
HtmlSymbolType.DoubleQuote;["];
Markup span - Gen<Markup> - [>] - SpanEditHandler;Accepts:Any - (38:0,38) - Symbols:1
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [Email me] - SpanEditHandler;Accepts:Any - (39:0,39) - Symbols:3
HtmlSymbolType.Text;[Email];
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[me];
Tag block - Gen<None> - 4 - (47:0,47)
Markup span - Gen<Markup> - [</a>] - SpanEditHandler;Accepts:Any - (47:0,47) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[a];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,3 @@
Markup block - Gen<None> - 20 - (0:0,0)
Markup span - Gen<Markup> - [anurse@microsoft.com] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Text;[anurse@microsoft.com];

View File

@ -0,0 +1 @@
(1,6): Error RZ1004: End-of-file was found after the "@" character. "@" must be followed by a valid code block. If you want to output an "@", escape it using the sequence: "@@"

View File

@ -0,0 +1,11 @@
Markup block - Gen<None> - 5 - (0:0,0)
Markup span - Gen<Markup> - [foo ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:2
HtmlSymbolType.Text;[foo];
HtmlSymbolType.WhiteSpace;[ ];
Expression block - Gen<Expr> - 1 - (4:0,4)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (4:0,4) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (5:0,5) - Symbols:1
CSharpSymbolType.Unknown;[];
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:1
HtmlSymbolType.Unknown;[];

View File

@ -0,0 +1,10 @@
Markup block - Gen<None> - 4 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Expression block - Gen<Expr> - 4 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (1:0,1) - Symbols:1
CSharpSymbolType.Identifier;[bar];
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (4:0,4) - Symbols:1
HtmlSymbolType.Unknown;[];

View File

@ -0,0 +1,42 @@
Markup block - Gen<None> - 37 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 31 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Code span - Gen<Stmt> - [LF] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[<null>];AtEOL - (2:0,2) - Symbols:1
CSharpSymbolType.NewLine;[LF];
Statement block - Gen<None> - 13 - (4:1,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (4:1,0) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Stmt> - [if(true){LF}] - SpanEditHandler;Accepts:Any - (5:1,1) - Symbols:7
CSharpSymbolType.Keyword;[if];
CSharpSymbolType.LeftParenthesis;[(];
CSharpSymbolType.Keyword;[true];
CSharpSymbolType.RightParenthesis;[)];
CSharpSymbolType.LeftBrace;[{];
CSharpSymbolType.NewLine;[LF];
CSharpSymbolType.RightBrace;[}];
Code span - Gen<Stmt> - [ LF] - SpanEditHandler;Accepts:Any - (17:2,1) - Symbols:2
CSharpSymbolType.WhiteSpace;[ ];
CSharpSymbolType.NewLine;[LF];
Markup block - Gen<None> - 10 - (20:3,0)
Tag block - Gen<None> - 7 - (20:3,0)
Markup span - Gen<Markup> - [<input>] - SpanEditHandler;Accepts:None - (20:3,0) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[input];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [ LF] - SpanEditHandler;Accepts:None - (27:3,7) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.NewLine;[LF];
Code span - Gen<Stmt> - [] - SpanEditHandler;Accepts:Any - (30:4,0) - Symbols:1
CSharpSymbolType.Unknown;[];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (30:4,0) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Tag block - Gen<None> - 6 - (31:4,1)
Markup span - Gen<Markup> - [<html>] - SpanEditHandler;Accepts:Any - (31:4,1) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,37 @@
Markup block - Gen<None> - 27 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 27 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Code span - Gen<Stmt> - [LF] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[<null>];AtEOL - (2:0,2) - Symbols:1
CSharpSymbolType.NewLine;[LF];
Statement block - Gen<None> - 13 - (4:1,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (4:1,0) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Stmt> - [if(true){LF}] - SpanEditHandler;Accepts:Any - (5:1,1) - Symbols:7
CSharpSymbolType.Keyword;[if];
CSharpSymbolType.LeftParenthesis;[(];
CSharpSymbolType.Keyword;[true];
CSharpSymbolType.RightParenthesis;[)];
CSharpSymbolType.LeftBrace;[{];
CSharpSymbolType.NewLine;[LF];
CSharpSymbolType.RightBrace;[}];
Markup block - Gen<None> - 9 - (17:2,1)
Markup span - Gen<Markup> - [ ] - SpanEditHandler;Accepts:Any - (17:2,1) - Symbols:1
HtmlSymbolType.WhiteSpace;[ ];
Tag block - Gen<None> - 7 - (18:2,2)
Markup span - Gen<Markup> - [<input>] - SpanEditHandler;Accepts:None - (18:2,2) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[input];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [ ] - SpanEditHandler;Accepts:None - (25:2,9) - Symbols:1
HtmlSymbolType.WhiteSpace;[ ];
Code span - Gen<Stmt> - [] - SpanEditHandler;Accepts:Any - (26:2,10) - Symbols:1
CSharpSymbolType.Unknown;[];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (26:2,10) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (27:2,11) - Symbols:1
HtmlSymbolType.Unknown;[];

View File

@ -0,0 +1,33 @@
Markup block - Gen<None> - 29 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 21 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Code span - Gen<Stmt> - [LF] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[<null>];AtEOL - (2:0,2) - Symbols:1
CSharpSymbolType.NewLine;[LF];
Statement block - Gen<None> - 13 - (4:1,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (4:1,0) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Stmt> - [if(true){LF}] - SpanEditHandler;Accepts:Any - (5:1,1) - Symbols:7
CSharpSymbolType.Keyword;[if];
CSharpSymbolType.LeftParenthesis;[(];
CSharpSymbolType.Keyword;[true];
CSharpSymbolType.RightParenthesis;[)];
CSharpSymbolType.LeftBrace;[{];
CSharpSymbolType.NewLine;[LF];
CSharpSymbolType.RightBrace;[}];
Code span - Gen<Stmt> - [ LF] - SpanEditHandler;Accepts:Any - (17:2,1) - Symbols:2
CSharpSymbolType.WhiteSpace;[ ];
CSharpSymbolType.NewLine;[LF];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (20:3,0) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Markup span - Gen<None> - [LF] - SpanEditHandler;Accepts:Any - (21:3,1) - Symbols:1
HtmlSymbolType.NewLine;[LF];
Tag block - Gen<None> - 6 - (23:4,0)
Markup span - Gen<Markup> - [<html>] - SpanEditHandler;Accepts:Any - (23:4,0) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,12 @@
Markup block - Gen<None> - 12 - (0:0,0)
Markup span - Gen<Markup> - [foo ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:2
HtmlSymbolType.Text;[foo];
HtmlSymbolType.WhiteSpace;[ ];
Expression block - Gen<Expr> - 4 - (4:0,4)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (4:0,4) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (5:0,5) - Symbols:1
CSharpSymbolType.Identifier;[bar];
Markup span - Gen<Markup> - [ baz] - SpanEditHandler;Accepts:Any - (8:0,8) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[baz];

View File

@ -0,0 +1,28 @@
Markup block - Gen<None> - 36 - (0:0,0)
Tag block - Gen<None> - 8 - (0:0,0)
Markup span - Gen<Markup> - [<script>] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[script];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [foo<bar baz='] - SpanEditHandler;Accepts:Any - (8:0,8) - Symbols:7
HtmlSymbolType.Text;[foo];
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[bar];
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[baz];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Expression block - Gen<Expr> - 4 - (21:0,21)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (21:0,21) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [boz] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (22:0,22) - Symbols:1
CSharpSymbolType.Identifier;[boz];
Markup span - Gen<Markup> - ['>] - SpanEditHandler;Accepts:Any - (25:0,25) - Symbols:2
HtmlSymbolType.SingleQuote;['];
HtmlSymbolType.CloseAngle;[>];
Tag block - Gen<None> - 9 - (27:0,27)
Markup span - Gen<Markup> - [</script>] - SpanEditHandler;Accepts:Any - (27:0,27) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[script];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,14 @@
Markup block - Gen<None> - 17 - (0:0,0)
Tag block - Gen<None> - 5 - (0:0,0)
Markup span - Gen<Markup> - [<foo>] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[foo];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [${bar}] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:1
HtmlSymbolType.Text;[${bar}];
Tag block - Gen<None> - 6 - (11:0,11)
Markup span - Gen<Markup> - [</foo>] - SpanEditHandler;Accepts:Any - (11:0,11) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[foo];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,3 @@
Markup block - Gen<None> - 0 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];

View File

@ -0,0 +1,3 @@
Markup block - Gen<None> - 10 - (0:0,0)
Markup span - Gen<Markup> - [ ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.WhiteSpace;[ ];

View File

@ -0,0 +1,5 @@
Markup block - Gen<None> - 7 - (0:0,0)
Markup span - Gen<Markup> - [foo baz] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:3
HtmlSymbolType.Text;[foo];
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[baz];

View File

@ -0,0 +1,42 @@
Markup block - Gen<None> - 38 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 32 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Markup block - Gen<None> - 19 - (2:0,2)
Tag block - Gen<None> - 6 - (2:0,2)
Transition span - Gen<None> - [<text>] - SpanEditHandler;Accepts:None - (2:0,2) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[text];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [Blah] - SpanEditHandler;Accepts:None - (8:0,8) - Symbols:1
HtmlSymbolType.Text;[Blah];
Tag block - Gen<None> - 7 - (12:0,12)
Transition span - Gen<None> - [</text>] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[text];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [LF] - SpanEditHandler;Accepts:None - (19:0,19) - Symbols:1
HtmlSymbolType.NewLine;[LF];
Markup block - Gen<None> - 10 - (21:1,0)
Tag block - Gen<None> - 8 - (21:1,0)
Markup span - Gen<Markup> - [<input/>] - SpanEditHandler;Accepts:None - (21:1,0) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[input];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [LF] - SpanEditHandler;Accepts:None - (29:1,8) - Symbols:1
HtmlSymbolType.NewLine;[LF];
Code span - Gen<Stmt> - [] - SpanEditHandler;Accepts:Any - (31:2,0) - Symbols:1
CSharpSymbolType.Unknown;[];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (31:2,0) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Tag block - Gen<None> - 6 - (32:2,1)
Markup span - Gen<Markup> - [<html>] - SpanEditHandler;Accepts:Any - (32:2,1) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,42 @@
Markup block - Gen<None> - 37 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 31 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Markup block - Gen<None> - 19 - (2:0,2)
Tag block - Gen<None> - 6 - (2:0,2)
Transition span - Gen<None> - [<text>] - SpanEditHandler;Accepts:None - (2:0,2) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[text];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [Blah] - SpanEditHandler;Accepts:None - (8:0,8) - Symbols:1
HtmlSymbolType.Text;[Blah];
Tag block - Gen<None> - 7 - (12:0,12)
Transition span - Gen<None> - [</text>] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[text];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [LF] - SpanEditHandler;Accepts:None - (19:0,19) - Symbols:1
HtmlSymbolType.NewLine;[LF];
Markup block - Gen<None> - 9 - (21:1,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (21:1,0) - Symbols:1
HtmlSymbolType.Transition;[@];
MetaCode span - Gen<None> - [:] - SpanEditHandler;Accepts:Any - (22:1,1) - Symbols:1
HtmlSymbolType.Colon;[:];
Markup span - Gen<Markup> - [ BlehLF] - SpanEditHandler;Accepts:None - (23:1,2) - Symbols:3
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[Bleh];
HtmlSymbolType.NewLine;[LF];
Code span - Gen<Stmt> - [] - SpanEditHandler;Accepts:Any - (30:2,0) - Symbols:1
CSharpSymbolType.Unknown;[];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (30:2,0) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Tag block - Gen<None> - 6 - (31:2,1)
Markup span - Gen<Markup> - [<html>] - SpanEditHandler;Accepts:Any - (31:2,1) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,17 @@
Markup block - Gen<None> - 20 - (0:0,0)
Markup span - Gen<Markup> - [Foo ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:2
HtmlSymbolType.Text;[Foo];
HtmlSymbolType.WhiteSpace;[ ];
Tag block - Gen<None> - 6 - (4:0,4)
Markup span - Gen<Markup> - [<text>] - SpanEditHandler;Accepts:Any - (4:0,4) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[text];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [Foo] - SpanEditHandler;Accepts:Any - (10:0,10) - Symbols:1
HtmlSymbolType.Text;[Foo];
Tag block - Gen<None> - 7 - (13:0,13)
Markup span - Gen<Markup> - [</text>] - SpanEditHandler;Accepts:Any - (13:0,13) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[text];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,25 @@
Markup block - Gen<None> - 30 - (0:0,0)
Markup span - Gen<Markup> - [Foo Baz] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:3
HtmlSymbolType.Text;[Foo];
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[Baz];
HtmlComment block - Gen<None> - 10 - (7:0,7)
Markup span - Gen<Markup> - [<!--] - SpanEditHandler;Accepts:None - (7:0,7) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Bang;[!];
HtmlSymbolType.DoubleHyphen;[--];
Markup span - Gen<Markup> - [Foo] - SpanEditHandler;Accepts:WhiteSpace - (11:0,11) - Symbols:1
HtmlSymbolType.Text;[Foo];
Markup span - Gen<Markup> - [-->] - SpanEditHandler;Accepts:None - (14:0,14) - Symbols:2
HtmlSymbolType.DoubleHyphen;[--];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [Bar] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:1
HtmlSymbolType.Text;[Bar];
Markup span - Gen<Markup> - [<!--F> Qux] - SpanEditHandler;Accepts:Any - (20:0,20) - Symbols:7
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Bang;[!];
HtmlSymbolType.DoubleHyphen;[--];
HtmlSymbolType.Text;[F];
HtmlSymbolType.CloseAngle;[>];
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[Qux];

View File

@ -0,0 +1,37 @@
Markup block - Gen<None> - 36 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Directive block - Gen<Directive:{section;RazorBlock;Unrestricted}> - 36 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.Identifier;[section];
Code span - Gen<None> - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1
CSharpSymbolType.WhiteSpace;[ ];
Code span - Gen<DirectiveToken {SectionName;Member;Opt:False}> - [Foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1
CSharpSymbolType.Identifier;[Foo];
Markup span - Gen<None> - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1
CSharpSymbolType.WhiteSpace;[ ];
MetaCode span - Gen<None> - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[<null>];AtEnd - (13:0,13) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Markup block - Gen<None> - 21 - (14:0,14)
Markup span - Gen<Markup> - [LF ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:2
HtmlSymbolType.NewLine;[LF];
HtmlSymbolType.WhiteSpace;[ ];
Tag block - Gen<None> - 6 - (20:1,4)
Markup span - Gen<Markup> - [<html>] - SpanEditHandler;Accepts:Any - (20:1,4) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];
Tag block - Gen<None> - 7 - (26:1,10)
Markup span - Gen<Markup> - [</html>] - SpanEditHandler;Accepts:Any - (26:1,10) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[html];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [LF] - SpanEditHandler;Accepts:Any - (33:1,17) - Symbols:1
HtmlSymbolType.NewLine;[LF];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (35:2,0) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (36:2,1) - Symbols:1
HtmlSymbolType.Unknown;[];

View File

@ -0,0 +1,55 @@
Markup block - Gen<None> - 52 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Statement block - Gen<None> - 52 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Stmt> - [if (true) { ] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:8
CSharpSymbolType.Keyword;[if];
CSharpSymbolType.WhiteSpace;[ ];
CSharpSymbolType.LeftParenthesis;[(];
CSharpSymbolType.Keyword;[true];
CSharpSymbolType.RightParenthesis;[)];
CSharpSymbolType.WhiteSpace;[ ];
CSharpSymbolType.LeftBrace;[{];
CSharpSymbolType.WhiteSpace;[ ];
Statement block - Gen<None> - 37 - (13:0,13)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (13:0,13) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Stmt> - [if(false) {] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:6
CSharpSymbolType.Keyword;[if];
CSharpSymbolType.LeftParenthesis;[(];
CSharpSymbolType.Keyword;[false];
CSharpSymbolType.RightParenthesis;[)];
CSharpSymbolType.WhiteSpace;[ ];
CSharpSymbolType.LeftBrace;[{];
Markup block - Gen<None> - 24 - (25:0,25)
Markup span - Gen<Markup> - [ ] - SpanEditHandler;Accepts:Any - (25:0,25) - Symbols:1
HtmlSymbolType.WhiteSpace;[ ];
Tag block - Gen<None> - 5 - (26:0,26)
Markup span - Gen<Markup> - [<div>] - SpanEditHandler;Accepts:None - (26:0,26) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[div];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (31:0,31) - Symbols:1
HtmlSymbolType.Unknown;[];
Expression block - Gen<Expr> - 10 - (31:0,31)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (31:0,31) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [something] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (32:0,32) - Symbols:1
CSharpSymbolType.Identifier;[something];
Markup span - Gen<Markup> - [.] - SpanEditHandler;Accepts:Any - (41:0,41) - Symbols:1
HtmlSymbolType.Text;[.];
Tag block - Gen<None> - 6 - (42:0,42)
Markup span - Gen<Markup> - [</div>] - SpanEditHandler;Accepts:None - (42:0,42) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[div];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [ ] - SpanEditHandler;Accepts:None - (48:0,48) - Symbols:1
HtmlSymbolType.WhiteSpace;[ ];
Code span - Gen<Stmt> - [}] - SpanEditHandler;Accepts:Any - (49:0,49) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Code span - Gen<Stmt> - [ }] - SpanEditHandler;Accepts:Any - (50:0,50) - Symbols:2
CSharpSymbolType.WhiteSpace;[ ];
CSharpSymbolType.RightBrace;[}];

View File

@ -0,0 +1,28 @@
Markup block - Gen<None> - 22 - (0:0,0)
Markup span - Gen<Markup> - [{] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Text;[{];
Tag block - Gen<None> - 20 - (1:0,1)
Markup span - Gen<Markup> - [<span] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:2
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[span];
Markup block - Gen<Attr:foo, foo='@(6:0,6),'@(17:0,17)> - 12 - (6:0,6)
Markup span - Gen<None> - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[foo];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<None> - 2 - (12:0,12)
Markup span - Gen<LitAttr:@(12:0,12)> - [@] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (13:0,13) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<LitAttr:@(14:0,14)> - [def] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1
HtmlSymbolType.Text;[def];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<Markup> - [ />] - SpanEditHandler;Accepts:Any - (18:0,18) - Symbols:3
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [}] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:1
HtmlSymbolType.Text;[}];

View File

@ -0,0 +1,28 @@
Markup block - Gen<None> - 22 - (0:0,0)
Markup span - Gen<Markup> - [{] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Text;[{];
Tag block - Gen<None> - 20 - (1:0,1)
Markup span - Gen<Markup> - [<span] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:2
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[span];
Markup block - Gen<Attr:foo, foo='@(6:0,6),'@(17:0,17)> - 12 - (6:0,6)
Markup span - Gen<None> - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[foo];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<LitAttr:@(12:0,12)> - [abc] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:1
HtmlSymbolType.Text;[abc];
Markup block - Gen<None> - 2 - (15:0,15)
Markup span - Gen<LitAttr:@(15:0,15)> - [@] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (16:0,16) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<Markup> - [ />] - SpanEditHandler;Accepts:Any - (18:0,18) - Symbols:3
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [}] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:1
HtmlSymbolType.Text;[}];

View File

@ -0,0 +1,32 @@
Markup block - Gen<None> - 27 - (0:0,0)
Markup span - Gen<Markup> - [{] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Text;[{];
Tag block - Gen<None> - 25 - (1:0,1)
Markup span - Gen<Markup> - [<span] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:2
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[span];
Markup block - Gen<Attr:foo, foo='@(6:0,6),'@(22:0,22)> - 17 - (6:0,6)
Markup span - Gen<None> - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[foo];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<LitAttr:@(12:0,12)> - [abc] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:1
HtmlSymbolType.Text;[abc];
Markup block - Gen<None> - 3 - (15:0,15)
Markup span - Gen<LitAttr: @(15:0,15)> - [ @] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (17:0,17) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<LitAttr: @(18:0,18)> - [ def] - SpanEditHandler;Accepts:Any - (18:0,18) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[def];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (22:0,22) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<Markup> - [ />] - SpanEditHandler;Accepts:Any - (23:0,23) - Symbols:3
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [}] - SpanEditHandler;Accepts:Any - (26:0,26) - Symbols:1
HtmlSymbolType.Text;[}];

View File

@ -0,0 +1,26 @@
Markup block - Gen<None> - 19 - (0:0,0)
Markup span - Gen<Markup> - [{] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Text;[{];
Tag block - Gen<None> - 17 - (1:0,1)
Markup span - Gen<Markup> - [<span] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:2
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[span];
Markup block - Gen<Attr:foo, foo='@(6:0,6),'@(14:0,14)> - 9 - (6:0,6)
Markup span - Gen<None> - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[foo];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<None> - 2 - (12:0,12)
Markup span - Gen<LitAttr:@(12:0,12)> - [@] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (13:0,13) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<Markup> - [ />] - SpanEditHandler;Accepts:Any - (15:0,15) - Symbols:3
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [}] - SpanEditHandler;Accepts:Any - (18:0,18) - Symbols:1
HtmlSymbolType.Text;[}];

View File

@ -0,0 +1,39 @@
Markup block - Gen<None> - 44 - (0:0,0)
Markup span - Gen<Markup> - [{] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Text;[{];
Tag block - Gen<None> - 42 - (1:0,1)
Markup span - Gen<Markup> - [<span] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:2
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[span];
Markup block - Gen<Attr:foo, foo='@(6:0,6),'@(39:0,39)> - 34 - (6:0,6)
Markup span - Gen<None> - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[foo];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<LitAttr:@(12:0,12)> - [abc@def.com] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:1
HtmlSymbolType.Text;[abc@def.com];
Markup span - Gen<LitAttr: @(23:0,23)> - [ abc] - SpanEditHandler;Accepts:Any - (23:0,23) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[abc];
Markup block - Gen<None> - 2 - (27:0,27)
Markup span - Gen<LitAttr:@(27:0,27)> - [@] - SpanEditHandler;Accepts:None - (27:0,27) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (28:0,28) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<LitAttr:@(29:0,29)> - [def.com] - SpanEditHandler;Accepts:Any - (29:0,29) - Symbols:1
HtmlSymbolType.Text;[def.com];
Markup block - Gen<None> - 3 - (36:0,36)
Markup span - Gen<LitAttr: @(36:0,36)> - [ @] - SpanEditHandler;Accepts:None - (36:0,36) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (38:0,38) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (39:0,39) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<Markup> - [ />] - SpanEditHandler;Accepts:Any - (40:0,40) - Symbols:3
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [}] - SpanEditHandler;Accepts:Any - (43:0,43) - Symbols:1
HtmlSymbolType.Text;[}];

View File

@ -0,0 +1,72 @@
Markup block - Gen<None> - 117 - (0:0,0)
Markup span - Gen<Markup> - [{] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Text;[{];
Tag block - Gen<None> - 115 - (1:0,1)
Markup span - Gen<Markup> - [<span] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:2
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[span];
Markup block - Gen<Attr:foo, foo="@(6:0,6),"@(112:0,112)> - 107 - (6:0,6)
Markup span - Gen<None> - [ foo="] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[foo];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.DoubleQuote;["];
Markup span - Gen<LitAttr:@(12:0,12)> - [/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:14
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[^];
HtmlSymbolType.LeftBracket;[[];
HtmlSymbolType.Text;[a-z0-9];
HtmlSymbolType.Bang;[!];
HtmlSymbolType.Text;[#$%&];
HtmlSymbolType.SingleQuote;['];
HtmlSymbolType.Text;[*+\];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.QuestionMark;[?];
HtmlSymbolType.Text;[^_`{|}~.-];
HtmlSymbolType.RightBracket;[]];
HtmlSymbolType.Text;[+];
Markup block - Gen<None> - 2 - (44:0,44)
Markup span - Gen<LitAttr:@(44:0,44)> - [@] - SpanEditHandler;Accepts:None - (44:0,44) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (45:0,45) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<LitAttr:@(46:0,46)> - [[a-z0-9]([a-z0-9-]*[a-z0-9])?\.([a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i] - SpanEditHandler;Accepts:Any - (46:0,46) - Symbols:30
HtmlSymbolType.LeftBracket;[[];
HtmlSymbolType.Text;[a-z0-9];
HtmlSymbolType.RightBracket;[]];
HtmlSymbolType.Text;[(];
HtmlSymbolType.LeftBracket;[[];
HtmlSymbolType.Text;[a-z0-9-];
HtmlSymbolType.RightBracket;[]];
HtmlSymbolType.Text;[*];
HtmlSymbolType.LeftBracket;[[];
HtmlSymbolType.Text;[a-z0-9];
HtmlSymbolType.RightBracket;[]];
HtmlSymbolType.Text;[)];
HtmlSymbolType.QuestionMark;[?];
HtmlSymbolType.Text;[\.(];
HtmlSymbolType.LeftBracket;[[];
HtmlSymbolType.Text;[a-z0-9];
HtmlSymbolType.RightBracket;[]];
HtmlSymbolType.Text;[(];
HtmlSymbolType.LeftBracket;[[];
HtmlSymbolType.Text;[a-z0-9-];
HtmlSymbolType.RightBracket;[]];
HtmlSymbolType.Text;[*];
HtmlSymbolType.LeftBracket;[[];
HtmlSymbolType.Text;[a-z0-9];
HtmlSymbolType.RightBracket;[]];
HtmlSymbolType.Text;[)];
HtmlSymbolType.QuestionMark;[?];
HtmlSymbolType.Text;[)*$];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[i];
Markup span - Gen<None> - ["] - SpanEditHandler;Accepts:Any - (112:0,112) - Symbols:1
HtmlSymbolType.DoubleQuote;["];
Markup span - Gen<Markup> - [ />] - SpanEditHandler;Accepts:Any - (113:0,113) - Symbols:3
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [}] - SpanEditHandler;Accepts:Any - (116:0,116) - Symbols:1
HtmlSymbolType.Text;[}];

View File

@ -0,0 +1,141 @@
Markup block - Gen<None> - 120 - (0:0,0)
Markup span - Gen<Markup> - [{] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Text;[{];
Tag block - Gen<None> - 118 - (1:0,1)
Markup span - Gen<Markup> - [<span] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:2
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[span];
Markup block - Gen<Attr:foo, foo='@(6:0,6),'@(20:0,20)> - 15 - (6:0,6)
Markup span - Gen<None> - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[foo];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<None> - 2 - (12:0,12)
Markup span - Gen<LitAttr:@(12:0,12)> - [@] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (13:0,13) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup block - Gen<DynAttr:@(14:0,14)> - 6 - (14:0,14)
Markup span - Gen<None> - [] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1
HtmlSymbolType.Unknown;[];
Expression block - Gen<Expr> - 6 - (14:0,14)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (14:0,14) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - [2+3] - SpanEditHandler;Accepts:Any - (16:0,16) - Symbols:3
CSharpSymbolType.IntegerLiteral;[2];
CSharpSymbolType.Plus;[+];
CSharpSymbolType.IntegerLiteral;[3];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (19:0,19) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (20:0,20) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<Attr:bar, bar='@(21:0,21),'@(48:0,48)> - 28 - (21:0,21)
Markup span - Gen<None> - [ bar='] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[bar];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<DynAttr:@(27:0,27)> - 6 - (27:0,27)
Expression block - Gen<Expr> - 6 - (27:0,27)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (27:0,27) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [(] - SpanEditHandler;Accepts:None - (28:0,28) - Symbols:1
CSharpSymbolType.LeftParenthesis;[(];
Code span - Gen<Expr> - [2+3] - SpanEditHandler;Accepts:Any - (29:0,29) - Symbols:3
CSharpSymbolType.IntegerLiteral;[2];
CSharpSymbolType.Plus;[+];
CSharpSymbolType.IntegerLiteral;[3];
MetaCode span - Gen<None> - [)] - SpanEditHandler;Accepts:None - (32:0,32) - Symbols:1
CSharpSymbolType.RightParenthesis;[)];
Markup block - Gen<None> - 2 - (33:0,33)
Markup span - Gen<LitAttr:@(33:0,33)> - [@] - SpanEditHandler;Accepts:None - (33:0,33) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (34:0,34) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup block - Gen<DynAttr:@(35:0,35)> - 13 - (35:0,35)
Markup span - Gen<None> - [] - SpanEditHandler;Accepts:Any - (35:0,35) - Symbols:1
HtmlSymbolType.Unknown;[];
Expression block - Gen<Expr> - 13 - (35:0,35)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (35:0,35) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [DateTime.Now] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (36:0,36) - Symbols:3
CSharpSymbolType.Identifier;[DateTime];
CSharpSymbolType.Dot;[.];
CSharpSymbolType.Identifier;[Now];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (48:0,48) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<Attr:baz, baz='@(49:0,49),'@(70:0,70)> - 22 - (49:0,49)
Markup span - Gen<None> - [ baz='] - SpanEditHandler;Accepts:Any - (49:0,49) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[baz];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<DynAttr:@(55:0,55)> - 13 - (55:0,55)
Expression block - Gen<Expr> - 13 - (55:0,55)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (55:0,55) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [DateTime.Now] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (56:0,56) - Symbols:3
CSharpSymbolType.Identifier;[DateTime];
CSharpSymbolType.Dot;[.];
CSharpSymbolType.Identifier;[Now];
Markup block - Gen<None> - 2 - (68:0,68)
Markup span - Gen<LitAttr:@(68:0,68)> - [@] - SpanEditHandler;Accepts:None - (68:0,68) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (69:0,69) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (70:0,70) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<Attr:bat, bat='@(71:0,71),'@(93:0,93)> - 23 - (71:0,71)
Markup span - Gen<None> - [ bat='] - SpanEditHandler;Accepts:Any - (71:0,71) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[bat];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<DynAttr:@(77:0,77)> - 13 - (77:0,77)
Expression block - Gen<Expr> - 13 - (77:0,77)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (77:0,77) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [DateTime.Now] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (78:0,78) - Symbols:3
CSharpSymbolType.Identifier;[DateTime];
CSharpSymbolType.Dot;[.];
CSharpSymbolType.Identifier;[Now];
Markup block - Gen<None> - 3 - (90:0,90)
Markup span - Gen<LitAttr: @(90:0,90)> - [ @] - SpanEditHandler;Accepts:None - (90:0,90) - Symbols:2
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (92:0,92) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (93:0,93) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<Attr:zoo, zoo='@(94:0,94),'@(115:0,115)> - 22 - (94:0,94)
Markup span - Gen<None> - [ zoo='] - SpanEditHandler;Accepts:Any - (94:0,94) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[zoo];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<None> - 2 - (100:0,100)
Markup span - Gen<LitAttr:@(100:0,100)> - [@] - SpanEditHandler;Accepts:None - (100:0,100) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (101:0,101) - Symbols:1
HtmlSymbolType.Transition;[@];
Markup block - Gen<DynAttr:@(102:0,102)> - 13 - (102:0,102)
Markup span - Gen<None> - [] - SpanEditHandler;Accepts:Any - (102:0,102) - Symbols:1
HtmlSymbolType.Unknown;[];
Expression block - Gen<Expr> - 13 - (102:0,102)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (102:0,102) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [DateTime.Now] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (103:0,103) - Symbols:3
CSharpSymbolType.Identifier;[DateTime];
CSharpSymbolType.Dot;[.];
CSharpSymbolType.Identifier;[Now];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (115:0,115) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<Markup> - [ />] - SpanEditHandler;Accepts:Any - (116:0,116) - Symbols:3
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [}] - SpanEditHandler;Accepts:Any - (119:0,119) - Symbols:1
HtmlSymbolType.Text;[}];

View File

@ -0,0 +1,2 @@
(1,13): Error RZ1003: A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.
(1,15): Error RZ1005: "' />" is not valid at the start of a code block. Only identifiers, keywords, comments, "(" and "{" are valid.

View File

@ -0,0 +1,31 @@
Markup block - Gen<None> - 18 - (0:0,0)
Tag block - Gen<None> - 18 - (0:0,0)
Markup span - Gen<Markup> - [<span] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:2
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[span];
Markup block - Gen<Attr:foo, foo='@(5:0,5),'@(14:0,14)> - 10 - (5:0,5)
Markup span - Gen<None> - [ foo='] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:4
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[foo];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Markup block - Gen<DynAttr:@(11:0,11)> - 1 - (11:0,11)
Expression block - Gen<Expr> - 1 - (11:0,11)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (11:0,11) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (12:0,12) - Symbols:1
CSharpSymbolType.Unknown;[];
Markup block - Gen<DynAttr: @(12:0,12)> - 2 - (12:0,12)
Markup span - Gen<None> - [ ] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:1
HtmlSymbolType.WhiteSpace;[ ];
Expression block - Gen<Expr> - 1 - (13:0,13)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (13:0,13) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (14:0,14) - Symbols:1
CSharpSymbolType.Unknown;[];
Markup span - Gen<None> - ['] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1
HtmlSymbolType.SingleQuote;['];
Markup span - Gen<Markup> - [ />] - SpanEditHandler;Accepts:Any - (15:0,15) - Symbols:3
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.CloseAngle;[>];

View File

@ -0,0 +1,52 @@
Markup block - Gen<None> - 53 - (0:0,0)
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1
HtmlSymbolType.Unknown;[];
Directive block - Gen<Directive:{section;RazorBlock;Unrestricted}> - 53 - (0:0,0)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1
CSharpSymbolType.Transition;[@];
MetaCode span - Gen<None> - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1
CSharpSymbolType.Identifier;[section];
Code span - Gen<None> - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1
CSharpSymbolType.WhiteSpace;[ ];
Code span - Gen<DirectiveToken {SectionName;Member;Opt:False}> - [Foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1
CSharpSymbolType.Identifier;[Foo];
Markup span - Gen<None> - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1
CSharpSymbolType.WhiteSpace;[ ];
MetaCode span - Gen<None> - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[<null>];AtEnd - (13:0,13) - Symbols:1
CSharpSymbolType.LeftBrace;[{];
Markup block - Gen<None> - 38 - (14:0,14)
Markup span - Gen<Markup> - [ ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1
HtmlSymbolType.WhiteSpace;[ ];
Tag block - Gen<None> - 8 - (15:0,15)
Markup span - Gen<Markup> - [<script>] - SpanEditHandler;Accepts:Any - (15:0,15) - Symbols:3
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[script];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [foo<bar baz='] - SpanEditHandler;Accepts:Any - (23:0,23) - Symbols:7
HtmlSymbolType.Text;[foo];
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.Text;[bar];
HtmlSymbolType.WhiteSpace;[ ];
HtmlSymbolType.Text;[baz];
HtmlSymbolType.Equals;[=];
HtmlSymbolType.SingleQuote;['];
Expression block - Gen<Expr> - 4 - (36:0,36)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (36:0,36) - Symbols:1
CSharpSymbolType.Transition;[@];
Code span - Gen<Expr> - [boz] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K15 - (37:0,37) - Symbols:1
CSharpSymbolType.Identifier;[boz];
Markup span - Gen<Markup> - ['>] - SpanEditHandler;Accepts:Any - (40:0,40) - Symbols:2
HtmlSymbolType.SingleQuote;['];
HtmlSymbolType.CloseAngle;[>];
Tag block - Gen<None> - 9 - (42:0,42)
Markup span - Gen<Markup> - [</script>] - SpanEditHandler;Accepts:Any - (42:0,42) - Symbols:4
HtmlSymbolType.OpenAngle;[<];
HtmlSymbolType.ForwardSlash;[/];
HtmlSymbolType.Text;[script];
HtmlSymbolType.CloseAngle;[>];
Markup span - Gen<Markup> - [ ] - SpanEditHandler;Accepts:Any - (51:0,51) - Symbols:1
HtmlSymbolType.WhiteSpace;[ ];
MetaCode span - Gen<None> - [}] - SpanEditHandler;Accepts:None - (52:0,52) - Symbols:1
CSharpSymbolType.RightBrace;[}];
Markup span - Gen<Markup> - [] - SpanEditHandler;Accepts:Any - (53:0,53) - Symbols:1
HtmlSymbolType.Unknown;[];