Пример #1
0
 public bool IsMatching(Author other)
 {
     return IsNameInAlternativesOrSelf(other.completeName) || other.Alternatives.Any(alternative => IsNameInAlternativesOrSelf(alternative.completeName));
 }
Пример #2
0
        private ISet<string> findAliasesForName(string authorName)
        {
            ISet<string> foundAliases = new HashSet<string>();
            foundAliases.Add(authorName);

            Author currentAuthor = new Author(authorName);
            if (null != currentAuthor.MailPart)
            {
                foundAliases.Add(currentAuthor.MailPart);
                string usernamepart = currentAuthor.MailPart.Split('@')[0];
                if (!IsNameVeryCommon(usernamepart))
                    foundAliases.Add(usernamepart);
                if (usernamepart.Contains('+'))
                {
                    string realUserNamePart = usernamepart.Split('+')[0];
                    if (!IsNameVeryCommon(realUserNamePart))
                        foundAliases.Add(realUserNamePart);
                }

                if (mailaddress2name.ContainsKey(currentAuthor.MailPart))
                    foreach (string alternativeName in mailaddress2name[currentAuthor.MailPart])
                        foundAliases.Add(alternativeName);

                if (mail2mail.ContainsKey(currentAuthor.MailPart))
                    foreach (string alternativeAddress in mail2mail[currentAuthor.MailPart])
                        if (alternativeAddress != currentAuthor.MailPart)
                            foundAliases.Add(alternativeAddress);
            }

            if (null != currentAuthor.NamePart)
            {
                if (!IsNameVeryCommon(currentAuthor.NamePart))
                    foundAliases.Add(currentAuthor.NamePart);

                if (name2name.ContainsKey(currentAuthor.NamePart))
                    foreach (string alternativeName in name2name[currentAuthor.NamePart])
                        if (alternativeName != currentAuthor.NamePart)
                            foundAliases.Add(alternativeName);

                if (name2mailaddress.ContainsKey(currentAuthor.NamePart))
                    foreach (string alternativeMail in name2mailaddress[currentAuthor.NamePart])
                        foundAliases.Add(alternativeMail);
            }

            if (null != currentAuthor.LoginNamePart)
                foundAliases.Add(currentAuthor.LoginNamePart);

            return foundAliases;
        }