def call
result[:toc] = String.new('')
headers = Hash.new(1)
doc.css('h1, h2, h3, h4, h5, h6').each do |node|
text = node.text
id = ascii_downcase(text)
id.gsub!(PUNCTUATION_REGEXP, '')
id.tr!(' ', '-')
uniq = headers[id] > 1 ? "-#{headers[id]}" : ''
headers[id] += 1
if header_content = node.children.first
result[:toc] << %(<li><a href="##{id}#{uniq}">#{CGI.escape_html(text)}</a></li>\n)
header_content.add_previous_sibling(%(<a id="#{id}#{uniq}" class="anchor" href="##{id}#{uniq}" aria-hidden="true">#{anchor_icon}</a>))
end
end
result[:toc] = %(<ul class="section-nav">\n#{result[:toc]}</ul>) unless result[:toc].empty?
doc
end