Method: Textbringer::Presentation::SlideList#initialize

Defined in:
lib/textbringer/presentation/slide_list.rb

#initialize(buffer) ⇒ SlideList

Returns a new instance of SlideList.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/textbringer/presentation/slide_list.rb', line 25

def initialize(buffer)
  @buffer = buffer
  doc = CommonMarker.render_doc(buffer.to_s)
  @list = []
  slide = nil
  i = 1
  @buffer.save_excursion do
    doc.each do |node|
      if node.type == :header
        @buffer.goto_line(node.sourcepos[:start_line])
        slide.end_pos = @buffer.point - 1 if slide
        title = node.to_plaintext.strip
        slide = Slide.new(buffer, i, title)
        slide.start_pos = @buffer.point
        @list.push(slide)
        i += 1
      end
    end
    slide.end_pos = @buffer.point_max if slide
  end
  @index = @list.index { |slide|
    slide.start_pos <= @buffer.point && @buffer.point <= slide.end_pos
  } || 0
end