Class: Redcarpet::Render::Custom

Inherits:
Base
  • Object
show all
Defined in:
lib/trans/translator_trans.rb

Instance Method Summary collapse

Instance Method Details

#header(title, level) ⇒ Object



278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
# File 'lib/trans/translator_trans.rb', line 278

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