Class: OutlineRenderer

Inherits:
Redcarpet::Render::XHTML
  • Object
show all
Defined in:
lib/carta/cli/outline_renderer.rb

Overview

Custom Renderer for Redcarpet

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeOutlineRenderer

Returns a new instance of OutlineRenderer.



5
6
7
8
# File 'lib/carta/cli/outline_renderer.rb', line 5

def initialize
  @outline = []
  super
end

Instance Attribute Details

#outlineObject

Returns the value of attribute outline.



3
4
5
# File 'lib/carta/cli/outline_renderer.rb', line 3

def outline
  @outline
end

Instance Method Details

#header(text, header_level) ⇒ Object

Required by Redcarpet to change behavior of the the renderer



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/carta/cli/outline_renderer.rb', line 11

def header(text, header_level)
  prior_level = 1
  text_slug = sluggize(text)
  value = [header_level, text, text_slug]
  if header_level <= 2
    (prior_level < header_level) ? outline.last << value : outline << value
    with_id = true
  elsif header_level > 2
    with_id = false
  end
  render_line(header_level, text, text_slug, with_id)
end

#render_line(header_level, text, text_slug, with_id = false) ⇒ Object



24
25
26
27
# File 'lib/carta/cli/outline_renderer.rb', line 24

def render_line(header_level, text, text_slug, with_id = false)
  id = "id='#{text_slug}'" if with_id
  "<h#{header_level} #{id}>#{text}</h#{header_level}>"
end

#sluggize(text) ⇒ Object



29
30
31
# File 'lib/carta/cli/outline_renderer.rb', line 29

def sluggize(text)
  text.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
end