Class: Banzai::Filter::ColorFilter

Inherits:
HTML::Pipeline::Filter
  • Object
show all
Includes:
Banzai::Filter::Concerns::PipelineTimingCheck
Defined in:
lib/banzai/filter/color_filter.rb

Overview

HTML filter that renders color followed by a color “chip”.

Constant Summary collapse

COLOR_CHIP_CLASS =
'gfm-color_chip'
CSS =
'code'
XPATH =
Gitlab::Utils::Nokogiri.css_to_xpath(CSS).freeze
BACKSLASH_PREFIX =
'\\'

Constants included from Banzai::Filter::Concerns::PipelineTimingCheck

Banzai::Filter::Concerns::PipelineTimingCheck::MAX_PIPELINE_SECONDS

Instance Method Summary collapse

Methods included from Banzai::Filter::Concerns::PipelineTimingCheck

#exceeded_pipeline_max?

Instance Method Details

#callObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/banzai/filter/color_filter.rb', line 16

def call
  doc.xpath(XPATH).each do |node|
    unescaped = node.content.delete_prefix(BACKSLASH_PREFIX)
    color = ColorParser.parse(unescaped)

    if node.content.start_with?(BACKSLASH_PREFIX) && color
      node.content = unescaped
    elsif color
      node << color_chip(color)
    end
  end

  doc
end