diff options
author | Douwe Maan <douwe@gitlab.com> | 2015-03-27 11:45:06 +0100 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2015-04-02 10:57:01 +0200 |
commit | d2bd60675913bba47a6c3fb43a282da6bfe20646 (patch) | |
tree | d609ba4bdb2a06103857e8ad771e99962e375902 /app | |
parent | ca58e369c9f2a72402cfcf4d86d29c115b1b909c (diff) | |
download | gitlab-ce-d2bd60675913bba47a6c3fb43a282da6bfe20646.tar.gz |
Refactor Mentionable mentioned users to use ReferenceExtractor.
Diffstat (limited to 'app')
-rw-r--r-- | app/models/concerns/mentionable.rb | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/app/models/concerns/mentionable.rb b/app/models/concerns/mentionable.rb index 52eb87d1dbc..db75a34f592 100644 --- a/app/models/concerns/mentionable.rb +++ b/app/models/concerns/mentionable.rb @@ -43,28 +43,17 @@ module Mentionable end def mentioned_users - users = [] - return users if mentionable_text.blank? - has_project = self.respond_to? :project - matches = mentionable_text.scan(/@[a-zA-Z][a-zA-Z0-9_\-\.]*/) - matches.each do |match| - identifier = match.delete "@" - if identifier == "all" - users.push(*project.team.members.flatten) - elsif namespace = Namespace.find_by(path: identifier) - if namespace.is_a?(Group) - users.push(*namespace.users) - else - users << namespace.owner - end - end - end - users.uniq + return [] if mentionable_text.blank? + + ext = Gitlab::ReferenceExtractor.new(self.project) + ext.analyze(text) + ext.users.uniq end # Extract GFM references to other Mentionables from this Mentionable. Always excludes its #local_reference. def references(p = project, text = mentionable_text) return [] if text.blank? + ext = Gitlab::ReferenceExtractor.new(p) ext.analyze(text) |