tty-screen 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 163de431d1fd75a5a29b5d24ef67d3b40ec6a5a4
4
- data.tar.gz: 868f17e7ac67424a1b6dd28b8f432401035cbf72
3
+ metadata.gz: e5b0fdd11a1c93555dd997f4ba8c6068d6004323
4
+ data.tar.gz: 8d2c77d63960973eee13221cff921e3ba4969837
5
5
  SHA512:
6
- metadata.gz: d60be14e99f7a97bb5abc5635e873e43f53713d3e286bb02fce9f810acccbb1089d94e9b64c138945fa97e38d20516e6d7ca3f9c08453573a9fe4712b364cd1a
7
- data.tar.gz: a777e4b0edc978eaa22616d00baeb26643c594714ceeb79ebc755aa4fd5a24e9eed60a420118599db286105addd00e703beaca1e9b08ff9d3b71e859da40daf6
6
+ metadata.gz: d1ed7d421d44185fa600b3c7ff22b91f44947a90194ebcc29682692f4e5f4df9287c7f33ec4932124302724791404414eac773e17ac667ef7a3daf18ed8cc22e
7
+ data.tar.gz: 8075b1853ff419e7690a92ef7ee81436195ba3fd8c52dd41b1b87713028d445cad6a6a5394de04fec3f59aaaedf76db7449bb78b56cf732e0343b9bb7a8409fe
@@ -3,8 +3,9 @@ bundler_args: --without yard benchmarks
3
3
  script: "bundle exec rake ci"
4
4
  rvm:
5
5
  - 1.9.3
6
- - 2.0.0
7
- - 2.1.0
6
+ - 2.0
7
+ - 2.1
8
+ - 2.2
8
9
  - ruby-head
9
10
  matrix:
10
11
  include:
@@ -0,0 +1,4 @@
1
+ 0.2.0 (May 11, 2015)
2
+
3
+ * Fix bug with screen detection from_io_console by @luxflux
4
+ * Change to stop memoization of screen class instance method
data/Gemfile CHANGED
@@ -7,7 +7,6 @@ group :development do
7
7
  gem 'rspec', '~> 3.1.0'
8
8
  gem 'yard', '~> 0.8.7'
9
9
  gem 'timecop', '~> 0.7.1'
10
- gem 'pastel', '~> 0.3.0'
11
10
  end
12
11
 
13
12
  group :metrics do
data/README.md CHANGED
@@ -44,7 +44,9 @@ screen.height # => 51
44
44
  You can also use above methods as class instance methods:
45
45
 
46
46
  ```ruby
47
- TTY::Screen.size # => [51, 280]
47
+ TTY::Screen.size # => [51, 280]
48
+ TTY::Screen.width # => 280
49
+ TTY::Screen.height # => 51
48
50
  ```
49
51
 
50
52
  ## Contributing
@@ -57,4 +59,4 @@ TTY::Screen.size # => [51, 280]
57
59
 
58
60
  ## Copyright
59
61
 
60
- Copyright (c) 2014 Piotr Murach. See LICENSE for further details.
62
+ Copyright (c) 2014-2015 Piotr Murach. See LICENSE for further details.
@@ -7,11 +7,6 @@ module TTY
7
7
  #
8
8
  # @api public
9
9
  class Screen
10
- # Specifies an output stream object
11
- #
12
- # @api public
13
- attr_reader :output
14
-
15
10
  # Create terminal screen
16
11
  #
17
12
  # @param [Hash] options
@@ -23,36 +18,21 @@ module TTY
23
18
  @output = options.fetch(:output) { $stderr }
24
19
  end
25
20
 
21
+ # @api public
26
22
  def self.size
27
- @size ||= new.size
23
+ new.size
28
24
  end
29
25
 
26
+ # @api public
30
27
  def self.width
31
28
  size[1]
32
29
  end
33
30
 
31
+ # @api public
34
32
  def self.height
35
33
  size[0]
36
34
  end
37
35
 
38
- # Get terminal rows and columns
39
- #
40
- # @return [Array[Integer, Integer]]
41
- # return rows & columns
42
- #
43
- # @api public
44
- def size
45
- @size ||= begin
46
- size = from_io_console
47
- size ||= from_readline
48
- size ||= from_tput
49
- size ||= from_stty
50
- size ||= from_env
51
- size ||= from_ansicon
52
- size || default_size
53
- end
54
- end
55
-
56
36
  # Default terminal size
