2020-10-28 06:39:26 +11:00
|
|
|
|
using UnityEngine;
|
2020-10-26 01:07:59 +11:00
|
|
|
|
|
2021-03-18 18:52:30 +11:00
|
|
|
|
namespace UnityExplorer.UI.Main.CSConsole.Lexer
|
2020-10-26 01:07:59 +11:00
|
|
|
|
{
|
2020-11-11 00:16:01 +11:00
|
|
|
|
public class NumberMatch : Matcher
|
2020-10-26 01:07:59 +11:00
|
|
|
|
{
|
|
|
|
|
public override Color HighlightColor => new Color(0.58f, 0.33f, 0.33f, 1.0f);
|
|
|
|
|
|
2021-03-18 17:17:29 +11:00
|
|
|
|
public override bool IsImplicitMatch(CSLexerHighlighter lexer)
|
2020-10-26 01:07:59 +11:00
|
|
|
|
{
|
|
|
|
|
if (!char.IsWhiteSpace(lexer.Previous) &&
|
2020-11-11 00:16:01 +11:00
|
|
|
|
!lexer.IsSpecialSymbol(lexer.Previous, DelimiterType.End))
|
2020-10-26 01:07:59 +11:00
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool matchedNumber = false;
|
|
|
|
|
|
|
|
|
|
while (!lexer.EndOfStream)
|
|
|
|
|
{
|
|
|
|
|
if (IsNumberOrDecimalPoint(lexer.ReadNext()))
|
|
|
|
|
{
|
|
|
|
|
matchedNumber = true;
|
|
|
|
|
lexer.Commit();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
lexer.Rollback();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return matchedNumber;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool IsNumberOrDecimalPoint(char character) => char.IsNumber(character) || character == '.';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|