Feature #4305

Filtering language possibility to test for string length

Added by Pavel Kácha 5 months ago. Updated 5 months ago.

Status:ClosedStart date:09/14/2018
Priority:NormalDue date:
Assignee:Pavel Kácha% Done:

100%

Category:Development - Core
Target version:2.1

Description

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 "ID": "f6b06cc8-15ee-4232-be6b-ac8857f23b26".

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).

History

#1 Updated by Jan Mach 5 months ago

  • 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.

#2 Updated by Pavel Kácha 5 months ago

  • Status changed from Feedback to Closed

Checks for ID and Description added to Inspector B. Thx.

Also available in: Atom PDF