tty-screen 0.4.3 → 0.5.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: cf079c51ac4f0fcb5bb6c29031a77ed0d7bf6bb5
4
- data.tar.gz: 415b2d5c8e694c8cc3d9b7261b7dedbc20e8b8dd
3
+ metadata.gz: be4bc4b46b107018a11b33feebb201553f94c41b
4
+ data.tar.gz: 377b7c1492d822be260e43f11a7686471dc4b06f
5
5
  SHA512:
6
- metadata.gz: bed4c21fb89f382f348ebf2548e9b0d0344ed9bd0ab46fbdd9448e405c1c2197dcad9a536c890c60dbd1d1ec104850839fd2edcc54834474aa23abc7e09068ff
7
- data.tar.gz: 82eb587b1334c125bc509d11259cfb9680218c35d9405912af2f202dfa867c6e9fcbbf11649d06cfc3a27d7e4d4b5575ea9ebab2cfb80cec59cc2a4395f752db
6
+ metadata.gz: 9cda3d71ea61b665f0feaefca79def7a255b6d65a5cd067eadf6829d4d3f76953e6ae2b0a6faf93542fc4946dae14cd1c52f24e56f838545ef6b25da2ae86eba
7
+ data.tar.gz: 6884864fdc21364b397a405b2b99c52aeb8d4dfd0c44f912997a9bca20b2421221c536023b258fcbdb26d78c2b687323bcfba284a740b043b9528241049a75c7
data/.travis.yml CHANGED
@@ -1,5 +1,7 @@
1
+ ---
1
2
  language: ruby
2
- bundler_args: --without yard benchmarks
3
+ sudo: false
4
+ cache: bundler
3
5
  script: "bundle exec rake ci"
4
6
  rvm:
5
7
  - 1.9.3
data/CHANGELOG.md CHANGED
@@ -1,26 +1,55 @@
1
- 0.4.3 (Nov 1, 2015)
1
+ # Change log
2
2
 
3
- * Fix issue with #from_curses method and remove ensure block
3
+ ## [v0.5.0] - 2016-01-03
4
+
5
+ ### Changed
6
+ * Change size to accept environment as input
7
+ * Remove Color detection, available as tty-color gem dependency
8
+
9
+ ## [v0.4.3] - 2015-11-01
10
+
11
+ ### Added
4
12
  * Add NoValue to Color class to mark failure of reading color value
13
+
14
+ ### Changed
5
15
  * Change Color class supports? to recognize lack of color value
6
16
 
7
- 0.4.2 (Oct 31, 2015)
17
+ ### Fixed
18
+ * Fix issue with #from_curses method and remove ensure block
8
19
 
20
+ ## [v0.4.2] - 2015-10-31
21
+
22
+ ### Changed
9
23
  * Change visibility of output to prevent warnings
10
24
 
11
- 0.4.1 (Oct 31, 2015)
25
+ ## [v0.4.1] - 2015-10-31
12
26
 
27
+ ### Changed
13
28
  * Change to switch off verbose mode by default
14
29
 
15
- 0.4.0 (Sept 12, 2015)
30
+ ## [v0.4.0] - 2015-09-12
16
31
 
32
+ ### Added
17
33
  * Add terminal color support detection
18
34
 
19
- 0.3.0 (Sept 11, 2015)
35
+ ## [v0.3.0] - 2015-09-11
20
36
 
37
+ ### Fixed
21
38
  * Fix bug loading standard library
22
39
 
23
- 0.2.0 (May 11, 2015)
40
+ ## [v0.2.0] - 2015-05-11
24
41
 
25
- * Fix bug with screen detection from_io_console by @luxflux
42
+ ### Changed
26
43
  * Change to stop memoization of screen class instance method
