summaryrefslogtreecommitdiff
path: root/lib/gitlab/markdown_cache/field_data.rb
blob: 14622c0f186375396f300ce27af187374c62eadf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# frozen_string_literal: true

module Gitlab
  module MarkdownCache
    # Knows about the relationship between markdown and html field names, and
    # stores the rendering contexts for the latter
    class FieldData
      def initialize
        @data = {}
      end

      delegate :[], :[]=, to: :@data

      def markdown_fields
        @data.keys
      end

      def html_field(markdown_field)
        "#{markdown_field}_html"
      end

      def html_fields
        @html_fields ||= markdown_fields.map { |field| html_field(field) }
      end

      def html_fields_whitelisted
        markdown_fields.each_with_object([]) do |field, fields|
          if @data[field].fetch(:whitelisted, false)
            fields << html_field(field)
          end
        end
      end
    end
  end
end