stringutil: move person function from templatefilters
Move the person function from template filters to the stringutil
module, so it can be reused in the mailmap template function.
Differential Revision: https://phab.mercurial-scm.org/D2960
--- a/mercurial/templatefilters.py Thu Mar 22 09:48:22 2018 -0400
+++ b/mercurial/templatefilters.py Tue Mar 27 11:01:13 2018 -0400
@@ -292,29 +292,8 @@
def person(author):
"""Any text. Returns the name before an email address,
interpreting it as per RFC 5322.
-
- >>> person(b'foo@bar')
- 'foo'
- >>> person(b'Foo Bar <foo@bar>')
- 'Foo Bar'
- >>> person(b'"Foo Bar" <foo@bar>')
- 'Foo Bar'
- >>> person(b'"Foo \"buz\" Bar" <foo@bar>')
- 'Foo "buz" Bar'
- >>> # The following are invalid, but do exist in real-life
- ...
- >>> person(b'Foo "buz" Bar <foo@bar>')
- 'Foo "buz" Bar'
- >>> person(b'"Foo Bar <foo@bar>')
- 'Foo Bar'
"""
- if '@' not in author:
- return author
- f = author.find('<')
- if f != -1:
- return author[:f].strip(' "').replace('\\"', '"')
- f = author.find('@')
- return author[:f].replace('.', ' ')
+ return stringutil.person(author)
@templatefilter('revescape')
def revescape(text):
--- a/mercurial/utils/stringutil.py Thu Mar 22 09:48:22 2018 -0400
+++ b/mercurial/utils/stringutil.py Tue Mar 27 11:01:13 2018 -0400
@@ -131,6 +131,33 @@
r = None
return author[author.find('<') + 1:r]
+def person(author):
+ """Returns the name before an email address,
+ interpreting it as per RFC 5322
+
+ >>> person(b'foo@bar')
+ 'foo'
+ >>> person(b'Foo Bar <foo@bar>')
+ 'Foo Bar'
+ >>> person(b'"Foo Bar" <foo@bar>')
+ 'Foo Bar'
+ >>> person(b'"Foo \"buz\" Bar" <foo@bar>')
+ 'Foo "buz" Bar'
+ >>> # The following are invalid, but do exist in real-life
+ ...
+ >>> person(b'Foo "buz" Bar <foo@bar>')
+ 'Foo "buz" Bar'
+ >>> person(b'"Foo Bar <foo@bar>')
+ 'Foo Bar'
+ """
+ if '@' not in author:
+ return author
+ f = author.find('<')
+ if f != -1:
+ return author[:f].strip(' "').replace('\\"', '"')
+ f = author.find('@')
+ return author[:f].replace('.', ' ')
+
_correctauthorformat = remod.compile(br'^[^<]+\s\<[^<>]+@[^<>]+\>$')
def isauthorwellformed(author):