vedeu 0.4.53 → 0.4.54
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/lib/vedeu/api.rb +68 -5
- data/lib/vedeu/bindings/system.rb +0 -15
- data/lib/vedeu/bindings/visibility.rb +57 -13
- data/lib/vedeu/buffers/buffer.rb +5 -56
- data/lib/vedeu/cursor/cursor.rb +24 -16
- data/lib/vedeu/exceptions.rb +1 -1
- data/lib/vedeu/models/group.rb +39 -4
- data/lib/vedeu/models/interface.rb +41 -5
- data/lib/vedeu/null/buffer.rb +5 -0
- data/lib/vedeu/null/interface.rb +15 -0
- data/lib/vedeu/output/all.rb +1 -1
- data/lib/vedeu/output/background.rb +1 -1
- data/lib/vedeu/output/clear/named_interface.rb +0 -2
- data/lib/vedeu/output/{translator.rb → colour_translator.rb} +5 -5
- data/lib/vedeu/output/foreground.rb +1 -1
- data/lib/vedeu/output/render_border.rb +0 -1
- data/lib/vedeu/repositories/model.rb +15 -6
- data/lib/vedeu/repositories/repositories/buffers.rb +6 -0
- data/lib/vedeu/repositories/repositories/cursors.rb +6 -0
- data/lib/vedeu/repositories/repositories/groups.rb +6 -0
- data/lib/vedeu/repositories/repositories/interfaces.rb +6 -0
- data/lib/vedeu/support/all.rb +1 -2
- data/lib/vedeu/support/template.rb +7 -0
- data/lib/vedeu/support/toggleable.rb +98 -0
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/api_test.rb +7 -1
- data/test/lib/vedeu/bindings/system_test.rb +5 -16
- data/test/lib/vedeu/bindings/visibility_test.rb +4 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +9 -91
- data/test/lib/vedeu/cursor/cursor_test.rb +4 -6
- data/test/lib/vedeu/dsl/geometry_test.rb +24 -0
- data/test/lib/vedeu/models/group_test.rb +16 -14
- data/test/lib/vedeu/models/interface_test.rb +1 -1
- data/test/lib/vedeu/null/buffer_test.rb +6 -0
- data/test/lib/vedeu/null/interface_test.rb +18 -0
- data/test/lib/vedeu/output/clear/named_interface_test.rb +10 -19
- data/test/lib/vedeu/output/{translator_test.rb → colour_translator_test.rb} +5 -5
- data/test/lib/vedeu/support/toggleable_test.rb +69 -0
- data/vedeu.gemspec +1 -1
- metadata +10 -13
- data/lib/vedeu/support/options.rb +0 -70
- data/lib/vedeu/support/visibility.rb +0 -122
- data/test/lib/vedeu/support/options_test.rb +0 -70
- data/test/lib/vedeu/support/visibility_test.rb +0 -95
data/lib/vedeu/exceptions.rb
CHANGED
|
@@ -36,7 +36,7 @@ module Vedeu
|
|
|
36
36
|
# Raised to remind me (or client application developers) that the subclass
|
|
37
37
|
# implements the functionality sought.
|
|
38
38
|
#
|
|
39
|
-
# @see Vedeu::
|
|
39
|
+
# @see Vedeu::ColourTranslator
|
|
40
40
|
#
|
|
41
41
|
# @api private
|
|
42
42
|
class NotImplemented < StandardError
|
data/lib/vedeu/models/group.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'vedeu/support/toggleable'
|
|
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,7 @@ module Vedeu
|
|
|
7
9
|
class Group
|
|
8
10
|
|
|
9
11
|
include Vedeu::Model
|
|
12
|
+
include Vedeu::Toggleable
|
|
10
13
|
|
|
11
14
|
# @!attribute [rw] name
|
|
12
15
|
# @return [String]
|
|
@@ -20,25 +23,41 @@ module Vedeu
|
|
|
20
23
|
# @option attributes name [String] The name of the group.
|
|
21
24
|
# @option attributes repository [Vedeu::Repository] The storage for all
|
|
22
25
|
# Group models.
|
|
23
|
-
# @return [Group]
|
|
26
|
+
# @return [Vedeu::Group]
|
|
24
27
|
def initialize(attributes = {})
|
|
25
28
|
@attributes = defaults.merge!(attributes)
|
|
26
29
|
|
|
27
30
|
@members = Array(@attributes[:members])
|
|
28
31
|
@name = @attributes[:name]
|
|
29
32
|
@repository = @attributes[:repository]
|
|
33
|
+
@visible = @attributes[:visible]
|
|
30
34
|
end
|
|
31
35
|
|
|
32
36
|
# Add a member to the group by name.
|
|
33
37
|
#
|
|
34
38
|
# @param member [String]
|
|
35
|
-
# @return [Group]
|
|
39
|
+
# @return [Vedeu::Group]
|
|
36
40
|
def add(member)
|
|
37
41
|
@members = members.add(member)
|
|
38
42
|
|
|
39
43
|
Vedeu::Group.new(name: name, members: @members).store
|
|
40
44
|
end
|
|
41
45
|
|
|
46
|
+
# Hide the named group of interfaces, or without a name, the group of the
|
|
47
|
+
# currently focussed interface.
|
|
48
|
+
#
|
|
49
|
+
# @example
|
|
50
|
+
# Vedeu.hide_group(name)
|
|
51
|
+
#
|
|
52
|
+
# @return [Vedeu::Group]
|
|
53
|
+
def hide
|
|
54
|
+
super
|
|
55
|
+
|
|
56
|
+
@members.each { |member| Vedeu::Interface.hide_interface(member) }
|
|
57
|
+
|
|
58
|
+
self
|
|
59
|
+
end
|
|
60
|
+
|
|
42
61
|
# Return the members as a Set.
|
|
43
62
|
#
|
|
44
63
|
# @return [Set]
|
|
@@ -49,7 +68,7 @@ module Vedeu
|
|
|
49
68
|
# Remove a member from the group by name.
|
|
50
69
|
#
|
|
51
70
|
# @param member [String]
|
|
52
|
-
# @return [Group]
|
|
71
|
+
# @return [Vedeu::Group]
|
|
53
72
|
def remove(member)
|
|
54
73
|
@members = members.delete(member)
|
|
55
74
|
|
|
@@ -58,11 +77,26 @@ module Vedeu
|
|
|
58
77
|
|
|
59
78
|
# Remove all members from the group.
|
|
60
79
|
#
|
|
61
|
-
# @return [Group]
|
|
80
|
+
# @return [Vedeu::Group]
|
|
62
81
|
def reset
|
|
63
82
|
Vedeu::Group.new(defaults.merge!(name: name)).store
|
|
64
83
|
end
|
|
65
84
|
|
|
85
|
+
# Show the named group of interfaces, or without a name, the group of the
|
|
86
|
+
# currently focussed interface.
|
|
87
|
+
#
|
|
88
|
+
# @example
|
|
89
|
+
# Vedeu.show_group(name)
|
|
90
|
+
#
|
|
91
|
+
# @return [Vedeu::Group]
|
|
92
|
+
def show
|
|
93
|
+
super
|
|
94
|
+
|
|
95
|
+
@members.each { |member| Vedeu::Interface.show_interface(member) }
|
|
96
|
+
|
|
97
|
+
self
|
|
98
|
+
end
|
|
99
|
+
|
|
66
100
|
private
|
|
67
101
|
|
|
68
102
|
# Returns the default options/attributes for this class.
|
|
@@ -73,6 +107,7 @@ module Vedeu
|
|
|
73
107
|
members: [],
|
|
74
108
|
name: '',
|
|
75
109
|
repository: Vedeu.groups,
|
|
110
|
+
visible: true,
|
|
76
111
|
}
|
|
77
112
|
end
|
|
78
113
|
|
|
@@ -2,6 +2,7 @@ require 'vedeu/models/char'
|
|
|
2
2
|
require 'vedeu/models/stream'
|
|
3
3
|
require 'vedeu/models/line'
|
|
4
4
|
require 'vedeu/buffers/display_buffer'
|
|
5
|
+
require 'vedeu/support/toggleable'
|
|
5
6
|
|
|
6
7
|
module Vedeu
|
|
7
8
|
|
|
@@ -15,6 +16,7 @@ module Vedeu
|
|
|
15
16
|
include Vedeu::Model
|
|
16
17
|
include Vedeu::Presentation
|
|
17
18
|
include Vedeu::DisplayBuffer
|
|
19
|
+
include Vedeu::Toggleable
|
|
18
20
|
|
|
19
21
|
collection Vedeu::Lines
|
|
20
22
|
member Vedeu::Line
|
|
@@ -43,11 +45,6 @@ module Vedeu
|
|
|
43
45
|
# @return [Fixnum]
|
|
44
46
|
attr_accessor :zindex
|
|
45
47
|
|
|
46
|
-
# @!attribute [rw] visible
|
|
47
|
-
# @return [Boolean] Whether the interface is visible.
|
|
48
|
-
attr_accessor :visible
|
|
49
|
-
alias_method :visible?, :visible
|
|
50
|
-
|
|
51
48
|
# @!attribute [r] attributes
|
|
52
49
|
# @return [Hash]
|
|
53
50
|
attr_reader :attributes
|
|
@@ -83,6 +80,19 @@ module Vedeu
|
|
|
83
80
|
@lines = lines.add(child)
|
|
84
81
|
end
|
|
85
82
|
|
|
83
|
+
# Hide a named interface buffer, or without a name, the buffer of the
|
|
84
|
+
# currently focussed interface.
|
|
85
|
+
#
|
|
86
|
+
# @example
|
|
87
|
+
# Vedeu.hide_interface(name)
|
|
88
|
+
#
|
|
89
|
+
# @return [void]
|
|
90
|
+
def hide
|
|
91
|
+
super
|
|
92
|
+
|
|
93
|
+
Vedeu.buffers.by_name(name).hide
|
|
94
|
+
end
|
|
95
|
+
|
|
86
96
|
# Override Ruby's Object#inspect method to provide a more helpful output.
|
|
87
97
|
#
|
|
88
98
|
# @return [String]
|
|
@@ -133,6 +143,19 @@ module Vedeu
|
|
|
133
143
|
output
|
|
134
144
|
end
|
|
135
145
|
|
|
146
|
+
# Show the named interface buffer, or without a name, the buffer of the
|
|
147
|
+
# currently focussed interface.
|
|
148
|
+
#
|
|
149
|
+
# @example
|
|
150
|
+
# Vedeu.show_interface(name)
|
|
151
|
+
#
|
|
152
|
+
# @return [void]
|
|
153
|
+
def show
|
|
154
|
+
super
|
|
155
|
+
|
|
156
|
+
Vedeu.buffers.by_name(name).show
|
|
157
|
+
end
|
|
158
|
+
|
|
136
159
|
# @return [Interface]
|
|
137
160
|
def store
|
|
138
161
|
super
|
|
@@ -143,6 +166,19 @@ module Vedeu
|
|
|
143
166
|
store_group
|
|
144
167
|
end
|
|
145
168
|
|
|
169
|
+
# Toggle the named interface buffer, or without a name, the buffer of the
|
|
170
|
+
# currently focussed interface.
|
|
171
|
+
#
|
|
172
|
+
# @example
|
|
173
|
+
# Vedeu.toggle_interface(name)
|
|
174
|
+
#
|
|
175
|
+
# @return [void]
|
|
176
|
+
def toggle
|
|
177
|
+
super
|
|
178
|
+
|
|
179
|
+
Vedeu.buffers.by_name(name).toggle
|
|
180
|
+
end
|
|
181
|
+
|
|
146
182
|
private
|
|
147
183
|
|
|
148
184
|
# The default values for a new instance of this class.
|
data/lib/vedeu/null/buffer.rb
CHANGED
data/lib/vedeu/null/interface.rb
CHANGED
|
@@ -30,6 +30,11 @@ module Vedeu
|
|
|
30
30
|
}
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
+
# @return [NilClass]
|
|
34
|
+
def hide
|
|
35
|
+
nil
|
|
36
|
+
end
|
|
37
|
+
|
|
33
38
|
# @return [Boolean]
|
|
34
39
|
def null?
|
|
35
40
|
true
|
|
@@ -42,6 +47,11 @@ module Vedeu
|
|
|
42
47
|
nil
|
|
43
48
|
end
|
|
44
49
|
|
|
50
|
+
# @return [NilClass]
|
|
51
|
+
def show
|
|
52
|
+
nil
|
|
53
|
+
end
|
|
54
|
+
|
|
45
55
|
# Pretend to store this model in the repository.
|
|
46
56
|
#
|
|
47
57
|
# @return [Vedeu::Null::Interface]
|
|
@@ -49,6 +59,11 @@ module Vedeu
|
|
|
49
59
|
self
|
|
50
60
|
end
|
|
51
61
|
|
|
62
|
+
# @return [NilClass]
|
|
63
|
+
def toggle
|
|
64
|
+
nil
|
|
65
|
+
end
|
|
66
|
+
|
|
52
67
|
# The null interface should not be visible.
|
|
53
68
|
#
|
|
54
69
|
# @return [FalseClass]
|
data/lib/vedeu/output/all.rb
CHANGED
|
@@ -21,7 +21,7 @@ module Vedeu
|
|
|
21
21
|
# @todo More documentation required (create a fancy chart!)
|
|
22
22
|
#
|
|
23
23
|
# @api private
|
|
24
|
-
class
|
|
24
|
+
class ColourTranslator
|
|
25
25
|
|
|
26
26
|
# @!attribute [r] colour
|
|
27
27
|
# @return [String]
|
|
@@ -43,10 +43,10 @@ module Vedeu
|
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
# Return a new instance of Vedeu::
|
|
46
|
+
# Return a new instance of Vedeu::ColourTranslator.
|
|
47
47
|
#
|
|
48
48
|
# @param colour [Fixnum|String|Symbol]
|
|
49
|
-
# @return [
|
|
49
|
+
# @return [Vedeu::ColourTranslator]
|
|
50
50
|
def initialize(colour = '')
|
|
51
51
|
@colour = colour || ''
|
|
52
52
|
end
|
|
@@ -61,7 +61,7 @@ module Vedeu
|
|
|
61
61
|
alias_method :==, :eql?
|
|
62
62
|
|
|
63
63
|
# @return [String]
|
|
64
|
-
# @see Vedeu::
|
|
64
|
+
# @see Vedeu::ColourTranslator
|
|
65
65
|
def escape_sequence
|
|
66
66
|
if no_colour?
|
|
67
67
|
''
|
|
@@ -260,6 +260,6 @@ module Vedeu
|
|
|
260
260
|
alias_method :repository, :not_implemented
|
|
261
261
|
alias_method :rgb_prefix, :not_implemented
|
|
262
262
|
|
|
263
|
-
end #
|
|
263
|
+
end # ColourTranslator
|
|
264
264
|
|
|
265
265
|
end # Vedeu
|
|
@@ -19,6 +19,10 @@ module Vedeu
|
|
|
19
19
|
#
|
|
20
20
|
module ClassMethods
|
|
21
21
|
|
|
22
|
+
# @!attribute [r]
|
|
23
|
+
# @return [Vedeu::Repository]
|
|
24
|
+
attr_reader :repository
|
|
25
|
+
|
|
22
26
|
# Build models using a simple DSL when a block is given, otherwise returns
|
|
23
27
|
# a new instance of the class including this module.
|
|
24
28
|
#
|
|
@@ -34,6 +38,14 @@ module Vedeu
|
|
|
34
38
|
model
|
|
35
39
|
end
|
|
36
40
|
|
|
41
|
+
# Fetch an instance of a repository's model by name.
|
|
42
|
+
#
|
|
43
|
+
# @param name [String]
|
|
44
|
+
# @return [void]
|
|
45
|
+
def by_name(name)
|
|
46
|
+
@repository.by_name(name)
|
|
47
|
+
end
|
|
48
|
+
|
|
37
49
|
# Provide a convenient way to define the child or children of a model.
|
|
38
50
|
#
|
|
39
51
|
# @param klass [Class] The member (singular) or collection (multiple)
|
|
@@ -45,15 +57,12 @@ module Vedeu
|
|
|
45
57
|
alias_method :member, :child
|
|
46
58
|
alias_method :collection, :child
|
|
47
59
|
|
|
48
|
-
#
|
|
49
|
-
# Not current used.
|
|
60
|
+
# Allow models to specify their repository using a class method.
|
|
50
61
|
#
|
|
51
62
|
# @param klass [void]
|
|
52
|
-
# @param as [void]
|
|
53
63
|
# @return [void]
|
|
54
|
-
def
|
|
55
|
-
|
|
56
|
-
klass.register(as, self)
|
|
64
|
+
def repo(klass)
|
|
65
|
+
@repository = klass
|
|
57
66
|
end
|
|
58
67
|
|
|
59
68
|
private
|
data/lib/vedeu/support/all.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'vedeu/templating/preprocessor'
|
|
2
|
+
|
|
1
3
|
module Vedeu
|
|
2
4
|
|
|
3
5
|
# Generic class to loading a template and parsing it via ERb.
|
|
@@ -43,6 +45,11 @@ module Vedeu
|
|
|
43
45
|
|
|
44
46
|
private
|
|
45
47
|
|
|
48
|
+
# @return [String]
|
|
49
|
+
def preprocess
|
|
50
|
+
Vedeu::Templating::Preprocessor.process(load)
|
|
51
|
+
end
|
|
52
|
+
|
|
46
53
|
# @return [String]
|
|
47
54
|
def load
|
|
48
55
|
File.read(path)
|