-def validate_page_range(p_string, arg_char):
- prefix = 'page range string'
- if '-' not in p_string:
- raise ArgFail(arg_char, f'{prefix} lacks "-": {p_string}')
- tokens = p_string.split('-')
- if len(tokens) > 2:
- raise ArgFail(arg_char, f'{prefix} has too many "-": {p_string}')
- for i, token in enumerate(tokens):
- if token == '':
- continue
- if i == 0 and token == 'start':
- continue
- if i == 1 and token == 'end':
- continue
- try:
- int(token)
- except ValueError:
- raise ArgFail(arg_char,
- f'{prefix} carries value neither integer, '
- f'nor "start", nor "end": {p_string}')
- if int(token) < 1:
- raise ArgFail(arg_char,
- f'{prefix} carries page number <1: {p_string}')
- start = -1
- end = -1
- try:
- start = int(tokens[0])
- end = int(tokens[1])
- except ValueError:
- pass
- if start > end > 0:
- raise ArgFail(arg_char,
- f'{prefix} has higher start than end value: {p_string}')
-
-