lib/bhook/converter/html.rb in bhook-0.2.0 vs lib/bhook/converter/html.rb in bhook-0.2.1
- old
+ new
@@ -22,23 +22,30 @@
super(el, indent)
end
sig { params(el: Kramdown::Element, indent: Integer).returns(String) }
def convert_header(el, indent)
- header = super(el, indent)
src_title = el.options[:raw_text]
after_h1_html = @options[:after_h1_strategy].call(binding)
level = output_header_level(el.options[:level])
if level == 1
@options[:h1_callback].call(src_title)
- "#{header}#{' ' * indent}#{after_h1_html}"
+ "#{super(el, indent)}#{' ' * indent}#{after_h1_html}"
else
- header
+ insert_anchor_into_header!(el)
+ super(el, indent)
end
end
private
+
+ sig { params(el: Kramdown::Element).void }
+ def insert_anchor_into_header!(el)
+ el.attr['id'] = generate_id(el.options[:raw_text]) if @options[:auto_ids] && !el.attr['id']
+ anchor = Kramdown::Element.new(:a, '', { 'href' => "##{el.attr['id']}", 'class' => 'header-anchor' })
+ el.children << anchor
+ end
sig { params(href_path: String).returns(T::Boolean) }
def valid_relative_md_link?(href_path)
(href_path.end_with?('.md') || href_path.include?('.md#')) &&
Pathname.new(href_path).relative?