51 lines
1.7 KiB
C#
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; }
|
|
}
|
|
}
|
|
}
|