diff --git a/lib/unique_head.rb b/lib/unique_head.rb index 1dbf518..e422217 100644 --- a/lib/unique_head.rb +++ b/lib/unique_head.rb @@ -1,5 +1,6 @@ # Unique header generation require 'middleman-core/renderers/redcarpet' +require 'digest' class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML def initialize super @@ -7,6 +8,12 @@ class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML end def header(text, header_level) friendly_text = text.gsub(/<[^<]+>/,"").parameterize + if friendly_text.strip.length == 0 + # Looks like parameterize removed the whole thing! It removes many unicode + # characters like Chinese and Russian. To get a unique URL, let's just + # URI escape the whole header + friendly_text = Digest::SHA1.hexdigest(text)[0,10] + end @head_count[friendly_text] ||= 0 @head_count[friendly_text] += 1 if @head_count[friendly_text] > 1 @@ -14,4 +21,4 @@ class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML end return "#{text}" end -end \ No newline at end of file +end