vedeu 0.4.18 → 0.4.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/Rakefile +1 -0
- data/bin/vedeu_drb_server +0 -1
- data/bin/vedeu_test +0 -1
- data/config/rubocop_enabled.yml +1 -1
- data/examples/borders_app.rb +0 -1
- data/examples/colours_app.rb +0 -1
- data/examples/cursor_app.rb +0 -1
- data/examples/drb_app.rb +0 -1
- data/examples/geometry_app.rb +0 -1
- data/examples/hello_world.rb +0 -1
- data/examples/lines_app.rb +0 -1
- data/examples/material_colours_app.rb +0 -1
- data/examples/typed_commands/typed_commands_app.rb +0 -1
- data/examples/view_templates_app/view_templates_app.rb +0 -1
- data/lib/vedeu/api.rb +2 -1
- data/lib/vedeu/application.rb +3 -2
- data/lib/vedeu/bindings.rb +3 -5
- data/lib/vedeu/buffers/buffer.rb +8 -11
- data/lib/vedeu/buffers/display_buffer.rb +0 -2
- data/lib/vedeu/configuration/api.rb +1 -4
- data/lib/vedeu/configuration/cli.rb +153 -74
- data/lib/vedeu/configuration/configuration.rb +1 -2
- data/lib/vedeu/cursor/cursor.rb +0 -4
- data/lib/vedeu/cursor/move.rb +3 -6
- data/lib/vedeu/cursor/refresh_cursor.rb +12 -2
- data/lib/vedeu/distributed/client.rb +3 -2
- data/lib/vedeu/distributed/server.rb +4 -3
- data/lib/vedeu/distributed/subprocess.rb +3 -4
- data/lib/vedeu/distributed/test_application.rb +0 -1
- data/lib/vedeu/distributed/uri.rb +0 -1
- data/lib/vedeu/dsl/components/border.rb +3 -4
- data/lib/vedeu/dsl/components/geometry.rb +1 -5
- data/lib/vedeu/dsl/components/keymap.rb +1 -3
- data/lib/vedeu/dsl/components/menu.rb +1 -2
- data/lib/vedeu/dsl/composition.rb +3 -4
- data/lib/vedeu/dsl/group.rb +1 -4
- data/lib/vedeu/dsl/interface.rb +3 -10
- data/lib/vedeu/dsl/line.rb +3 -4
- data/lib/vedeu/dsl/shared/text.rb +0 -3
- data/lib/vedeu/dsl/stream.rb +3 -4
- data/lib/vedeu/dsl/view.rb +0 -3
- data/lib/vedeu/events/event.rb +3 -3
- data/lib/vedeu/events/trigger.rb +3 -2
- data/lib/vedeu/geometry/area.rb +0 -1
- data/lib/vedeu/geometry/canvas.rb +0 -1
- data/lib/vedeu/geometry/coordinate.rb +6 -7
- data/lib/vedeu/geometry/dimension.rb +3 -2
- data/lib/vedeu/geometry/geometry.rb +0 -6
- data/lib/vedeu/geometry/grid.rb +3 -2
- data/lib/vedeu/geometry/index_position.rb +0 -1
- data/lib/vedeu/geometry/position.rb +0 -1
- data/lib/vedeu/geometry/position_index.rb +0 -1
- data/lib/vedeu/geometry/position_validator.rb +6 -68
- data/lib/vedeu/input/all.rb +0 -2
- data/lib/vedeu/input/input.rb +3 -2
- data/lib/vedeu/input/key.rb +0 -1
- data/lib/vedeu/input/keymap.rb +4 -7
- data/lib/vedeu/input/mapper.rb +3 -2
- data/lib/vedeu/launcher.rb +3 -2
- data/lib/vedeu/main_loop.rb +1 -1
- data/lib/vedeu/models/cell.rb +0 -1
- data/lib/vedeu/models/char.rb +0 -1
- data/lib/vedeu/models/composition.rb +1 -7
- data/lib/vedeu/models/group.rb +0 -3
- data/lib/vedeu/models/interface.rb +0 -3
- data/lib/vedeu/models/line.rb +0 -4
- data/lib/vedeu/models/menu.rb +5 -8
- data/lib/vedeu/models/stream.rb +0 -4
- data/lib/vedeu/null/all.rb +11 -0
- data/lib/vedeu/null/border.rb +3 -1
- data/lib/vedeu/null/buffer.rb +0 -1
- data/lib/vedeu/null/generic.rb +4 -1
- data/lib/vedeu/null/geometry.rb +0 -1
- data/lib/vedeu/null/interface.rb +36 -7
- data/lib/vedeu/output/background.rb +0 -1
- data/lib/vedeu/output/border.rb +1 -6
- data/lib/vedeu/output/clear.rb +3 -2
- data/lib/vedeu/output/colour.rb +6 -18
- data/lib/vedeu/output/compressor.rb +5 -2
- data/lib/vedeu/output/esc.rb +4 -1
- data/lib/vedeu/output/foreground.rb +0 -5
- data/lib/vedeu/output/html_char.rb +3 -2
- data/lib/vedeu/output/output.rb +1 -5
- data/lib/vedeu/output/refresh.rb +1 -1
- data/lib/vedeu/output/renderers/all.rb +0 -1
- data/lib/vedeu/output/renderers/escape_sequence.rb +3 -2
- data/lib/vedeu/output/renderers/file.rb +85 -80
- data/lib/vedeu/output/renderers/html.rb +77 -72
- data/lib/vedeu/output/renderers/json.rb +45 -42
- data/lib/vedeu/output/renderers/null.rb +11 -8
- data/lib/vedeu/output/renderers/terminal.rb +41 -36
- data/lib/vedeu/output/renderers/text.rb +41 -36
- data/lib/vedeu/output/style.rb +0 -3
- data/lib/vedeu/output/text.rb +3 -2
- data/lib/vedeu/output/viewport.rb +3 -2
- data/lib/vedeu/output/virtual_terminal.rb +0 -1
- data/lib/vedeu/output/wordwrap.rb +3 -2
- data/lib/vedeu/repositories/all.rb +7 -6
- data/lib/vedeu/repositories/collection.rb +0 -1
- data/lib/vedeu/repositories/collections/chars.rb +0 -1
- data/lib/vedeu/repositories/collections/events.rb +0 -1
- data/lib/vedeu/repositories/collections/interfaces.rb +0 -1
- data/lib/vedeu/repositories/collections/keys.rb +0 -1
- data/lib/vedeu/repositories/collections/lines.rb +0 -1
- data/lib/vedeu/repositories/collections/streams.rb +0 -1
- data/lib/vedeu/repositories/model.rb +0 -1
- data/lib/vedeu/repositories/registerable.rb +29 -0
- data/lib/vedeu/repositories/repositories/background_colours.rb +0 -1
- data/lib/vedeu/repositories/repositories/borders.rb +2 -13
- data/lib/vedeu/repositories/repositories/buffers.rb +2 -13
- data/lib/vedeu/repositories/repositories/colours.rb +0 -1
- data/lib/vedeu/repositories/repositories/cursors.rb +1 -2
- data/lib/vedeu/repositories/repositories/events_repository.rb +0 -1
- data/lib/vedeu/repositories/repositories/foreground_colours.rb +0 -1
- data/lib/vedeu/repositories/repositories/geometries.rb +2 -13
- data/lib/vedeu/repositories/repositories/groups.rb +1 -2
- data/lib/vedeu/repositories/repositories/interfaces_repository.rb +2 -14
- data/lib/vedeu/repositories/repositories/keymaps.rb +1 -2
- data/lib/vedeu/repositories/repositories/menus.rb +1 -2
- data/lib/vedeu/repositories/repository.rb +14 -5
- data/lib/vedeu/storage/all.rb +0 -1
- data/lib/vedeu/storage/associative_store.rb +0 -1
- data/lib/vedeu/storage/conveyor_store.rb +0 -1
- data/lib/vedeu/storage/fifo_store.rb +0 -1
- data/lib/vedeu/support/log.rb +0 -3
- data/lib/vedeu/support/options.rb +3 -2
- data/lib/vedeu/support/template.rb +3 -4
- data/lib/vedeu/support/terminal.rb +0 -2
- data/lib/vedeu/support/trace.rb +6 -7
- data/lib/vedeu/support/visibility.rb +1 -2
- data/lib/vedeu.rb +3 -5
- data/test/lib/vedeu/buffers/buffer_test.rb +48 -13
- data/test/lib/vedeu/configuration/cli_test.rb +5 -4
- data/test/lib/vedeu/cursor/refresh_cursor_test.rb +37 -15
- data/test/lib/vedeu/distributed/subprocess_test.rb +1 -0
- data/test/lib/vedeu/dsl/shared/use_test.rb +1 -6
- data/test/lib/vedeu/main_loop_test.rb +11 -0
- data/test/lib/vedeu/null/interface_test.rb +27 -0
- data/test/lib/vedeu/output/output_test.rb +17 -10
- data/test/lib/vedeu/output/presentation_test.rb +35 -7
- data/test/lib/vedeu/output/renderers/escape_sequence_test.rb +50 -0
- data/test/lib/vedeu/output/renderers/file_test.rb +34 -30
- data/test/lib/vedeu/output/renderers/html_test.rb +61 -57
- data/test/lib/vedeu/output/renderers/json_test.rb +40 -36
- data/test/lib/vedeu/output/renderers/null_test.rb +12 -8
- data/test/lib/vedeu/output/renderers/terminal_test.rb +17 -13
- data/test/lib/vedeu/output/renderers/text_test.rb +17 -13
- data/test/lib/vedeu/repositories/model_test.rb +1 -1
- data/test/lib/vedeu/repositories/registerable_test.rb +28 -0
- data/test/lib/vedeu/storage/associative_store_test.rb +7 -0
- data/test/lib/vedeu/storage/conveyor_store_test.rb +7 -0
- data/test/lib/vedeu/storage/fifo_store_test.rb +7 -0
- data/test/support/helpers/model_test_class.rb +6 -2
- data/test/test_helper.rb +2 -0
- data/vedeu.gemspec +3 -2
- metadata +23 -6
- data/test/lib/vedeu/output/renderers/escape_sequence_renderer_test.rb +0 -46
@@ -3,7 +3,6 @@ module Vedeu
|
|
3
3
|
module Distributed
|
4
4
|
|
5
5
|
# A class for the server side of the DRb server/client relationship.
|
6
|
-
#
|
7
6
|
class Server
|
8
7
|
|
9
8
|
$SAFE = 1 # disable `eval` and related calls on strings passed
|
@@ -158,15 +157,17 @@ module Vedeu
|
|
158
157
|
|
159
158
|
end
|
160
159
|
rescue NoMethodError # raised when #join is called on NilClass.
|
161
|
-
#
|
160
|
+
Vedeu.log(type: :debug, message: 'Attempted to #join on DRb.thread.')
|
162
161
|
end
|
163
162
|
|
164
|
-
|
163
|
+
protected
|
165
164
|
|
166
165
|
# @!attribute [r] configuration
|
167
166
|
# @return [Configuration]
|
168
167
|
attr_reader :configuration
|
169
168
|
|
169
|
+
private
|
170
|
+
|
170
171
|
# @return [Boolean]
|
171
172
|
def drb?
|
172
173
|
Vedeu::Configuration.drb?
|
@@ -1,10 +1,7 @@
|
|
1
|
-
require 'vedeu/distributed/test_application'
|
2
|
-
|
3
1
|
module Vedeu
|
4
2
|
|
5
3
|
# @example
|
6
4
|
# Vedeu::TestApplication.build
|
7
|
-
#
|
8
5
|
class Subprocess
|
9
6
|
|
10
7
|
# @param (see #initialize)
|
@@ -45,7 +42,7 @@ module Vedeu
|
|
45
42
|
file_unlink
|
46
43
|
end
|
47
44
|
|
48
|
-
|
45
|
+
protected
|
49
46
|
|
50
47
|
# @!attribute [r] application
|
51
48
|
# @return [Vedeu::TestApplication]
|
@@ -55,6 +52,8 @@ module Vedeu
|
|
55
52
|
# @return [Fixnum]
|
56
53
|
attr_accessor :pid
|
57
54
|
|
55
|
+
private
|
56
|
+
|
58
57
|
# @return [String]
|
59
58
|
def command
|
60
59
|
"ruby #{file_path}"
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require 'vedeu/
|
2
|
-
require 'vedeu/dsl/shared/
|
1
|
+
require 'vedeu/dsl/shared/presentation'
|
2
|
+
require 'vedeu/dsl/shared/use'
|
3
3
|
|
4
4
|
module Vedeu
|
5
5
|
|
@@ -26,7 +26,6 @@ module Vedeu
|
|
26
26
|
# # ...or standalone; referencing the target interface or view.
|
27
27
|
# Vedeu.border 'some_interface' do
|
28
28
|
# # ...
|
29
|
-
#
|
30
29
|
class Border
|
31
30
|
|
32
31
|
include Vedeu::DSL
|
@@ -303,7 +302,7 @@ module Vedeu
|
|
303
302
|
model.vertical = char
|
304
303
|
end
|
305
304
|
|
306
|
-
|
305
|
+
protected
|
307
306
|
|
308
307
|
# @!attribute [r] client
|
309
308
|
# @return [Object]
|
@@ -1,12 +1,8 @@
|
|
1
|
-
require 'vedeu/geometry/geometry'
|
2
|
-
require 'vedeu/dsl/shared/all'
|
3
|
-
|
4
1
|
module Vedeu
|
5
2
|
|
6
3
|
module DSL
|
7
4
|
|
8
5
|
# Provide DSL methods for configuring the geometry of an interface.
|
9
|
-
#
|
10
6
|
class Geometry
|
11
7
|
|
12
8
|
include Vedeu::DSL
|
@@ -187,7 +183,7 @@ module Vedeu
|
|
187
183
|
model.yn = value
|
188
184
|
end
|
189
185
|
|
190
|
-
|
186
|
+
protected
|
191
187
|
|
192
188
|
# @!attribute [r] client
|
193
189
|
# @return [Object]
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'vedeu/support/common'
|
2
|
-
require 'vedeu/input/key'
|
3
2
|
|
4
3
|
module Vedeu
|
5
4
|
|
@@ -8,7 +7,6 @@ module Vedeu
|
|
8
7
|
# Provides methods to be used to define keypress mapped to actions.
|
9
8
|
#
|
10
9
|
# @api public
|
11
|
-
#
|
12
10
|
class Keymap
|
13
11
|
|
14
12
|
include Vedeu::Common
|
@@ -123,7 +121,7 @@ module Vedeu
|
|
123
121
|
model.name = value
|
124
122
|
end
|
125
123
|
|
126
|
-
|
124
|
+
protected
|
127
125
|
|
128
126
|
# @!attribute [r] client
|
129
127
|
# @return [Object]
|
@@ -1,11 +1,8 @@
|
|
1
|
-
require 'vedeu/models/interface'
|
2
|
-
|
3
1
|
module Vedeu
|
4
2
|
|
5
3
|
module DSL
|
6
4
|
|
7
5
|
# DSL for creating collections of interfaces.
|
8
|
-
#
|
9
6
|
class Composition
|
10
7
|
|
11
8
|
include Vedeu::DSL
|
@@ -74,7 +71,7 @@ module Vedeu
|
|
74
71
|
model.add(new_model)
|
75
72
|
end
|
76
73
|
|
77
|
-
|
74
|
+
protected
|
78
75
|
|
79
76
|
# @!attribute [r] client
|
80
77
|
# @return [Object]
|
@@ -84,6 +81,8 @@ module Vedeu
|
|
84
81
|
# @return [Composition]
|
85
82
|
attr_reader :model
|
86
83
|
|
84
|
+
private
|
85
|
+
|
87
86
|
# @param name [String]
|
88
87
|
# @param lines [Vedeu::Lines]
|
89
88
|
# @return [Hash]
|
data/lib/vedeu/dsl/group.rb
CHANGED
@@ -1,11 +1,8 @@
|
|
1
|
-
require 'vedeu/models/group'
|
2
|
-
|
3
1
|
module Vedeu
|
4
2
|
|
5
3
|
module DSL
|
6
4
|
|
7
5
|
# DSL for adding interfaces to a group.
|
8
|
-
#
|
9
6
|
class Group
|
10
7
|
|
11
8
|
include Vedeu::DSL
|
@@ -58,7 +55,7 @@ module Vedeu
|
|
58
55
|
model.add(interface_name)
|
59
56
|
end
|
60
57
|
|
61
|
-
|
58
|
+
protected
|
62
59
|
|
63
60
|
# @!attribute [r] client
|
64
61
|
# @return [Object]
|
data/lib/vedeu/dsl/interface.rb
CHANGED
@@ -1,17 +1,8 @@
|
|
1
|
-
require 'vedeu/cursor/cursor'
|
2
|
-
require 'vedeu/models/focus'
|
3
|
-
require 'vedeu/geometry/geometry'
|
4
|
-
require 'vedeu/models/group'
|
5
|
-
require 'vedeu/models/line'
|
6
|
-
require 'vedeu/output/border'
|
7
|
-
require 'vedeu/support/common'
|
8
|
-
|
9
1
|
module Vedeu
|
10
2
|
|
11
3
|
module DSL
|
12
4
|
|
13
5
|
# DSL for creating interfaces.
|
14
|
-
#
|
15
6
|
class Interface
|
16
7
|
|
17
8
|
include Vedeu::Common
|
@@ -247,7 +238,7 @@ module Vedeu
|
|
247
238
|
model.visible = boolean
|
248
239
|
end
|
249
240
|
|
250
|
-
|
241
|
+
protected
|
251
242
|
|
252
243
|
# @!attribute [r] client
|
253
244
|
# @return [Object]
|
@@ -257,6 +248,8 @@ module Vedeu
|
|
257
248
|
# @return [Interface]
|
258
249
|
attr_reader :model
|
259
250
|
|
251
|
+
private
|
252
|
+
|
260
253
|
# @return [Hash]
|
261
254
|
def attributes
|
262
255
|
{
|
data/lib/vedeu/dsl/line.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'vedeu/dsl/shared/all'
|
2
|
-
|
3
1
|
module Vedeu
|
4
2
|
|
5
3
|
module DSL
|
@@ -34,7 +32,6 @@ module Vedeu
|
|
34
32
|
# end
|
35
33
|
#
|
36
34
|
# @api public
|
37
|
-
#
|
38
35
|
class Line
|
39
36
|
|
40
37
|
include Vedeu::DSL
|
@@ -107,7 +104,7 @@ module Vedeu
|
|
107
104
|
end
|
108
105
|
alias_method :stream, :streams
|
109
106
|
|
110
|
-
|
107
|
+
protected
|
111
108
|
|
112
109
|
# @!attribute [r] client
|
113
110
|
# @return [Object]
|
@@ -117,6 +114,8 @@ module Vedeu
|
|
117
114
|
# @return [Line]
|
118
115
|
attr_reader :model
|
119
116
|
|
117
|
+
private
|
118
|
+
|
120
119
|
# @return [Hash]
|
121
120
|
def attributes
|
122
121
|
{
|
data/lib/vedeu/dsl/stream.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'vedeu/dsl/shared/all'
|
2
|
-
|
3
1
|
module Vedeu
|
4
2
|
|
5
3
|
module DSL
|
@@ -7,7 +5,6 @@ module Vedeu
|
|
7
5
|
# Provides methods to be used to define views.
|
8
6
|
#
|
9
7
|
# @api public
|
10
|
-
#
|
11
8
|
class Stream
|
12
9
|
|
13
10
|
include Vedeu::DSL
|
@@ -33,7 +30,7 @@ module Vedeu
|
|
33
30
|
model.add(model.class.build(attributes, &block))
|
34
31
|
end
|
35
32
|
|
36
|
-
|
33
|
+
protected
|
37
34
|
|
38
35
|
# @!attribute [r] client
|
39
36
|
# @return [Object]
|
@@ -43,6 +40,8 @@ module Vedeu
|
|
43
40
|
# @return [Stream]
|
44
41
|
attr_reader :model
|
45
42
|
|
43
|
+
private
|
44
|
+
|
46
45
|
# @return [Hash]
|
47
46
|
def attributes
|
48
47
|
{
|
data/lib/vedeu/dsl/view.rb
CHANGED
data/lib/vedeu/events/event.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'vedeu/repositories/all'
|
2
1
|
require 'vedeu/events/trigger'
|
3
2
|
|
4
3
|
module Vedeu
|
@@ -30,7 +29,6 @@ module Vedeu
|
|
30
29
|
# # Not all events you define will have arguments; like methods.
|
31
30
|
# :do_stuff
|
32
31
|
# end
|
33
|
-
#
|
34
32
|
class Event
|
35
33
|
|
36
34
|
include Vedeu::Model
|
@@ -150,7 +148,7 @@ module Vedeu
|
|
150
148
|
return execute(*args) if throttling? && throttle_expired?
|
151
149
|
end
|
152
150
|
|
153
|
-
|
151
|
+
protected
|
154
152
|
|
155
153
|
# @!attribute [r] closure
|
156
154
|
# @return [String]
|
@@ -172,6 +170,8 @@ module Vedeu
|
|
172
170
|
# @return [String]
|
173
171
|
attr_accessor :now
|
174
172
|
|
173
|
+
private
|
174
|
+
|
175
175
|
# Execute the code stored in the event closure.
|
176
176
|
#
|
177
177
|
# @param args [void]
|
data/lib/vedeu/events/trigger.rb
CHANGED
@@ -7,7 +7,6 @@ module Vedeu
|
|
7
7
|
#
|
8
8
|
# @example
|
9
9
|
# Vedeu.trigger(:my_event, :oxidize, 'nitrogen')
|
10
|
-
#
|
11
10
|
class Trigger
|
12
11
|
|
13
12
|
# @param name [Symbol] The name of the event you wish to trigger. The event
|
@@ -41,7 +40,7 @@ module Vedeu
|
|
41
40
|
end
|
42
41
|
end
|
43
42
|
|
44
|
-
|
43
|
+
protected
|
45
44
|
|
46
45
|
# @!attribute [r] name
|
47
46
|
# @return [Symbol]
|
@@ -55,6 +54,8 @@ module Vedeu
|
|
55
54
|
# @return [Vedeu::Repository]
|
56
55
|
attr_reader :repository
|
57
56
|
|
57
|
+
private
|
58
|
+
|
58
59
|
# @return [Array<void>|void]
|
59
60
|
def results
|
60
61
|
@results ||= registered_events.map { |event| event.trigger(*args) }
|
data/lib/vedeu/geometry/area.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Vedeu
|
2
2
|
|
3
3
|
# Crudely corrects out of range values.
|
4
|
-
#
|
5
4
|
class Coordinate
|
6
5
|
|
7
6
|
# @!attribute [r] height
|
@@ -118,6 +117,12 @@ module Vedeu
|
|
118
117
|
end
|
119
118
|
end
|
120
119
|
|
120
|
+
protected
|
121
|
+
|
122
|
+
# @!attribute [r] name
|
123
|
+
# @return [String]
|
124
|
+
attr_reader :name
|
125
|
+
|
121
126
|
private
|
122
127
|
|
123
128
|
# Returns the maximum y index for an area.
|
@@ -194,12 +199,6 @@ module Vedeu
|
|
194
199
|
(y...yn).to_a
|
195
200
|
end
|
196
201
|
|
197
|
-
private
|
198
|
-
|
199
|
-
# @!attribute [r] name
|
200
|
-
# @return [String]
|
201
|
-
attr_reader :name
|
202
|
-
|
203
202
|
end # Coordinate
|
204
203
|
|
205
204
|
end # Vedeu
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module Vedeu
|
2
2
|
|
3
3
|
# A Dimension is either the height or width of an entity.
|
4
|
-
#
|
5
4
|
class Dimension
|
6
5
|
|
7
6
|
# @param (see #initialize)
|
@@ -42,7 +41,7 @@ module Vedeu
|
|
42
41
|
dimension
|
43
42
|
end
|
44
43
|
|
45
|
-
|
44
|
+
protected
|
46
45
|
|
47
46
|
# @!attribute [r] d
|
48
47
|
# @return [Fixnum|NilClass]
|
@@ -60,6 +59,8 @@ module Vedeu
|
|
60
59
|
# @return [Fixnum|NilClass]
|
61
60
|
attr_reader :default
|
62
61
|
|
62
|
+
private
|
63
|
+
|
63
64
|
# @return [Array<Fixnum>]
|
64
65
|
def dimension
|
65
66
|
@dimension ||= if centred? && length?
|
@@ -1,10 +1,5 @@
|
|
1
|
-
require 'vedeu/dsl/components/all'
|
2
1
|
require 'vedeu/repositories/model'
|
3
2
|
|
4
|
-
require 'vedeu/geometry/area'
|
5
|
-
require 'vedeu/geometry/dimension'
|
6
|
-
require 'vedeu/support/terminal'
|
7
|
-
|
8
3
|
module Vedeu
|
9
4
|
|
10
5
|
# @todo Consider storing the Terminal size at the time of first creation,
|
@@ -26,7 +21,6 @@ module Vedeu
|
|
26
21
|
# | bottom | # bottom: yn
|
27
22
|
# yn +--------------+ # south: yn + 1
|
28
23
|
# south
|
29
|
-
#
|
30
24
|
class Geometry
|
31
25
|
|
32
26
|
extend Forwardable
|
data/lib/vedeu/geometry/grid.rb
CHANGED
@@ -23,7 +23,6 @@ module Vedeu
|
|
23
23
|
|
24
24
|
# Divides horizontal terminal space into 12 equal columns, discarding
|
25
25
|
# the remainder.
|
26
|
-
#
|
27
26
|
class Grid
|
28
27
|
|
29
28
|
# @see (#initialize)
|
@@ -49,12 +48,14 @@ module Vedeu
|
|
49
48
|
column * value
|
50
49
|
end
|
51
50
|
|
52
|
-
|
51
|
+
protected
|
53
52
|
|
54
53
|
# @!attribute [r] value
|
55
54
|
# @return [Fixnum]
|
56
55
|
attr_reader :value
|
57
56
|
|
57
|
+
private
|
58
|
+
|
58
59
|
# Returns the width of a single column in characters.
|
59
60
|
#
|
60
61
|
# @return [Fixnum]
|
@@ -1,33 +1,17 @@
|
|
1
|
-
require 'vedeu/support/terminal'
|
2
|
-
|
3
1
|
module Vedeu
|
4
2
|
|
5
3
|
# Validates that the provided coordinates are within the terminal and
|
6
4
|
# interface's geometry (with or without a border).
|
7
|
-
#
|
8
5
|
class PositionValidator
|
9
6
|
|
10
7
|
extend Forwardable
|
11
8
|
|
12
|
-
def_delegators :terminal,
|
13
|
-
:tx,
|
14
|
-
:ty,
|
15
|
-
:txn,
|
16
|
-
:tyn
|
17
|
-
|
18
9
|
def_delegators :border,
|
19
|
-
:enabled?,
|
20
10
|
:bx,
|
21
11
|
:bxn,
|
22
12
|
:by,
|
23
13
|
:byn
|
24
14
|
|
25
|
-
def_delegators :geometry,
|
26
|
-
:left,
|
27
|
-
:right,
|
28
|
-
:top,
|
29
|
-
:bottom
|
30
|
-
|
31
15
|
# @!attribute [rw] x
|
32
16
|
# @return [Fixnum]
|
33
17
|
attr_accessor :x
|
@@ -58,73 +42,27 @@ module Vedeu
|
|
58
42
|
#
|
59
43
|
# @return [PositionValidator]
|
60
44
|
def validate
|
61
|
-
|
62
|
-
|
63
|
-
|
45
|
+
@x = bx if x < bx
|
46
|
+
@x = bxn if x > bxn
|
47
|
+
@y = by if y < by
|
48
|
+
@y = byn if y > byn
|
64
49
|
|
65
50
|
self
|
66
51
|
end
|
67
52
|
|
68
|
-
|
53
|
+
protected
|
69
54
|
|
70
55
|
# @!attribute [r] name
|
71
56
|
# @return [String]
|
72
57
|
attr_reader :name
|
73
58
|
|
74
|
-
|
75
|
-
def terminal
|
76
|
-
Vedeu::Terminal
|
77
|
-
end
|
78
|
-
|
79
|
-
# Validate the x and y coordinates are within the dimensions of the
|
80
|
-
# terminal.
|
81
|
-
#
|
82
|
-
# @return [PositionValidator]
|
83
|
-
def terminal_validation
|
84
|
-
@x = tx if x < tx
|
85
|
-
@x = txn if x > txn
|
86
|
-
@y = ty if y < ty
|
87
|
-
@y = tyn if y > tyn
|
88
|
-
|
89
|
-
self
|
90
|
-
end
|
91
|
-
|
92
|
-
# Validate the x and y coordinates are within the dimensions of the
|
93
|
-
# interface.
|
94
|
-
#
|
95
|
-
# @return [PositionValidator]
|
96
|
-
def interface_validation
|
97
|
-
@x = left if x < left
|
98
|
-
@x = right if x > right
|
99
|
-
@y = top if y < top
|
100
|
-
@y = bottom if y > bottom
|
101
|
-
|
102
|
-
self
|
103
|
-
end
|
104
|
-
|
105
|
-
# Validate the x and y coordinates are within the dimensions of an interface
|
106
|
-
# with a border.
|
107
|
-
#
|
108
|
-
# @return [PositionValidator]
|
109
|
-
def border_validation
|
110
|
-
@x = bx if x < bx
|
111
|
-
@x = bxn if x > bxn
|
112
|
-
@y = by if y < by
|
113
|
-
@y = byn if y > byn
|
114
|
-
|
115
|
-
self
|
116
|
-
end
|
59
|
+
private
|
117
60
|
|
118
61
|
# @return (see Vedeu::Borders#by_name)
|
119
62
|
def border
|
120
63
|
@border ||= Vedeu.borders.by_name(name)
|
121
64
|
end
|
122
65
|
|
123
|
-
# @return (see Vedeu::Geometries#by_name)
|
124
|
-
def geometry
|
125
|
-
@geometry ||= Vedeu.geometries.by_name(name)
|
126
|
-
end
|
127
|
-
|
128
66
|
end # PositionValidator
|
129
67
|
|
130
68
|
end # Vedeu
|
data/lib/vedeu/input/all.rb
CHANGED
data/lib/vedeu/input/input.rb
CHANGED
@@ -2,7 +2,6 @@ module Vedeu
|
|
2
2
|
|
3
3
|
# Captures input from the user via {Vedeu::Terminal#input} and translates
|
4
4
|
# special characters into symbols.
|
5
|
-
#
|
6
5
|
class Input
|
7
6
|
|
8
7
|
# Instantiate Input and capture keypress(es).
|
@@ -36,12 +35,14 @@ module Vedeu
|
|
36
35
|
end
|
37
36
|
end
|
38
37
|
|
39
|
-
|
38
|
+
protected
|
40
39
|
|
41
40
|
# @!attribute [r] reader
|
42
41
|
# @return [IO]
|
43
42
|
attr_reader :reader
|
44
43
|
|
44
|
+
private
|
45
|
+
|
45
46
|
# Returns the input from the terminal.
|
46
47
|
#
|
47
48
|
# @return [String]
|