~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/config.py

  • Committer: Daniel Watkins
  • Date: 2007-11-17 17:22:08 UTC
  • mto: This revision was merged to the branch mainline in revision 3013.
  • Revision ID: d.m.watkins@warwick.ac.uk-20071117172208-m47tdnnatvm2ir2u
Modified fix as suggested by John on-list.

Show diffs side-by-side

added added

removed removed

Lines of Context:
84
84
    urlutils,
85
85
    win32utils,
86
86
    )
87
 
from bzrlib.util.configobj import configobj
 
87
import bzrlib.util.configobj.configobj as configobj
88
88
""")
89
89
 
90
90
 
759
759
        if base is None:
760
760
            base = os.environ.get('HOME', None)
761
761
        if base is None:
762
 
            raise errors.BzrError('You must have one of BZR_HOME, APPDATA,'
763
 
                                  ' or HOME set')
 
762
            raise errors.BzrError('You must have one of BZR_HOME, APPDATA, or HOME set')
764
763
        return osutils.pathjoin(base, 'bazaar', '2.0')
765
764
    else:
766
765
        # cygwin, linux, and darwin all have a $HOME directory
862
861
    return realname, (username + '@' + socket.gethostname())
863
862
 
864
863
 
865
 
def parse_username(username):
866
 
    """Parse e-mail username and return a (name, address) tuple."""
867
 
    match = re.match(r'(.*?)\s*<?([\w+.-]+@[\w+.-]+)>?', username)
868
 
    if match is None:
869
 
        return (username, '')
870
 
    else:
871
 
        return (match.group(1), match.group(2))
872
 
 
873
 
 
874
864
def extract_email_address(e):
875
865
    """Return just the address part of an email string.
876
 
 
 
866
    
877
867
    That is just the user@domain part, nothing else. 
878
868
    This part is required to contain only ascii characters.
879
869
    If it can't be extracted, raises an error.
880
 
 
 
870
    
881
871
    >>> extract_email_address('Jane Tester <jane@test.com>')
882
872
    "jane@test.com"
883
873
    """
884
 
    name, email = parse_username(e)
885
 
    if not email:
 
874
    m = re.search(r'[\w+.-]+@[\w+.-]+', e)
 
875
    if not m:
886
876
        raise errors.NoEmailInUsername(e)
887
 
    return email
 
877
    return m.group(0)
888
878
 
889
879
 
890
880
class TreeConfig(IniBasedConfig):