summaryrefslogtreecommitdiff
path: root/lib/banzai/filter/references/reference_filter.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/banzai/filter/references/reference_filter.rb')
-rw-r--r--lib/banzai/filter/references/reference_filter.rb12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/banzai/filter/references/reference_filter.rb b/lib/banzai/filter/references/reference_filter.rb
index 97ef71036a2..37734f6a45a 100644
--- a/lib/banzai/filter/references/reference_filter.rb
+++ b/lib/banzai/filter/references/reference_filter.rb
@@ -15,6 +15,8 @@ module Banzai
include RequestStoreReferenceCache
include OutputSafety
+ REFERENCE_TYPE_DATA_ATTRIBUTE = 'data-reference-type='
+
class << self
# Implement in child class
# Example: self.reference_type = :merge_request
@@ -132,13 +134,19 @@ module Banzai
def data_attribute(attributes = {})
attributes = attributes.reject { |_, v| v.nil? }
- attributes[:reference_type] ||= self.class.reference_type
+ # "data-reference-type=" attribute got moved into a constant because we need
+ # to use it on ReferenceRewriter class to detect if the markdown contains any reference
+ reference_type_attribute = "#{REFERENCE_TYPE_DATA_ATTRIBUTE}#{escape_once(self.class.reference_type)} "
+
attributes[:container] ||= 'body'
attributes[:placement] ||= 'top'
attributes.delete(:original) if context[:no_original_data]
+
attributes.map do |key, value|
%Q(data-#{key.to_s.dasherize}="#{escape_once(value)}")
- end.join(' ')
+ end
+ .join(' ')
+ .prepend(reference_type_attribute)
end
def ignore_ancestor_query