30 lines
1000 B
C#
30 lines
1000 B
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.Linq;
|
|
|
|
namespace Microsoft.AspNetCore.Razor.Language
|
|
{
|
|
internal class DefaultRazorSyntaxTreePhase : RazorEnginePhaseBase, IRazorSyntaxTreePhase
|
|
{
|
|
public IRazorSyntaxTreePass[] Passes { get; private set; }
|
|
|
|
protected override void OnIntialized()
|
|
{
|
|
Passes = Engine.Features.OfType<IRazorSyntaxTreePass>().OrderBy(p => p.Order).ToArray();
|
|
}
|
|
|
|
protected override void ExecuteCore(RazorCodeDocument codeDocument)
|
|
{
|
|
var syntaxTree = codeDocument.GetSyntaxTree();
|
|
ThrowForMissingDocumentDependency(syntaxTree);
|
|
|
|
foreach (var pass in Passes)
|
|
{
|
|
syntaxTree = pass.Execute(codeDocument, syntaxTree);
|
|
}
|
|
|
|
codeDocument.SetSyntaxTree(syntaxTree);
|
|
}
|
|
}
|
|
} |