Allow leading special characters for attribute names in filter strings #35
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, attribute naming rules are different between the
SCIMMY.Types.Attribute
class and theSCIMMY.Types.Filter
class. For attributes, their name is allowed to begin with the$
,-
, and_
special characters. For filters, attribute names can only begin with the_
special character. This inconsistency causes filter expression parsing to fail when an attribute name begins with the$
or-
special characters, as allowed in the attribute class. A specific example of this is when attempting to filter against the commonly used$ref
attribute.The tokenising method of Filter class has had its naming rules relaxed, now allowing for any leading special character in attribute names (fixes #33). This has been achieved by adding explicit logical operator and comparator detection, leaving only the detection of attribute names and potential unescaped string values in "word" tokens. In the Attribute class, a new check of attribute names in the class constructor has been implemented for invalid leading characters, which currently will not match, but is in place for the possible future addition of stricter, spec-compliant naming rules.
The test fixtures for the Attribute and Filter classes have also been updated to check that leading special characters are allowed, and correctly parsed.