1# frozen_string_literal: true
2
3# Generated HTML is transformed back to GFM by app/assets/javascripts/behaviors/markdown/nodes/code_block.js
4module Banzai
5  module Filter
6    class SuggestionFilter < HTML::Pipeline::Filter
7      # Class used for tagging elements that should be rendered
8      TAG_CLASS = 'js-render-suggestion'
9
10      CSS   = 'pre.language-suggestion > code'
11      XPATH = Gitlab::Utils::Nokogiri.css_to_xpath(CSS).freeze
12
13      def call
14        return doc unless suggestions_filter_enabled?
15
16        doc.xpath(XPATH).each do |node|
17          node.add_class(TAG_CLASS)
18        end
19
20        doc
21      end
22
23      def suggestions_filter_enabled?
24        context[:suggestions_filter_enabled]
25      end
26
27      private
28
29      def project
30        context[:project]
31      end
32    end
33  end
34end
35