json: support negative ranges in patterns
This commit is contained in:
parent
d1fda6f450
commit
478f62ef5c
1 changed files with 7 additions and 2 deletions
|
@ -149,8 +149,13 @@ class SchemaConverter:
|
||||||
elif c[0] == re._parser.RANGE:
|
elif c[0] == re._parser.RANGE:
|
||||||
return f'{self._format_range_char(chr(c[1][0]))}-{self._format_range_char(chr(c[1][1]))}'
|
return f'{self._format_range_char(chr(c[1][0]))}-{self._format_range_char(chr(c[1][1]))}'
|
||||||
else:
|
else:
|
||||||
raise ValueError(f'Unrecognized pattern: {c}')
|
raise ValueError(f'Unrecognized pattern: {c} (pattern = {pattern})')
|
||||||
return f'[{"".join(format_range_component(c) for c in pattern[1])}]'
|
components = pattern[1]
|
||||||
|
prefix = ''
|
||||||
|
if len(components) > 0 and components[0][0] == re._parser.NEGATE:
|
||||||
|
prefix = '^'
|
||||||
|
components = components[1:]
|
||||||
|
return f'[{prefix}{"".join(format_range_component(c) for c in components)}]'
|
||||||
|
|
||||||
elif pattern[0] == re._parser.BRANCH:
|
elif pattern[0] == re._parser.BRANCH:
|
||||||
return '(' + ' | '.join((visit(p) for p in pattern[1][1])) + ')'
|
return '(' + ' | '.join((visit(p) for p in pattern[1][1])) + ')'
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue