vedeu 0.6.10 → 0.6.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vedeu/all.rb +17 -103
  3. data/lib/vedeu/api/all.rb +15 -0
  4. data/lib/vedeu/api/internal.rb +4 -0
  5. data/lib/vedeu/application/all.rb +6 -0
  6. data/lib/vedeu/bindings/all.rb +32 -0
  7. data/lib/vedeu/bindings/bindings.rb +0 -14
  8. data/lib/vedeu/bindings/refresh.rb +8 -2
  9. data/lib/vedeu/bindings/system.rb +1 -0
  10. data/lib/vedeu/borders/border.rb +1 -1
  11. data/lib/vedeu/borders/repository.rb +1 -1
  12. data/lib/vedeu/buffers/buffer.rb +2 -4
  13. data/lib/vedeu/buffers/repository.rb +1 -1
  14. data/lib/vedeu/colours/background.rb +1 -1
  15. data/lib/vedeu/colours/backgrounds.rb +1 -1
  16. data/lib/vedeu/colours/foreground.rb +1 -1
  17. data/lib/vedeu/colours/foregrounds.rb +1 -1
  18. data/lib/vedeu/colours/translator.rb +4 -3
  19. data/lib/vedeu/configuration/api.rb +2 -1
  20. data/lib/vedeu/configuration/cli.rb +1 -1
  21. data/lib/vedeu/cursors/cursor.rb +26 -26
  22. data/lib/vedeu/cursors/repository.rb +1 -1
  23. data/lib/vedeu/distributed/all.rb +16 -0
  24. data/lib/vedeu/distributed/test_application.rb +3 -3
  25. data/lib/vedeu/dsl/all.rb +22 -0
  26. data/lib/vedeu/dsl/composition.rb +43 -40
  27. data/lib/vedeu/dsl/dsl.rb +6 -3
  28. data/lib/vedeu/dsl/group.rb +23 -16
  29. data/lib/vedeu/dsl/interface.rb +48 -38
  30. data/lib/vedeu/dsl/keymap.rb +6 -7
  31. data/lib/vedeu/dsl/line.rb +6 -3
  32. data/lib/vedeu/dsl/stream.rb +2 -1
  33. data/lib/vedeu/editor/cursor.rb +1 -3
  34. data/lib/vedeu/editor/document.rb +4 -5
  35. data/lib/vedeu/editor/documents.rb +1 -1
  36. data/lib/vedeu/editor/line.rb +2 -3
  37. data/lib/vedeu/editor/lines.rb +2 -3
  38. data/lib/vedeu/esc/all.rb +14 -0
  39. data/lib/vedeu/esc/colours.rb +8 -4
  40. data/lib/vedeu/esc/esc.rb +89 -84
  41. data/lib/vedeu/events/aliases.rb +1 -2
  42. data/lib/vedeu/events/collection.rb +1 -1
  43. data/lib/vedeu/events/event.rb +1 -1
  44. data/lib/vedeu/events/repository.rb +1 -1
  45. data/lib/vedeu/events/trigger.rb +11 -9
  46. data/lib/vedeu/geometry/dimension.rb +1 -3
  47. data/lib/vedeu/geometry/generic_coordinate.rb +1 -3
  48. data/lib/vedeu/geometry/geometry.rb +1 -1
  49. data/lib/vedeu/geometry/repository.rb +3 -3
  50. data/lib/vedeu/input/all.rb +3 -0
  51. data/lib/vedeu/input/keymap.rb +10 -11
  52. data/lib/vedeu/input/keymaps.rb +1 -1
  53. data/lib/vedeu/input/keys.rb +1 -1
  54. data/lib/vedeu/input/mapper.rb +14 -12
  55. data/lib/vedeu/logging/all.rb +3 -0
  56. data/lib/vedeu/logging/log.rb +4 -2
  57. data/lib/vedeu/menus/menu.rb +2 -4
  58. data/lib/vedeu/menus/repository.rb +1 -1
  59. data/lib/vedeu/models/all.rb +15 -0
  60. data/lib/vedeu/models/cell.rb +1 -1
  61. data/lib/vedeu/models/escape.rb +1 -1
  62. data/lib/vedeu/models/group.rb +4 -3
  63. data/lib/vedeu/models/groups.rb +1 -1
  64. data/lib/vedeu/models/interface.rb +1 -1
  65. data/lib/vedeu/models/interfaces.rb +1 -1
  66. data/lib/vedeu/models/views/char.rb +1 -1
  67. data/lib/vedeu/models/views/collections/chars.rb +1 -1
  68. data/lib/vedeu/models/views/collections/lines.rb +1 -1
  69. data/lib/vedeu/models/views/collections/streams.rb +1 -1
  70. data/lib/vedeu/models/views/collections/view_collection.rb +1 -1
  71. data/lib/vedeu/models/views/composition.rb +1 -1
  72. data/lib/vedeu/models/views/line.rb +8 -6
  73. data/lib/vedeu/models/views/stream.rb +1 -1
  74. data/lib/vedeu/models/views/view.rb +1 -1
  75. data/lib/vedeu/null/all.rb +12 -0
  76. data/lib/vedeu/output/clear/named_group.rb +2 -1
  77. data/lib/vedeu/output/clear/named_interface.rb +5 -4
  78. data/lib/vedeu/output/compressor.rb +1 -0
  79. data/lib/vedeu/output/output.rb +3 -0
  80. data/lib/vedeu/output/presentation/colour.rb +10 -10
  81. data/lib/vedeu/output/presentation/presentation.rb +9 -9
  82. data/lib/vedeu/output/presentation/style.rb +2 -2
  83. data/lib/vedeu/output/refresh/refresh.rb +35 -0
  84. data/lib/vedeu/output/refresh/refresh_group.rb +66 -0
  85. data/lib/vedeu/output/renderers/all.rb +17 -0
  86. data/lib/vedeu/output/renderers/escape_sequence.rb +4 -2
  87. data/lib/vedeu/output/renderers/file.rb +7 -6
  88. data/lib/vedeu/output/renderers/html.rb +9 -7
  89. data/lib/vedeu/output/renderers/null.rb +1 -1
  90. data/lib/vedeu/output/renderers/renderer_options.rb +24 -20
  91. data/lib/vedeu/output/renderers/terminal.rb +1 -1
  92. data/lib/vedeu/output/renderers/text.rb +1 -1
  93. data/lib/vedeu/output/wordwrap.rb +7 -4
  94. data/lib/vedeu/plugins/all.rb +2 -0
  95. data/lib/vedeu/repositories/all.rb +16 -0
  96. data/lib/vedeu/repositories/collection.rb +93 -89
  97. data/lib/vedeu/repositories/model.rb +113 -102
  98. data/lib/vedeu/repositories/registerable.rb +60 -56
  99. data/lib/vedeu/repositories/repository.rb +161 -156
  100. data/lib/vedeu/repositories/store.rb +70 -66
  101. data/lib/vedeu/runtime/all.rb +15 -0
  102. data/lib/vedeu/runtime/launcher.rb +19 -16
  103. data/lib/vedeu/templating/all.rb +6 -0
  104. data/lib/vedeu/terminal/all.rb +14 -0
  105. data/lib/vedeu/terminal/buffer.rb +8 -7
  106. data/lib/vedeu/terminal/mode.rb +11 -10
  107. data/lib/vedeu/terminal/terminal.rb +50 -45
  108. data/lib/vedeu/version.rb +1 -1
  109. data/test/lib/vedeu/cursors/cursor_test.rb +4 -2
  110. data/test/lib/vedeu/editor/cursor_test.rb +0 -3
  111. data/test/lib/vedeu/esc/esc_test.rb +58 -54
  112. data/test/lib/vedeu/events/collection_test.rb +1 -1
  113. data/test/lib/vedeu/input/keys_test.rb +1 -1
  114. data/test/lib/vedeu/input/mapper_test.rb +1 -1
  115. data/test/lib/vedeu/models/views/collections/chars_test.rb +1 -1
  116. data/test/lib/vedeu/models/views/collections/lines_test.rb +1 -1
  117. data/test/lib/vedeu/models/views/collections/streams_test.rb +1 -1
  118. data/test/lib/vedeu/models/views/collections/view_collection_test.rb +1 -1
  119. data/test/lib/vedeu/output/refresh/refresh_group_test.rb +43 -0
  120. data/test/lib/vedeu/output/refresh/refresh_test.rb +50 -0
  121. data/test/lib/vedeu/output/renderers/renderer_options_test.rb +8 -4
  122. data/test/lib/vedeu/output/renderers_test.rb +2 -1
  123. data/test/lib/vedeu/repositories/collection_test.rb +105 -101
  124. data/test/lib/vedeu/repositories/model_test.rb +56 -52
  125. data/test/lib/vedeu/repositories/registerable_test.rb +36 -32
  126. data/test/lib/vedeu/repositories/repository_test.rb +178 -174
  127. data/test/lib/vedeu/repositories/store_test.rb +109 -105
  128. data/test/support/examples/material_colours_app.rb +0 -1
  129. data/test/support/helpers/model_test_class.rb +50 -46
  130. data/test/test_helper.rb +2 -2
  131. metadata +21 -9
  132. data/lib/vedeu/refresh/refresh.rb +0 -31
  133. data/lib/vedeu/refresh/refresh_group.rb +0 -59
  134. data/out_ +0 -50
  135. data/test/lib/vedeu/refresh/refresh_group_test.rb +0 -39
  136. data/test/lib/vedeu/refresh/refresh_test.rb +0 -46
