Class: Nexmo::Markdown::BlockEscapeFilter

Inherits:
Banzai::Filter
  • Object
show all
Includes:
Concerns::PrismCodeSnippet
Defined in:
lib/nexmo_markdown_renderer/filters/block_escape_filter.rb

Instance Method Summary collapse

Methods included from Concerns::PrismCodeSnippet

#code_language_to_prism, #code_snippet_body, #prism_css_classes

Instance Method Details

#call(input) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/nexmo_markdown_renderer/filters/block_escape_filter.rb', line 6

def call(input)
  # Freeze to prevent Markdown formatting
  input.gsub(/````\n(.+?)````/m) do |_s|
    lexer = Rouge::Lexer.find('text')
    formatter = Rouge::Formatters::HTML.new
    highlighted_source = formatter.format(lexer.lex($1))

    output = code_snippet_body(lexer, highlighted_source)

    "FREEZESTART#{Base64.urlsafe_encode64(output)}FREEZEEND"
  end
end