Class: Jekyll::TableOfContents::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll-toc.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(html) ⇒ Parser

Returns a new instance of Parser.



10
11
12
13
# File 'lib/jekyll-toc.rb', line 10

def initialize(html)
  @doc = Nokogiri::HTML::DocumentFragment.parse(html)
  @entries = parse_content
end

Instance Attribute Details

#docObject (readonly)

Returns the value of attribute doc.



8
9
10
# File 'lib/jekyll-toc.rb', line 8

def doc
  @doc
end

Instance Method Details

#build_tocObject



15
16
17
18
19
20
21
22
23
# File 'lib/jekyll-toc.rb', line 15

def build_toc
  toc = %Q{<ul class="section-nav">\n}

  @entries.each do |entry|
    toc << %Q{<li class="toc-entry toc-#{entry[:node_name]}"><a href="##{entry[:id]}#{entry[:uniq]}">#{entry[:text]}</a></li>\n}
  end

  toc << '</ul>'
end

#inject_anchors_into_htmlObject



25
26
27
28
29
30
31
# File 'lib/jekyll-toc.rb', line 25

def inject_anchors_into_html
  @entries.each do |entry|
    entry[:content_node].add_previous_sibling(%Q{<a id="#{entry[:id]}#{entry[:uniq]}" class="anchor" href="##{entry[:id]}#{entry[:uniq]}" aria-hidden="true"><span class="octicon octicon-link"></span></a>})
  end

  @doc.inner_html
end

#tocObject



33
34
35
# File 'lib/jekyll-toc.rb', line 33

def toc
  build_toc + inject_anchors_into_html
end