@@ -8,8 +8,8 @@ module Vedeu
8
8
 
9
9
  extend self
10
10
 
11
- # Returns a boolean indicating whether the terminal is currently in
12
- # `cooked` mode.
11
+ # Returns a boolean indicating whether the terminal is currently
12
+ # in `cooked` mode.
13
13
  #
14
14
  # @return [Boolean]
15
15
  def cooked_mode?
@@ -23,8 +23,8 @@ module Vedeu
23
23
  @mode = :cooked
24
24
  end
25
25
 
26
- # Returns a boolean indicating whether the terminal is currently in `fake`
27
- # mode.
26
+ # Returns a boolean indicating whether the terminal is currently
27
+ # in `fake` mode.
28
28
  #
29
29
  # @return [Boolean]
30
30
  def fake_mode?
@@ -38,8 +38,8 @@ module Vedeu
38
38
  @mode = :fake
39
39
  end
40
40
 
41
- # Returns a boolean indicating whether the terminal is currently in `raw`
42
- # mode.
41
+ # Returns a boolean indicating whether the terminal is currently
42
+ # in `raw` mode.
43
43
  #
44
44
  # @return [Boolean]
45
45
  def raw_mode?
@@ -53,8 +53,8 @@ module Vedeu
53
53
  @mode = :raw
