Class: Qiita::Markdown::Filters::Toc::Heading

Inherits:
Object
  • Object
show all
Defined in:
lib/qiita/markdown/filters/toc.rb

Instance Method Summary collapse

Constructor Details

#initialize(node, counter) ⇒ Heading



16
17
18
19
# File 'lib/qiita/markdown/filters/toc.rb', line 16

def initialize(node, counter)
  @node = node
  @counter = counter
end

Instance Method Details

#add_anchor_elementObject



21
22
23
# File 'lib/qiita/markdown/filters/toc.rb', line 21

def add_anchor_element
  first_child.add_previous_sibling(anchor_element)
end

#anchor_elementObject



25
26
27
# File 'lib/qiita/markdown/filters/toc.rb', line 25

def anchor_element
  %[<span id="#{suffixed_id}" class="fragment"></span><a href="##{suffixed_id}"><i class="fa fa-link"></i></a>]
end

#contentObject



29
30
31
# File 'lib/qiita/markdown/filters/toc.rb', line 29

def content
  @content ||= node.children.first
end

#countObject



33
34
35
# File 'lib/qiita/markdown/filters/toc.rb', line 33

def count
  @counter[id]
end

#first_childObject



37
38
39
# File 'lib/qiita/markdown/filters/toc.rb', line 37

def first_child
  @first_child ||= @node.children.first
end

#has_count?Boolean



41
42
43
# File 'lib/qiita/markdown/filters/toc.rb', line 41

def has_count?
  count > 0
end

#has_first_child?Boolean



45
46
47
# File 'lib/qiita/markdown/filters/toc.rb', line 45

def has_first_child?
  !!first_child
end

#idObject



49
50
51
# File 'lib/qiita/markdown/filters/toc.rb', line 49

def id
  @node.text.downcase.gsub(/[^\p{Word}\- ]/u, '').gsub(' ', '-')
end

#incrementObject



53
54
55
# File 'lib/qiita/markdown/filters/toc.rb', line 53

def increment
  @counter[id] += 1
end

#suffixObject



57
58
59
# File 'lib/qiita/markdown/filters/toc.rb', line 57

def suffix
  has_count? ? "-#{count}" : ""
end

#suffixed_idObject



61
62
63
# File 'lib/qiita/markdown/filters/toc.rb', line 61

def suffixed_id
  "#{id}#{suffix}"
end