private ParserContext SetupTestRun(string document, Action <TextReader> positioningAction) { var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); return(SetupTestRun(document, positioningAction, codeParser, markupParser, codeParser, new Mock <ParserVisitor>().Object)); }
private static List <Span> ParseDocument( string documentContents, List <RazorError> errors = null, List <LineMapping> lineMappings = null) { errors = errors ?? new List <RazorError>(); var markupParser = new HtmlMarkupParser(); var codeParser = new TestMvcCSharpRazorCodeParser(); var reader = new SeekableTextReader(documentContents); var context = new ParserContext( reader, codeParser, markupParser, markupParser, new ErrorSink()); codeParser.Context = context; markupParser.Context = context; markupParser.ParseDocument(); var results = context.CompleteParse(); errors.AddRange(results.ParserErrors); return(results.Document.Flatten().ToList()); }
private ParserContext SetupTestContext(string document) { var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); return(SetupTestContext(document, b => { }, codeParser, markupParser, codeParser)); }
private ParserContext SetupTestContext(string document, Action <TextReader> positioningAction) { var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); return(SetupTestContext(document, positioningAction, codeParser, markupParser, codeParser)); }
private static List <Span> ParseDocument( string documentContents, IList <RazorError> errors = null ) { errors = errors ?? new List <RazorError>(); var markupParser = new HtmlMarkupParser(); var codeParser = new TestMvcCSharpRazorCodeParser(); var context = new ParserContext( new SeekableTextReader(documentContents), codeParser, markupParser, markupParser ); codeParser.Context = context; markupParser.Context = context; markupParser.ParseDocument(); ParserResults results = context.CompleteParse(); foreach (RazorError error in results.ParserErrors) { errors.Add(error); } return(results.Document.Flatten().ToList()); }
private ParserContext SetupTestRun(string document, ParserVisitor listener) { var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); return(SetupTestRun(document, b => { }, codeParser, markupParser, codeParser, listener)); }
internal virtual RazorSyntaxTree ParseDocument(RazorLanguageVersion version, string document, IEnumerable <DirectiveDescriptor> directives, bool designTime = false, RazorParserFeatureFlags featureFlags = null, string fileKind = null) { directives = directives ?? Array.Empty <DirectiveDescriptor>(); var source = TestRazorSourceDocument.Create(document, filePath: null, relativePath: null, normalizeNewLines: true); var options = CreateParserOptions(version, directives, designTime, featureFlags, fileKind); var context = new ParserContext(source, options); var codeParser = new CSharpCodeParser(directives, context); var markupParser = new HtmlMarkupParser(context); codeParser.HtmlParser = markupParser; markupParser.CodeParser = codeParser; var root = markupParser.ParseDocument().CreateRed(); var diagnostics = context.ErrorSink.Errors; var codeDocument = RazorCodeDocument.Create(source); var syntaxTree = RazorSyntaxTree.Create(root, source, diagnostics, options); codeDocument.SetSyntaxTree(syntaxTree); var defaultDirectivePass = new DefaultDirectiveSyntaxTreePass(); syntaxTree = defaultDirectivePass.Execute(codeDocument, syntaxTree); return(syntaxTree); }
public void ConstructorAcceptsActiveParserIfIsSameAsEitherCodeOrMarkupParser() { var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); new ParserContext(new BufferingTextReader(TextReader.Null), codeParser, markupParser, codeParser, new Mock <ParserVisitor>().Object); new ParserContext(new BufferingTextReader(TextReader.Null), codeParser, markupParser, markupParser, new Mock <ParserVisitor>().Object); }
public void IsHyphen_ReturnsTrueForADashSymbol() { // Arrange var dashSymbol = new HtmlSymbol("-", HtmlSymbolType.Text); // Act & Assert Assert.True(HtmlMarkupParser.IsHyphen(dashSymbol)); }
public void IsHyphen_ReturnsFalseForNonDashSymbol(object symbol) { // Arrange var convertedSymbol = (HtmlSymbol)symbol; // Act & Assert Assert.False(HtmlMarkupParser.IsHyphen(convertedSymbol)); }
public void IsHyphen_ReturnsTrueForADashToken() { // Arrange var dashToken = new HtmlToken("-", HtmlTokenType.Text); // Act & Assert Assert.True(HtmlMarkupParser.IsHyphen(dashToken)); }
public void IsHyphen_ReturnsTrueForADashToken() { // Arrange var dashToken = SyntaxFactory.Token(SyntaxKind.Text, "-"); // Act & Assert Assert.True(HtmlMarkupParser.IsHyphen(dashToken)); }
public void ParseSectionMethodThrowsArgNullExceptionOnNullContext() { // Arrange HtmlMarkupParser parser = new HtmlMarkupParser(); // Act and Assert Assert.Throws <InvalidOperationException>(() => parser.ParseSection(null, true), RazorResources.Parser_Context_Not_Set); }
public void IsHyphen_ReturnsFalseForNonDashToken(object token) { // Arrange var convertedToken = (SyntaxToken)token; // Act & Assert Assert.False(HtmlMarkupParser.IsHyphen(convertedToken)); }
public void ConstructorAcceptsActiveParserIfIsSameAsEitherCodeOrMarkupParser() { var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); new ParserContext(new SeekableTextReader(TextReader.Null), codeParser, markupParser, codeParser); new ParserContext(new SeekableTextReader(TextReader.Null), codeParser, markupParser, markupParser); }
public void IsCommentContentEndingInvalid_ReturnsFalseForAllowedContent() { // Arrange var expectedSymbol1 = new HtmlSymbol("a", HtmlSymbolType.Text); var sequence = Enumerable.Range((int)'a', 26).Select(item => new HtmlSymbol(((char)item).ToString(), HtmlSymbolType.Text)); // Act & Assert Assert.False(HtmlMarkupParser.IsCommentContentEndingInvalid(sequence)); }
public void IsCommentContentEndingInvalid_ReturnsTrueForDisallowedContent() { // Arrange var expectedSymbol1 = new HtmlSymbol("a", HtmlSymbolType.Text); var sequence = new[] { new HtmlSymbol("<", HtmlSymbolType.OpenAngle), new HtmlSymbol("!", HtmlSymbolType.Bang), new HtmlSymbol("-", HtmlSymbolType.Text) }; // Act & Assert Assert.True(HtmlMarkupParser.IsCommentContentEndingInvalid(sequence)); }
public void IsCommentContentEndingInvalid_ReturnsFalseForEmptyContent() { // Arrange var expectedSymbol1 = new HtmlSymbol("a", HtmlSymbolType.Text); var sequence = Array.Empty <HtmlSymbol>(); // Act & Assert Assert.False(HtmlMarkupParser.IsCommentContentEndingInvalid(sequence)); }
public void IsCommentContentEndingInvalid_ReturnsFalseForAllowedContent() { // Arrange var expectedToken1 = SyntaxFactory.Token(SyntaxKind.Text, "a"); var sequence = Enumerable.Range((int)'a', 26).Select(item => SyntaxFactory.Token(SyntaxKind.Text, ((char)item).ToString())); // Act & Assert Assert.False(HtmlMarkupParser.IsCommentContentEndingInvalid(sequence)); }
public void IsCommentContentEndingInvalid_ReturnsFalseForEmptyContent() { // Arrange var expectedToken1 = SyntaxFactory.Token(SyntaxKind.Text, "a"); var sequence = Array.Empty <SyntaxToken>(); // Act & Assert Assert.False(HtmlMarkupParser.IsCommentContentEndingInvalid(sequence)); }
public static ParseResult Parse(Input input) { var document = CreateSourceDocument(input.Content); var options = RazorParserOptions.Create(builder => { foreach (var directive in GetDirectives()) { builder.Directives.Add(directive); } builder.SetDesignTime(input.DesignTime); }); // Syntax tree var context = new ParserContext(document, options); var codeParser = new CSharpCodeParser(GetDirectives(), context); var markupParser = new HtmlMarkupParser(context); codeParser.HtmlParser = markupParser; markupParser.CodeParser = codeParser; var root = markupParser.ParseDocument().CreateRed(); // IR tree RazorCodeDocument codeDocument; var engine = RazorProjectEngine.Create(configure: null); if (input.DesignTime) { codeDocument = engine.ProcessDesignTime(document, null, null, TestTagHelpers.GetDescriptors()); } else { codeDocument = engine.Process(document, null, null, TestTagHelpers.GetDescriptors()); } if (input.TagHelperPhase) { root = codeDocument.GetSyntaxTree().Root; } var syntaxTreeRoot = TreeSerializer.Serialize(root); var intermediateNode = codeDocument.GetDocumentIntermediateNode(); var intermediateRoot = IRSerializer.Serialize(intermediateNode); // Generated code var cSharpDocument = codeDocument.GetCSharpDocument(); var generatedCode = new GeneratedCodeResult { Code = cSharpDocument.GeneratedCode }; return(new ParseResult { SyntaxTreeRoot = syntaxTreeRoot, IntermediateRoot = intermediateRoot, GeneratedCode = generatedCode }); }
public void ParseSectionMethodThrowsArgNullExceptionOnNullContext() { // Arrange var parser = new HtmlMarkupParser(); // Act and Assert var exception = Assert.Throws <InvalidOperationException>(() => parser.ParseSection(null, true)); Assert.Equal(RazorResources.Parser_Context_Not_Set, exception.Message); }
public void ConstructorAcceptsActiveParserIfIsSameAsEitherCodeOrMarkupParser() { var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); var errorSink = new ErrorSink(); new ParserContext( new SeekableTextReader(TextReader.Null), codeParser, markupParser, codeParser, errorSink); new ParserContext( new SeekableTextReader(TextReader.Null), codeParser, markupParser, markupParser, errorSink); }
public void DecorateMarkupParserReturnsIncomingParser() { // Arrange var expected = new HtmlMarkupParser(); // Act var actual = CreateHost().DecorateMarkupParser(expected); // Assert Assert.Same(expected, actual); }
public void AcceptAllButLastDoubleHypens_ReturnsTheDoubleHyphenSymbolAfterAcceptingTheDash() { // Arrange var sut = CreateTestParserForContent("--->"); // Act var symbol = sut.AcceptAllButLastDoubleHyphens(); // Assert Assert.Equal(doubleHyphenSymbol, symbol); Assert.True(sut.At(HtmlSymbolType.CloseAngle)); Assert.True(HtmlMarkupParser.IsHyphen(sut.PreviousSymbol)); }
public void AcceptAllButLastDoubleHypens_ReturnsTheDoubleHyphenTokenAfterAcceptingTheDash() { // Arrange var sut = CreateTestParserForContent("--->"); // Act var token = sut.AcceptAllButLastDoubleHyphens(); // Assert Assert.True(doubleHyphenToken.IsEquivalentTo(token)); Assert.True(sut.At(SyntaxKind.CloseAngle)); Assert.True(HtmlMarkupParser.IsHyphen(sut.PreviousToken)); }
public void ConstructorWithCodeLanguageAndMarkupParserSetsPropertiesAppropriately() { // Arrange var language = new CSharpRazorCodeLanguage(); var expected = new HtmlMarkupParser(); // Act var host = new RazorEngineHost(language, () => expected); // Assert VerifyCommonDefaults(host); Assert.Same(language, host.CodeLanguage); Assert.Same(expected, host.CreateMarkupParser()); }
public void IsCommentContentEndingInvalid_ReturnsTrueForDisallowedContent() { // Arrange var expectedToken1 = SyntaxFactory.Token(SyntaxKind.Text, "a"); var sequence = new[] { SyntaxFactory.Token(SyntaxKind.OpenAngle, "<"), SyntaxFactory.Token(SyntaxKind.Bang, "!"), SyntaxFactory.Token(SyntaxKind.Text, "-") }; // Act & Assert Assert.True(HtmlMarkupParser.IsCommentContentEndingInvalid(sequence)); }
public void SwitchActiveParserSetsCodeParserAsActiveIfMarkupParserCurrentlyActive() { // Arrange var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); ParserContext context = SetupTestRun("barbazbiz", b => b.Read(), codeParser, markupParser, markupParser, new Mock <ParserVisitor>().Object); Assert.AreSame(markupParser, context.ActiveParser); // Act context.SwitchActiveParser(); // Assert Assert.AreSame(codeParser, context.ActiveParser); }
public void SwitchActiveParserSetsCodeParserAsActiveIfMarkupParserCurrentlyActive() { // Arrange var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); var context = SetupTestContext("barbazbiz", b => b.Read(), codeParser, markupParser, markupParser); Assert.Same(markupParser, context.ActiveParser); // Act context.SwitchActiveParser(); // Assert Assert.Same(codeParser, context.ActiveParser); }
public void ConstructorInitializesProperties() { // Arrange var expectedBuffer = new SeekableTextReader(TextReader.Null); var expectedCodeParser = new CSharpCodeParser(); var expectedMarkupParser = new HtmlMarkupParser(); // Act var context = new ParserContext(expectedBuffer, expectedCodeParser, expectedMarkupParser, expectedCodeParser); // Assert Assert.NotNull(context.Source); Assert.Same(expectedCodeParser, context.CodeParser); Assert.Same(expectedMarkupParser, context.MarkupParser); Assert.Same(expectedCodeParser, context.ActiveParser); }
public void ConstructorInitializesProperties() { // Arrange var expectedBuffer = new SeekableTextReader(TextReader.Null); var expectedCodeParser = new CSharpCodeParser(); var expectedMarkupParser = new HtmlMarkupParser(); // Act var context = new ParserContext(expectedBuffer, expectedCodeParser, expectedMarkupParser, expectedCodeParser, new ErrorSink()); // Assert Assert.NotNull(context.Source); Assert.Same(expectedCodeParser, context.CodeParser); Assert.Same(expectedMarkupParser, context.MarkupParser); Assert.Same(expectedCodeParser, context.ActiveParser); }
public void ParseBlockMethodThrowsArgNullExceptionOnNullContext() { // Arrange var parser = new HtmlMarkupParser(); // Act and Assert var exception = Assert.Throws<InvalidOperationException>(() => parser.ParseBlock()); Assert.Equal(RazorResources.Parser_Context_Not_Set, exception.Message); }
private static List<Span> ParseDocument( string documentContents, List<RazorError> errors = null, List<LineMapping> lineMappings = null) { errors = errors ?? new List<RazorError>(); var markupParser = new HtmlMarkupParser(); var codeParser = new TestMvcCSharpRazorCodeParser(); var reader = new SeekableTextReader(documentContents); var context = new ParserContext( reader, codeParser, markupParser, markupParser, new ErrorSink()); codeParser.Context = context; markupParser.Context = context; markupParser.ParseDocument(); var results = context.CompleteParse(); errors.AddRange(results.ParserErrors); return results.Document.Flatten().ToList(); }
public void SwitchActiveParserSetsMarkupParserAsActiveIfCodeParserCurrentlyActive() { // Arrange var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); var context = SetupTestContext("barbazbiz", b => b.Read(), codeParser, markupParser, codeParser); Assert.Same(codeParser, context.ActiveParser); // Act context.SwitchActiveParser(); // Assert Assert.Same(markupParser, context.ActiveParser); }
private ParserContext SetupTestContext(string document) { var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); return SetupTestContext(document, b => { }, codeParser, markupParser, codeParser); }
private ParserContext SetupTestContext(string document, Action<TextReader> positioningAction) { var codeParser = new CSharpCodeParser(); var markupParser = new HtmlMarkupParser(); return SetupTestContext(document, positioningAction, codeParser, markupParser, codeParser); }