Commit b58f0552 authored by Matthias Käppler's avatar Matthias Käppler

Merge branch 'add-field-data-key' into 'master'

Speed up checking whether fields are markdown fields or not

See merge request gitlab-org/gitlab!63405
parents bae768df 671f82ed
...@@ -27,7 +27,7 @@ module CacheMarkdownField ...@@ -27,7 +27,7 @@ module CacheMarkdownField
# Returns the default Banzai render context for the cached markdown field. # Returns the default Banzai render context for the cached markdown field.
def banzai_render_context(field) def banzai_render_context(field)
raise ArgumentError, "Unknown field: #{field.inspect}" unless raise ArgumentError, "Unknown field: #{field.inspect}" unless
cached_markdown_fields.markdown_fields.include?(field) cached_markdown_fields.key?(field)
# Always include a project key, or Banzai complains # Always include a project key, or Banzai complains
project = self.project if self.respond_to?(:project) project = self.project if self.respond_to?(:project)
...@@ -100,7 +100,7 @@ module CacheMarkdownField ...@@ -100,7 +100,7 @@ module CacheMarkdownField
def cached_html_for(markdown_field) def cached_html_for(markdown_field)
raise ArgumentError, "Unknown field: #{markdown_field}" unless raise ArgumentError, "Unknown field: #{markdown_field}" unless
cached_markdown_fields.markdown_fields.include?(markdown_field) cached_markdown_fields.key?(markdown_field)
__send__(cached_markdown_fields.html_field(markdown_field)) # rubocop:disable GitlabSecurity/PublicSend __send__(cached_markdown_fields.html_field(markdown_field)) # rubocop:disable GitlabSecurity/PublicSend
end end
...@@ -108,7 +108,7 @@ module CacheMarkdownField ...@@ -108,7 +108,7 @@ module CacheMarkdownField
# Updates the markdown cache if necessary, then returns the field # Updates the markdown cache if necessary, then returns the field
# Unlike `cached_html_for` it returns `nil` if the field does not exist # Unlike `cached_html_for` it returns `nil` if the field does not exist
def updated_cached_html_for(markdown_field) def updated_cached_html_for(markdown_field)
return unless cached_markdown_fields.markdown_fields.include?(markdown_field) return unless cached_markdown_fields.key?(markdown_field)
if attribute_invalidated?(cached_markdown_fields.html_field(markdown_field)) if attribute_invalidated?(cached_markdown_fields.html_field(markdown_field))
# Invalidated due to Markdown content change # Invalidated due to Markdown content change
......
...@@ -9,7 +9,7 @@ module Gitlab ...@@ -9,7 +9,7 @@ module Gitlab
@data = {} @data = {}
end end
delegate :[], :[]=, to: :@data delegate :[], :[]=, :key?, to: :@data
def markdown_fields def markdown_fields
@data.keys @data.keys
......
...@@ -12,4 +12,11 @@ RSpec.describe Gitlab::MarkdownCache::FieldData do ...@@ -12,4 +12,11 @@ RSpec.describe Gitlab::MarkdownCache::FieldData do
it 'translates a markdown field name into a html field name' do it 'translates a markdown field name into a html field name' do
expect(field_data.html_field(:description)).to eq("description_html") expect(field_data.html_field(:description)).to eq("description_html")
end end
describe '#key?' do
specify do
expect(field_data.key?(:description)).to be_truthy
expect(field_data.key?(:something_else)).to be_falsy
end
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment