You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Comparing this schema with itself (command jsonsubschema a.json a.json) will throw an error. More specifically, the library greenery throws an error. It seems like greenery can not handle escaped characters. When you delete one of the pattern, everything works fine, because the problematic greenery method is not called. The error is also thrown for other escaped characters like "\ " (whitespace), "\." ...
Best Regards
Michael
The text was updated successfully, but these errors were encountered:
Mmm... I am not sure this is an inherent problem in greenery.
The problem seems related to the fact that in python string literals, backslash is used to escape special chars, including the backslash itself. In other words, one has to use '\\' to get the literal '\', if the string is not raw.
So if one wants to write the regex 'a\\-b' which matches the string literal 'a\-b' I guess, it should either be specified as raw pattern, i.e., r'a\\-b' or use the pattern 'a\\\-b' where the first backslash is the escape char, and the following double backslash for the literal backslash. Using either of those tricks, makes the check pass successfully.
In general, although greenery is quite useful and powerful, trying to use it for the full spectrum of ECMAScript regular expressions is error prone and it cannot cover all cases by nature.
However, I need to think more whether using raw strings for patterns passed to greenery will permanently solve this problem and related ones, or will it cause other unexpected behavior.
Hello,
There is a problem when using escaped characters in a pattern. E.g.:
{ "type": "string", "anyOf": [ { "pattern": "^a\\-b$" }, { "pattern": "^b\\-c$" } ] }
Comparing this schema with itself (command
jsonsubschema a.json a.json
) will throw an error. More specifically, the library greenery throws an error. It seems like greenery can not handle escaped characters. When you delete one of the pattern, everything works fine, because the problematic greenery method is not called. The error is also thrown for other escaped characters like "\ " (whitespace), "\." ...Best Regards
Michael
The text was updated successfully, but these errors were encountered: