mercurial/utils/stringutil.py
changeset 37245 54b896f195d1
parent 37210 2a2ce93e12f4
child 37246 0e7550b0964c
equal deleted inserted replaced
37244:3685a79ea51b 37245:54b896f195d1
   200         # Don't bother checking the line if it is a comment or
   200         # Don't bother checking the line if it is a comment or
   201         # is an improperly formed author field
   201         # is an improperly formed author field
   202         if line.lstrip().startswith('#') or any(c not in line for c in '<>@'):
   202         if line.lstrip().startswith('#') or any(c not in line for c in '<>@'):
   203             continue
   203             continue
   204 
   204 
   205         # name, email hold the parsed emails and names for each line
   205         # names, emails hold the parsed emails and names for each line
   206         # name_builder holds the words in a persons name
   206         # name_builder holds the words in a persons name
   207         name, email = [], []
   207         names, emails = [], []
   208         namebuilder = []
   208         namebuilder = []
   209 
   209 
   210         for element in line.split():
   210         for element in line.split():
   211             if element.startswith('#'):
   211             if element.startswith('#'):
   212                 # If we reach a comment in the mailmap file, move on
   212                 # If we reach a comment in the mailmap file, move on
   213                 break
   213                 break
   214 
   214 
   215             elif element.startswith('<') and element.endswith('>'):
   215             elif element.startswith('<') and element.endswith('>'):
   216                 # We have found an email.
   216                 # We have found an email.
   217                 # Parse it, and finalize any names from earlier
   217                 # Parse it, and finalize any names from earlier
   218                 email.append(element[1:-1])  # Slice off the "<>"
   218                 emails.append(element[1:-1])  # Slice off the "<>"
   219 
   219 
   220                 if namebuilder:
   220                 if namebuilder:
   221                     name.append(' '.join(namebuilder))
   221                     names.append(' '.join(namebuilder))
   222                     namebuilder = []
   222                     namebuilder = []
   223 
   223 
   224                 # Break if we have found a second email, any other
   224                 # Break if we have found a second email, any other
   225                 # data does not fit the spec for .mailmap
   225                 # data does not fit the spec for .mailmap
   226                 if len(email) > 1:
   226                 if len(emails) > 1:
   227                     break
   227                     break
   228 
   228 
   229             else:
   229             else:
   230                 # We have found another word in the committers name
   230                 # We have found another word in the committers name
   231                 namebuilder.append(element)
   231                 namebuilder.append(element)
   232 
   232 
   233         mailmapkey = mailmapping(
   233         mailmapkey = mailmapping(
   234             email=email[-1],
   234             email=emails[-1],
   235             name=name[-1] if len(name) == 2 else None,
   235             name=names[-1] if len(names) == 2 else None,
   236         )
   236         )
   237 
   237 
   238         mailmap[mailmapkey] = mailmapping(
   238         mailmap[mailmapkey] = mailmapping(
   239             email=email[0],
   239             email=emails[0],
   240             name=name[0] if name else None,
   240             name=names[0] if names else None,
   241         )
   241         )
   242 
   242 
   243     return mailmap
   243     return mailmap
   244 
   244 
   245 def mapname(mailmap, author):
   245 def mapname(mailmap, author):