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