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/banzai')
-rw-r--r--lib/banzai/filter/references/commit_reference_filter.rb7
-rw-r--r--lib/banzai/filter/references/issue_reference_filter.rb8
-rw-r--r--lib/banzai/filter/references/merge_request_reference_filter.rb16
-rw-r--r--lib/banzai/filter/syntax_highlight_filter.rb1
4 files changed, 18 insertions, 14 deletions
diff --git a/lib/banzai/filter/references/commit_reference_filter.rb b/lib/banzai/filter/references/commit_reference_filter.rb
index 157dc696cc8..86ab8597cf5 100644
--- a/lib/banzai/filter/references/commit_reference_filter.rb
+++ b/lib/banzai/filter/references/commit_reference_filter.rb
@@ -19,7 +19,12 @@ module Banzai
def find_object(project, id)
return unless project.is_a?(Project) && project.valid_repo?
- _, record = reference_cache.records_per_parent[project].detect { |k, _v| Gitlab::Git.shas_eql?(k, id) }
+ # Optimization: try exact commit hash match first
+ record = reference_cache.records_per_parent[project].fetch(id, nil)
+
+ unless record
+ _, record = reference_cache.records_per_parent[project].detect { |k, _v| Gitlab::Git.shas_eql?(k, id) }
+ end
record
end
diff --git a/lib/banzai/filter/references/issue_reference_filter.rb b/lib/banzai/filter/references/issue_reference_filter.rb
index 337075b7ff8..b536d900a02 100644
--- a/lib/banzai/filter/references/issue_reference_filter.rb
+++ b/lib/banzai/filter/references/issue_reference_filter.rb
@@ -29,6 +29,14 @@ module Banzai
super + design_link_extras(issue, matches.named_captures['path'])
end
+ def reference_class(object_sym, tooltip: false)
+ super
+ end
+
+ def data_attributes_for(text, parent, object, **data)
+ super.merge(project_path: parent.full_path, iid: object.iid)
+ end
+
private
def additional_object_attributes(issue)
diff --git a/lib/banzai/filter/references/merge_request_reference_filter.rb b/lib/banzai/filter/references/merge_request_reference_filter.rb
index 6c5ad83d9ae..5bc18ee6985 100644
--- a/lib/banzai/filter/references/merge_request_reference_filter.rb
+++ b/lib/banzai/filter/references/merge_request_reference_filter.rb
@@ -17,12 +17,6 @@ module Banzai
only_path: context[:only_path])
end
- def object_link_title(object, matches)
- # The method will return `nil` if object is not a commit
- # allowing for properly handling the extended MR Tooltip
- object_link_commit_title(object, matches)
- end
-
def object_link_text_extras(object, matches)
extras = super
@@ -53,20 +47,16 @@ module Banzai
.includes(target_project: :namespace)
end
- def reference_class(object_sym, options = {})
- super(object_sym, tooltip: false)
+ def reference_class(object_sym, tooltip: false)
+ super
end
def data_attributes_for(text, parent, object, **data)
- super.merge(project_path: parent.full_path, iid: object.iid, mr_title: object.title)
+ super.merge(project_path: parent.full_path, iid: object.iid)
end
private
- def object_link_commit_title(object, matches)
- object_link_commit(object, matches)&.title
- end
-
def object_link_commit_ref(object, matches)
object_link_commit(object, matches)&.short_id
end
diff --git a/lib/banzai/filter/syntax_highlight_filter.rb b/lib/banzai/filter/syntax_highlight_filter.rb
index bcd9f39d1dc..7175e99f1c7 100644
--- a/lib/banzai/filter/syntax_highlight_filter.rb
+++ b/lib/banzai/filter/syntax_highlight_filter.rb
@@ -60,6 +60,7 @@ module Banzai
highlighted = %(<div class="gl-relative markdown-code-block js-markdown-code"><pre #{sourcepos_attr} class="#{css_classes}"
lang="#{language}"
+ #{lang != language ? "data-canonical-lang=\"#{escape_once(lang)}\"" : ""}
#{lang_params}
v-pre="true"><code>#{code}</code></pre><copy-code></copy-code></div>)