/lib/banzai/filter/merge_request_reference_filter.rb

https://gitlab.com/vicvega/gitlab-ce · Ruby · 41 lines · 31 code · 6 blank · 4 comment · 1 complexity · 1bed0c8269d63a5a856171418a868607 MD5 · raw file

  1. module Banzai
  2. module Filter
  3. # HTML filter that replaces merge request references with links. References
  4. # to merge requests that do not exist are ignored.
  5. #
  6. # This filter supports cross-project references.
  7. class MergeRequestReferenceFilter < AbstractReferenceFilter
  8. self.reference_type = :merge_request
  9. def self.object_class
  10. MergeRequest
  11. end
  12. def find_object(project, id)
  13. project.merge_requests.find_by(iid: id)
  14. end
  15. def url_for_object(mr, project)
  16. h = Gitlab::Routing.url_helpers
  17. h.namespace_project_merge_request_url(project.namespace, project, mr,
  18. only_path: context[:only_path])
  19. end
  20. def object_link_text_extras(object, matches)
  21. extras = super
  22. path = matches[:path] if matches.names.include?("path")
  23. case path
  24. when '/diffs'
  25. extras.unshift "diffs"
  26. when '/commits'
  27. extras.unshift "commits"
  28. when '/builds'
  29. extras.unshift "builds"
  30. end
  31. extras
  32. end
  33. end
  34. end
  35. end