diff options
Diffstat (limited to 'lib/banzai')
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>) |