vedeu 0.4.53 → 0.4.54
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|