54
54
  end
55
55
 
56
- # Toggles the terminal's mode between `cooked`, `fake` and `raw`,
57
- # depending on its current mode.
56
+ # Toggles the terminal's mode between `cooked`, `fake` and
57
+ # `raw`, depending on its current mode.
58
58
  #
59
59
  # @return [Symbol]
60
60
  def switch_mode!
@@ -64,8 +64,9 @@ module Vedeu
64
64
  raw_mode!
65
65
  end
66
66
 
67
- # Returns the mode of the terminal, either `:cooked`, `:fake` or `:raw`.
68
- # Can change throughout the lifespan of the client application.
67
+ # Returns the mode of the terminal, either `:cooked`, `:fake` or
68
+ # `:raw`. Can change throughout the lifespan of the client
69
+ # application.
69
70
  #
70
71
  # @return [Symbol]
71
72
  def mode
@@ -1,17 +1,19 @@
1
1
  module Vedeu
2
2
 
3
- # This module is the direct interface between Vedeu and your terminal/
4
- # console, via Ruby's IO core library.
3
+ # This module is the direct interface between Vedeu and your
4
+ # terminal/ console, via Ruby's IO core library.
5
5
  #
6
6
  module Terminal
7
7
 
8
8
  include Vedeu::Terminal::Mode
9
9
  extend self
10
10
 
11
- # Opens a terminal screen in either `raw` or `cooked` mode. On exit,
12
- # attempts to restore the screen. See {Vedeu::Terminal#restore_screen}.
11
+ # Opens a terminal screen in either `raw` or `cooked` mode. On
12
+ # exit, attempts to restore the screen. See
13
+ # {Vedeu::Terminal#restore_screen}.
13
14
  #
14
- # @raise [Vedeu::Error::InvalidSyntax] The required block was not given.
15
+ # @raise [Vedeu::Error::InvalidSyntax] The required block was not
16
+ # given.
15
17
  # @return [Array]
16
18
  def open
17
19
  fail Vedeu::Error::InvalidSyntax, 'block not given' unless block_given?
@@ -27,8 +29,8 @@ module Vedeu
27
29
  restore_screen
28
30
  end
29
31
 
