vedeu 0.4.18 → 0.4.19
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/.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]
|