diff options
Diffstat (limited to 'lib/gitlab/user_extractor.rb')
-rw-r--r-- | lib/gitlab/user_extractor.rb | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/lib/gitlab/user_extractor.rb b/lib/gitlab/user_extractor.rb deleted file mode 100644 index ede60c9ab1d..00000000000 --- a/lib/gitlab/user_extractor.rb +++ /dev/null @@ -1,56 +0,0 @@ -# frozen_string_literal: true - -# This class extracts all users found in a piece of text by the username or the -# email address - -module Gitlab - class UserExtractor - # Not using `Devise.email_regexp` to filter out any chars that an email - # does not end with and not pinning the email to a start of end of a string. - EMAIL_REGEXP = /(?<email>([^@\s]+@[^@\s]+(?<!\W)))/.freeze - USERNAME_REGEXP = User.reference_pattern - - def initialize(text) - # EE passes an Array to `text` in a few places, so we want to support both - # here. - @text = Array(text).join(' ') - end - - def users - return User.none unless @text.present? - return User.none if references.empty? - - @users ||= User.from_union(union_relations) - end - - def usernames - matches[:usernames] - end - - def emails - matches[:emails] - end - - def references - @references ||= matches.values.flatten - end - - def matches - @matches ||= { - emails: @text.scan(EMAIL_REGEXP).flatten.uniq, - usernames: @text.scan(USERNAME_REGEXP).flatten.uniq - } - end - - private - - def union_relations - relations = [] - - relations << User.by_any_email(emails) if emails.any? - relations << User.by_username(usernames) if usernames.any? - - relations - end - end -end |