Skip to content

Commit 48807d7

Browse files
committed
Fix #837 Chinese, Russian headers, thx finalnova
1 parent 7ef0fd4 commit 48807d7

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

lib/unique_head.rb

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
# Unique header generation
22
require 'middleman-core/renderers/redcarpet'
3+
require 'digest'
34
class UniqueHeadCounter < Middleman::Renderers::MiddlemanRedcarpetHTML
45
def initialize
56
super
67
@head_count = {}
78
end
89
def header(text, header_level)
910
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
1017
@head_count[friendly_text] ||= 0
1118
@head_count[friendly_text] += 1
1219
if @head_count[friendly_text] > 1
1320
friendly_text += "-#{@head_count[friendly_text]}"
1421
end
1522
return "<h#{header_level} id='#{friendly_text}'>#{text}</h#{header_level}>"
1623
end
17-
end
24+
end

0 commit comments

Comments
 (0)