vedeu 0.4.5 → 0.4.6
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/bin/vedeu +0 -3
- data/examples/borders_app.rb +0 -3
- data/examples/colours_app.rb +0 -3
- data/examples/configuration_app.rb +0 -3
- data/examples/cursor_app.rb +0 -3
- data/examples/focus_app.rb +0 -3
- data/examples/geometry_app.rb +0 -3
- data/examples/lines_app.rb +0 -3
- data/examples/view_templates_app/template.erb +1 -0
- data/examples/view_templates_app/view_templates_app.rb +82 -0
- data/lib/vedeu/all.rb +0 -1
- data/lib/vedeu/application.rb +7 -6
- data/lib/vedeu/bindings.rb +8 -8
- data/lib/vedeu/buffers/buffer.rb +14 -4
- data/lib/vedeu/buffers/display_buffer.rb +2 -2
- data/lib/vedeu/configuration/cli.rb +7 -1
- data/lib/vedeu/configuration/configuration.rb +4 -2
- data/lib/vedeu/cursor/all.rb +1 -1
- data/lib/vedeu/cursor/cursor.rb +29 -2
- data/lib/vedeu/cursor/move_cursor.rb +20 -6
- data/lib/vedeu/cursor/toggle_cursor.rb +2 -0
- data/lib/vedeu/distributed/client.rb +2 -0
- data/lib/vedeu/distributed/server.rb +3 -1
- data/lib/vedeu/distributed/subprocess.rb +6 -1
- data/lib/vedeu/distributed/test_application.rb +32 -9
- data/lib/vedeu/distributed/uri.rb +7 -1
- data/lib/vedeu/dsl/components/border.rb +2 -0
- data/lib/vedeu/dsl/components/geometry.rb +2 -0
- data/lib/vedeu/dsl/components/keymap.rb +2 -0
- data/lib/vedeu/dsl/components/menu.rb +3 -1
- data/lib/vedeu/dsl/composition.rb +31 -2
- data/lib/vedeu/dsl/group.rb +2 -0
- data/lib/vedeu/dsl/interface.rb +3 -1
- data/lib/vedeu/dsl/line.rb +2 -0
- data/lib/vedeu/dsl/shared/style.rb +1 -1
- data/lib/vedeu/dsl/shared/text.rb +1 -2
- data/lib/vedeu/dsl/stream.rb +2 -0
- data/lib/vedeu/dsl/view.rb +1 -1
- data/lib/vedeu/events/all.rb +1 -1
- data/lib/vedeu/events/event.rb +26 -10
- data/lib/vedeu/events/trigger.rb +11 -3
- data/lib/vedeu/geometry/all.rb +2 -0
- data/lib/vedeu/geometry/bounding_area.rb +7 -2
- data/lib/vedeu/geometry/content_geometry.rb +2 -0
- data/lib/vedeu/geometry/coordinate.rb +15 -6
- data/lib/vedeu/geometry/grid.rb +3 -1
- data/lib/vedeu/geometry/index_position.rb +77 -0
- data/lib/vedeu/geometry/limit.rb +15 -1
- data/lib/vedeu/geometry/position.rb +7 -2
- data/lib/vedeu/{output → geometry}/position_index.rb +12 -2
- data/lib/vedeu/geometry/position_validator.rb +9 -1
- data/lib/vedeu/input/all.rb +0 -1
- data/lib/vedeu/input/input.rb +2 -0
- data/lib/vedeu/input/keymap.rb +5 -3
- data/lib/vedeu/input/mapper.rb +7 -1
- data/lib/vedeu/launcher.rb +1 -1
- data/lib/vedeu/models/all.rb +6 -3
- data/lib/vedeu/models/char.rb +157 -0
- data/lib/vedeu/models/{view/composition.rb → composition.rb} +1 -4
- data/lib/vedeu/models/geometry.rb +36 -12
- data/lib/vedeu/models/group.rb +7 -3
- data/lib/vedeu/models/{view/interface.rb → interface.rb} +26 -10
- data/lib/vedeu/models/{view/line.rb → line.rb} +8 -4
- data/lib/vedeu/models/menu.rb +11 -3
- data/lib/vedeu/models/{view/stream.rb → stream.rb} +9 -4
- data/lib/vedeu/output/all.rb +3 -2
- data/lib/vedeu/output/background.rb +2 -2
- data/lib/vedeu/output/border.rb +65 -22
- data/lib/vedeu/output/char_builder.rb +36 -0
- data/lib/vedeu/output/clear.rb +62 -0
- data/lib/vedeu/output/colour.rb +15 -7
- data/lib/vedeu/output/compositor.rb +3 -1
- data/lib/vedeu/output/esc.rb +2 -2
- data/lib/vedeu/output/foreground.rb +2 -2
- data/lib/vedeu/output/html_char.rb +2 -0
- data/lib/vedeu/output/html_renderer.rb +6 -3
- data/lib/vedeu/output/output.rb +20 -92
- data/lib/vedeu/output/presentation.rb +21 -21
- data/lib/vedeu/output/renderer.rb +2 -0
- data/lib/vedeu/output/style.rb +4 -2
- data/lib/vedeu/output/text.rb +7 -1
- data/lib/vedeu/output/translator.rb +4 -2
- data/lib/vedeu/output/viewport.rb +4 -2
- data/lib/vedeu/output/virtual_buffer.rb +11 -1
- data/lib/vedeu/output/virtual_terminal.rb +34 -11
- data/lib/vedeu/output/wordwrap.rb +31 -20
- data/lib/vedeu/repositories/all.rb +3 -0
- data/lib/vedeu/repositories/collection.rb +83 -0
- data/lib/vedeu/repositories/collections.rb +35 -0
- data/lib/vedeu/{models → repositories}/model.rb +2 -0
- data/lib/vedeu/repositories/repository.rb +7 -1
- data/lib/vedeu/support/log.rb +1 -1
- data/lib/vedeu/support/sentence.rb +7 -1
- data/lib/vedeu/support/template.rb +14 -2
- data/lib/vedeu/support/terminal.rb +6 -6
- data/lib/vedeu/support/trace.rb +4 -4
- data/lib/vedeu/support/visible.rb +4 -4
- data/test/lib/vedeu/dsl/composition_test.rb +23 -0
- data/test/lib/vedeu/geometry/index_position_test.rb +121 -0
- data/test/lib/vedeu/{output → geometry}/position_index_test.rb +6 -0
- data/test/lib/vedeu/input/keymap_test.rb +2 -2
- data/test/lib/vedeu/models/{view/char_test.rb → char_test.rb} +31 -15
- data/test/lib/vedeu/models/{view/composition_test.rb → composition_test.rb} +0 -0
- data/test/lib/vedeu/models/{view/interface_test.rb → interface_test.rb} +0 -0
- data/test/lib/vedeu/models/line_test.rb +156 -0
- data/test/lib/vedeu/models/{view/stream_test.rb → stream_test.rb} +1 -16
- data/test/lib/vedeu/output/char_builder_test.rb +50 -0
- data/test/lib/vedeu/output/clear_test.rb +26 -0
- data/test/lib/vedeu/output/compositor_test.rb +0 -10
- data/test/lib/vedeu/output/html_renderer_test.rb +8 -3
- data/test/lib/vedeu/output/output_test.rb +0 -39
- data/test/lib/vedeu/output/viewport_test.rb +10 -66
- data/test/lib/vedeu/output/virtual_buffer_test.rb +18 -2
- data/test/lib/vedeu/output/virtual_terminal_test.rb +3 -14
- data/test/lib/vedeu/output/wordwrap_test.rb +8 -15
- data/test/lib/vedeu/repositories/collection_test.rb +108 -0
- data/test/lib/vedeu/repositories/collections_test.rb +71 -0
- data/test/lib/vedeu/{models → repositories}/model_test.rb +0 -0
- data/test/lib/vedeu/support/template_test.rb +21 -1
- data/test/support/helpers/model_test_class.rb +1 -1
- data/test/test_helper.rb +0 -1
- data/vedeu.gemspec +1 -1
- metadata +40 -44
- data/lib/vedeu/events/events.rb +0 -10
- data/lib/vedeu/input/keys.rb +0 -10
- data/lib/vedeu/models/collection.rb +0 -81
- data/lib/vedeu/models/view/all.rb +0 -12
- data/lib/vedeu/models/view/char.rb +0 -99
- data/lib/vedeu/models/view/chars.rb +0 -10
- data/lib/vedeu/models/view/interfaces.rb +0 -10
- data/lib/vedeu/models/view/lines.rb +0 -10
- data/lib/vedeu/models/view/streams.rb +0 -10
- data/lib/vedeu/output/index_position.rb +0 -35
- data/test/lib/vedeu/models/collection_test.rb +0 -112
- data/test/lib/vedeu/models/view/chars_test.rb +0 -16
- data/test/lib/vedeu/models/view/interfaces_test.rb +0 -16
- data/test/lib/vedeu/models/view/line_test.rb +0 -214
- data/test/lib/vedeu/models/view/lines_test.rb +0 -16
- data/test/lib/vedeu/models/view/streams_test.rb +0 -16
- data/test/lib/vedeu/output/index_position_test.rb +0 -64
@@ -0,0 +1,157 @@
|
|
1
|
+
require 'vedeu/geometry/position'
|
2
|
+
require 'vedeu/output/esc'
|
3
|
+
require 'vedeu/output/html_char'
|
4
|
+
require 'vedeu/output/presentation'
|
5
|
+
|
6
|
+
module Vedeu
|
7
|
+
|
8
|
+
# A Char represents a single character of the terminal. It is a container for
|
9
|
+
# the a single character in a {Vedeu::Stream}.
|
10
|
+
#
|
11
|
+
# Though a multi-character String can be passed as a value, only the first
|
12
|
+
# character is returned in the escape sequence.
|
13
|
+
#
|
14
|
+
class Char
|
15
|
+
|
16
|
+
include Vedeu::Presentation
|
17
|
+
|
18
|
+
# @!attribute [rw] border
|
19
|
+
# @return [NilClass|Symbol]
|
20
|
+
attr_accessor :border
|
21
|
+
|
22
|
+
# @!attribute [rw] parent
|
23
|
+
# @return [Vedeu::Line]
|
24
|
+
attr_accessor :parent
|
25
|
+
|
26
|
+
# @!attribute [r] value
|
27
|
+
# @return [String]
|
28
|
+
attr_reader :value
|
29
|
+
|
30
|
+
# Returns a new instance of Vedeu::Char.
|
31
|
+
#
|
32
|
+
# @param attributes [Hash]
|
33
|
+
# @option attributes value [String]
|
34
|
+
# @option attributes parent [Vedeu::Line]
|
35
|
+
# @option attributes colour [Vedeu::Colour]
|
36
|
+
# @option attributes style [Vedeu::Style]
|
37
|
+
# @option attributes position [Vedeu::Position]
|
38
|
+
# @option attributes border [NilClass|Symbol] A symbol representing the
|
39
|
+
# border 'piece' this Char represents.
|
40
|
+
# @return [Char]
|
41
|
+
def initialize(attributes = {})
|
42
|
+
@attributes = defaults.merge!(attributes)
|
43
|
+
|
44
|
+
@border = @attributes[:border]
|
45
|
+
@colour = @attributes[:colour]
|
46
|
+
@parent = @attributes[:parent]
|
47
|
+
@style = @attributes[:style]
|
48
|
+
@value = @attributes[:value]
|
49
|
+
end
|
50
|
+
|
51
|
+
# @param other [Vedeu::Char]
|
52
|
+
# @return [Boolean]
|
53
|
+
def ==(other)
|
54
|
+
eql?(other)
|
55
|
+
end
|
56
|
+
|
57
|
+
# When {Vedeu::Viewport#padded_lines} has less lines that required to fill
|
58
|
+
# the visible area of the interface, it creates a line that contains a
|
59
|
+
# single {Vedeu::Char} containing a space (0x20); later,
|
60
|
+
# {Vedeu::Viewport#padded_columns} will attempts to call `#chars` on an
|
61
|
+
# expected {Vedeu::Line} and fail; this method fixes that.
|
62
|
+
#
|
63
|
+
# @return [Array]
|
64
|
+
def chars
|
65
|
+
[]
|
66
|
+
end
|
67
|
+
|
68
|
+
# @param other [Vedeu::Char]
|
69
|
+
# @return [Boolean]
|
70
|
+
def eql?(other)
|
71
|
+
self.class == other.class && value == other.value
|
72
|
+
end
|
73
|
+
|
74
|
+
# @return [String]
|
75
|
+
def inspect
|
76
|
+
"<Vedeu::Char '#{Vedeu::Esc.escape(self.to_s)}'>"
|
77
|
+
end
|
78
|
+
|
79
|
+
# @return [Vedeu::Position]
|
80
|
+
def position
|
81
|
+
@position ||= Vedeu::Position.coerce(attributes[:position])
|
82
|
+
end
|
83
|
+
|
84
|
+
# Sets the position of the Char.
|
85
|
+
#
|
86
|
+
# @param value [Vedeu::Position]
|
87
|
+
# @return [Vedeu::Position]
|
88
|
+
def position=(value)
|
89
|
+
@position = Vedeu::Position.coerce(value)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Returns the x position for the Char if set.
|
93
|
+
#
|
94
|
+
# @return [Fixnum|NilClass]
|
95
|
+
def x
|
96
|
+
position.x if position
|
97
|
+
end
|
98
|
+
|
99
|
+
# Returns the y position for the Char if set.
|
100
|
+
#
|
101
|
+
# @return [Fixnum|NilClass]
|
102
|
+
def y
|
103
|
+
position.y if position
|
104
|
+
end
|
105
|
+
|
106
|
+
# Returns a Hash of all the values before coercion.
|
107
|
+
#
|
108
|
+
# @note
|
109
|
+
# From this hash we should be able to construct a new instance of
|
110
|
+
# Vedeu::Char, however, at the moment, `:parent` cannot be coerced.
|
111
|
+
#
|
112
|
+
# @return [Hash]
|
113
|
+
def to_hash
|
114
|
+
{
|
115
|
+
parent: {
|
116
|
+
background: parent_background,
|
117
|
+
foreground: parent_foreground,
|
118
|
+
style: parent_style,
|
119
|
+
},
|
120
|
+
background: '',
|
121
|
+
border: '',
|
122
|
+
foreground: '',
|
123
|
+
style: '',
|
124
|
+
value: value,
|
125
|
+
x: x,
|
126
|
+
y: y,
|
127
|
+
}
|
128
|
+
end
|
129
|
+
|
130
|
+
# @return [String]
|
131
|
+
def to_html
|
132
|
+
@to_html ||= Vedeu::HTMLChar.render(self)
|
133
|
+
end
|
134
|
+
|
135
|
+
private
|
136
|
+
|
137
|
+
# @!attribute [r] attributes
|
138
|
+
# @return [Hash]
|
139
|
+
attr_reader :attributes
|
140
|
+
|
141
|
+
# The default values for a new instance of this class.
|
142
|
+
#
|
143
|
+
# @return [Hash]
|
144
|
+
def defaults
|
145
|
+
{
|
146
|
+
border: nil,
|
147
|
+
colour: nil,
|
148
|
+
parent: nil,
|
149
|
+
position: nil,
|
150
|
+
style: nil,
|
151
|
+
value: '',
|
152
|
+
}
|
153
|
+
end
|
154
|
+
|
155
|
+
end # Char
|
156
|
+
|
157
|
+
end # Vedeu
|
@@ -1,11 +1,8 @@
|
|
1
1
|
require 'vedeu/dsl/composition'
|
2
|
-
require 'vedeu/
|
2
|
+
require 'vedeu/repositories/all'
|
3
3
|
require 'vedeu/output/presentation'
|
4
4
|
require 'vedeu/support/common'
|
5
5
|
|
6
|
-
require 'vedeu/models/view/interfaces'
|
7
|
-
require 'vedeu/models/view/interface'
|
8
|
-
|
9
6
|
module Vedeu
|
10
7
|
|
11
8
|
# A composition is a collection of interfaces.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'vedeu/dsl/components/all'
|
2
|
-
require 'vedeu/
|
2
|
+
require 'vedeu/repositories/model'
|
3
3
|
|
4
4
|
require 'vedeu/geometry/limit'
|
5
5
|
require 'vedeu/geometry/position'
|
@@ -31,9 +31,33 @@ module Vedeu
|
|
31
31
|
|
32
32
|
include Vedeu::Model
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
# @!attribute [rw] centred
|
35
|
+
# @return [Boolean]
|
36
|
+
attr_accessor :centred
|
37
|
+
|
38
|
+
# @!attribute [rw] height
|
39
|
+
# @return [Fixnum]
|
40
|
+
attr_accessor :height
|
41
|
+
|
42
|
+
# @!attribute [rw] name
|
43
|
+
# @return [String]
|
44
|
+
attr_accessor :name
|
45
|
+
|
46
|
+
# @!attribute [rw] width
|
47
|
+
# @return [Fixnum]
|
48
|
+
attr_accessor :width
|
49
|
+
|
50
|
+
# @!attribute [r] attributes
|
51
|
+
# @return [Hash]
|
52
|
+
attr_reader :attributes
|
53
|
+
|
54
|
+
# @!attribute [w] x
|
55
|
+
# @return [Fixnum]
|
56
|
+
attr_writer :x
|
57
|
+
|
58
|
+
# @!attribute [w] y
|
59
|
+
# @return [Fixnum]
|
60
|
+
attr_writer :y
|
37
61
|
|
38
62
|
# Returns a new instance of Geometry.
|
39
63
|
#
|
@@ -124,12 +148,12 @@ module Vedeu
|
|
124
148
|
#
|
125
149
|
# @return [Fixnum]
|
126
150
|
def width
|
127
|
-
Vedeu::Limit.apply(x, @width, Terminal.width, Terminal.origin)
|
151
|
+
Vedeu::Limit.apply(x, @width, Vedeu::Terminal.width, Vedeu::Terminal.origin)
|
128
152
|
end
|
129
153
|
|
130
154
|
# @see Vedeu::Geometry#width
|
131
155
|
def height
|
132
|
-
Vedeu::Limit.apply(y, @height, Terminal.height, Terminal.origin)
|
156
|
+
Vedeu::Limit.apply(y, @height, Vedeu::Terminal.height, Vedeu::Terminal.origin)
|
133
157
|
end
|
134
158
|
|
135
159
|
# Returns the top coordinate of the interface, a fixed or dynamic value
|
@@ -141,7 +165,7 @@ module Vedeu
|
|
141
165
|
# @return [Fixnum]
|
142
166
|
def top
|
143
167
|
if centred
|
144
|
-
Terminal.centre_y - (height / 2)
|
168
|
+
Vedeu::Terminal.centre_y - (height / 2)
|
145
169
|
|
146
170
|
else
|
147
171
|
y
|
@@ -173,7 +197,7 @@ module Vedeu
|
|
173
197
|
# @return [Fixnum]
|
174
198
|
def left
|
175
199
|
if centred
|
176
|
-
Terminal.centre_x - (width / 2)
|
200
|
+
Vedeu::Terminal.centre_x - (width / 2)
|
177
201
|
|
178
202
|
else
|
179
203
|
x
|
@@ -251,13 +275,13 @@ module Vedeu
|
|
251
275
|
{
|
252
276
|
centred: false,
|
253
277
|
client: nil,
|
254
|
-
height: Terminal.height,
|
278
|
+
height: Vedeu::Terminal.height,
|
255
279
|
name: '',
|
256
|
-
width: Terminal.width,
|
280
|
+
width: Vedeu::Terminal.width,
|
257
281
|
x: 1,
|
258
|
-
xn: Terminal.width,
|
282
|
+
xn: Vedeu::Terminal.width,
|
259
283
|
y: 1,
|
260
|
-
yn: Terminal.height,
|
284
|
+
yn: Vedeu::Terminal.height,
|
261
285
|
}
|
262
286
|
end
|
263
287
|
|
data/lib/vedeu/models/group.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'vedeu/repositories/model'
|
2
|
+
|
1
3
|
module Vedeu
|
2
4
|
|
3
5
|
# Interfaces can be associated with one another by being members of the same
|
@@ -7,6 +9,8 @@ module Vedeu
|
|
7
9
|
|
8
10
|
include Vedeu::Model
|
9
11
|
|
12
|
+
# @!attribute [rw] name
|
13
|
+
# @return [String]
|
10
14
|
attr_accessor :name
|
11
15
|
|
12
16
|
# Return a new instance of Group.
|
@@ -33,7 +37,7 @@ module Vedeu
|
|
33
37
|
def add(member)
|
34
38
|
@members = members.add(member)
|
35
39
|
|
36
|
-
Group.new({ name: name, members: @members }).store
|
40
|
+
Vedeu::Group.new({ name: name, members: @members }).store
|
37
41
|
end
|
38
42
|
|
39
43
|
# Return the members as a Set.
|
@@ -50,14 +54,14 @@ module Vedeu
|
|
50
54
|
def remove(member)
|
51
55
|
@members = members.delete(member)
|
52
56
|
|
53
|
-
Group.new({ name: name, members: @members }).store
|
57
|
+
Vedeu::Group.new({ name: name, members: @members }).store
|
54
58
|
end
|
55
59
|
|
56
60
|
# Remove all members from the group.
|
57
61
|
#
|
58
62
|
# @return [Group]
|
59
63
|
def reset
|
60
|
-
Group.new(defaults.merge!({ name: name })).store
|
64
|
+
Vedeu::Group.new(defaults.merge!({ name: name })).store
|
61
65
|
end
|
62
66
|
|
63
67
|
private
|
@@ -1,12 +1,9 @@
|
|
1
1
|
require 'vedeu/geometry/content_geometry'
|
2
|
-
require 'vedeu/models/
|
2
|
+
require 'vedeu/models/all'
|
3
3
|
require 'vedeu/output/presentation'
|
4
4
|
require 'vedeu/buffers/display_buffer'
|
5
5
|
require 'vedeu/buffers/buffer'
|
6
6
|
|
7
|
-
require 'vedeu/models/view/lines'
|
8
|
-
require 'vedeu/models/view/line'
|
9
|
-
|
10
7
|
module Vedeu
|
11
8
|
|
12
9
|
# An Interface represents a portion of the terminal defined by
|
@@ -24,13 +21,32 @@ module Vedeu
|
|
24
21
|
collection Vedeu::Lines
|
25
22
|
member Vedeu::Line
|
26
23
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
24
|
+
# @!attribute [rw] colour
|
25
|
+
# @return [void]
|
26
|
+
attr_accessor :colour
|
27
|
+
|
28
|
+
# @!attribute [rw] delay
|
29
|
+
# @return [Fixnum|Float]
|
30
|
+
attr_accessor :delay
|
31
|
+
|
32
|
+
# @!attribute [rw] group
|
33
|
+
# @return [void]
|
34
|
+
attr_accessor :group
|
35
|
+
|
36
|
+
# @!attribute [rw] name
|
37
|
+
# @return [String]
|
38
|
+
attr_accessor :name
|
39
|
+
|
40
|
+
# @!attribute [rw] parent
|
41
|
+
# @return [Vedeu::Composition]
|
42
|
+
attr_accessor :parent
|
43
|
+
|
44
|
+
# @!attribute [rw] style
|
45
|
+
# @return [String|Symbol]
|
46
|
+
attr_accessor :style
|
33
47
|
|
48
|
+
# @!attribute [w] lines
|
49
|
+
# @return [Array<Vedeu::Line>]
|
34
50
|
attr_writer :lines
|
35
51
|
|
36
52
|
def_delegators :geometry,
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'vedeu/output/presentation'
|
2
|
-
require 'vedeu/models/
|
3
|
-
require 'vedeu/models/view/stream'
|
2
|
+
require 'vedeu/models/all'
|
4
3
|
|
5
4
|
module Vedeu
|
6
5
|
|
@@ -16,8 +15,13 @@ module Vedeu
|
|
16
15
|
collection Vedeu::Streams
|
17
16
|
member Vedeu::Stream
|
18
17
|
|
19
|
-
|
20
|
-
|
18
|
+
# @!attribute [rw] parent
|
19
|
+
# @return [Interface]
|
20
|
+
attr_accessor :parent
|
21
|
+
|
22
|
+
# @!attribute [rw] streams
|
23
|
+
# @return [Streams]
|
24
|
+
attr_accessor :streams
|
21
25
|
|
22
26
|
alias_method :value, :streams
|
23
27
|
|
data/lib/vedeu/models/menu.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'vedeu/
|
1
|
+
require 'vedeu/repositories/model'
|
2
2
|
|
3
3
|
module Vedeu
|
4
4
|
|
@@ -9,25 +9,33 @@ module Vedeu
|
|
9
9
|
|
10
10
|
include Vedeu::Model
|
11
11
|
|
12
|
+
# @!attribute [rw] collection
|
13
|
+
# @return [Array]
|
12
14
|
attr_accessor :collection
|
13
15
|
|
14
16
|
# Returns the index of the value in the collection which is current.
|
15
17
|
#
|
18
|
+
# @!attribute [rw] current
|
16
19
|
# @return [Fixnum]
|
17
20
|
attr_accessor :current
|
18
21
|
|
22
|
+
# The name of the menu. Used to reference the menu throughout the
|
23
|
+
# application's execution lifetime.
|
24
|
+
#
|
25
|
+
# @!attribute [rw] name
|
26
|
+
# @return [String]
|
19
27
|
attr_accessor :name
|
20
28
|
|
21
29
|
# Returns the index of the value in the collection which is selected.
|
22
30
|
#
|
31
|
+
# @!attribute [rw] selected
|
23
32
|
# @return [Fixnum]
|
24
33
|
attr_accessor :selected
|
25
34
|
|
26
35
|
# Register a menu by name which will display a collection of items for
|
27
36
|
# your users to select; and provide interactivity within your application.
|
28
37
|
#
|
29
|
-
# @param name
|
30
|
-
# menu throughout your application's execution lifetime.
|
38
|
+
# @param name [String]
|
31
39
|
# @param block [Proc] A set of attributes which define the features of the
|
32
40
|
# menu. See {Vedeu::DSL::Menu#items} and {Vedeu::DSL::Menu#name}.
|
33
41
|
#
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'vedeu/output/presentation'
|
2
|
-
require 'vedeu/models/
|
2
|
+
require 'vedeu/models/all'
|
3
3
|
|
4
4
|
module Vedeu
|
5
5
|
|
@@ -15,8 +15,13 @@ module Vedeu
|
|
15
15
|
collection Vedeu::Chars
|
16
16
|
member Vedeu::Char
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
# @!attribute [rw] parent
|
19
|
+
# @return [Line]
|
20
|
+
attr_accessor :parent
|
21
|
+
|
22
|
+
# @!attribute [rw] value
|
23
|
+
# @return [String]
|
24
|
+
attr_accessor :value
|
20
25
|
|
21
26
|
alias_method :content, :value
|
22
27
|
alias_method :data, :value
|
@@ -58,7 +63,7 @@ module Vedeu
|
|
58
63
|
parent: parent,
|
59
64
|
colour: colour,
|
60
65
|
style: style,
|
61
|
-
position: nil })
|
66
|
+
position: nil })
|
62
67
|
end
|
63
68
|
end
|
64
69
|
|
data/lib/vedeu/output/all.rb
CHANGED
@@ -8,11 +8,12 @@ require 'vedeu/output/border'
|
|
8
8
|
require 'vedeu/output/colour'
|
9
9
|
require 'vedeu/output/compositor'
|
10
10
|
|
11
|
+
require 'vedeu/output/char_builder'
|
12
|
+
require 'vedeu/output/clear'
|
13
|
+
|
11
14
|
require 'vedeu/output/presentation'
|
12
15
|
require 'vedeu/output/style'
|
13
16
|
require 'vedeu/output/text'
|
14
|
-
require 'vedeu/output/position_index'
|
15
|
-
require 'vedeu/output/index_position'
|
16
17
|
require 'vedeu/output/virtual_buffer'
|
17
18
|
require 'vedeu/output/html_char'
|
18
19
|
require 'vedeu/output/html_renderer'
|
@@ -3,13 +3,13 @@ module Vedeu
|
|
3
3
|
# The class represents one half (the other, can be found at
|
4
4
|
# {Vedeu::Foreground}) of a terminal colour escape sequence.
|
5
5
|
#
|
6
|
-
class Background < Translator
|
6
|
+
class Background < Vedeu::Translator
|
7
7
|
|
8
8
|
private
|
9
9
|
|
10
10
|
# @return [String]
|
11
11
|
def named_codes
|
12
|
-
Esc.background_codes[colour]
|
12
|
+
Vedeu::Esc.background_codes[colour]
|
13
13
|
end
|
14
14
|
|
15
15
|
# @return [String]
|
data/lib/vedeu/output/border.rb
CHANGED
@@ -14,22 +14,65 @@ module Vedeu
|
|
14
14
|
|
15
15
|
include Vedeu::Model
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
17
|
+
# @!attribute [rw] attributes
|
18
|
+
# @return [Hash]
|
19
|
+
attr_accessor :attributes
|
20
|
+
|
21
|
+
# @!attribute [rw] bottom_left
|
22
|
+
# @return [String]
|
23
|
+
attr_accessor :bottom_left
|
24
|
+
|
25
|
+
# @!attribute [rw] bottom_right
|
26
|
+
# @return [String]
|
27
|
+
attr_accessor :bottom_right
|
28
|
+
|
29
|
+
# @!attribute [rw] horizontal
|
30
|
+
# @return [String]
|
31
|
+
attr_accessor :horizontal
|
32
|
+
|
33
|
+
# @!attribute [rw] show_bottom
|
34
|
+
# @return [Boolean]
|
35
|
+
attr_accessor :show_bottom
|
36
|
+
|
37
|
+
# @!attribute [rw] show_left
|
38
|
+
# @return [Boolean]
|
39
|
+
attr_accessor :show_left
|
40
|
+
|
41
|
+
# @!attribute [rw] show_right
|
42
|
+
# @return [Boolean]
|
43
|
+
attr_accessor :show_right
|
44
|
+
|
45
|
+
# @!attribute [rw] show_top
|
46
|
+
# @return [Boolean]
|
47
|
+
attr_accessor :show_top
|
48
|
+
|
49
|
+
# @!attribute [rw] top_left
|
50
|
+
# @return [String]
|
51
|
+
attr_accessor :top_left
|
52
|
+
|
53
|
+
# @!attribute [rw] top_right
|
54
|
+
# @return [String]
|
55
|
+
attr_accessor :top_right
|
56
|
+
|
57
|
+
# @!attribute [rw] vertical
|
58
|
+
# @return [String]
|
59
|
+
attr_accessor :vertical
|
60
|
+
|
61
|
+
# @!attribute [r] name
|
62
|
+
# @return [String]
|
63
|
+
attr_reader :name
|
64
|
+
|
65
|
+
# @!attribute [r] colour
|
66
|
+
# @return [Vedeu::Colour]
|
67
|
+
attr_reader :colour
|
68
|
+
|
69
|
+
# @!attribute [r] enabled
|
70
|
+
# @return [Boolean]
|
71
|
+
attr_reader :enabled
|
72
|
+
|
73
|
+
# @!attribute [r] style
|
74
|
+
# @return [Style]
|
75
|
+
attr_reader :style
|
33
76
|
|
34
77
|
alias_method :enabled?, :enabled
|
35
78
|
alias_method :bottom?, :show_bottom
|
@@ -43,12 +86,12 @@ module Vedeu
|
|
43
86
|
# @option attributes bottom_left [String] The bottom left border character.
|
44
87
|
# @option attributes bottom_right [String] The bottom right border
|
45
88
|
# character.
|
46
|
-
# @option attributes colour
|
89
|
+
# @option attributes colour []
|
47
90
|
# @option attributes enabled [Boolean] Indicate whether the border is to be
|
48
91
|
# shown for this interface.
|
49
92
|
# @option attributes horizontal [String] The horizontal border character.
|
50
93
|
# @option attributes name [String]
|
51
|
-
# @option attributes style
|
94
|
+
# @option attributes style []
|
52
95
|
# @option attributes show_bottom [Boolean] Indicate whether the bottom
|
53
96
|
# border is to be shown.
|
54
97
|
# @option attributes show_left [Boolean] Indicate whether the left border
|
@@ -120,26 +163,26 @@ module Vedeu
|
|
120
163
|
|
121
164
|
# @return [Vedeu::Colour]
|
122
165
|
def colour
|
123
|
-
Colour.coerce(@colour)
|
166
|
+
Vedeu::Colour.coerce(@colour)
|
124
167
|
end
|
125
168
|
|
126
169
|
# Set the border colour.
|
127
170
|
#
|
128
171
|
# @return [Vedeu::Colour]
|
129
172
|
def colour=(value)
|
130
|
-
@colour = Colour.coerce(value)
|
173
|
+
@colour = Vedeu::Colour.coerce(value)
|
131
174
|
end
|
132
175
|
|
133
176
|
# @return [Vedeu::Style]
|
134
177
|
def style
|
135
|
-
Style.coerce(@style)
|
178
|
+
Vedeu::Style.coerce(@style)
|
136
179
|
end
|
137
180
|
|
138
181
|
# Set the border style.
|
139
182
|
#
|
140
183
|
# @return [Vedeu::Style]
|
141
184
|
def style=(value)
|
142
|
-
@style = Style.coerce(value)
|
185
|
+
@style = Vedeu::Style.coerce(value)
|
143
186
|
end
|
144
187
|
|
145
188
|
# Returns a string representation of the border for the interface without
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
# Included in {Vedeu::Clear} and {Vedeu::Output}, this module builds
|
4
|
+
# {Vedeu::Char} objects.
|
5
|
+
#
|
6
|
+
module CharBuilder
|
7
|
+
|
8
|
+
# Builds a new Vedeu::Char object.
|
9
|
+
#
|
10
|
+
# @param value [String]
|
11
|
+
# @param iy [Fixnum]
|
12
|
+
# @param ix [Fixnum]
|
13
|
+
# @return [Vedeu::Char]
|
14
|
+
def char_builder(value, iy, ix)
|
15
|
+
Vedeu::Char.new({ value: value,
|
16
|
+
colour: interface.colour,
|
17
|
+
style: interface.style,
|
18
|
+
position: origin(iy, ix) })
|
19
|
+
end
|
20
|
+
|
21
|
+
# Returns the position of the cursor at the top-left coordinate, relative to
|
22
|
+
# the interface's position.
|
23
|
+
#
|
24
|
+
# @param y_index [Fixnum]
|
25
|
+
# @param x_index [Fixnum]
|
26
|
+
# @return [Vedeu::Position]
|
27
|
+
def origin(y_index = 0, x_index = 0)
|
28
|
+
Vedeu::IndexPosition.new(y_index,
|
29
|
+
x_index,
|
30
|
+
interface.top,
|
31
|
+
interface.left).to_position
|
32
|
+
end
|
33
|
+
|
34
|
+
end # CharBuilder
|
35
|
+
|
36
|
+
end # Vedeu
|