Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/reference_extractor.rb')
-rw-r--r--lib/gitlab/reference_extractor.rb94
1 files changed, 0 insertions, 94 deletions
diff --git a/lib/gitlab/reference_extractor.rb b/lib/gitlab/reference_extractor.rb
deleted file mode 100644
index a502a8fe9cd..00000000000
--- a/lib/gitlab/reference_extractor.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-module Gitlab
- # Extract possible GFM references from an arbitrary String for further processing.
- class ReferenceExtractor
- attr_accessor :project, :current_user, :references
-
- include ::Gitlab::Markdown
-
- def initialize(project, current_user = nil)
- @project = project
- @current_user = current_user
- end
-
- def can?(user, action, subject)
- Ability.abilities.allowed?(user, action, subject)
- end
-
- def analyze(text)
- text = text.dup
-
- # Remove preformatted/code blocks so that references are not included
- text.gsub!(%r{<pre>.*?</pre>|<code>.*?</code>}m) { |match| '' }
- text.gsub!(%r{^```.*?^```}m) { |match| '' }
-
- @references = Hash.new { |hash, type| hash[type] = [] }
- parse_references(text)
- end
-
- # Given a valid project, resolve the extracted identifiers of the requested type to
- # model objects.
-
- def users
- references[:user].uniq.map do |project, identifier|
- if identifier == "all"
- project.team.members.flatten
- elsif namespace = Namespace.find_by(path: identifier)
- if namespace.is_a?(Group)
- namespace.users
- else
- namespace.owner
- end
- end
- end.flatten.compact.uniq
- end
-
- def labels
- references[:label].uniq.map do |project, identifier|
- project.labels.where(id: identifier).first
- end.compact.uniq
- end
-
- def issues
- references[:issue].uniq.map do |project, identifier|
- if project.default_issues_tracker?
- project.issues.where(iid: identifier).first
- end
- end.compact.uniq
- end
-
- def merge_requests
- references[:merge_request].uniq.map do |project, identifier|
- project.merge_requests.where(iid: identifier).first
- end.compact.uniq
- end
-
- def snippets
- references[:snippet].uniq.map do |project, identifier|
- project.snippets.where(id: identifier).first
- end.compact.uniq
- end
-
- def commits
- references[:commit].uniq.map do |project, identifier|
- repo = project.repository
- repo.commit(identifier) if repo
- end.compact.uniq
- end
-
- def commit_ranges
- references[:commit_range].uniq.map do |project, identifier|
- repo = project.repository
- if repo
- from_id, to_id = identifier.split(/\.{2,3}/, 2)
- [repo.commit(from_id), repo.commit(to_id)]
- end
- end.compact.uniq
- end
-
- private
-
- def reference_link(type, identifier, project, _)
- references[type] << [project, identifier]
- end
- end
-end