Fix #837 Chinese, Russian headers, thx finalnova

This commit is contained in:
Robert Lord 2017-11-23 10:40:00 -08:00
parent 7ef0fd4327
commit 48807d74c9

View file

@ -1,5 +1,6 @@
# Unique header generation # Unique header generation
require 'middleman-core/renderers/redcarpet' require 'middleman-core/renderers/redcarpet'
require 'digest'
class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML
def initialize def initialize
super super
@ -7,6 +8,12 @@ class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML
end end
def header(text, header_level) def header(text, header_level)
friendly_text = text.gsub(/<[^<]+>/,"").parameterize 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] ||= 0
@head_count[friendly_text] += 1 @head_count[friendly_text] += 1
if @head_count[friendly_text] > 1 if @head_count[friendly_text] > 1