Class: Nexmo::Markdown::HeadingFilter

Inherits:
Banzai::Filter
  • Object
show all
Defined in:
lib/nexmo_markdown_renderer/filters/heading_filter.rb

Instance Method Summary collapse

Instance Method Details

#call(input) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/nexmo_markdown_renderer/filters/heading_filter.rb', line 4

def call(input)
  @input = input
  @headings = []
  heading_tag_list = %w[h1 h2 h3 h4 h5 h6]
  headings = document.children.select do |child|
    heading_tag_list.include? child.name
  end
    
  headings.each do |heading|
    parameterized_heading = parameterized_heading_without_collision(heading)
    heading['id'] = parameterized_heading
    heading['data-id'] = SecureRandom.hex
    heading['class'] = heading[:class]
    heading['class'] += ' Vlt-title--icon'
    
    heading.prepend_child <<~HEREDOC
      <a href="##{parameterized_heading}" class="heading-permalink">
        <svg class="Vlt-grey"><use xlink:href=\"/symbol/volta-icons.svg#Vlt-icon-link\" /></svg>
      </a>
    HEREDOC
  end
    
  @document.to_html
end