30
- # Takes input from the user via the keyboard. Accepts special keys like
31
- # the F-Keys etc, by capturing the entire sequence.
32
+ # Takes input from the user via the keyboard. Accepts special keys
33
+ # like the F-Keys etc, by capturing the entire sequence.
32
34
  #
33
35
  # @return [String]
34
36
  def input
@@ -53,9 +55,10 @@ module Vedeu
53
55
  end
54
56
  alias_method :write, :output
55
57
 
56
- # When the terminal emit the 'SIGWINCH' signal, Vedeu can intercept this
57
- # and attempt to redraw the current interface with varying degrees of
58
- # success. Can also be used to simulate a terminal resize.
58
+ # When the terminal emit the 'SIGWINCH' signal, Vedeu can
59
+ # intercept this and attempt to redraw the current interface with
60
+ # varying degrees of success. Can also be used to simulate a
61
+ # terminal resize.
59
62
  #
60
63
  # @example
61
64
  # Vedeu.resize
@@ -74,7 +77,7 @@ module Vedeu
74
77
  def initialize_screen(mode)
75
78
  Vedeu.log(type: :info, message: "Terminal entering '#{mode}' mode")
76
79
 
77
- output(Esc.string('screen_init'))
80
+ output(Vedeu::EscapeSequences::Esc.string('screen_init'))
78
81
 
79
82
  yield if block_given?
80
83
  end
@@ -86,55 +89,53 @@ module Vedeu
86
89
  #
87
90
  # @return [String]
88
91
  def clear
89
- virtual.clear if Vedeu::Configuration.drb?
90
-
91
- output(Esc.string('clear'))
92
+ output(Vedeu::EscapeSequences::Esc.string('clear'))
92
93
  end
93
94
 
94
- # Attempts to tidy up the screen just before the application terminates.
95
- # The cursor is shown, colours are reset to terminal defaults, the
96
- # terminal is told to reset, and finally we clear the last line ready for
97
- # the prompt.
95
+ # Attempts to tidy up the screen just before the application
96
+ # terminates. The cursor is shown, colours are reset to terminal
97
+ # defaults, the terminal is told to reset, and finally we clear
98
+ # the last line ready for the prompt.
98
99
  #
99
100
  # @return [String]
100
101
  def restore_screen
101
- output(Esc.string('screen_exit'))
102
+ output(Vedeu::EscapeSequences::Esc.string('screen_exit'))
102
103
  end
103
104
 
104
- # Sets the cursor to be visible unless in raw mode, whereby it will be left
105
- # hidden.
105
+ # Sets the cursor to be visible unless in raw mode, whereby it
106
+ # will be left hidden.
106
107
  #
107
108
  # @return [String]
108
109
  def set_cursor_mode
109
- output(Esc.string('show_cursor')) unless raw_mode?
110
+ output(Vedeu::EscapeSequences::Esc.string('show_cursor')) unless raw_mode?
110
111
  end
111
112
 
112
- # Returns a coordinate tuple of the format [y, x], where `y` is the row/line
113
- # and `x` is the column/character.
113
+ # Returns a coordinate tuple of the format [y, x], where `y` is
114
+ # the row/line and `x` is the column/character.
114
115
  #
115
116
  # @return [Array]
116
117
  def centre
117
118
  [(height / 2), (width / 2)]
118
119
  end
119
120
 
120
- # Returns the `y` (row/line) component of the coordinate tuple provided by
121
- # {Vedeu::Terminal.centre}
121
+ # Returns the `y` (row/line) component of the coordinate tuple
122
+ # provided by {Vedeu::Terminal.centre}
122
123
  #
123
124
  # @return [Fixnum]
124
125
  def centre_y
125
126
  centre[0]
126
127
  end
127
128
 
128
- # Returns the `x` (column/character) component of the coodinate tuple
129
- # provided by {Vedeu::Terminal.centre}
129
+ # Returns the `x` (column/character) component of the coodinate
130
+ # tuple provided by {Vedeu::Terminal.centre}
130
131
  #
131
132
  # @return [Fixnum]
132
133
  def centre_x
133
134
  centre[-1]
134
135
  end
135
136
 
136
- # Returns 1. This 1 is either the top-most or left-most coordinate of the
137
- # terminal.
137
+ # Returns 1. This 1 is either the top-most or left-most coordinate
138
+ # of the terminal.
138
139
  #
139
140
  # @return [Fixnum]