44
+
45
+ ### Fixed
46
+ * Fix bug with screen detection from_io_console by @luxflux
47
+
48
+ [v0.5.0]: https://github.com/peter-murach/tty-screen/compare/v0.4.3...v0.5.0
49
+ [v0.4.3]: https://github.com/peter-murach/tty-screen/compare/v0.4.2...v0.4.3
50
+ [v0.4.2]: https://github.com/peter-murach/tty-screen/compare/v0.4.1...v0.4.2
51
+ [v0.4.1]: https://github.com/peter-murach/tty-screen/compare/v0.4.0...v0.4.1
52
+ [v0.4.0]: https://github.com/peter-murach/tty-screen/compare/v0.3.0...v0.4.0
53
+ [v0.3.0]: https://github.com/peter-murach/tty-screen/compare/v0.2.0...v0.3.0
54
+ [v0.2.0]: https://github.com/peter-murach/tty-screen/compare/v0.1.0...v0.2.0
55
+ [v0.1.0]: https://github.com/peter-murach/tty-screen/compare/v0.1.0
data/Gemfile CHANGED
@@ -4,7 +4,7 @@ gemspec
4
4
 
5
5
  group :development do
6
6
  gem 'rake', '~> 10.4.2'
7
- gem 'rspec', '~> 3.3.0'
7
+ gem 'rspec', '~> 3.4.0'
8
8
  gem 'yard', '~> 0.8.7'
9
9
  end
10
10
 
data/README.md CHANGED
@@ -11,9 +11,9 @@
11
11
  [coverage]: https://coveralls.io/r/peter-murach/tty-screen
12
12
  [inchpages]: http://inch-ci.org/github/peter-murach/tty-screen
13
13
 
14
- > Terminal screen size and color detection which works on Linux, OS X and Windows/Cygwin platforms and supports MRI, JRuby and Rubinius interpreters.
14
+ > Terminal screen size detection which works on Linux, OS X and Windows/Cygwin platforms and supports MRI, JRuby and Rubinius interpreters.
15
15
 
