github.com/shyftnetwork/go-empyrean@v1.8.3-0.20191127201940-fbfca9338f04/shyft_documentation/lib/unique_head.rb (about)

     1  # Unique header generation
     2  require 'middleman-core/renderers/redcarpet'
     3  require 'digest'
     4  class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML
     5    def initialize
     6      super
     7      @head_count = {}
     8    end
     9    def header(text, header_level)
    10      friendly_text = text.gsub(/<[^<]+>/,"").parameterize
    11      if friendly_text.strip.length == 0
    12        # Looks like parameterize removed the whole thing! It removes many unicode
    13        # characters like Chinese and Russian. To get a unique URL, let's just
    14        # URI escape the whole header
    15        friendly_text = Digest::SHA1.hexdigest(text)[0,10]
    16      end
    17      @head_count[friendly_text] ||= 0
    18      @head_count[friendly_text] += 1
    19      if @head_count[friendly_text] > 1
    20        friendly_text += "-#{@head_count[friendly_text]}"
    21      end
    22      return "<h#{header_level} id='#{friendly_text}'>#{text}</h#{header_level}>"
    23    end
    24  end