Comments
Patch
@@ -308,3 +308,30 @@
False
'''
return _correctauthorformat.match(author) is not None
+
+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('.', ' ')
@@ -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):