stringutil: add isauthorwellformed function
The regular expression for this function formerly lived at
https://hg.mozilla.org/hgcustom/version-control-tools/file/tip/hghooks/mozhghooks/author_format.py#l13
Differential Revision: https://phab.mercurial-scm.org/D2959
--- a/mercurial/utils/stringutil.py Sat Mar 17 02:37:46 2018 -0400
+++ b/mercurial/utils/stringutil.py Thu Mar 22 09:48:22 2018 -0400
@@ -131,6 +131,29 @@
r = None
return author[author.find('<') + 1:r]
+_correctauthorformat = remod.compile(br'^[^<]+\s\<[^<>]+@[^<>]+\>$')
+
+def isauthorwellformed(author):
+ '''Return True if the author field is well formed
+ (ie "Contributor Name <contrib@email.dom>")
+
+ >>> isauthorwellformed(b'Good Author <good@author.com>')
+ True
+ >>> isauthorwellformed(b'Author <good@author.com>')
+ True
+ >>> isauthorwellformed(b'Bad Author')
+ False
+ >>> isauthorwellformed(b'Bad Author <author@author.com')
+ False
+ >>> isauthorwellformed(b'Bad Author author@author.com')
+ False
+ >>> isauthorwellformed(b'<author@author.com>')
+ False
+ >>> isauthorwellformed(b'Bad Author <author>')
+ False
+ '''
+ return _correctauthorformat.match(author) is not None
+
def ellipsis(text, maxlength=400):
"""Trim string to at most maxlength (default: 400) columns in display."""
return encoding.trim(text, maxlength, ellipsis='...')