public static RazorSyntaxTree Rewrite(RazorSyntaxTree syntaxTree, string tagHelperPrefix, IEnumerable <TagHelperDescriptor> descriptors) { var errorSink = new ErrorSink(); syntaxTree = MarkupElementRewriter.AddMarkupElements(syntaxTree); var rewriter = new Rewriter( syntaxTree.Source, tagHelperPrefix, descriptors, syntaxTree.Options.FeatureFlags, errorSink); var rewritten = rewriter.Visit(syntaxTree.Root); var errorList = new List <RazorDiagnostic>(); errorList.AddRange(errorSink.Errors); errorList.AddRange(descriptors.SelectMany(d => d.GetAllDiagnostics())); var diagnostics = CombineErrors(syntaxTree.Diagnostics, errorList).OrderBy(error => error.Span.AbsoluteIndex); var newSyntaxTree = RazorSyntaxTree.Create(rewritten, syntaxTree.Source, diagnostics, syntaxTree.Options); newSyntaxTree = MarkupElementRewriter.RemoveMarkupElements(newSyntaxTree); return(newSyntaxTree); }
private void RewriterTest(string input) { var syntaxTree = ParseDocument(input, designTime: false); var rewritten = MarkupElementRewriter.AddMarkupElements(syntaxTree); BaselineTest(rewritten); var unrewritten = MarkupElementRewriter.RemoveMarkupElements(rewritten); Assert.Equal(syntaxTree.Root.SerializedValue, unrewritten.Root.SerializedValue); }