Sha256: e1328e945bc6cccb7152625523074389a45fdece5b0a908e733f9df1810ac33b

Contents?: true

Size: 1.76 KB

Versions: 5

Compression:

Stored size: 1.76 KB

Contents

# encoding: utf-8
require 'net/http'
require 'tmpdir'
require 'fileutils'
require 'pathname'

module Shelr
  class Player

    def self.play(id)
      new(id).play
    end

    def self.play_remote(url)
      puts ".==> Fetching #{url}"
      resp = Net::HTTP.get(URI.parse(url))
      play_parts_hash(JSON.parse(resp))
    end

    def self.play_dump(file)
      json = File.read(File.open(file))
      parts = JSON.parse(json)
      play_parts_hash(parts)
    end

    def self.list
      Dir[File.join(Shelr::DATA_DIR, "**", 'meta')].each do |path|
        metadata = JSON.parse(IO.read(path))
        puts "#{metadata["created_at"]}: #{metadata["title"]}"
      end
    end

    # TODO: refactore me!
    def self.play_parts_hash(parts)
      Dir.mktmpdir do |dir|
        %w(typescript timing).each do |type|
          File.open(File.join(dir, type), 'w') { |f| f.puts(parts[type]) }
        end
        Shelr.terminal.puts_line
        puts "=> Title: #{parts['title']}"
        puts "=> Description: #{parts['description']}t"
        Shelr.terminal.puts_line
        system "scriptreplay #{File.join(dir, 'timing')} #{File.join(dir, 'typescript')}"
        Shelr.terminal.puts_line
        puts "=> Title: #{parts['title']}"
        puts "=> Description: #{parts['description']}t"
        Shelr.terminal.puts_line
      end
    end

    def initialize(id)
      @record_id = id
    end

    def play
      STDOUT.puts "-=" * (Shelr.terminal.size[:width] / 2)
      puts
      system(scriptreplay_cmd)
      puts
      STDOUT.puts "-=" * (Shelr.terminal.size[:width] / 2)
    end

    private

    def record_file(name)
      File.join(Shelr.data_dir(@record_id), name)
    end

    def scriptreplay_cmd
      "scriptreplay #{record_file('timing')} #{record_file('typescript')}"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
shelr-0.12.8 lib/shelr/player.rb
shelr-0.12.7 lib/shelr/player.rb
shelr-0.12.6 lib/shelr/player.rb
shelr-0.12.5 lib/shelr/player.rb
shelr-0.12.4 lib/shelr/player.rb