diff --git a/mercurial/utils/stringutil.py b/mercurial/utils/stringutil.py --- a/mercurial/utils/stringutil.py +++ b/mercurial/utils/stringutil.py @@ -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 ") + + >>> isauthorwellformed(b'Good Author ') + True + >>> isauthorwellformed(b'Author ') + True + >>> isauthorwellformed(b'Bad Author') + False + >>> isauthorwellformed(b'Bad Author >> isauthorwellformed(b'Bad Author author@author.com') + False + >>> isauthorwellformed(b'') + False + >>> isauthorwellformed(b'Bad 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='...')