in src/PSRule/Runtime/ObjectPath/PathTokenizer.cs [227:263]
private void TryConsumeComparisonOperator(ref int position, ITokenWriter tokens)
{
var pos = SkipPadding(position);
if (!IsComparisonOperator(Current(pos)))
return;
var op = FilterOperator.None;
var c1 = ConsumeChar(ref pos);
var c2 = Current(pos);
if (c1 == EQUALS && c2 == EQUALS)
op = FilterOperator.Equal;
if (c1 == NOT && c2 == EQUALS)
op = FilterOperator.NotEqual;
if (c1 == LESSTHAN && c2 == EQUALS)
op = FilterOperator.LessOrEqual;
if (c1 == LESSTHAN && !IsComparisonOperator(c2))
op = FilterOperator.Less;
if (c1 == GREATERTHAN && c2 == EQUALS)
op = FilterOperator.GreaterOrEqual;
if (c1 == GREATERTHAN && !IsComparisonOperator(c2))
op = FilterOperator.Greater;
if (c1 == TILDA && c2 == EQUALS)
op = FilterOperator.RegEx;
if (op != FilterOperator.None)
{
position = SkipPadding(op == FilterOperator.Less || op == FilterOperator.Greater ? pos : pos + 1);
tokens.Add(new PathToken(PathTokenType.ComparisonOperator, op));
}
}