140
141
  def origin
@@ -145,8 +146,8 @@ module Vedeu
145
146
  alias_method :tx, :origin
146
147
  alias_method :ty, :origin
147
148
 
148
- # Returns the total width (number of columns/characters) of the current
149
- # terminal.
149
+ # Returns the total width (number of columns/characters) of the
150
+ # current terminal.
150
151
  #
151
152
  # @example
152
153
  # Vedeu.width # => provides the width via the Vedeu API.
@@ -160,7 +161,8 @@ module Vedeu
160
161
  alias_method :xn, :width
161
162
  alias_method :txn, :width
162
163
 
163
- # Returns the total height (number of rows/lines) of the current terminal.
164
+ # Returns the total height (number of rows/lines) of the current
165
+ # terminal.
164
166
  #
165
167
  # @example
166
168
  # Vedeu.height # => provides the height via the Vedeu API.
@@ -174,21 +176,23 @@ module Vedeu
174
176
  alias_method :yn, :height
175
177
  alias_method :tyn, :height
176
178
 
177
- # Returns a tuple containing the height and width of the current terminal.
179
+ # Returns a tuple containing the height and width of the current
180
+ # terminal.
178
181
  #
179
182
  # @note
180
- # If the terminal is a odd number of characters in height or width, then
181
- # 1 is deducted from the dimension to make it even. For example; the
182
- # actual terminal is height: 37, width: 145, then the reported size will
183
- # be 36, 144 respectively.
183
+ # If the terminal is a odd number of characters in height or
184
+ # width, then 1 is deducted from the dimension to make it even.
185
+ # For example; the actual terminal is height: 37, width: 145,
186
+ # then the reported size will be 36, 144 respectively.
184
187
  #
185
- # This is done to make it easier for client applications to divide the
186
- # terminal space up when defining interfaces or views, leading to more
187
- # consistent rendering.
188
+ # This is done to make it easier for client applications to
189
+ # divide the terminal space up when defining interfaces or
190
+ # views, leading to more consistent rendering.
188
191
  #
189
- # If the client application is using the {Vedeu::Geometry::Grid#rows} or
190
- # {Vedeu::Geometry::Grid#columns} helpers, the dimensions are made more
191
- # consistent using this approach.
192
+ # If the client application is using the
193
+ # {Vedeu::Geometry::Grid#rows} or
194
+ # {Vedeu::Geometry::Grid#columns} helpers, the dimensions are
195
+ # made more consistent using this approach.
192
196
  #
193
197
  # @return [Array]
194
198
  def size
@@ -200,7 +204,8 @@ module Vedeu
200
204
  [h, w]
201
205
  end
202
206
 
203
- # Provides our gateway into the wonderful rainbow-filled world of IO.
207
+ # Provides our gateway into the wonderful rainbow-filled world of
208
+ # IO.
204
209
  #
205
210
  # @return [File]
206
211
  def console
data/lib/vedeu/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Vedeu
2
2
 
3
3
  # The current version of Vedeu.
4
- VERSION = '0.6.10'
4
+ VERSION = '0.6.11'
5
5
 
6
6
  end
@@ -75,7 +75,8 @@ module Vedeu
75
75
  describe '#hide' do
76
76
  let(:visible) { true }
77
77
  let(:hide_cursor) {
78
- Vedeu::Models::Escape.new(value: Vedeu::Esc.hide_cursor)
78
+ Vedeu::Models::Escape
79
+ .new(value: Vedeu::EscapeSequences::Esc.hide_cursor)
79
80
  }
80
81
 
81
82
  before do
@@ -201,7 +202,8 @@ module Vedeu
201
202
  describe '#show' do
202
203
  let(:visible) { false }
203
204
  let(:show_cursor) {
204
- Vedeu::Models::Escape.new(value: Vedeu::Esc.show_cursor)
205
+ Vedeu::Models::Escape
206
+ .new(value: Vedeu::EscapeSequences::Esc.show_cursor)
205
207
  }
206
208
 
207
209
  before do
@@ -31,9 +31,6 @@ module Vedeu
31
31
 
32
32
  describe '#initialize' do
33
33
  it { instance.must_be_instance_of(described) }
34
- it {
35
- instance.instance_variable_get('@attributes').must_equal(attributes)
36
- }
37
34
  it { instance.instance_variable_get('@y').must_equal(y) }
38
35
  it { instance.instance_variable_get('@x').must_equal(x) }
