debian-mirror-gitlab/lib/banzai/filter/color_filter.rb

37 lines
848 B
Ruby
Raw Normal View History

2018-11-18 11:00:15 +05:30
# frozen_string_literal: true
2018-03-17 18:26:18 +05:30
module Banzai
module Filter
# HTML filter that renders `color` followed by a color "chip".
#
class ColorFilter < HTML::Pipeline::Filter
2019-12-04 20:38:33 +05:30
COLOR_CHIP_CLASS = 'gfm-color_chip'
2018-03-17 18:26:18 +05:30
2021-06-02 17:11:27 +05:30
CSS = 'code'
XPATH = Gitlab::Utils::Nokogiri.css_to_xpath(CSS).freeze
2018-03-17 18:26:18 +05:30
def call
2021-06-02 17:11:27 +05:30
doc.xpath(XPATH).each do |node|
2018-03-17 18:26:18 +05:30
color = ColorParser.parse(node.content)
node << color_chip(color) if color
end
doc
end
private
def color_chip(color)
checkerboard = doc.document.create_element('span', class: COLOR_CHIP_CLASS)
chip = doc.document.create_element('span', style: inline_styles(color: color))
checkerboard << chip
end
def inline_styles(color:)
"background-color: #{color};"
end
end
end
end