diff options
author | Sean McGivern <sean@gitlab.com> | 2018-08-29 16:38:42 +0300 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2018-09-17 14:36:53 +0300 |
commit | 9357585ecacacfa0618b4f4172d5ea7dd0b1c5ae (patch) | |
tree | a2fb60da46404df95705f2ce9f6a1be49cfa47aa /app | |
parent | 896c89e71dcc19d742f8609ed7f81c765c399c8e (diff) |
Remove EE-specific code from Mentionable
Diffstat (limited to 'app')
-rw-r--r-- | app/models/concerns/mentionable.rb | 13 | ||||
-rw-r--r-- | app/models/concerns/mentionable/reference_regexes.rb | 12 | ||||
-rw-r--r-- | app/models/epic.rb | 4 |
3 files changed, 23 insertions, 6 deletions
diff --git a/app/models/concerns/mentionable.rb b/app/models/concerns/mentionable.rb index 393607e82c4..298d0d42d90 100644 --- a/app/models/concerns/mentionable.rb +++ b/app/models/concerns/mentionable.rb @@ -61,7 +61,7 @@ module Mentionable cache_key: [self, attr], author: author, skip_project_check: skip_project_check? - ) + ).merge(mentionable_params) extractor.analyze(text, options) end @@ -86,12 +86,11 @@ module Mentionable return [] unless matches_cross_reference_regex? refs = all_references(current_user) - refs = (refs.issues + refs.merge_requests + refs.commits) # We're using this method instead of Array diffing because that requires # both of the object's `hash` values to be the same, which may not be the # case for otherwise identical Commit objects. - refs.reject { |ref| ref == local_reference } + extracted_mentionables(refs).reject { |ref| ref == local_reference } end # Uses regex to quickly determine if mentionables might be referenced @@ -134,6 +133,10 @@ module Mentionable private + def extracted_mentionables(refs) + refs.issues + refs.merge_requests + refs.commits + end + # Returns a Hash of changed mentionable fields # # Preference is given to the `changes` Hash, but falls back to @@ -161,4 +164,8 @@ module Mentionable def skip_project_check? false end + + def mentionable_params + {} + end end diff --git a/app/models/concerns/mentionable/reference_regexes.rb b/app/models/concerns/mentionable/reference_regexes.rb index f6fd28bac33..fe8fbb71184 100644 --- a/app/models/concerns/mentionable/reference_regexes.rb +++ b/app/models/concerns/mentionable/reference_regexes.rb @@ -5,13 +5,19 @@ module Mentionable def self.reference_pattern(link_patterns, issue_pattern) Regexp.union(link_patterns, issue_pattern, - Commit.reference_pattern, - MergeRequest.reference_pattern) + *other_patterns) + end + + def self.other_patterns + [ + Commit.reference_pattern, + MergeRequest.reference_pattern + ] end DEFAULT_PATTERN = begin issue_pattern = Issue.reference_pattern - link_patterns = Regexp.union([Issue, Commit, MergeRequest].map(&:link_reference_pattern)) + link_patterns = Regexp.union([Issue, Commit, MergeRequest, Epic].map(&:link_reference_pattern).compact) reference_pattern(link_patterns, issue_pattern) end diff --git a/app/models/epic.rb b/app/models/epic.rb index f027993376c..ccd10593434 100644 --- a/app/models/epic.rb +++ b/app/models/epic.rb @@ -3,6 +3,10 @@ # Placeholder class for model that is implemented in EE # It reserves '&' as a reference prefix, but the table does not exists in CE class Epic < ActiveRecord::Base + def self.link_reference_pattern + nil + end + def self.reference_prefix '&' end |