39
36
  it { instance.instance_variable_get('@by').must_equal(by) }
@@ -2,75 +2,79 @@ require 'test_helper'
2
2
 
3
3
  module Vedeu
4
4
 
5
- describe Esc do
5
+ module EscapeSequences
6
6
 
7
- let(:described) { Vedeu::Esc }
7
+ describe Esc do
8
8
 
9
- describe '.escape' do
10
- let(:stream) { "\e[0m\e[38;2;39m\e[48;2;49m\e[2J\e[?25l" }
9
+ let(:described) { Vedeu::EscapeSequences::Esc }
11
10
 
12
- subject { described.escape(stream) }
11
+ describe '.escape' do
12
+ let(:stream) { "\e[0m\e[38;2;39m\e[48;2;49m\e[2J\e[?25l" }
13
13
 
14
- it { subject.must_be_instance_of(String) }
14
+ subject { described.escape(stream) }
15
15
 
16
- it 'escapes the escape sequences' do
17
- subject.must_equal('\e[0m\e[38;2;39m\e[48;2;49m\e[2J\e[?25l')
18
- end
16
+ it { subject.must_be_instance_of(String) }
19
17
 
20
- context 'when a stream is not given' do
21
- let(:stream) { '' }
18
+ it 'escapes the escape sequences' do
19
+ subject.must_equal('\e[0m\e[38;2;39m\e[48;2;49m\e[2J\e[?25l')
20
+ end
22
21
 
23
- it { subject.must_equal('') }
24
- end
25
- end
22
+ context 'when a stream is not given' do
23
+ let(:stream) { '' }
26
24
 
27
- describe '.border' do
28
- context 'when the block is given' do
29
- it { described.border { 'b' }.must_equal("\e(0b\e(B") }
25
+ it { subject.must_equal('') }
26
+ end
30
27
  end
31
28
 
32
- context 'when the block is not given' do
33
- it { described.border.must_equal('') }
34
- end
35
- end
29
+ describe '.border' do
30
+ context 'when the block is given' do
31
+ it { described.border { 'b' }.must_equal("\e(0b\e(B") }
32
+ end
36
33
 
37
- describe '.string' do
38
- context 'when the style is not provided' do
39
- it { described.string.must_equal('') }
34
+ context 'when the block is not given' do
35
+ it { described.border.must_equal('') }
36
+ end
40
37
  end
41
38
 
42
- context 'when the style is provided' do
43
- it { described.string('bg_reset').must_equal("\e[49m") }
44
- it { described.string('blink').must_equal("\e[5m") }
45
- it { described.string('blink_off').must_equal("\e[25m") }
46
- it { described.string('bold').must_equal("\e[1m") }
47
- it { described.string('bold_off').must_equal("\e[22m") }
48
- it { described.string('clear').must_equal("\e[39m\e[49m\e[2J") }
49
- it { described.string('clear_line').must_equal("\e[39m\e[49m\e[2K") }
50
- it { described.string('colour_reset').must_equal("\e[39m\e[49m") }
51
- it { described.string('fg_reset').must_equal("\e[39m") }
52
- it { described.string('hide_cursor').must_equal("\e[?25l") }
53
- it { described.string('screen_init').
54
- must_equal("\e[0m\e[39m\e[49m\e[2J\e[?25l") }
55
- it { described.string('negative').must_equal("\e[7m") }
56
- it { described.string('positive').must_equal("\e[27m") }
57
- it { described.string('reset').must_equal("\e[0m") }
58
- it { described.string('normal').must_equal("\e[24m\e[22m\e[27m") }
59
- it { described.string('dim').must_equal("\e[2m") }
60
- it { described.string('show_cursor').must_equal("\e[?25h") }
61
- it { described.string('underline').must_equal("\e[4m") }
62
- it { described.string('underline_off').must_equal("\e[24m") }
63
- it { described.string('cursor_position').must_equal("\e[6n") }
39
+ describe '.string' do
40
+ context 'when the style is not provided' do
41
+ it { described.string.must_equal('') }
42
+ end
43
+
44
+ context 'when the style is provided' do
45
+ it { described.string('bg_reset').must_equal("\e[49m") }
46
+ it { described.string('blink').must_equal("\e[5m") }
47
+ it { described.string('blink_off').must_equal("\e[25m") }
48
+ it { described.string('bold').must_equal("\e[1m") }
49
+ it { described.string('bold_off').must_equal("\e[22m") }
50
+ it { described.string('clear').must_equal("\e[39m\e[49m\e[2J") }
51
+ it { described.string('clear_line').must_equal("\e[39m\e[49m\e[2K") }
52
+ it { described.string('colour_reset').must_equal("\e[39m\e[49m") }
53
+ it { described.string('fg_reset').must_equal("\e[39m") }
54
+ it { described.string('hide_cursor').must_equal("\e[?25l") }
55
+ it { described.string('screen_init').
56
+ must_equal("\e[0m\e[39m\e[49m\e[2J\e[?25l") }
57
+ it { described.string('negative').must_equal("\e[7m") }
58
+ it { described.string('positive').must_equal("\e[27m") }
59
+ it { described.string('reset').must_equal("\e[0m") }
60
+ it { described.string('normal').must_equal("\e[24m\e[22m\e[27m") }
61
+ it { described.string('dim').must_equal("\e[2m") }
62
+ it { described.string('show_cursor').must_equal("\e[?25h") }
63
+ it { described.string('underline').must_equal("\e[4m") }
64
+ it { described.string('underline_off').must_equal("\e[24m") }
65
+ it { described.string('cursor_position').must_equal("\e[6n") }
66
+ end
67
+
68
+ context 'screen_exit' do
69
+ before { Vedeu::Terminal.stubs(:size).returns([80, 25]) }
70
+
71
+ it { described.string('screen_exit').
72
+ must_equal("\e[?25h\e[39m\e[49m\e[0m\e[80;25H\n") }
73
+ end
64
74
  end
