Class: Banzai::Filter::References::MergeRequestReferenceFilter
- Inherits:
-
IssuableReferenceFilter
- Object
- HTML::Pipeline::Filter
- ReferenceFilter
- AbstractReferenceFilter
- IssuableReferenceFilter
- Banzai::Filter::References::MergeRequestReferenceFilter
- Defined in:
- lib/banzai/filter/references/merge_request_reference_filter.rb
Overview
HTML filter that replaces merge request references with links. References to merge requests that do not exist are ignored.
This filter supports cross-project references.
Constant Summary
Constants inherited from AbstractReferenceFilter
AbstractReferenceFilter::REFERENCE_PLACEHOLDER, AbstractReferenceFilter::REFERENCE_PLACEHOLDER_PATTERN
Constants inherited from ReferenceFilter
ReferenceFilter::REFERENCE_TYPE_DATA_ATTRIBUTE
Instance Method Summary collapse
- #data_attributes_for(text, parent, object, **data) ⇒ Object
- #object_link_text_extras(object, matches) ⇒ Object
- #parent_records(parent, ids) ⇒ Object
- #reference_class(object_sym, tooltip: false) ⇒ Object
- #url_for_object(mr, project) ⇒ Object
Methods inherited from IssuableReferenceFilter
#find_object, #record_identifier
Methods inherited from AbstractReferenceFilter
#call, #find_object, #find_object_cached, #find_object_from_link, #find_object_from_link_cached, #from_ref_cached, #identifier, #initialize, #object_link_filter, #object_link_text, #object_link_title, #parent, #parent_type, #parse_symbol, #record_identifier, #references_in, #symbol_from_match, #url_for_object_cached, #wrap_link
Methods included from CrossProjectReference
Methods inherited from ReferenceFilter
call, #call, #call_and_update_nodes, #each_node, #group, #initialize, #nodes, #object_class, #project, #references_in, #requires_unescaping?
Methods included from OutputSafety
Methods included from RequestStoreReferenceCache
#cached_call, #get_or_set_cache
Constructor Details
This class inherits a constructor from Banzai::Filter::References::AbstractReferenceFilter
Instance Method Details
#data_attributes_for(text, parent, object, **data) ⇒ Object
53 54 55 |
# File 'lib/banzai/filter/references/merge_request_reference_filter.rb', line 53 def data_attributes_for(text, parent, object, **data) super.merge(project_path: parent.full_path, iid: object.iid) end |
#object_link_text_extras(object, matches) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/banzai/filter/references/merge_request_reference_filter.rb', line 19 def object_link_text_extras(object, matches) extras = super if commit_ref = object_link_commit_ref(object, matches) klass = reference_class(:commit, tooltip: false) commit_ref_tag = %(<span class="#{klass}">#{commit_ref}</span>) return extras.unshift(commit_ref_tag) end path = matches[:path] if matches.names.include?("path") case path when '/diffs' extras.unshift "diffs" when '/commits' extras.unshift "commits" when '/builds' extras.unshift "builds" end extras end |
#parent_records(parent, ids) ⇒ Object
43 44 45 46 47 |
# File 'lib/banzai/filter/references/merge_request_reference_filter.rb', line 43 def parent_records(parent, ids) parent.merge_requests .where(iid: ids.to_a) .includes(target_project: :namespace) end |
#reference_class(object_sym, tooltip: false) ⇒ Object
49 50 51 |
# File 'lib/banzai/filter/references/merge_request_reference_filter.rb', line 49 def reference_class(object_sym, tooltip: false) super end |
#url_for_object(mr, project) ⇒ Object
14 15 16 17 |
# File 'lib/banzai/filter/references/merge_request_reference_filter.rb', line 14 def url_for_object(mr, project) h = Gitlab::Routing.url_helpers h.project_merge_request_url(project, mr, only_path: context[:only_path]) end |