23 lines
662 B
Ruby
23 lines
662 B
Ruby
|
# Nested unique header generation
|
||
|
require 'middleman-core/renderers/redcarpet'
|
||
|
|
||
|
class NestingUniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML
|
||
|
def initialize
|
||
|
super
|
||
|
@@headers_history = {} if !defined?(@@headers_history)
|
||
|
end
|
||
|
|
||
|
def header(text, header_level)
|
||
|
friendly_text = text.gsub(/<[^>]*>/,"").parameterize
|
||
|
@@headers_history[header_level] = text.parameterize
|
||
|
|
||
|
if header_level > 1
|
||
|
for i in (header_level - 1).downto(1)
|
||
|
friendly_text.prepend("#{@@headers_history[i]}-") if @@headers_history.key?(i)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return "<h#{header_level} id='#{friendly_text}'>#{text}</h#{header_level}>"
|
||
|
end
|
||
|
end
|