Sha256: 2c584d593bff75eb141a97b9331a830462f27f4ced90b6e9d50ccdcf395a9b5e

Contents?: true

Size: 697 Bytes

Versions: 1

Compression:

Stored size: 697 Bytes

Contents

require 'highline'

module WhirledPeas
  module Device
    class Screen
      def initialize(output: STDOUT)
        @output = output
      end

      def handle_rendered_frames(rendered_frames)
        next_frame_at = nil
        rendered_frames.each do |rendered_frame|
          if next_frame_at.nil?
            next_frame_at = Time.now + rendered_frame.duration
          else
            next_frame_at += rendered_frame.duration
            next if next_frame_at < Time.now
          end
          output.print(rendered_frame.strokes)
          output.flush
          sleep([0, next_frame_at - Time.now].max)
        end
      end

      private

      attr_reader :output
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
whirled_peas-0.12.0 lib/whirled_peas/device/screen.rb