Filtering language possibility to test for string length
|Assignee:||Pavel Kácha||% Done:|
|Category:||Development - Core|
size(ID) does not return correct values for scalars, which may be by design (array lengths).
"rule": "size(ID) < 8" in Inspector matches even for
Suspect is the usage of method
pynspect.jpath.jpath_values(), which always returns array, so
size may work on array, not string.
One possibility is to make
size work on strings, which however may be incompatible or special cased in jpath_values usage.
Another possibility is specific function for strings (like
strlen or so).
- Status changed from New to Feedback
- Assignee changed from Jan Mach to Pavel Kácha
- % Done changed from 0 to 100
I have updated the Pynspect library to support the strlen function, which implements the feature related to this ticket. It is available in Pynspect version 0.16 and all unit tests are working ok. Please see the unit test method pynspect.tests.test_filters.test_08_functions() for example usage. For quick intro following expressions work:
strlen(ID) > 8 strlen(Node.Name) > 20
When multiple values are returned for given JPath, comparison operation is ORED (evaluates as true in case at least one value matches the expression).
I have installed the aforementioned library to our production server for testing in production environment and restarted the Mentat system. Everything is working fine and in order.