tty 0.1.0 → 0.1.1

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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -3
  3. data/CHANGELOG.md +8 -0
  4. data/README.md +74 -42
  5. data/lib/tty.rb +7 -9
  6. data/lib/tty/conversion.rb +16 -0
  7. data/lib/tty/conversion/converter/array.rb +35 -0
  8. data/lib/tty/{coercer → conversion/converter}/boolean.rb +20 -7
  9. data/lib/tty/conversion/converter/float.rb +28 -0
  10. data/lib/tty/conversion/converter/integer.rb +28 -0
  11. data/lib/tty/{coercer → conversion/converter}/range.rb +16 -7
  12. data/lib/tty/logger.rb +1 -1
  13. data/lib/tty/shell/question.rb +2 -1
  14. data/lib/tty/shell/response.rb +9 -4
  15. data/lib/tty/shell/statement.rb +3 -2
  16. data/lib/tty/table.rb +3 -3
  17. data/lib/tty/table/border.rb +8 -5
  18. data/lib/tty/table/border/row_line.rb +2 -2
  19. data/lib/tty/table/operation/alignment_set.rb +2 -1
  20. data/lib/tty/table/padder.rb +1 -1
  21. data/lib/tty/table/renderer/basic.rb +1 -1
  22. data/lib/tty/terminal.rb +1 -118
  23. data/lib/tty/text/truncation.rb +4 -1
  24. data/lib/tty/text/wrapping.rb +4 -1
  25. data/lib/tty/vector.rb +4 -3
  26. data/lib/tty/version.rb +2 -2
  27. data/spec/tty/{support/conversion_spec.rb → conversion/converter/array/convert_spec.rb} +4 -5
  28. data/spec/tty/{coercer/boolean/coerce_spec.rb → conversion/converter/boolean/convert_spec.rb} +5 -4
  29. data/spec/tty/{coercer/float/coerce_spec.rb → conversion/converter/float/convert_spec.rb} +3 -2
  30. data/spec/tty/{coercer/integer/coerce_spec.rb → conversion/converter/integer/convert_spec.rb} +4 -2
  31. data/spec/tty/{coercer/range/coerce_spec.rb → conversion/converter/range/convert_spec.rb} +3 -2
  32. data/spec/tty/shell/error_spec.rb +4 -1
  33. data/spec/tty/shell/response/read_bool_spec.rb +1 -1
  34. data/spec/tty/shell/say_spec.rb +3 -0
  35. data/spec/tty/shell/statement/initialize_spec.rb +2 -2
  36. data/spec/tty/shell/warn_spec.rb +3 -0
  37. data/spec/tty/table/field/equality_spec.rb +1 -1
  38. data/spec/tty/table/render_spec.rb +3 -0
  39. data/spec/tty/table/render_with_spec.rb +8 -5
  40. data/spec/tty/table/renderer/basic/coloring_spec.rb +10 -9
  41. data/spec/tty/table/renderer/style_spec.rb +3 -0
  42. data/spec/tty/terminal/color_spec.rb +6 -3
  43. data/tasks/console.rake +1 -1
  44. data/tty.gemspec +7 -1
  45. metadata +88 -30
  46. data/lib/tty/coercer.rb +0 -13
  47. data/lib/tty/coercer/float.rb +0 -20
  48. data/lib/tty/coercer/integer.rb +0 -20
  49. data/lib/tty/support/conversion.rb +0 -35
  50. data/lib/tty/support/equatable.rb +0 -152
  51. data/lib/tty/terminal/color.rb +0 -157
  52. data/spec/tty/support/equatable_spec.rb +0 -201
  53. data/spec/tty/terminal/color/code_spec.rb +0 -19
  54. data/spec/tty/terminal/color/remove_spec.rb +0 -44
  55. data/spec/tty/terminal/color/set_spec.rb +0 -29
  56. data/spec/tty/terminal/size_spec.rb +0 -97
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe TTY::Terminal::Color, '#code' do
6
- let(:string) { "This is a \e[1m\e[34mbold blue text\e[0m" }
7
-
8
- it 'finds single code' do
9
- expect(subject.code(:black)).to eq(["\e[30m"])
10
- end
11
-
12
- it 'finds more than one code' do
13
- expect(subject.code(:black, :green)).to eq(["\e[30m", "\e[32m"])
14
- end
15
-
16
- it "doesn't find code" do
17
- expect { subject.code(:unkown) }.to raise_error(ArgumentError)
18
- end
19
- end
@@ -1,44 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe TTY::Terminal::Color, '#remove' do
6
- let(:instance) { described_class.new }
7
- let(:string) { "This is a \e[1m\e[34mbold blue text\e[0m" }
8
-
9
- subject { instance.remove string }
10
-
11
- it 'remove color from string' do
12
- is_expected.to eq("This is a bold blue text")
13
- end
14
-
15
- context 'with octal in encapsulating brackets' do
16
- let(:string) { "\[\033[01;32m\]u@h \[\033[01;34m\]W $ \[\033[00m\]" }
17
-
18
- it { is_expected.to eq('u@h W $ ') }
19
- end
20
-
21
- context 'with octal without brackets' do
22
- let(:string) { "\033[01;32mu@h \033[01;34mW $ \033[00m" }
23
-
24
- it { is_expected.to eq('u@h W $ ') }
25
- end
26
-
27
- context 'with octal with multiple colors' do
28
- let(:string) { "\e[3;0;0;t\e[8;50;0t" }
29
-
30
- it { is_expected.to eq("") }
31
- end
32
-
33
- context 'with' do
34
- let(:string ) { "WARN. \x1b[1m&\x1b[0m ERR. \x1b[7m&\x1b[0m" }
35
-
36
- it { is_expected.to eq('WARN. & ERR. &') }
37
- end
38
-
39
- context 'with escape byte' do
40
- let(:string) { "This is a \e[1m\e[34mbold blue text\e[0m" }
41
-
42
- it { is_expected.to eq("This is a bold blue text") }
43
- end
44
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe TTY::Terminal::Color, '#set' do
6
- let(:string) { 'string' }
7
-
8
- it 'applies green text to string' do
9
- expect(subject.set(string, :green)).to eq("\e[32m#{string}\e[0m")
10
- end
11
-
12
- it 'applies red text background to string' do
13
- expect(subject.set(string, :on_red)).to eq("\e[41m#{string}\e[0m")
14
- end
15
-
16
- it 'applies style and color to string' do
17
- text = subject.set(string, :bold, :green)
18
- expect(text).to eq("\e[1m\e[32m#{string}\e[0m")
19
- end
20
-
21
- it 'applies style, color and background to string' do
22
- text = subject.set(string, :bold, :green, :on_blue)
23
- expect(text).to eq("\e[1m\e[32m\e[44m#{string}\e[0m")
24
- end
25
-
26
- it 'errors for unkown color' do
27
- expect { subject.set(string, :crimson) }.to raise_error(ArgumentError)
28
- end
29
- end
@@ -1,97 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require 'spec_helper'
4
-
5
- describe TTY::Terminal, '#size' do
6
- let(:default_width) { 80 }
7
- let(:default_height) { 24 }
8
-
9
- it { is_expected.to be_instance_of(described_class) }
10
-
11
- it { is_expected.to respond_to(:width) }
12
-
13
- it { is_expected.to respond_to(:height) }
14
-
15
-
16
- subject(:terminal) { described_class.new }
17
-
18
- it { expect(terminal.default_width).to eq(default_width) }
19
-
20
- it { expect(subject.default_height).to eq(default_height) }
21
-
22
- context '#width' do
23
- it 'reads the env variable' do
24
- allow(ENV).to receive(:[]).with('TTY_COLUMNS').and_return('100')
25
- expect(subject.width).to eq(100)
26
- end
27
-
28
- it 'is not unix system' do
29
- allow(TTY::System).to receive(:unix?) { false }
30
- expect(subject).to receive(:default_width)
31
- subject.width
32
- end
33
-
34
- it 'is unix system' do
35
- allow(TTY::System).to receive(:unix?) { true }
36
- expect(subject).to receive(:dynamic_width) { default_width }
37
- expect(subject.width).to eq(80)
38
- end
39
-
40
- it 'cannot determine width' do
41
- allow(ENV).to receive(:[]) { raise }
42
- expect(terminal).to receive(:default_width) { default_width }
43
- expect(terminal.width).to eq(default_width)
44
- end
45
- end
46
-
47
- context '#height' do
48
- it 'sets the env variable' do
49
- allow(ENV).to receive(:[]).with('TTY_LINES').and_return('50')
50
- expect(subject.height).to eq(50)
51
- end
52
-
53
- it 'is not unix system' do
54
- allow(TTY::System).to receive(:unix?) { false }
55
- expect(subject).to receive(:default_height) { default_height }
56
- expect(subject.height).to eq(default_height)
57
- end
58
-
59
- it 'is unix system' do
60
- allow(TTY::System).to receive(:unix?) { true }
61
- expect(subject).to receive(:dynamic_height) { default_height }
62
- expect(subject.height).to eq(default_height)
63
- end
64
-
65
- it 'cannot determine width' do
66
- allow(ENV).to receive(:[]) { raise }
67
- expect(subject).to receive(:default_height)
68
- subject.height
69
- end
70
- end
71
-
72
- context '#dynamic_width' do
73
- it 'uses stty' do
74
- expect(subject).to receive(:dynamic_width_stty) { 100 }
75
- expect(subject.dynamic_width).to eq(100)
76
- end
77
-
78
- it 'uses tput' do
79
- allow(subject).to receive(:dynamic_width_stty).and_return(0)
80
- expect(subject).to receive(:dynamic_width_tput) { 100 }
81
- expect(subject.dynamic_width).to eq(100)
82
- end
83
- end
84
-
85
- context '#dynamic_height' do
86
- it 'uses stty' do
87
- allow(subject).to receive(:dynamic_height_stty) { 100 }
88
- expect(subject.dynamic_height).to eq(100)
89
- end
90
-
91
- it 'uses tput' do
92
- allow(subject).to receive(:dynamic_height_stty).and_return(0)
93
- expect(subject).to receive(:dynamic_height_tput) { 100 }
94
- expect(subject.dynamic_height).to eq(100)
95
- end
96
- end
97
- end