128 lines
4.7 KiB
C#
128 lines
4.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.
|
|
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
|
|
namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|
{
|
|
internal class HtmlLanguageCharacteristics : LanguageCharacteristics<HtmlTokenizer, HtmlToken, HtmlTokenType>
|
|
{
|
|
private static readonly HtmlLanguageCharacteristics _instance = new HtmlLanguageCharacteristics();
|
|
|
|
protected HtmlLanguageCharacteristics()
|
|
{
|
|
}
|
|
|
|
public static HtmlLanguageCharacteristics Instance
|
|
{
|
|
get { return _instance; }
|
|
}
|
|
|
|
public override string GetSample(HtmlTokenType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case HtmlTokenType.Text:
|
|
return Resources.HtmlToken_Text;
|
|
case HtmlTokenType.WhiteSpace:
|
|
return Resources.HtmlToken_WhiteSpace;
|
|
case HtmlTokenType.NewLine:
|
|
return Resources.HtmlToken_NewLine;
|
|
case HtmlTokenType.OpenAngle:
|
|
return "<";
|
|
case HtmlTokenType.Bang:
|
|
return "!";
|
|
case HtmlTokenType.ForwardSlash:
|
|
return "/";
|
|
case HtmlTokenType.QuestionMark:
|
|
return "?";
|
|
case HtmlTokenType.DoubleHyphen:
|
|
return "--";
|
|
case HtmlTokenType.LeftBracket:
|
|
return "[";
|
|
case HtmlTokenType.CloseAngle:
|
|
return ">";
|
|
case HtmlTokenType.RightBracket:
|
|
return "]";
|
|
case HtmlTokenType.Equals:
|
|
return "=";
|
|
case HtmlTokenType.DoubleQuote:
|
|
return "\"";
|
|
case HtmlTokenType.SingleQuote:
|
|
return "'";
|
|
case HtmlTokenType.Transition:
|
|
return "@";
|
|
case HtmlTokenType.Colon:
|
|
return ":";
|
|
case HtmlTokenType.RazorComment:
|
|
return Resources.HtmlToken_RazorComment;
|
|
case HtmlTokenType.RazorCommentStar:
|
|
return "*";
|
|
case HtmlTokenType.RazorCommentTransition:
|
|
return "@";
|
|
default:
|
|
return Resources.Token_Unknown;
|
|
}
|
|
}
|
|
|
|
public override HtmlTokenizer CreateTokenizer(ITextDocument source)
|
|
{
|
|
return new HtmlTokenizer(source);
|
|
}
|
|
|
|
public override HtmlTokenType FlipBracket(HtmlTokenType bracket)
|
|
{
|
|
switch (bracket)
|
|
{
|
|
case HtmlTokenType.LeftBracket:
|
|
return HtmlTokenType.RightBracket;
|
|
case HtmlTokenType.OpenAngle:
|
|
return HtmlTokenType.CloseAngle;
|
|
case HtmlTokenType.RightBracket:
|
|
return HtmlTokenType.LeftBracket;
|
|
case HtmlTokenType.CloseAngle:
|
|
return HtmlTokenType.OpenAngle;
|
|
default:
|
|
Debug.Fail("FlipBracket must be called with a bracket character");
|
|
return HtmlTokenType.Unknown;
|
|
}
|
|
}
|
|
|
|
public override HtmlToken CreateMarkerToken()
|
|
{
|
|
return new HtmlToken(string.Empty, HtmlTokenType.Unknown);
|
|
}
|
|
|
|
public override HtmlTokenType GetKnownTokenType(KnownTokenType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case KnownTokenType.CommentStart:
|
|
return HtmlTokenType.RazorCommentTransition;
|
|
case KnownTokenType.CommentStar:
|
|
return HtmlTokenType.RazorCommentStar;
|
|
case KnownTokenType.CommentBody:
|
|
return HtmlTokenType.RazorComment;
|
|
case KnownTokenType.Identifier:
|
|
return HtmlTokenType.Text;
|
|
case KnownTokenType.Keyword:
|
|
return HtmlTokenType.Text;
|
|
case KnownTokenType.NewLine:
|
|
return HtmlTokenType.NewLine;
|
|
case KnownTokenType.Transition:
|
|
return HtmlTokenType.Transition;
|
|
case KnownTokenType.WhiteSpace:
|
|
return HtmlTokenType.WhiteSpace;
|
|
default:
|
|
return HtmlTokenType.Unknown;
|
|
}
|
|
}
|
|
|
|
protected override HtmlToken CreateToken(string content, HtmlTokenType type, IReadOnlyList<RazorDiagnostic> errors)
|
|
{
|
|
return new HtmlToken(content, type, errors);
|
|
}
|
|
}
|
|
}
|