Class: Redcarpet::Render::Custom

Inherits:
Base
  • Object
show all
Defined in:
lib/mdpreview/markdown_render.rb,
lib/mdpreview/translator.rb

Instance Method Summary collapse

Instance Method Details

#header(title, level) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/mdpreview/markdown_render.rb', line 8

def header(title, level)
  @headers ||= []
 
  title_elements = REXML::Document.new(title)
  flattened_title = title_elements.inject('') do |flattened, element|
    flattened +=  if element.respond_to?(:text)
                    element.text
                  else
                    element.to_s
                  end
  end
  permalink = flattened_title.downcase.gsub(/[^a-z\s]/, '').gsub(/\W+/, "-")
  
  # 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}><a name="#{permalink}" class="anchor" href="##{permalink}"><span class="anchor-icon"></span></a>#{title}</h#{level}>\n)
end