vedeu 0.4.40 → 0.4.41
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 +4 -4
- data/Dockerfile +23 -28
- data/Guardfile +0 -8
- data/Rakefile +0 -6
- data/docs/applications.md +0 -1
- data/docs/dsl.md +7 -12
- data/examples/borders_app.rb +5 -0
- data/examples/configuration_app.rb +5 -0
- data/examples/drb_app.rb +5 -0
- data/examples/geometry_app.rb +5 -0
- data/examples/material_colours_app.rb +5 -0
- data/examples/panel_app.rb +5 -0
- data/examples/typed_commands/typed_commands_app.rb +5 -0
- data/examples/view_templates_app/view_templates_app.rb +5 -0
- data/lib/vedeu/api.rb +8 -8
- data/lib/vedeu/application/all.rb +3 -0
- data/lib/vedeu/application/application_controller.rb +4 -0
- data/lib/vedeu/application/application_helper.rb +4 -0
- data/lib/vedeu/application/application_view.rb +6 -0
- data/lib/vedeu/application/controller.rb +23 -0
- data/lib/vedeu/application/helper.rb +23 -0
- data/lib/vedeu/application/view.rb +23 -0
- data/lib/vedeu/application.rb +1 -3
- data/lib/vedeu/bindings.rb +64 -65
- data/lib/vedeu/bootstrap.rb +2 -0
- data/lib/vedeu/buffers/buffer.rb +44 -0
- data/lib/vedeu/configuration/api.rb +44 -119
- data/lib/vedeu/configuration/cli.rb +2 -0
- data/lib/vedeu/configuration/configuration.rb +4 -20
- data/lib/vedeu/cursor/cursor.rb +7 -7
- data/lib/vedeu/cursor/reposition.rb +2 -0
- data/lib/vedeu/dsl/border.rb +58 -2
- data/lib/vedeu/dsl/composition.rb +5 -3
- data/lib/vedeu/dsl/geometry.rb +14 -5
- data/lib/vedeu/dsl/group.rb +2 -0
- data/lib/vedeu/dsl/interface.rb +23 -3
- data/lib/vedeu/dsl/keymap.rb +11 -6
- data/lib/vedeu/dsl/line.rb +8 -0
- data/lib/vedeu/dsl/menu.rb +3 -1
- data/lib/vedeu/dsl/presentation.rb +12 -3
- data/lib/vedeu/dsl/text.rb +2 -0
- data/lib/vedeu/dsl/view.rb +6 -1
- data/lib/vedeu/events/event.rb +3 -1
- data/lib/vedeu/generator/application.rb +2 -7
- data/lib/vedeu/generator/templates/application/app/models/keymaps/_global_.rb +5 -0
- data/lib/vedeu/generator/templates/application/app/views/interfaces/name.erb +10 -0
- data/lib/vedeu/generator/view.rb +2 -0
- data/lib/vedeu/geometry/geometry.rb +14 -0
- data/lib/vedeu/geometry/index_position.rb +1 -0
- data/lib/vedeu/geometry/position.rb +5 -0
- data/lib/vedeu/input/all.rb +0 -8
- data/lib/vedeu/input/input.rb +24 -8
- data/lib/vedeu/input/mapper.rb +5 -12
- data/lib/vedeu/models/composition.rb +3 -3
- data/lib/vedeu/models/escape_char.rb +2 -0
- data/lib/vedeu/models/focus.rb +8 -0
- data/lib/vedeu/models/interface.rb +1 -1
- data/lib/vedeu/models/line.rb +1 -5
- data/lib/vedeu/models/menu.rb +4 -2
- data/lib/vedeu/models/panel.rb +2 -0
- data/lib/vedeu/null/buffer.rb +2 -0
- data/lib/vedeu/null/interface.rb +2 -0
- data/lib/vedeu/output/background.rb +1 -1
- data/lib/vedeu/output/border.rb +5 -157
- data/lib/vedeu/output/compressor.rb +2 -0
- data/lib/vedeu/output/foreground.rb +1 -1
- data/lib/vedeu/output/refresh.rb +5 -9
- data/lib/vedeu/output/render_border.rb +230 -0
- data/lib/vedeu/output/renderers/escape_sequence.rb +2 -3
- data/lib/vedeu/output/renderers/file.rb +10 -9
- data/lib/vedeu/repositories/collections/all.rb +4 -4
- data/lib/vedeu/repositories/repositories/all.rb +4 -4
- data/lib/vedeu/repositories/repositories/{background_colours.rb → backgrounds.rb} +3 -3
- data/lib/vedeu/repositories/repositories/cursors.rb +3 -0
- data/lib/vedeu/repositories/repositories/{events_repository.rb → events.rb} +5 -5
- data/lib/vedeu/repositories/repositories/{foreground_colours.rb → foregrounds.rb} +3 -3
- data/lib/vedeu/repositories/repositories/{interfaces_repository.rb → interfaces.rb} +4 -4
- data/lib/vedeu/storage/associative_store.rb +2 -0
- data/lib/vedeu/storage/conveyor_store.rb +2 -0
- data/lib/vedeu/storage/fifo_store.rb +2 -0
- data/lib/vedeu/storage/store.rb +7 -7
- data/lib/vedeu/support/options.rb +2 -0
- data/lib/vedeu/support/terminal.rb +3 -3
- data/lib/vedeu/support/timer.rb +2 -0
- data/lib/vedeu/support/visibility.rb +2 -0
- data/lib/vedeu/templating/directive.rb +2 -0
- data/lib/vedeu/templating/preprocessor.rb +2 -0
- data/lib/vedeu/version.rb +1 -1
- data/lib/vedeu.rb +3 -1
- data/test/lib/vedeu/bindings_test.rb +15 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +12 -0
- data/test/lib/vedeu/configuration/api_test.rb +0 -39
- data/test/lib/vedeu/configuration/configuration_test.rb +0 -9
- data/test/lib/vedeu/cursor/cursor_test.rb +6 -0
- data/test/lib/vedeu/dsl/border_test.rb +12 -0
- data/test/lib/vedeu/dsl/composition_test.rb +2 -2
- data/test/lib/vedeu/geometry/index_position_test.rb +2 -0
- data/test/lib/vedeu/geometry/position_test.rb +6 -0
- data/test/lib/vedeu/models/cell_test.rb +16 -8
- data/test/lib/vedeu/models/char_test.rb +8 -0
- data/test/lib/vedeu/models/composition_test.rb +2 -2
- data/test/lib/vedeu/models/interface_test.rb +10 -0
- data/test/lib/vedeu/models/line_test.rb +12 -0
- data/test/lib/vedeu/models/stream_test.rb +1 -13
- data/test/lib/vedeu/output/border_test.rb +1 -0
- data/test/lib/vedeu/output/presentation_test.rb +2 -0
- data/test/lib/vedeu/output/render_border_test.rb +16 -0
- data/test/lib/vedeu/output/renderers/file_test.rb +32 -16
- data/test/lib/vedeu/repositories/collection_test.rb +7 -0
- data/test/lib/vedeu/repositories/collections/all_test.rb +18 -6
- data/test/lib/vedeu/repositories/model_test.rb +33 -7
- data/test/lib/vedeu/repositories/repositories/{background_colours_test.rb → backgrounds_test.rb} +3 -3
- data/test/lib/vedeu/repositories/repositories/borders_test.rb +7 -17
- data/test/lib/vedeu/repositories/repositories/buffers_test.rb +7 -22
- data/test/lib/vedeu/repositories/repositories/cursors_test.rb +32 -0
- data/test/lib/vedeu/repositories/repositories/events_test.rb +22 -0
- data/test/lib/vedeu/repositories/repositories/{foreground_colours_test.rb → foregrounds_test.rb} +3 -3
- data/test/lib/vedeu/repositories/repositories/geometries_test.rb +7 -21
- data/test/lib/vedeu/repositories/repositories/groups_test.rb +11 -0
- data/test/lib/vedeu/repositories/repositories/{interfaces_repositories_test.rb → interfaces_test.rb} +14 -3
- data/test/lib/vedeu/repositories/repositories/keymaps_test.rb +10 -1
- data/test/lib/vedeu/repositories/repositories/menus_test.rb +10 -1
- data/test/lib/vedeu/repositories/repository_test.rb +15 -9
- data/test/lib/vedeu/storage/conveyor_store_test.rb +2 -4
- data/test/lib/vedeu/support/terminal_test.rb +2 -2
- data/test/lib/vedeu/templating/helpers_test.rb +4 -0
- data/vedeu.gemspec +0 -2
- metadata +20 -54
- data/config/cucumber.yml +0 -8
- data/features/cli_vedeu.feature +0 -5
- data/features/start_stop.feature +0 -27
- data/features/step_definitions/vedeu_steps.rb +0 -0
- data/features/support/env.rb +0 -15
- data/lib/vedeu/generator/templates/application/app/models/keymaps/_system_.rb +0 -7
- data/test/lib/vedeu/repositories/repositories/events_repository_test.rb +0 -13
- data/test/lib/vedeu/repositories/repositories/interfaces_repository_test.rb +0 -11
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
module Vedeu
|
|
2
|
+
|
|
3
|
+
class RenderBorder
|
|
4
|
+
|
|
5
|
+
extend Forwardable
|
|
6
|
+
include Vedeu::Common
|
|
7
|
+
|
|
8
|
+
def_delegators :border,
|
|
9
|
+
:bottom?,
|
|
10
|
+
:bottom_left,
|
|
11
|
+
:bottom_right,
|
|
12
|
+
:bx,
|
|
13
|
+
:bxn,
|
|
14
|
+
:by,
|
|
15
|
+
:byn,
|
|
16
|
+
:colour,
|
|
17
|
+
:enabled?,
|
|
18
|
+
:height,
|
|
19
|
+
:horizontal,
|
|
20
|
+
:left?,
|
|
21
|
+
:name,
|
|
22
|
+
:right?,
|
|
23
|
+
:style,
|
|
24
|
+
:title,
|
|
25
|
+
:top?,
|
|
26
|
+
:top_left,
|
|
27
|
+
:top_right,
|
|
28
|
+
:width,
|
|
29
|
+
:vertical
|
|
30
|
+
|
|
31
|
+
def_delegators :geometry,
|
|
32
|
+
:x,
|
|
33
|
+
:xn,
|
|
34
|
+
:y,
|
|
35
|
+
:yn
|
|
36
|
+
|
|
37
|
+
def_delegators :interface,
|
|
38
|
+
:visible?
|
|
39
|
+
|
|
40
|
+
# @return [Array<Array<Vedeu::Char>>]
|
|
41
|
+
# @see Vedeu::RenderBorder#initialize
|
|
42
|
+
def self.with(border)
|
|
43
|
+
new(border).render
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Returns a new instance of Vedeu::RenderBorder.
|
|
47
|
+
#
|
|
48
|
+
# @param border [Vedeu::Border]
|
|
49
|
+
# @return [Vedeu::Renderers::Border]
|
|
50
|
+
def initialize(border)
|
|
51
|
+
@border = border
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# @return [Array<Array<Vedeu::Char>>]
|
|
55
|
+
def render
|
|
56
|
+
return [] unless visible?
|
|
57
|
+
return [] unless enabled?
|
|
58
|
+
|
|
59
|
+
Vedeu.timer("Rendering border: #{name}") do
|
|
60
|
+
out = [top, bottom]
|
|
61
|
+
|
|
62
|
+
height.times do |y|
|
|
63
|
+
out << [left(y), right(y)]
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
out.flatten
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
protected
|
|
71
|
+
|
|
72
|
+
# @!attribute [r] border
|
|
73
|
+
# @return [Vedeu::Border]
|
|
74
|
+
attr_reader :border
|
|
75
|
+
|
|
76
|
+
private
|
|
77
|
+
|
|
78
|
+
# @param value [String]
|
|
79
|
+
# @param type [Symbol|NilClass]
|
|
80
|
+
# @param iy [Fixnum]
|
|
81
|
+
# @param ix [Fixnum]
|
|
82
|
+
# @return [Vedeu::Char]
|
|
83
|
+
def build(value, type = :border, iy = 0, ix = 0)
|
|
84
|
+
Vedeu::Char.new(value: value,
|
|
85
|
+
parent: interface,
|
|
86
|
+
colour: colour,
|
|
87
|
+
style: style,
|
|
88
|
+
position: Vedeu::Position[iy, ix],
|
|
89
|
+
border: type)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Renders the bottom border for the interface.
|
|
93
|
+
#
|
|
94
|
+
# @return [String]
|
|
95
|
+
def bottom
|
|
96
|
+
return [] unless bottom?
|
|
97
|
+
|
|
98
|
+
out = []
|
|
99
|
+
out << build(bottom_left, :bottom_left, *[yn, x]) if left?
|
|
100
|
+
out << horizontal_border(:bottom_horizontal, yn)
|
|
101
|
+
out << build(bottom_right, :bottom_right, *[yn, xn]) if right?
|
|
102
|
+
out
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# @return [Vedeu::Geometry]
|
|
106
|
+
def geometry
|
|
107
|
+
Vedeu.geometries.by_name(name)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# @param position [Symbol] Either :top_horizontal, or :bottom_horizontal.
|
|
111
|
+
# @return [Array<Vedeu::Char>]
|
|
112
|
+
def horizontal_border(position, y_coordinate)
|
|
113
|
+
width.times.each_with_object([]) do |ix, a|
|
|
114
|
+
a << build(horizontal, position, *[y_coordinate, (bx + ix)])
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# The parent of a border is always an interface.
|
|
119
|
+
#
|
|
120
|
+
# @return [Vedeu::Interface]
|
|
121
|
+
def interface
|
|
122
|
+
@interface ||= Vedeu.interfaces.by_name(name)
|
|
123
|
+
end
|
|
124
|
+
alias_method :parent, :interface
|
|
125
|
+
|
|
126
|
+
# Renders the left border for the interface.
|
|
127
|
+
#
|
|
128
|
+
# @param iy [Fixnum]
|
|
129
|
+
# @return [String]
|
|
130
|
+
def left(iy = 0)
|
|
131
|
+
return [] unless left?
|
|
132
|
+
|
|
133
|
+
build(vertical, :left_vertical, *[(by + iy), x])
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Pads the title with a single whitespace either side.
|
|
137
|
+
#
|
|
138
|
+
# @example
|
|
139
|
+
# title = 'Truncated!'
|
|
140
|
+
# width = 20
|
|
141
|
+
# # => ' Truncated! '
|
|
142
|
+
#
|
|
143
|
+
# width = 10
|
|
144
|
+
# # => ' Trunca '
|
|
145
|
+
#
|
|
146
|
+
# @return [String]
|
|
147
|
+
# @see #truncated_title
|
|
148
|
+
def padded_title
|
|
149
|
+
truncated_title.center(truncated_title.size + 2)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Renders the right border for the interface.
|
|
153
|
+
#
|
|
154
|
+
# @param iy [Fixnum]
|
|
155
|
+
# @return [String]
|
|
156
|
+
def right(iy = 0)
|
|
157
|
+
return [] unless right?
|
|
158
|
+
|
|
159
|
+
build(vertical, :right_vertical, *[(by + iy), xn])
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# Return boolean indicating whether this border has a non-empty title.
|
|
163
|
+
#
|
|
164
|
+
# @return [Boolean]
|
|
165
|
+
def title?
|
|
166
|
+
present?(title)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# From the second element of {#title_characters} remove the border from each
|
|
170
|
+
# {#horizontal_border} Vedeu::Char, and add the title character.
|
|
171
|
+
#
|
|
172
|
+
# @return [Array<Vedeu::Char>]
|
|
173
|
+
def titlebar
|
|
174
|
+
horizontal_border(:top_horizontal, y).each_with_index do |char, index|
|
|
175
|
+
if index >= 1 && index <= title_characters.size
|
|
176
|
+
char.border = nil
|
|
177
|
+
char.value = title_characters[(index - 1)]
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# @return [Array<String>]
|
|
183
|
+
def title_characters
|
|
184
|
+
@title_characters ||= padded_title.chars
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# Renders the top border for the interface.
|
|
188
|
+
#
|
|
189
|
+
# @note
|
|
190
|
+
# If a title has been specified, then the top border will include this
|
|
191
|
+
# title unless the size of the interface is smaller than the padded title
|
|
192
|
+
# length.
|
|
193
|
+
#
|
|
194
|
+
# @return [String]
|
|
195
|
+
def top
|
|
196
|
+
return [] unless top?
|
|
197
|
+
|
|
198
|
+
out = []
|
|
199
|
+
out << build(top_left, :top_left, *[y, x]) if left?
|
|
200
|
+
if title? && width > title_characters.size
|
|
201
|
+
out << titlebar
|
|
202
|
+
|
|
203
|
+
else
|
|
204
|
+
out << horizontal_border(:top_horizontal, y)
|
|
205
|
+
|
|
206
|
+
end
|
|
207
|
+
out << build(top_right, :top_right, *[y, xn]) if right?
|
|
208
|
+
out
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
# Truncates the title to the width of the interface, minus characters needed
|
|
212
|
+
# to ensure there is at least a single character of horizontal border and a
|
|
213
|
+
# whitespace on either side of the title.
|
|
214
|
+
#
|
|
215
|
+
# @example
|
|
216
|
+
# title = 'Truncated!'
|
|
217
|
+
# width = 20
|
|
218
|
+
# # => 'Truncated!'
|
|
219
|
+
#
|
|
220
|
+
# width = 10
|
|
221
|
+
# # => 'Trunca'
|
|
222
|
+
#
|
|
223
|
+
# @return [String]
|
|
224
|
+
def truncated_title
|
|
225
|
+
title.chomp.slice(0..(width - 5))
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
end # RenderBorder
|
|
229
|
+
|
|
230
|
+
end # Vedeu
|
|
@@ -13,6 +13,8 @@ module Vedeu
|
|
|
13
13
|
new(output).render
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
+
# Returns a new instance of Vedeu::Renderers::EscapeSequence.
|
|
17
|
+
#
|
|
16
18
|
# @param output [Array<Array<Vedeu::Char>>]
|
|
17
19
|
def initialize(output)
|
|
18
20
|
@output = output
|
|
@@ -20,9 +22,6 @@ module Vedeu
|
|
|
20
22
|
|
|
21
23
|
# @return [String]
|
|
22
24
|
def render
|
|
23
|
-
Vedeu.log(type: :debug,
|
|
24
|
-
message: "#{self.class.name}:\n#{parsed}")
|
|
25
|
-
|
|
26
25
|
parsed
|
|
27
26
|
end
|
|
28
27
|
|
|
@@ -2,24 +2,24 @@ module Vedeu
|
|
|
2
2
|
|
|
3
3
|
module Renderers
|
|
4
4
|
|
|
5
|
-
#
|
|
6
|
-
# and content suitable for a terminal, and writes them to a file in the /tmp
|
|
7
|
-
# directory.
|
|
5
|
+
# Writes the given output to a file.
|
|
8
6
|
#
|
|
9
7
|
# @api private
|
|
10
8
|
class File
|
|
11
9
|
|
|
12
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
|
13
|
-
# @param options [Hash]
|
|
14
10
|
# @return [String]
|
|
11
|
+
# @see Vedeu::Renderers::File#initialize
|
|
15
12
|
def self.render(output, options = {})
|
|
16
13
|
new(output, options).render
|
|
17
14
|
end
|
|
18
15
|
|
|
19
16
|
# Returns a new instance of Vedeu::Renderers::File.
|
|
20
17
|
#
|
|
21
|
-
# @param output [
|
|
18
|
+
# @param output [String]
|
|
22
19
|
# @param options [Hash]
|
|
20
|
+
# @option options filename [String] Provide a filename for the output.
|
|
21
|
+
# Defaults to 'out'.
|
|
22
|
+
# @option options timestamp [Boolean] Append a timestamp to the filename.
|
|
23
23
|
# @return [Vedeu::Renderers::File]
|
|
24
24
|
def initialize(output, options = {})
|
|
25
25
|
@output = output
|
|
@@ -36,7 +36,7 @@ module Vedeu
|
|
|
36
36
|
protected
|
|
37
37
|
|
|
38
38
|
# @!attribute [r] output
|
|
39
|
-
# @return [
|
|
39
|
+
# @return [String]
|
|
40
40
|
attr_reader :output
|
|
41
41
|
alias_method :parsed, :output
|
|
42
42
|
|
|
@@ -50,10 +50,10 @@ module Vedeu
|
|
|
50
50
|
# @return [String]
|
|
51
51
|
def filename
|
|
52
52
|
if timestamp?
|
|
53
|
-
"
|
|
53
|
+
"#{options[:filename]}_#{timestamp}"
|
|
54
54
|
|
|
55
55
|
else
|
|
56
|
-
|
|
56
|
+
options[:filename]
|
|
57
57
|
|
|
58
58
|
end
|
|
59
59
|
end
|
|
@@ -78,6 +78,7 @@ module Vedeu
|
|
|
78
78
|
# @return [Hash]
|
|
79
79
|
def defaults
|
|
80
80
|
{
|
|
81
|
+
filename: 'out',
|
|
81
82
|
timestamp: false,
|
|
82
83
|
}
|
|
83
84
|
end
|
|
@@ -12,16 +12,16 @@ module Vedeu
|
|
|
12
12
|
# A collection of {Vedeu::Event} instances.
|
|
13
13
|
#
|
|
14
14
|
# @api private
|
|
15
|
-
class
|
|
15
|
+
class EventCollection < Vedeu::Collection
|
|
16
16
|
|
|
17
|
-
end #
|
|
17
|
+
end # EventCollection
|
|
18
18
|
|
|
19
19
|
# A collection of {Vedeu::Interface} instances.
|
|
20
20
|
#
|
|
21
21
|
# @api private
|
|
22
|
-
class
|
|
22
|
+
class InterfaceCollection < Vedeu::Collection
|
|
23
23
|
|
|
24
|
-
end #
|
|
24
|
+
end # InterfaceCollection
|
|
25
25
|
|
|
26
26
|
# A collection of {Vedeu::Key} instances.
|
|
27
27
|
#
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
require 'vedeu/repositories/repository'
|
|
2
2
|
|
|
3
3
|
require_relative 'colours'
|
|
4
|
-
require_relative '
|
|
5
|
-
require_relative '
|
|
4
|
+
require_relative 'backgrounds'
|
|
5
|
+
require_relative 'foregrounds'
|
|
6
6
|
require_relative 'borders'
|
|
7
7
|
require_relative 'buffers'
|
|
8
8
|
require_relative 'cursors'
|
|
9
|
-
require_relative '
|
|
9
|
+
require_relative 'events'
|
|
10
10
|
require_relative 'geometries'
|
|
11
11
|
require_relative 'groups'
|
|
12
|
-
require_relative '
|
|
12
|
+
require_relative 'interfaces'
|
|
13
13
|
require_relative 'keymaps'
|
|
14
14
|
require_relative 'menus'
|
|
@@ -3,16 +3,16 @@ module Vedeu
|
|
|
3
3
|
# Store background colour escape sequences by HTML/CSS code.
|
|
4
4
|
#
|
|
5
5
|
# @api public
|
|
6
|
-
class
|
|
6
|
+
class Backgrounds < Colours
|
|
7
7
|
|
|
8
8
|
# @example
|
|
9
9
|
# Vedeu.background_colours
|
|
10
10
|
#
|
|
11
|
-
# @return [Vedeu::
|
|
11
|
+
# @return [Vedeu::Backgrounds]
|
|
12
12
|
def self.background_colours
|
|
13
13
|
@background_colours ||= new
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
end #
|
|
16
|
+
end # Backgrounds
|
|
17
17
|
|
|
18
18
|
end # Vedeu
|
|
@@ -3,14 +3,14 @@ module Vedeu
|
|
|
3
3
|
# Allows the storing of events.
|
|
4
4
|
#
|
|
5
5
|
# @api public
|
|
6
|
-
class
|
|
6
|
+
class Events < Repository
|
|
7
7
|
|
|
8
8
|
class << self
|
|
9
9
|
|
|
10
10
|
# @example
|
|
11
11
|
# Vedeu.events
|
|
12
12
|
#
|
|
13
|
-
# @return [Vedeu::
|
|
13
|
+
# @return [Vedeu::Events]
|
|
14
14
|
alias_method :events, :repository
|
|
15
15
|
|
|
16
16
|
# Remove all stored models from the repository.
|
|
@@ -18,13 +18,13 @@ module Vedeu
|
|
|
18
18
|
# @example
|
|
19
19
|
# Vedeu.events.reset
|
|
20
20
|
#
|
|
21
|
-
# @return [Vedeu::
|
|
21
|
+
# @return [Vedeu::Events]
|
|
22
22
|
def reset!
|
|
23
|
-
@events = new(Vedeu::
|
|
23
|
+
@events = new(Vedeu::EventCollection)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
end #
|
|
28
|
+
end # Events
|
|
29
29
|
|
|
30
30
|
end # Vedeu
|
|
@@ -3,16 +3,16 @@ module Vedeu
|
|
|
3
3
|
# Store foreground colour escape sequences by HTML/CSS code.
|
|
4
4
|
#
|
|
5
5
|
# @api public
|
|
6
|
-
class
|
|
6
|
+
class Foregrounds < Colours
|
|
7
7
|
|
|
8
8
|
# @example
|
|
9
9
|
# Vedeu.foreground_colours
|
|
10
10
|
#
|
|
11
|
-
# @return [Vedeu::
|
|
11
|
+
# @return [Vedeu::Foregrounds]
|
|
12
12
|
def self.foreground_colours
|
|
13
13
|
@foreground_colours ||= new
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
end #
|
|
16
|
+
end # Foregrounds
|
|
17
17
|
|
|
18
18
|
end # Vedeu
|
|
@@ -3,14 +3,14 @@ module Vedeu
|
|
|
3
3
|
# Allows the storing of interfaces and views.
|
|
4
4
|
#
|
|
5
5
|
# @api public
|
|
6
|
-
class
|
|
6
|
+
class Interfaces < Repository
|
|
7
7
|
|
|
8
8
|
class << self
|
|
9
9
|
|
|
10
10
|
# @example
|
|
11
11
|
# Vedeu.interfaces
|
|
12
12
|
#
|
|
13
|
-
# @return [Vedeu::
|
|
13
|
+
# @return [Vedeu::Interfaces]
|
|
14
14
|
alias_method :interfaces, :repository
|
|
15
15
|
|
|
16
16
|
# Remove all stored models from the repository.
|
|
@@ -18,7 +18,7 @@ module Vedeu
|
|
|
18
18
|
# @example
|
|
19
19
|
# Vedeu.interfaces.reset!
|
|
20
20
|
#
|
|
21
|
-
# @return [Vedeu::
|
|
21
|
+
# @return [Vedeu::Interfaces]
|
|
22
22
|
def reset!
|
|
23
23
|
@interfaces = register(Vedeu::Interface)
|
|
24
24
|
end
|
|
@@ -39,6 +39,6 @@ module Vedeu
|
|
|
39
39
|
all.sort { |a, b| a.zindex <=> b.zindex }
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
end #
|
|
42
|
+
end # Interfaces
|
|
43
43
|
|
|
44
44
|
end # Vedeu
|
data/lib/vedeu/storage/store.rb
CHANGED
|
@@ -13,6 +13,13 @@ module Vedeu
|
|
|
13
13
|
storage.each(&block)
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
+
# Return a boolean indicating whether the storage is empty.
|
|
17
|
+
#
|
|
18
|
+
# @return [Boolean]
|
|
19
|
+
def empty?
|
|
20
|
+
storage.empty?
|
|
21
|
+
end
|
|
22
|
+
|
|
16
23
|
# Returns a boolean indicating whether the named model is registered.
|
|
17
24
|
#
|
|
18
25
|
# @param name [String]
|
|
@@ -24,13 +31,6 @@ module Vedeu
|
|
|
24
31
|
end
|
|
25
32
|
alias_method :registered?, :exists?
|
|
26
33
|
|
|
27
|
-
# Return a boolean indicating whether the storage is empty.
|
|
28
|
-
#
|
|
29
|
-
# @return [Boolean]
|
|
30
|
-
def empty?
|
|
31
|
-
storage.empty?
|
|
32
|
-
end
|
|
33
|
-
|
|
34
34
|
# Remove all currently stored data.
|
|
35
35
|
#
|
|
36
36
|
# @return [Array|Hash|Set]
|
|
@@ -39,14 +39,14 @@ module Vedeu
|
|
|
39
39
|
keys_or_cmd = if raw_mode?
|
|
40
40
|
keys = console.getch
|
|
41
41
|
|
|
42
|
-
if keys.ord == 27
|
|
42
|
+
if keys.ord == 27 # \e
|
|
43
43
|
begin
|
|
44
|
-
keys << console.read_nonblock(
|
|
44
|
+
keys << console.read_nonblock(5)
|
|
45
45
|
rescue
|
|
46
46
|
nil
|
|
47
47
|
end
|
|
48
48
|
begin
|
|
49
|
-
keys << console.read_nonblock(
|
|
49
|
+
keys << console.read_nonblock(4)
|
|
50
50
|
rescue
|
|
51
51
|
nil
|
|
52
52
|
end
|
data/lib/vedeu/support/timer.rb
CHANGED
data/lib/vedeu/version.rb
CHANGED
data/lib/vedeu.rb
CHANGED
|
@@ -25,6 +25,8 @@ module Vedeu
|
|
|
25
25
|
context 'the cursor specific events are defined' do
|
|
26
26
|
it { Vedeu.events.registered?(:_cursor_hide_).must_equal(true) }
|
|
27
27
|
it { Vedeu.events.registered?(:_cursor_show_).must_equal(true) }
|
|
28
|
+
it { Vedeu.events.registered?(:_hide_cursor_).must_equal(true) }
|
|
29
|
+
it { Vedeu.events.registered?(:_show_cursor_).must_equal(true) }
|
|
28
30
|
it { Vedeu.events.registered?(:_cursor_down_).must_equal(true) }
|
|
29
31
|
it { Vedeu.events.registered?(:_cursor_left_).must_equal(true) }
|
|
30
32
|
it { Vedeu.events.registered?(:_cursor_right_).must_equal(true) }
|
|
@@ -35,6 +37,15 @@ module Vedeu
|
|
|
35
37
|
it { Vedeu.events.registered?(:_cursor_reset_).must_equal(true) }
|
|
36
38
|
end
|
|
37
39
|
|
|
40
|
+
context 'the geometry specific events are defined' do
|
|
41
|
+
it { Vedeu.events.registered?(:_geometry_down_).must_equal(true) }
|
|
42
|
+
it { Vedeu.events.registered?(:_geometry_left_).must_equal(true) }
|
|
43
|
+
it { Vedeu.events.registered?(:_geometry_right_).must_equal(true) }
|
|
44
|
+
it { Vedeu.events.registered?(:_geometry_up_).must_equal(true) }
|
|
45
|
+
it { Vedeu.events.registered?(:_maximise_).must_equal(true) }
|
|
46
|
+
it { Vedeu.events.registered?(:_unmaximise_).must_equal(true) }
|
|
47
|
+
end
|
|
48
|
+
|
|
38
49
|
context 'the drb specific events are defined' do
|
|
39
50
|
it { Vedeu.events.registered?(:_drb_input_).must_equal(true) }
|
|
40
51
|
it { Vedeu.events.registered?(:_drb_retrieve_output_).must_equal(true) }
|
|
@@ -68,6 +79,10 @@ module Vedeu
|
|
|
68
79
|
it { Vedeu.events.registered?(:_refresh_).must_equal(true) }
|
|
69
80
|
end
|
|
70
81
|
|
|
82
|
+
it { Vedeu.events.registered?(:_hide_interface_).must_equal(true) }
|
|
83
|
+
it { Vedeu.events.registered?(:_show_interface_).must_equal(true) }
|
|
84
|
+
it { Vedeu.events.registered?(:_toggle_interface_).must_equal(true) }
|
|
85
|
+
|
|
71
86
|
end # Bindings
|
|
72
87
|
|
|
73
88
|
end # Vedeu
|
|
@@ -198,6 +198,18 @@ module Vedeu
|
|
|
198
198
|
end
|
|
199
199
|
end
|
|
200
200
|
|
|
201
|
+
describe '#toggle' do
|
|
202
|
+
subject { instance.toggle }
|
|
203
|
+
|
|
204
|
+
context 'when the interface is visible' do
|
|
205
|
+
# it { skip }
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
context 'when the interface is not visible' do
|
|
209
|
+
# it { skip }
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
201
213
|
describe '#render' do
|
|
202
214
|
before { Vedeu::Output.stubs(:render) }
|
|
203
215
|
|