44 lines
1.5 KiB
C#
44 lines
1.5 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;
|
|
using Microsoft.AspNetCore.Razor.Language.Intermediate;
|
|
|
|
namespace Microsoft.AspNetCore.Blazor.Razor
|
|
{
|
|
public class PageDirective
|
|
{
|
|
public static readonly DirectiveDescriptor Directive = DirectiveDescriptor.CreateDirective(
|
|
"page",
|
|
DirectiveKind.SingleLine,
|
|
builder =>
|
|
{
|
|
builder.AddStringToken(Resources.PageDirective_RouteToken_Name, Resources.PageDirective_RouteToken_Description);
|
|
builder.Usage = DirectiveUsage.FileScopedMultipleOccurring;
|
|
builder.Description = Resources.PageDirective_Description;
|
|
});
|
|
|
|
private PageDirective(string routeTemplate, IntermediateNode directiveNode)
|
|
{
|
|
RouteTemplate = routeTemplate;
|
|
DirectiveNode = directiveNode;
|
|
}
|
|
|
|
public string RouteTemplate { get; }
|
|
|
|
public IntermediateNode DirectiveNode { get; }
|
|
|
|
public static RazorProjectEngineBuilder Register(RazorProjectEngineBuilder builder)
|
|
{
|
|
if (builder == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(builder));
|
|
}
|
|
|
|
builder.AddDirective(Directive);
|
|
builder.Features.Add(new PageDirectivePass());
|
|
return builder;
|
|
}
|
|
}
|
|
} |