Class: Banzai::Filter::MarkdownPostEscapeFilter

Inherits:
HTML::Pipeline::Filter
  • Object
show all
Defined in:
lib/banzai/filter/markdown_post_escape_filter.rb

Overview

See comments in MarkdownPreEscapeFilter for details on strategy

Constant Summary collapse

LITERAL_KEYWORD =
MarkdownPreEscapeFilter::LITERAL_KEYWORD
LITERAL_REGEX =
%r{#{LITERAL_KEYWORD}-(.*?)-#{LITERAL_KEYWORD}}
NOT_LITERAL_REGEX =
%r{#{LITERAL_KEYWORD}-((%5C|\\).+?)-#{LITERAL_KEYWORD}}
SPAN_REGEX =
%r{<span data-escaped-char>(.*?)</span>}
XPATH_A =
Gitlab::Utils::Nokogiri.css_to_xpath('a').freeze
XPATH_LANG_TAG =
Gitlab::Utils::Nokogiri.css_to_xpath('pre').freeze
XPATH_ESCAPED_CHAR =
Gitlab::Utils::Nokogiri.css_to_xpath('span[data-escaped-char]').freeze

Instance Method Summary collapse

Instance Method Details

#callObject



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

def call
  return doc unless result[:escaped_literals]

  new_html = unescaped_literals(doc.to_html)
  new_html = add_spans(new_html)

  @doc = parse_html(new_html)

  remove_spans_in_certain_attributes
  remove_unnecessary_escapes

  doc
end