16
- **TTY::Screen** provides independent screen size and color detection component for [TTY](https://github.com/peter-murach/tty) toolkit.
16
+ **TTY::Screen** provides independent screen size detection component for [TTY](https://github.com/peter-murach/tty) toolkit.
17
17
 
18
18
  ## Installation
19
19
 
@@ -43,21 +43,12 @@ screen.width # => 280
43
43
  screen.height # => 51
44
44
  ```
45
45
 
46
- Using the `color?` method, you can check whether terminal has color capabilities like so
47
-
48
- ```ruby
49
- screen = TTY::Screen.new
50
- screen.color? # => true
51
- ```
52
-
53
46
  You can also use above methods as class instance methods:
54
47
 
55
48
  ```ruby
56
49
  TTY::Screen.size # => [51, 280]
57
50
  TTY::Screen.width # => 280
58
51
  TTY::Screen.height # => 51
59
-
60
- TTY::Screen.color? # => true
61
52
  ```
62
53
 
63
54
  ## Contributing
@@ -70,4 +61,4 @@ TTY::Screen.color? # => true
70
61
 
71
62
  ## Copyright
72
63
 
73
- Copyright (c) 2014-2015 Piotr Murach. See LICENSE for further details.
64
+ Copyright (c) 2014-2016 Piotr Murach. See LICENSE for further details.
data/lib/tty/screen.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'tty/screen/color'
4
3
  require 'tty/screen/size'
5
4
  require 'tty/screen/version'
6
5
 
@@ -19,8 +18,7 @@ module TTY
19
18
  def initialize(options = {})
20
19
  @output = options.fetch(:output) { $stderr }
21
20
  @verbose = options.fetch(:verbose) { false }
22
- @color = Color.new(output: @output, verbose: @verbose)
23
- @size = Size.new(output: @output, verbose: @verbose)
21
+ @size = Size.new(ENV, output: @output, verbose: @verbose)
24
22
  end
25
23
 
26
24
  # @api public
@@ -38,10 +36,11 @@ module TTY
38
36
  size[0]
39
37
  end
40
38
 
41
- def self.color?
42
- new.color?
43
- end
44
-
39
+ # Terminal size as tuple
40
+ #
41
+ # @return [Array[Integer]]
42
+ #
43
+ # @api public
45
44
  def size
46
45
  @size.size
47
46
  end
@@ -65,15 +64,5 @@ module TTY
65
64
  size[1]
66
65
  end
67
66
  alias_method :columns, :width
68
-
69
- # Check if terminal has color support
70
- #
71
- # @return [Boolean]
72
- # true if can display color, false otherwise
73
- #
74
- # @api public
75
- def color?
76
- @color.supports?
77
- end
78
67
  end # Screen
79
68
  end # TTY
@@ -6,7 +6,8 @@ module TTY
6
6
  # Initialize terminal size detection
7
7
  #
8
8
  # @api public
9
- def initialize(options = {})
9
+ def initialize(env, options = {})
10
+ @env = env
10
11
  @output = options.fetch(:output) { $stderr }
11
12
  @verbose = options.fetch(:verbose) { false }
12
13
  end
@@ -34,9 +35,7 @@ module TTY
34
35
  # @api private
35
36
  def from_io_console
36
37
  return false if jruby?
37
- try_io_console { |size|
38
- size if nonzero_column?(size[1])
39
- }
38
+ try_io_console { |size| size if nonzero_column?(size[1]) }
40
39
  end
41
40
 
42
41
  # Attempts to load native console extension
@@ -45,22 +44,20 @@ module TTY
45
44
  #
46
45
  # @api private
47
46
  def try_io_console
47
+ require 'io/console'
48
+
48
49
  begin
49
- require 'io/console'
50
-
51
- begin
52
- if output.tty? && IO.method_defined?(:winsize)
53
- yield output.winsize
54
- else
55
- false
56
- end
57
- rescue Errno::EOPNOTSUPP
50
+ if output.tty? && IO.method_defined?(:winsize)
51
+ yield output.winsize
52
+ else
58
53
  false
59
54
  end
60
- rescue LoadError
61
- warn 'no native io/console support' if @verbose
55
+ rescue Errno::EOPNOTSUPP
62
56
  false
63
57
  end
58
+ rescue LoadError
59
+ warn 'no native io/console support' if @verbose
60
+ false
64
61
  end
65
62
 
66
63
  # Detect screen size using Readline
@@ -98,8 +95,8 @@ module TTY
98
95
  #
99
96
  # @api private
100
97
  def from_env
101
- return unless ENV['COLUMNS'] =~ /^\d+$/
102
- size = [(ENV['LINES'] || ENV['ROWS']).to_i, ENV['COLUMNS'].to_i]
98
+ return unless @env['COLUMNS'] =~ /^\d+$/
99
+ size = [(@env['LINES'] || @env['ROWS']).to_i, @env['COLUMNS'].to_i]
103
100
  size if nonzero_column?(size[1])
104
101
  end
105
102
 
@@ -107,7 +104,7 @@ module TTY
107
104
  #
108
105
  # @api private
109
106
  def from_ansicon
110
- return unless ENV['ANSICON'] =~ /\((.*)x(.*)\)/
107
+ return unless @env['ANSICON'] =~ /\((.*)x(.*)\)/
111
108
  size = [$2, $1].map(&:to_i)
112
109
  size if nonzero_column?(size[1])
113
110
  end
@@ -117,8 +114,8 @@ module TTY
117
114
  # @api public
118
115
  def default_size
119
116
  [
120
- ENV['LINES'].to_i.nonzero? || 27,
121
- ENV['COLUMNS'].to_i.nonzero? || 80
117
+ @env['LINES'].to_i.nonzero? || 27,
118
+ @env['COLUMNS'].to_i.nonzero? || 80
122
119
  ]
123
120
  end
124
121
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module TTY
4
4
  class Screen
5
- VERSION = "0.4.3"
5
+ VERSION = "0.5.0"
6
6
  end # Screen
7
7
  end # TTY
@@ -1,18 +1,21 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'spec_helper'
4
-
5
3
  RSpec.describe TTY::Screen, '.new' do
6
- let(:output) { StringIO.new('', 'w+') }
7
4
 
8
- it "initializes size and color detection" do
9
- allow(TTY::Screen::Color).to receive(:new).with(output: output, verbose: false)
10
- allow(TTY::Screen::Size).to receive(:new).with(output: output, verbose: false)
5
+ it "initializses size with defaults" do
6
+ allow(TTY::Screen::Size).to receive(:new)
7
+ TTY::Screen.new
8
+ expect(TTY::Screen::Size).to have_received(:new).
9
+ with(ENV, {output: $stderr, verbose: false})
10
+ end
11
+
12
+ it "initializes size with values" do
13
+ allow(TTY::Screen::Size).to receive(:new)
11
14
 
12
- TTY::Screen.new(output: output)
15
+ TTY::Screen.new(output: :output, verbose: true)
13
16
 
14
- expect(TTY::Screen::Color).to have_received(:new).with(output: output, verbose: false)
15
- expect(TTY::Screen::Size).to have_received(:new).with(output: output, verbose: false)
17
+ expect(TTY::Screen::Size).to have_received(:new).
18
+ with(ENV, output: :output, verbose: true)
16
19
  end
17
20
 
18
21
  it "delegates size call" do
@@ -25,31 +28,25 @@ RSpec.describe TTY::Screen, '.new' do
25
28
  expect(size_instance).to have_received(:size)
26
29
  end
27
30
 
28
- it "allows to call size as class instance" do
31
+ it "calls size" do
29
32
  size_instance = double(:size, size: [51, 280])
30
33
  allow(TTY::Screen::Size).to receive(:new).and_return(size_instance)
31
34
 
32
35
  expect(TTY::Screen.size).to eq([51, 280])
33
- expect(TTY::Screen.width).to eq(280)
34
- expect(TTY::Screen.height).to eq(51)
35
- expect(TTY::Screen::Size).to have_received(:new).exactly(3).times
36
+ expect(TTY::Screen::Size).to have_received(:new).once
36
37
  end
37
38
 
38
- it "delegates color call" do
39
- color_instance = spy(:color)
40
- allow(TTY::Screen::Color).to receive(:new).and_return(color_instance)
41
-
42
- screen = described_class.new
43
- screen.color?
39
+ it "calls width" do
40
+ size_instance = double(:size, size: [51, 280])
41
+ allow(TTY::Screen::Size).to receive(:new).and_return(size_instance)
44
42
 
45
- expect(color_instance).to have_received(:supports?)
43
+ expect(TTY::Screen.width).to eq(280)
44
+ expect(TTY::Screen::Size).to have_received(:new).once
46
45
  end
47
46
 
48
- it "allows to call color as class instance" do
49
- color_instance = double(:size, supports?: false)
50
- allow(TTY::Screen::Color).to receive(:new).and_return(color_instance)
51
-
52
- expect(TTY::Screen.color?).to eq(false)
53
- expect(TTY::Screen::Color).to have_received(:new).exactly(1).times
47
+ it "calls height" do
48
+ size_instance = double(:size, size: [51, 280])
49
+ allow(TTY::Screen::Size).to receive(:new).and_return(size_instance)
50
+ expect(TTY::Screen.height).to eq(51)
54
51
  end
55
52
  end
@@ -1,9 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'spec_helper'
4
3
  require 'delegate'
5
4
 
6
- RSpec.describe TTY::Screen::Size, '.size' do
5
+ RSpec.describe TTY::Screen::Size, '#size' do
7
6
  class Output < SimpleDelegator
8
7
  def winsize
9
8
  [100, 200]
@@ -12,24 +11,9 @@ RSpec.describe TTY::Screen::Size, '.size' do
12
11
 
13
12
  let(:output) { Output.new(StringIO.new('', 'w+')) }
14
13
 
15
- subject(:screen) { described_class.new(output: output) }
16
-
17
- context 'default size' do
18
- it "suggests default terminal size" do
19
- allow(ENV).to receive(:[]).with('LINES').and_return(0)
20
- allow(ENV).to receive(:[]).with('COLUMNS').and_return(0)
21
- expect(screen.default_size).to eq([27, 80])
22
- end
23
-
24
- it "attempts to get default terminal size from environment" do
25
- allow(ENV).to receive(:[]).with('LINES').and_return(52)
26
- allow(ENV).to receive(:[]).with('COLUMNS').and_return(200)
27
- expect(screen.default_size).to eq([52, 200])
28
- end
29
- end
30
-
31
14
  context 'size' do
32
15
  it "correctly falls through choices" do
16
+ screen = described_class.new({}, output: output)
33
17
  allow(screen).to receive(:from_io_console).and_return([51, 280])
34
18
  allow(screen).to receive(:from_readline).and_return(nil)
35
19
 
@@ -40,11 +24,13 @@ RSpec.describe TTY::Screen::Size, '.size' do
40
24
 
41
25
  context 'from io console' do
42
26
  it "doesn't calculate size if jruby " do
27
+ screen = described_class.new({})
43
28
  allow(screen).to receive(:jruby?).and_return(true)
44
29
  expect(screen.from_io_console).to eq(false)
45
30
  end
46
31
 
47
32
  it "calcualtes the size" do
33
+ screen = described_class.new({}, output: output)
48
34
  allow(screen).to receive(:jruby?).and_return(false)
49
35
  allow(screen).to receive(:require).with('io/console').
50
36
  and_return(true)
@@ -57,6 +43,7 @@ RSpec.describe TTY::Screen::Size, '.size' do
57
43
  end
58
44
 
59
45
  it "doesn't calculate size if io/console not available" do
46
+ screen = described_class.new({})
60
47
  allow(screen).to receive(:jruby?).and_return(false)
61
48
  allow(screen).to receive(:require).with('io/console').
62
49
  and_raise(LoadError)
@@ -64,6 +51,7 @@ RSpec.describe TTY::Screen::Size, '.size' do
64
51
  end
65
52
 
66
53
  it "doesn't calculate size if it is run without a console" do
54
+ screen = described_class.new({}, output: output)
67
55
  allow(screen).to receive(:jruby?).and_return(false)
68
56
  allow(screen).to receive(:require).with('io/console').
69
57
  and_return(true)
@@ -75,11 +63,13 @@ RSpec.describe TTY::Screen::Size, '.size' do
75
63
 
76
64
  context 'from tput' do
77
65
  it "doesn't run command if outside of terminal" do
66
+ screen = described_class.new({}, output: output)
78
67
  allow(output).to receive(:tty?).and_return(false)
79
68
  expect(screen.from_tput).to eq(nil)
80
69
  end
81
70
 
82
71
  it "runs tput commands" do
72
+ screen = described_class.new({}, output: output)
83
73
  allow(output).to receive(:tty?).and_return(true)
84
74
  allow(screen).to receive(:run_command).with('tput', 'lines').and_return(51)
85
75
  allow(screen).to receive(:run_command).with('tput', 'cols').and_return(280)
@@ -87,6 +77,7 @@ RSpec.describe TTY::Screen::Size, '.size' do
87
77
  end
88
78
 
89
79
  it "doesn't return zero size" do
80
+ screen = described_class.new({}, output: output)
90
81
  allow(output).to receive(:tty?).and_return(true)
91
82
  allow(screen).to receive(:run_command).with('tput', 'lines').and_return(0)
92
83
  allow(screen).to receive(:run_command).with('tput', 'cols').and_return(0)
@@ -96,17 +87,20 @@ RSpec.describe TTY::Screen::Size, '.size' do
96
87
 
97
88
  context 'from stty' do
98
89
  it "doesn't run command if outside of terminal" do
90
+ screen = described_class.new({}, output: output)
99
91
  allow(output).to receive(:tty?).and_return(false)
100
92
  expect(screen.from_stty).to eq(nil)
101
93
  end
102
94
 
103
95
  it "runs stty commands" do
96
+ screen = described_class.new({}, output: output)
104
97
  allow(output).to receive(:tty?).and_return(true)
105
98
  allow(screen).to receive(:run_command).with('stty', 'size').and_return("51 280")
106
99
  expect(screen.from_stty).to eq([51, 280])
107
100
  end
108
101
 
109
102
  it "doesn't return zero size" do
103
+ screen = described_class.new({}, output: output)
110
104
  allow(output).to receive(:tty?).and_return(true)
111
105
  allow(screen).to receive(:run_command).with('stty', 'size').and_return("0 0")
112
106
  expect(screen.from_stty).to eq(nil)
@@ -115,37 +109,47 @@ RSpec.describe TTY::Screen::Size, '.size' do
115
109
 
116
110
  context 'from env' do
117
111
  it "doesn't calculate size without COLUMNS key" do
118
- allow(ENV).to receive(:[]).with('COLUMNS').and_return nil
112
+ screen = described_class.new({'COLUMNS' => nil})
119
113
  expect(screen.from_env).to eq(nil)
120
114
  end
121
115
 
122
116
  it "extracts lines and columns from environment" do
123
- allow(ENV).to receive(:[]).with('COLUMNS').and_return("280")
124
- allow(ENV).to receive(:[]).with('LINES').and_return("51")
117
+ screen = described_class.new({'COLUMNS' => '280', 'LINES' => '51'})
125
118
  expect(screen.from_env).to eq([51, 280])
126
119
  end
127
120
 
128
121
  it "doesn't return zero size" do
129
- allow(ENV).to receive(:[]).with('COLUMNS').and_return("0")
130
- allow(ENV).to receive(:[]).with('LINES').and_return("0")
122
+ screen = described_class.new({'COLUMNS' => '0', 'LINES' => '0'})
131
123
  expect(screen.from_env).to eq(nil)
132
124
  end
133
125
  end
134
126
 
135
127
  context 'from ansicon' do
136
128
  it "doesn't calculate size without ANSICON key" do
137
- allow(ENV).to receive(:[]).with('ANSICON').and_return nil
129
+ screen = described_class.new({'ANSICON' => nil})
138
130
  expect(screen.from_ansicon).to eq(nil)
139
131
  end
140
132
 
141
133
  it "extracts lines and columns from environment" do
142
- allow(ENV).to receive(:[]).with('ANSICON').and_return("(280x51)")
134
+ screen = described_class.new({'ANSICON' => '(280x51)'})
143
135
  expect(screen.from_ansicon).to eq([51, 280])
144
136
  end
145
137
 
146
138
  it "doesn't return zero size" do
147
- allow(ENV).to receive(:[]).with('ANSICON').and_return("(0x0)")
139
+ screen = described_class.new({'ANSICON' => '(0x0)'})
148
140
  expect(screen.from_ansicon).to eq(nil)
149
141
  end
150
142
  end
143
+
144
+ context 'default size' do
145
+ it "suggests default terminal size" do
146
+ screen = described_class.new({'LINES' => 0, 'COLUMNS' => 0})
147
+ expect(screen.default_size).to eq([27, 80])
148
+ end
149
+
150
+ it "attempts to get default terminal size from environment" do
151
+ screen = described_class.new({'LINES' => 52, 'COLUMNS' => 200})
152
+ expect(screen.default_size).to eq([52, 200])
153
+ end
154
+ end
151
155
  end
data/tty-screen.gemspec CHANGED
@@ -4,19 +4,20 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'tty/screen/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "tty-screen"
7
+ spec.name = 'tty-screen'
8
8
  spec.version = TTY::Screen::VERSION
9
9
  spec.authors = ["Piotr Murach"]
10
10
  spec.email = [""]
11
- spec.summary = %q{Terminal screen size and color detection which works on Linux, OS X and Windows/Cygwin platforms and supports MRI, JRuby and Rubinius interpreters.}
12
- spec.description = %q{Terminal screen size and color detection which works on Linux, OS X and Windows/Cygwin platforms and supports MRI, JRuby and Rubinius interpreters.}
11
+ spec.summary = %q{Terminal screen size detection which works on Linux, OS X and Windows/Cygwin platforms and supports MRI, JRuby and Rubinius interpreters.}
12
+ spec.description = %q{Terminal screen size detection which works on Linux, OS X and Windows/Cygwin platforms and supports MRI, JRuby and Rubinius interpreters.}
13
13
  spec.homepage = "http://peter-murach.github.io/tty/"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.test_files = spec.files.grep(%r{^(spec)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.6"
21
+ spec.add_development_dependency 'bundler', '>= 1.5.0', '< 2.0'
22
+ spec.add_development_dependency 'rake', '~> 10.0'
22
23
  end
metadata CHANGED
@@ -1,31 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tty-screen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.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: 2015-11-01 00:00:00.000000000 Z
11
+ date: 2016-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.5.0
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '2.0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.5.0
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '2.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: rake
15
35
  requirement: !ruby/object:Gem::Requirement
16
36
  requirements:
17
37
  - - ~>
18
38
  - !ruby/object:Gem::Version
19
- version: '1.6'
39
+ version: '10.0'
20
40
  type: :development
21
41
  prerelease: false
22
42
  version_requirements: !ruby/object:Gem::Requirement
23
43
  requirements:
24
44
  - - ~>
25
45
  - !ruby/object:Gem::Version
26
- version: '1.6'
27
- description: Terminal screen size and color detection which works on Linux, OS X and
28
- Windows/Cygwin platforms and supports MRI, JRuby and Rubinius interpreters.
46
+ version: '10.0'
47
+ description: Terminal screen size detection which works on Linux, OS X and Windows/Cygwin
48
+ platforms and supports MRI, JRuby and Rubinius interpreters.
29
49
  email:
30
50
  - ''
31
51
  executables: []
@@ -43,11 +63,9 @@ files:
43
63
  - Rakefile
44
64
  - lib/tty-screen.rb
45
65
  - lib/tty/screen.rb
46
- - lib/tty/screen/color.rb
47
66
  - lib/tty/screen/size.rb
48
67
  - lib/tty/screen/version.rb
49
68
  - spec/spec_helper.rb
50
- - spec/unit/color_spec.rb
51
69
  - spec/unit/new_spec.rb
52
70
  - spec/unit/size_spec.rb
53
71
  - tasks/console.rake
@@ -77,11 +95,10 @@ rubyforge_project:
77
95
  rubygems_version: 2.0.3
78
96
  signing_key:
79
97
  specification_version: 4
80
- summary: Terminal screen size and color detection which works on Linux, OS X and Windows/Cygwin
98
+ summary: Terminal screen size detection which works on Linux, OS X and Windows/Cygwin
81
99
  platforms and supports MRI, JRuby and Rubinius interpreters.
82
100
  test_files:
83
101
  - spec/spec_helper.rb
84
- - spec/unit/color_spec.rb
85
102
  - spec/unit/new_spec.rb
86
103
  - spec/unit/size_spec.rb
87
104
  has_rdoc:
@@ -1,87 +0,0 @@
1
- # coding: utf-8
2
-
3
- module TTY
4
- class Screen
5
- class Color
6
- NoValue = Module.new
7
-
8
- # Initialize color support
9
- #
10
- # @api public
11
- def initialize(options = {})
12
- @output = options.fetch(:output) { $stderr }
13
- @verbose = options.fetch(:verbose) { false }
14
- end
15
-
16
- # Detect if terminal supports color
17
- #
18
- # @return [Boolean]
19
- # true when terminal supports color, false otherwise
20
- #
21
- # @api public
22
- def supports?
23
- return false unless tty?
24
-
25
- value = false
26
- %w(from_curses from_tput from_term from_env).each do |from_check|
27
- break if (value = public_send(from_check)) != NoValue
28
- end
29
- return false if value == NoValue
30
- value
31
- end
32
-
33
- # Attempt to load curses to check color support
34
- #
35
- # @return [Boolean]
36
- #
37
- # @api private
38
- def from_curses(curses_class = nil)
39
- require 'curses'
40
-
41
- if defined?(Curses)
42
- curses_class ||= Curses
43
- curses_class.init_screen
44
- has_color = curses_class.has_colors?
45
- curses_class.close_screen
46
- has_color
47
- else
48
- NoValue
49
- end
50
- rescue LoadError
51
- warn 'no native curses support' if @verbose
52
- NoValue
53
- end
54
-
55
- # Shell out to tput to check color support
56
- #
57
- # @api private
58
- def from_tput
59
- %x(tput colors 2>/dev/null).to_i > 2
60
- rescue Errno::ENOENT
61
- NoValue
62
- end
63
-
64
- # Inspect environment $TERM variable for color support
65
- #
66
- # @api private
67
- def from_term
68
- if ENV['TERM'] == 'dumb'
69
- false
70
- elsif ENV['TERM'] =~ /^screen|^xterm|^vt100|color|ansi|cygwin|linux/i
71
- true
72
- else NoValue
73
- end
74
- end
75
-
76
- def from_env
77
- ENV.include?('COLORTERM')
78
- end
79
-
80
- attr_reader :output
81
-
82
- def tty?
83
- output.tty?
84
- end
85
- end # Color
86
- end # Screen
87
- end # TTY
@@ -1,52 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe TTY::Screen::Color, '.supports?' do
6
- let(:output) { StringIO.new('', 'w+') }
7
-
8
- subject(:color) { described_class.new(output: output) }
9
-
10
- it "doesn't check color support for non tty terminal" do
11
- allow(output).to receive(:tty?).and_return(false)
12
-
13
- expect(color.supports?).to eq(false)
14
- end
15
-
16
- it "fails to load curses for color support" do
17
- allow(color).to receive(:require).with('curses').
18
- and_raise(LoadError)
19
-
20
- expect(color.from_curses).to eq(described_class::NoValue)
21
- end
22
-
23
- it "loads curses for color support" do
24
- allow(color).to receive(:require).with('curses').and_return(true)
25
- stub_const("Curses", Object.new)
26
- curses = double(:curses)
27
- allow(curses).to receive(:init_screen)
28
- allow(curses).to receive(:has_colors?).and_return(true)
29
- allow(curses).to receive(:close_screen)
30
-
31
- expect(color.from_curses(curses)).to eql(true)
32
- expect(curses).to have_received(:has_colors?)
33
- end
34
-
35
- it "fails to find color for dumb terminal" do
36
- allow(ENV).to receive(:[]).with('TERM').and_return('dumb')
37
-
38
- expect(color.from_term).to eq(false)
39
- end
40
-
41
- it "inspects term variable for color capabilities" do
42
- allow(ENV).to receive(:[]).with('TERM').and_return('xterm')
43
-
44
- expect(color.from_term).to eq(true)
45
- end
46
-
47
- it "inspects color terminal variable for support" do
48
- allow(ENV).to receive(:include?).with('COLORTERM').and_return(true)
49
-
50
- expect(color.from_env).to eq(true)
51
- end
52
- end