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

51 lines
1.7 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.
namespace Microsoft.AspNetCore.Razor.Language
{
public abstract class DirectiveTokenDescriptor
{
public abstract DirectiveTokenKind Kind { get; }
public abstract bool Optional { get; }
public virtual string Name { get; }
public virtual string Description { get; }
public static DirectiveTokenDescriptor CreateToken(DirectiveTokenKind kind)
{
return CreateToken(kind, optional: false);
}
public static DirectiveTokenDescriptor CreateToken(DirectiveTokenKind kind, bool optional)
{
return CreateToken(kind, optional, name: null, description: null);
}
public static DirectiveTokenDescriptor CreateToken(DirectiveTokenKind kind, bool optional, string name, string description)
{
return new DefaultDirectiveTokenDescriptor(kind, optional, name, description);
}
private class DefaultDirectiveTokenDescriptor : DirectiveTokenDescriptor
{
public DefaultDirectiveTokenDescriptor(DirectiveTokenKind kind, bool optional, string name, string description)
{
Kind = kind;
Optional = optional;
Name = name;
Description = description;
}
public override DirectiveTokenKind Kind { get; }
public override bool Optional { get; }
public override string Name { get; }
public override string Description { get; }
}
}
}