Class: MaRuKu::Section
- Includes:
- REXML
- Defined in:
- lib/amp-front/third_party/maruku/toc.rb,
lib/amp-front/third_party/maruku/toc.rb
Overview
This represents a section in the TOC.
Instance Attribute Summary collapse
-
#header_element ⇒ Object
reference to header (header has h.meta to self).
-
#immediate_children ⇒ Object
Array of immediate children of this element.
-
#section_children ⇒ Object
Array of Section inside this section.
-
#section_level ⇒ Object
a Fixnum, is == header_element.level.
-
#section_number ⇒ Object
An array of fixnum, like [1,2,5] for Section 1.2.5.
Instance Method Summary collapse
- #create_toc ⇒ Object
-
#initialize ⇒ Section
constructor
A new instance of Section.
- #inspect(indent = 1) ⇒ Object
-
#numerate(a = []) ⇒ Object
Numerate this section and its children.
-
#to_html ⇒ Object
Creates an HTML toc.
-
#to_latex ⇒ Object
Creates a latex toc.
- #to_latex_rec ⇒ Object
Constructor Details
#initialize ⇒ Section
Returns a new instance of Section.
46 47 48 49 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 46 def initialize @immediate_children = [] @section_children = [] end |
Instance Attribute Details
#header_element ⇒ Object
reference to header (header has h.meta to self)
38 39 40 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 38 def header_element @header_element end |
#immediate_children ⇒ Object
Array of immediate children of this element
41 42 43 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 41 def immediate_children @immediate_children end |
#section_children ⇒ Object
Array of Section inside this section
44 45 46 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 44 def section_children @section_children end |
#section_level ⇒ Object
a Fixnum, is == header_element.level
32 33 34 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 32 def section_level @section_level end |
#section_number ⇒ Object
An array of fixnum, like [1,2,5] for Section 1.2.5
35 36 37 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 35 def section_number @section_number end |
Instance Method Details
#create_toc ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 90 def create_toc ul = Element.new 'ul' # let's remove the bullets ul.attributes['style'] = 'list-style: none;' @section_children.each do |c| li = Element.new 'li' if span = c.header_element.render_section_number li << span end a = c.header_element.wrap_as_element('a') a.delete_attribute 'id' a.attributes['href'] = "##{c.header_element.attributes[:id]}" li << a li << c.create_toc if c.section_children.size>0 ul << li end ul end |
#inspect(indent = 1) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 53 def inspect(indent=1) s = "" if @header_element s += "\_"*indent + "(#{@section_level})>\t #{@section_number.join('.')} : " s += @header_element.children_to_s + " (id: '#{@header_element.attributes[:id]}')\n" else s += "Master\n" end @section_children.each do |c| s+=c.inspect(indent+1) end s end |
#numerate(a = []) ⇒ Object
Numerate this section and its children
70 71 72 73 74 75 76 77 78 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 70 def numerate(a=[]) self.section_number = a section_children.each_with_index do |c,i| c.numerate(a.clone.push(i+1)) end if h = self.header_element h.attributes[:section_number] = self.section_number end end |
#to_html ⇒ Object
Creates an HTML toc. Call this on the root
83 84 85 86 87 88 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 83 def to_html div = Element.new 'div' div.attributes['class'] = 'maruku_toc' div << create_toc div end |
#to_latex ⇒ Object
Creates a latex toc. Call this on the root
111 112 113 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 111 def to_latex to_latex_rec + "\n\n" end |
#to_latex_rec ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/amp-front/third_party/maruku/toc.rb', line 115 def to_latex_rec s = "" @section_children.each do |c| s += "\\noindent" number = c.header_element.section_number s += number if number text = c.header_element.children_to_latex id = c.header_element.attributes[:id] s += "\\hyperlink{#{id}}{#{text}}" s += "\\dotfill \\pageref*{#{id}} \\linebreak\n" s += c.to_latex_rec if c.section_children.size>0 end s end |