class TermSlides::Slides
Attributes
scaling_factor[RW]
Public Class Methods
new(args, &block)
click to toggle source
# File lib/term-slides.rb, line 209 def initialize args, &block @scaling_factor = 1 @args = args if @args.size > 0 and @args[0] == "hovercraft" @renderer = HovercraftRenderer.new else @renderer = TTYRenderer.new end @slides = [] instance_eval &block end
Public Instance Methods
read_char()
click to toggle source
# File lib/term-slides.rb, line 220 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
run()
click to toggle source
# File lib/term-slides.rb, line 235 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 print "\033[?25l" while true print `clear` puts "#{i + 1}/#{@slides.size}" @slides[i].render s = read_char if s == "q" break elsif ["+"].include?(s) @scaling_factor *= 1.1 elsif ["-"].include?(s) @scaling_factor *= 0.9 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 print "\033[?25h" end
slide(name, &block)
click to toggle source
# File lib/term-slides.rb, line 206 def slide name, &block @slides << Slide.new(@renderer, name, self, &block) end