tty-screen 0.4.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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