65
75
 
66
- context 'screen_exit' do
67
- before { Vedeu::Terminal.stubs(:size).returns([80, 25]) }
68
-
69
- it { described.string('screen_exit').
70
- must_equal("\e[?25h\e[39m\e[49m\e[0m\e[80;25H\n") }
71
- end
72
- end
76
+ end # Esc
73
77
 
74
- end # Esc
78
+ end # EscapeSequences
75
79
 
76
80
  end # Vedeu
@@ -9,7 +9,7 @@ module Vedeu
9
9
  let(:described) { Vedeu::Events::Collection }
10
10
  let(:instance) { described.new }
11
11
 
12
- it { described.superclass.must_equal(Vedeu::Collection) }
12
+ it { described.superclass.must_equal(Vedeu::Repositories::Collection) }
13
13
 
14
14
  describe '#initialize' do
15
15
  it { instance.must_be_instance_of(described) }
@@ -9,7 +9,7 @@ module Vedeu
9
9
  let(:described) { Vedeu::Input::Keys }
10
10
  let(:instance) { described.new }
11
11
 
12
- it { described.superclass.must_equal(Vedeu::Collection) }
12
+ it { described.superclass.must_equal(Vedeu::Repositories::Collection) }
13
13
 
14
14
  describe '#initialize' do
15
15
  it { instance.must_be_instance_of(described) }
@@ -23,7 +23,7 @@ module Vedeu
23
23
  end
24
24
 
25
25
  context 'when the repository is provided' do
26
- let(:repository) { Vedeu::Repository.new }
26
+ let(:repository) { Vedeu::Repositories::Repository.new }
27
27
 
28
28
  it do
29
29
  instance.instance_variable_get('@repository').must_equal(repository)
@@ -9,7 +9,7 @@ module Vedeu
9
9
  let(:described) { Vedeu::Views::Chars }
10
10
  let(:instance) { described.new }
11
11
 
12
- it { described.superclass.must_equal(Vedeu::Collection) }
12
+ it { described.superclass.must_equal(Vedeu::Repositories::Collection) }
13
13
 
14
14
  describe '#initialize' do
15
15
  it { instance.must_be_instance_of(described) }
@@ -9,7 +9,7 @@ module Vedeu
9
9
  let(:described) { Vedeu::Views::Lines }
10
10
  let(:instance) { described.new }
11
11
 
12
- it { described.superclass.must_equal(Vedeu::Collection) }
12
+ it { described.superclass.must_equal(Vedeu::Repositories::Collection) }
13
13
 
14
14
  describe '#initialize' do
15
15
  it { instance.must_be_instance_of(described) }
@@ -9,7 +9,7 @@ module Vedeu
9
9
  let(:described) { Vedeu::Views::Streams }
10
10
  let(:instance) { described.new }
