class Textbringer::Presentation::SlideList

Public Class Methods

new(buffer) click to toggle source
# 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

Public Instance Methods

backward_slide() click to toggle source
# File lib/textbringer/presentation/slide_list.rb, line 75
def backward_slide
  if @index > 0
    @index -= 1
  end
end
current() click to toggle source
# File lib/textbringer/presentation/slide_list.rb, line 54
def current
  @list[@index]
end
current_page() click to toggle source
# File lib/textbringer/presentation/slide_list.rb, line 58
def current_page
  @index + 1
end
forward_slide() click to toggle source
# File lib/textbringer/presentation/slide_list.rb, line 69
def forward_slide
  if @index < @list.size - 1
    @index += 1
  end
end
goto_page(no) click to toggle source
# File lib/textbringer/presentation/slide_list.rb, line 62
def goto_page(no)
  if no < 1 || no > @list.size
    raise ArgumentError, "Invalid page number: #{no}"
  end
  @index = no - 1
end
size() click to toggle source
# File lib/textbringer/presentation/slide_list.rb, line 50
def size
  @list.size
end