57
37
  #
58
38
  # @api public
@@ -60,16 +40,44 @@ module TTY
60
40
  [27, 80]
61
41
  end
62
42
 
43
+ # Terminal lines count
44
+ #
45
+ # @return [Integer]
46
+ #
47
+ # @api public
63
48
  def height
64
49
  size[0]
65
50
  end
66
51
  alias_method :rows, :height
67
52
 
53
+ # Terminal columns count
54
+ #
55
+ # @return [Integer]
56
+ #
57
+ # @api public
68
58
  def width
69
59
  size[1]
70
60
  end
71
61
  alias_method :columns, :width
72
62
 
63
+ # Get terminal rows and columns
64
+ #
65
+ # @return [Array[Integer, Integer]]
66
+ # return rows & columns
67
+ #
68
+ # @api public
69
+ def size
70
+ @size ||= begin
71
+ size = from_io_console
72
+ size ||= from_readline
73
+ size ||= from_tput
74
+ size ||= from_stty
75
+ size ||= from_env
76
+ size ||= from_ansicon
77
+ size || default_size
78
+ end
79
+ end
80
+
73
81
  # Detect screen size by loading io/console lib
74
82
  #
75
83
  # @return [Array[Integer, Integer]]
@@ -78,6 +86,7 @@ module TTY
78
86
  def from_io_console
79
87
  return if jruby?
80
88
  Kernel.require 'io/console'
89
+ return unless IO.respond_to?(:console)
81
90
  size = IO.console.winsize
82
91
  size if nonzero_column?(size[1])
83
92
  rescue LoadError
@@ -134,15 +143,20 @@ module TTY
134
143
  size if nonzero_column?(size[1])
135
144
  end
136
145
 
137
- # Runs command in subprocess
146
+ private
147
+
148
+ # Specifies an output stream object
138
149
  #
139
150
  # @api public
151
+ attr_reader :output
152
+
153
+ # Runs command in subprocess
154
+ #
155
+ # @api private
140
156
  def run_command(command, name)
141
157
  `#{command} #{name} 2>/dev/null`
142
158
  end
143
159
 
144
- private
145
-
146
160
  def nonzero_column?(column)
147
161
  column.to_i > 0
148
162
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module TTY
4
4
  class Screen
5
- VERSION = "0.1.0"
5
+ VERSION = "0.2.0"
6
6
  end # Screen
7
7
  end # TTY
@@ -1,3 +1,5 @@
1
+ # coding: utf-8
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  RSpec.describe TTY::Screen, '.size' do
@@ -19,10 +21,9 @@ RSpec.describe TTY::Screen, '.size' do
19
21
  screen = double(:screen, size: [51, 280])
20
22
  allow(TTY::Screen).to receive(:new).and_return(screen)
21
23
  expect(TTY::Screen.size).to eq([51, 280])
22
- expect(TTY::Screen.size).to eq([51, 280])
23
24
  expect(TTY::Screen.width).to eq(280)
24
25
  expect(TTY::Screen.height).to eq(51)
25
- expect(TTY::Screen).to have_received(:new).once
26
+ expect(TTY::Screen).to have_received(:new).exactly(3).times
26
27
  end
27
28
  end
28
29
 
@@ -37,6 +38,11 @@ RSpec.describe TTY::Screen, '.size' do
37
38
  allow(Kernel).to receive(:require).with('io/console').and_raise(LoadError)
38
39
  expect(screen.from_io_console).to eq(nil)
39
40
  end
41
+
42
+ it "doesn't calculate size if it is run without a console" do
43
+ allow(IO).to receive(:respond_to?).with(:console).and_return(false)
44
+ expect(screen.from_io_console).to eq(nil)
45
+ end
40
46
  end
41
47
 
42
48
  context 'from tput' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tty-screen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Murach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-23 00:00:00.000000000 Z
11
+ date: 2015-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -36,6 +36,7 @@ files:
36
36
  - .rspec
37
37
  - .ruby-version
38
38
  - .travis.yml
39
+ - CHANGELOG.md
39
40
  - Gemfile
40
41
  - LICENSE.txt
41
42
  - README.md