11
11
 
12
- it { described.superclass.must_equal(Vedeu::Collection) }
12
+ it { described.superclass.must_equal(Vedeu::Repositories::Collection) }
13
13
 
14
14
  describe '#initialize' do
15
15
  it { instance.must_be_instance_of(described) }
@@ -9,7 +9,7 @@ module Vedeu
9
9
  let(:described) { Vedeu::Views::ViewCollection }
10
10
  let(:instance) { described.new }
11
11
 
12
- it { described.superclass.must_equal(Vedeu::Collection) }
12
+ it { described.superclass.must_equal(Vedeu::Repositories::Collection) }
13
13
 
14
14
  describe '#initialize' do
15
15
  it { instance.must_be_instance_of(described) }
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module Output
6
+
7
+ describe RefreshGroup do
8
+
9
+ let(:described) { Vedeu::Output::RefreshGroup }
10
+ let(:instance) { described.new(_name) }
11
+ let(:_name) { 'Vedeu::Output::RefreshGroup' }
12
+
13
+ describe '#initialize' do
14
+ it { instance.must_be_instance_of(described) }
15
+ it { instance.instance_variable_get('@name').must_equal(_name) }
16
+ end
17
+
18
+ describe '.by_name' do
19
+ subject { described.by_name(_name) }
20
+
21
+ context 'when the name is not present' do
22
+ let(:_name) { '' }
23
+
24
+ it { proc { subject }.must_raise(Vedeu::Error::MissingRequired) }
25
+ end
26
+
27
+ context 'when the name is present' do
28
+ it {
29
+ Vedeu::Output::RefreshGroup.expects(:by_name).with(_name)
30
+ subject
31
+ }
32
+ end
33
+ end
34
+
35
+ describe '#by_name' do
36
+ it { instance.must_respond_to(:by_name) }
37
+ end
38
+
39
+ end # RefreshGroup
40
+
41
+ end # Output
42
+
43
+ end # Vedeu
@@ -0,0 +1,50 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module Output
6
+
7
+ describe Refresh do
8
+
9
+ let(:described) { Vedeu::Output::Refresh }
10
+ let(:instance) { described.new }
11
+
12
+ describe '.all' do
13
+ before { Vedeu.stubs(:trigger) }
14
+
15
+ subject { described.all }
16
+
17
+ it { subject.must_be_instance_of(Array) }
18
+
19
+ context 'when there are no registered interfaces' do
20
+ before { Vedeu.interfaces.reset }
21
+
22
+ it { subject.must_equal([]) }
23
+ end
24
+
25
+ context 'when there are registered interfaces' do
26
+ let(:interface) {
27
+ Vedeu::Models::Interface.new(name: 'Vedeu::Output::Refresh')
28
+ }
29
+ let(:interfaces) { [interface] }
30
+
31
+ before { Vedeu.interfaces.stubs(:zindexed).returns(interfaces) }
32
+
33
+ it {
34
+ Vedeu.expects(:trigger).with(:_refresh_, 'Vedeu::Output::Refresh')
35
+ subject
36
+ }
37
+
38
+ it { subject.must_equal([interface]) }
39
+ end
40
+ end
41
+
42
+ describe '#all' do
43
+ it { instance.must_respond_to(:all) }
44
+ end
45
+
46
+ end # Refresh
47
+
48
+ end # Output
49
+
50
+ end # Vedeu
@@ -2,11 +2,15 @@ require 'test_helper'
2
2
 
3
3
  module Vedeu
4
4
 
5
- describe RendererOptions do
5
+ module Renderers
6
6
 
7
- # @todo Add more tests.
8
- # it { skip }
7
+ describe RendererOptions do
9
8
 
10
- end # RendererOptions
9
+ # @todo Add more tests.
10
+ # it { skip }
11
+
12
+ end # RendererOptions
13
+
14
+ end # Renderers
11
15
 
12
16
  end # Vedeu
@@ -73,7 +73,8 @@ module Vedeu
73
73
 
74
74
  context 'when there is content' do
75
75
  let(:output) {
76
- Vedeu::Models::Escape.new(value: Vedeu::Esc.hide_cursor)
76
+ Vedeu::Models::Escape
77
+ .new(value: Vedeu::EscapeSequences::Esc.hide_cursor)
77
78
  }
78
79
 
79
80
  it { subject.must_be_instance_of(Vedeu::Models::Escape) }