Class: TP::Presenter

Inherits:
Object
  • Object
show all
Defined in:
lib/tp/presenter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(markdown) ⇒ Presenter

Returns a new instance of Presenter.



5
6
7
# File 'lib/tp/presenter.rb', line 5

def initialize(markdown)
  @markdown = markdown
end

Instance Attribute Details

#markdownObject (readonly)

Returns the value of attribute markdown.



3
4
5
# File 'lib/tp/presenter.rb', line 3

def markdown
  @markdown
end

Instance Method Details

#clear_screenObject



37
38
39
# File 'lib/tp/presenter.rb', line 37

def clear_screen
  Screen.clear!
end

#presentObject



9
10
11
12
13
# File 'lib/tp/presenter.rb', line 9

def present
  suggest_sizing
  render_slides
  clear_screen
end

#render_slidesObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/tp/presenter.rb', line 20

def render_slides
  loop do
    Renderer.new(slide_deck.current_frame).render

    case Keyboard.read
    when :right, :down, :space, :return, 'l', 'j', 'd', 's'
      slide_deck.next
    when :left, :up, :backspace, 'h', 'k', 'a', 'w'
      slide_deck.previous
    when 'q'
      break
    end

    break if slide_deck.ended?
  end
end

#slide_deckObject



49
50
51
# File 'lib/tp/presenter.rb', line 49

def slide_deck
  @slide_deck ||= SlideDeck.new slides
end

#slidesObject



41
42
43
44
45
46
47
# File 'lib/tp/presenter.rb', line 41

def slides
  result = markdown.split /^#/
  result.reject! &:empty?
  result.map! { |string| "##{string}" }

  result.map { |string| SlideFactory.from_markdown string }
end

#suggest_sizingObject



15
16
17
18
# File 'lib/tp/presenter.rb', line 15

def suggest_sizing
  Screen.suggest slide_deck.width, slide_deck.height
  Keyboard.wait_for_return
end