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.



223
224
225
226
227
228
229
230
231
232
# File 'lib/term-slides.rb', line 223

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



233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
# File 'lib/term-slides.rb', line 233

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



248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
# File 'lib/term-slides.rb', line 248

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



220
221
222
# File 'lib/term-slides.rb', line 220

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