Sha256: f78f86d0d8339f82ce06ca700fc11b382fe6dba55bae2338efdbdb1c141382dc

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

# typed: true
require 'cli/ui'
require 'io/console'

module CLI
  module UI
    module Terminal
      extend T::Sig

      DEFAULT_WIDTH = 80
      DEFAULT_HEIGHT = 24

      # Returns the width of the terminal, if possible
      # Otherwise will return DEFAULT_WIDTH
      #
      sig { returns(Integer) }
      def self.width
        winsize[1]
      end

      # Returns the width of the terminal, if possible
      # Otherwise, will return DEFAULT_HEIGHT
      #
      sig { returns(Integer) }
      def self.height
        winsize[0]
      end

      sig { returns([Integer, Integer]) }
      def self.winsize
        @winsize ||= begin
          winsize = IO.console.winsize
          setup_winsize_trap

          if winsize.any?(&:zero?)
            [DEFAULT_HEIGHT, DEFAULT_WIDTH]
          else
            winsize
          end
        rescue
          [DEFAULT_HEIGHT, DEFAULT_WIDTH]
        end
      end

      sig { void }
      def self.setup_winsize_trap
        @winsize_trap ||= Signal.trap('WINCH') do
          @winsize = nil
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gorails-0.1.5 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
gorails-0.1.4 vendor/deps/cli-ui/lib/cli/ui/terminal.rb
gorails-0.1.3 vendor/deps/cli-ui/lib/cli/ui/terminal.rb