Class: TermSlides::Slides

Inherits:
Object
  • Object
show all
Defined in:
lib/term-slides.rb

Instance Method Summary collapse

Constructor Details

#initialize(args, &block) ⇒ Slides

Returns a new instance of Slides.



197
198
199
200
201
202
203
204
205
206
# File 'lib/term-slides.rb', line 197

def initialize args, &block
  @args = args
  if @args.size > 0 and @args[0] == "hovercraft"
    @renderer = HovercraftRenderer.new
  else
    @renderer = TTYRenderer.new
  end
  @slides = []
  instance_eval &block
end

Instance Method Details

#read_charObject



207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
# File 'lib/term-slides.rb', line 207

def read_char
  STDIN.echo = false
  STDIN.raw!

  input = STDIN.getc.chr
  if input == "\e" then
    input << STDIN.read_nonblock(3) rescue nil
    input << STDIN.read_nonblock(2) rescue nil
  end
ensure
  STDIN.echo = true
  STDIN.cooked!

  return input
end

#runObject



222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
# File 'lib/term-slides.rb', line 222

def run
  i = 0
  if @args.size > 0
    if @args[0] == "hovercraft"
      @slides.each do |slide|
        slide.render
      end
    else
      print `clear`
      @slides[@args[0].to_i].render
    end
    return
  end
  while true
    print `clear`
    puts "#{i + 1}/#{@slides.size}"
    @slides[i].render
    s = read_char
    if s == "q"
      break
    elsif ["p", "\e[D", "\e[A", "h", "k"].include?(s)
      i -= 1 if i > 0
    elsif ["n", "\e[C", "\e[B", "l", "j"].include?(s)
      i += 1 if i < (@slides.size - 1)
    end
  end
end

#slide(name, &block) ⇒ Object



194
195
196
# File 'lib/term-slides.rb', line 194

def slide name, &block
  @slides << Slide.new(@renderer, name, &block)
end