circle-cli/circle-cli

View on GitHub
lib/circle/cli/watcher.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Circle
  module CLI
    class Watcher
      attr_reader :displayer, :preloader

      def initialize(&displayer)
        @displayer = displayer
        @preloader = -> {}
      end

      def to_preload(&preloader)
        @preloader = preloader
      end

      def preload
        preloader.call
      end

      def display
        displayer.call
      end

      def poll(polling_frequency)
        loop do
          display
          sleep polling_frequency
          preload
          clear
        end
      rescue Interrupt
        exit 0
      end

      private

      def clear
        system('clear') || system('cls')
      end
    end
  end
end