diff mercurial/util.py @ 31667:080734cd2440

revset: factor out linerange processing into a utility function Similar processing will be done in hgweb.webutil in forthcoming changeset.
author Denis Laxalde <denis.laxalde@logilab.fr>
date Fri, 24 Feb 2017 18:39:08 +0100
parents 32f09ead059b
children 1ed57a7dd904
line wrap: on
line diff
--- a/mercurial/util.py	Mon Mar 13 10:41:13 2017 +0100
+++ b/mercurial/util.py	Fri Feb 24 18:39:08 2017 +0100
@@ -2160,6 +2160,27 @@
 
     return go
 
+def processlinerange(fromline, toline):
+    """Check that linerange <fromline>:<toline> makes sense and return a
+    0-based range.
+
+    >>> processlinerange(10, 20)
+    (9, 20)
+    >>> processlinerange(2, 1)
+    Traceback (most recent call last):
+        ...
+    ParseError: line range must be positive
+    >>> processlinerange(0, 5)
+    Traceback (most recent call last):
+        ...
+    ParseError: fromline must be strictly positive
+    """
+    if toline - fromline < 0:
+        raise error.ParseError(_("line range must be positive"))
+    if fromline < 1:
+        raise error.ParseError(_("fromline must be strictly positive"))
+    return fromline - 1, toline
+
 bytecount = unitcountfn(
     (100, 1 << 30, _('%.0f GB')),
     (10, 1 << 30, _('%.1f GB')),