mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix parselinenos() could not parse left half open range (cf. "-4")
This commit is contained in:
parent
8f4379ef91
commit
929e67ffca
1
CHANGES
1
CHANGES
@ -85,6 +85,7 @@ Bugs fixed
|
||||
* #3295: Could not import extension sphinx.builders.linkcheck
|
||||
* #3285: autosummary: asterisks are escaped twice
|
||||
* LaTeX, pass dvipdfm option to geometry package for Japanese documents (ref #3363)
|
||||
* Fix parselinenos() could not parse left half open range (cf. "-4")
|
||||
|
||||
|
||||
Release 1.5.1 (released Dec 13, 2016)
|
||||
|
@ -357,14 +357,17 @@ def parselinenos(spec, total):
|
||||
for part in parts:
|
||||
try:
|
||||
begend = part.strip().split('-')
|
||||
if len(begend) > 2:
|
||||
if ['', ''] == begend:
|
||||
raise ValueError
|
||||
if len(begend) == 1:
|
||||
elif len(begend) == 1:
|
||||
items.append(int(begend[0]) - 1)
|
||||
elif len(begend) == 2:
|
||||
start, end = begend
|
||||
start = start or 1 # left half open (cf. -10)
|
||||
end = end or total # right half open (cf. 10-)
|
||||
items.extend(range(int(start) - 1, int(end)))
|
||||
else:
|
||||
start = (begend[0] == '') and 0 or int(begend[0]) - 1
|
||||
end = (begend[1] == '') and total or int(begend[1])
|
||||
items.extend(range(start, end))
|
||||
raise ValueError
|
||||
except Exception:
|
||||
raise ValueError('invalid line number spec: %r' % spec)
|
||||
return items
|
||||
|
@ -56,6 +56,7 @@ def test_splitdocinfo():
|
||||
def test_parselinenos():
|
||||
assert parselinenos('1,2,3', 10) == [0, 1, 2]
|
||||
assert parselinenos('4, 5, 6', 10) == [3, 4, 5]
|
||||
assert parselinenos('-4', 10) == [0, 1, 2, 3]
|
||||
assert parselinenos('7-9', 10) == [6, 7, 8]
|
||||
assert parselinenos('7-', 10) == [6, 7, 8, 9]
|
||||
assert parselinenos('1,7-', 10) == [0, 6, 7, 8, 9]
|
||||
|
Loading…
Reference in New Issue
Block a user