Class: Redcarpet::Render::Custom

Inherits:
HTML
  • Object
show all
Defined in:
lib/redcarpet_custom.rb

Instance Method Summary collapse

Instance Method Details

#header(title, level) ⇒ Object

include Redcarpet::Render::HTML



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/redcarpet_custom.rb', line 5

def header(title, level)
  @headers ||= []
  # you can use this permalink style: 1-foo-bar with the level in it
  # permalink = "#{level}-#{title.gsub(/\W+/, "-")}"
  
  # .. or just use title. you might like a better regex here, too
  permalink = title.gsub(/\W+/, "-").downcase
  
  # for extra credit: implement this as its own method
  if @headers.include?(permalink)
    permalink += "_1"
     # my brain hurts
    loop do
      break if !@headers.include?(permalink)
      # generate titles like foo-bar_1, foo-bar_2
      permalink.gsub!(/\_(\d+)$/, "_#{$1.to_i + 1}")
    end
  end
  @headers << permalink
  %(\n<h#{level} id=\"#{permalink}\"><a name="#{permalink}" class="anchor" href="##{permalink}"></a>#{title}</h#{level}>\n)
end