aspnetcore/src/Microsoft.AspNetCore.Razor..../HtmlNodeOptimizationPass.cs

36 lines
1.3 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNetCore.Razor.Language.Legacy;
namespace Microsoft.AspNetCore.Razor.Language
{
internal class HtmlNodeOptimizationPass : RazorEngineFeatureBase, IRazorSyntaxTreePass
{
public int Order => 100;
public RazorSyntaxTree Execute(RazorCodeDocument codeDocument, RazorSyntaxTree syntaxTree)
{
if (codeDocument == null)
{
throw new ArgumentNullException(nameof(codeDocument));
}
if (syntaxTree == null)
{
throw new ArgumentNullException(nameof(syntaxTree));
}
var conditionalAttributeCollapser = new ConditionalAttributeCollapser();
var rewritten = conditionalAttributeCollapser.Rewrite(syntaxTree.Root);
var whitespaceRewriter = new WhiteSpaceRewriter();
rewritten = whitespaceRewriter.Rewrite(rewritten);
var rewrittenSyntaxTree = RazorSyntaxTree.Create(rewritten, syntaxTree.Source, syntaxTree.Diagnostics, syntaxTree.Options);
return rewrittenSyntaxTree;
}
}
}