File tree 1 file changed +8
-1
lines changed
1 file changed +8
-1
lines changed Original file line number Diff line number Diff line change 1
1
# Unique header generation
2
2
require 'middleman-core/renderers/redcarpet'
3
+ require 'digest'
3
4
class UniqueHeadCounter < Middleman ::Renderers ::MiddlemanRedcarpetHTML
4
5
def initialize
5
6
super
6
7
@head_count = { }
7
8
end
8
9
def header ( text , header_level )
9
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
10
17
@head_count [ friendly_text ] ||= 0
11
18
@head_count [ friendly_text ] += 1
12
19
if @head_count [ friendly_text ] > 1
13
20
friendly_text += "-#{ @head_count [ friendly_text ] } "
14
21
end
15
22
return "<h#{ header_level } id='#{ friendly_text } '>#{ text } </h#{ header_level } >"
16
23
end
17
- end
24
+ end
You can’t perform that action at this time.
0 commit comments