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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vedeu/api.rb +68 -5
  3. data/lib/vedeu/bindings/system.rb +0 -15
  4. data/lib/vedeu/bindings/visibility.rb +57 -13
  5. data/lib/vedeu/buffers/buffer.rb +5 -56
  6. data/lib/vedeu/cursor/cursor.rb +24 -16
  7. data/lib/vedeu/exceptions.rb +1 -1
  8. data/lib/vedeu/models/group.rb +39 -4
  9. data/lib/vedeu/models/interface.rb +41 -5
  10. data/lib/vedeu/null/buffer.rb +5 -0
  11. data/lib/vedeu/null/interface.rb +15 -0
  12. data/lib/vedeu/output/all.rb +1 -1
  13. data/lib/vedeu/output/background.rb +1 -1
  14. data/lib/vedeu/output/clear/named_interface.rb +0 -2
  15. data/lib/vedeu/output/{translator.rb → colour_translator.rb} +5 -5
  16. data/lib/vedeu/output/foreground.rb +1 -1
  17. data/lib/vedeu/output/render_border.rb +0 -1
  18. data/lib/vedeu/repositories/model.rb +15 -6
  19. data/lib/vedeu/repositories/repositories/buffers.rb +6 -0
  20. data/lib/vedeu/repositories/repositories/cursors.rb +6 -0
  21. data/lib/vedeu/repositories/repositories/groups.rb +6 -0
  22. data/lib/vedeu/repositories/repositories/interfaces.rb +6 -0
  23. data/lib/vedeu/support/all.rb +1 -2
  24. data/lib/vedeu/support/template.rb +7 -0
  25. data/lib/vedeu/support/toggleable.rb +98 -0
  26. data/lib/vedeu/version.rb +1 -1
  27. data/test/lib/vedeu/api_test.rb +7 -1
  28. data/test/lib/vedeu/bindings/system_test.rb +5 -16
  29. data/test/lib/vedeu/bindings/visibility_test.rb +4 -0
  30. data/test/lib/vedeu/buffers/buffer_test.rb +9 -91
  31. data/test/lib/vedeu/cursor/cursor_test.rb +4 -6
  32. data/test/lib/vedeu/dsl/geometry_test.rb +24 -0
  33. data/test/lib/vedeu/models/group_test.rb +16 -14
  34. data/test/lib/vedeu/models/interface_test.rb +1 -1
  35. data/test/lib/vedeu/null/buffer_test.rb +6 -0
  36. data/test/lib/vedeu/null/interface_test.rb +18 -0
  37. data/test/lib/vedeu/output/clear/named_interface_test.rb +10 -19
  38. data/test/lib/vedeu/output/{translator_test.rb → colour_translator_test.rb} +5 -5
  39. data/test/lib/vedeu/support/toggleable_test.rb +69 -0
  40. data/vedeu.gemspec +1 -1
  41. metadata +10 -13
  42. data/lib/vedeu/support/options.rb +0 -70
  43. data/lib/vedeu/support/visibility.rb +0 -122
  44. data/test/lib/vedeu/support/options_test.rb +0 -70
  45. data/test/lib/vedeu/support/visibility_test.rb +0 -95
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: af96b5d6c566e54996cf3c560a60650c5aec5492
4
- data.tar.gz: 29d0ba76490206ea43cfb3d24a17a6f81fb9ff8f
3
+ metadata.gz: 144b0ad6061194dfc5cb20651b818ed2512df6a0
4
+ data.tar.gz: 22ce31896daf7963b207766b655f41d31b8aa68d
5
5
  SHA512:
6
- metadata.gz: f9f76c20306185777104a808a6f23a3b3c6199e6712207c7246e8758cbd2be8a456d132bfb0a2c3afce79285d3d2b8661ee8a60d592137ec21149f5cfea71edd
7
- data.tar.gz: a7e80e7662f4c59de7ede8cea19b2feeb847a544a583d6de92888cda507794a2c96de1e8b6af19fb6e1f74dab04876f47a5c95aa77a4890729110d10ec2a9d20
6
+ metadata.gz: d0327fe74a67980d3db9b0f96479fd32e9cc32590b70dbabf52c8db7ad667df9948fcd280b5b417e21cde5d5a1ef1f72d96f5861a1d957447f03f5218ac8ed17
7
+ data.tar.gz: 2e8a1974fb367819b03a0b9baab9e341b8ec1a44ac20a44da22f091bd60e1fea47cdcb5ad1fb4bf27252b4544d44a265cbfd67f5f62f3ea5b494c5f316d3e178
data/lib/vedeu/api.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'vedeu/support/common'
2
2
  require 'vedeu/support/terminal'
3
3
  require 'vedeu/support/timer'
4
- require 'vedeu/support/visibility'
5
4
  require 'vedeu/output/renderers/all'
6
5
  require 'vedeu/events/all'
7
6
  require 'vedeu/models/all'
@@ -354,8 +353,8 @@ module Vedeu
354
353
  # Vedeu.hide_cursor(name)
355
354
  #
356
355
  # @!method hide_cursor
357
- # @see Vedeu::Visibility.hide_cursor
358
- def_delegators Vedeu::Visibility, :hide_cursor
356
+ # @see Vedeu::Cursor#hide
357
+ def_delegators Vedeu::Cursor, :hide_cursor
359
358
 
360
359
  # Shows the cursor for the interface of the given name.
361
360
  #
@@ -363,8 +362,72 @@ module Vedeu
363
362
  # Vedeu.show_cursor(name)
364
363
  #
365
364
  # @!method show_cursor
366
- # @see Vedeu::Visibility.show_cursor
367
- def_delegators Vedeu::Visibility, :show_cursor
365
+ # @see Vedeu::Cursor#show
366
+ def_delegators Vedeu::Cursor, :show_cursor
367
+
368
+ # Toggle the visibility of the cursor with the given name.
369
+ #
370
+ # @example
371
+ # Vedeu.toggle_cursor(name)
372
+ #
373
+ # @!method toggle_cursor
374
+ # @see Vedeu::Cursor#hide
375
+ # @see Vedeu::Cursor#show
376
+ def_delegators Vedeu::Cursor, :toggle_cursor
377
+
378
+ # Hide the group with the given name.
379
+ #
380
+ # @example
381
+ # Vedeu.hide_group(name)
382
+ #
383
+ # @!method hide_group
384
+ # @see Vedeu::Group#hide
385
+ def_delegators Vedeu::Group, :hide_group
386
+
387
+ # Shows the group with the given name.
388
+ #
389
+ # @example
390
+ # Vedeu.show_group(name)
391
+ #
392
+ # @!method show_group
393
+ # @see Vedeu::Group#show
394
+ def_delegators Vedeu::Group, :show_group
395
+
396
+ # Toggle the visibility of the group with the given name.
397
+ #
398
+ # @example
399
+ # Vedeu.toggle_group(name)
400
+ #
401
+ # @!method toggle_group
402
+ # @see Vedeu::Group#toggle
403
+ def_delegators Vedeu::Group, :toggle_group
404
+
405
+ # Hide the interface with the given name.
406
+ #
407
+ # @example
408
+ # Vedeu.hide_interface(name)
409
+ #
410
+ # @!method hide_interface
411
+ # @see Vedeu::Interface#hide
412
+ def_delegators Vedeu::Interface, :hide_interface
413
+
414
+ # Shows the interface with the given name.
415
+ #
416
+ # @example
417
+ # Vedeu.show_interface(name)
418
+ #
419
+ # @!method show_interface
420
+ # @see Vedeu::Interface#show
421
+ def_delegators Vedeu::Interface, :show_interface
422
+
423
+ # Toggle the visibility of the interface with the given name.
424
+ #
425
+ # @example
426
+ # Vedeu.toggle_interface(name)
427
+ #
428
+ # @!method toggle_interface
429
+ # @see Vedeu::Interface#toggle
430
+ def_delegators Vedeu::Interface, :toggle_interface
368
431
 
369
432
  end # API
370
433
 
@@ -22,7 +22,6 @@ module Vedeu
22
22
  def setup!
23
23
  cleanup!
24
24
  clear!
25
- clear_group!
26
25
  command!
27
26
  exit!
28
27
  focus_next!
@@ -78,20 +77,6 @@ module Vedeu
78
77
  end
79
78
  end
80
79
 
81
- # Clears the spaces occupied by the interfaces belonging to the named
82
- # group.
83
- #
84
- # @example
85
- # Vedeu.trigger(:_clear_group_, name)
86
- # Vedeu.clear_by_group(name)
87
- #
88
- # @return [void]
89
- def clear_group!
90
- Vedeu.bind(:_clear_group_) do |name|
91
- Vedeu::Clear::NamedGroup.render(name)
92
- end
93
- end
94
-
95
80
  # Will cause the triggering of the `:command` event; which you should
96
81
  # define to 'do things'
97
82
  #
@@ -14,17 +14,34 @@ module Vedeu
14
14
  #
15
15
  # @return [void]
16
16
  def setup!
17
+ clear_group!
17
18
  hide_cursor!
18
19
  hide_group!
19
20
  hide_interface!
20
21
  show_cursor!
21
22
  show_group!
22
23
  show_interface!
24
+ toggle_cursor!
25
+ toggle_group!
23
26
  toggle_interface!
24
27
  end
25
28
 
26
29
  private
27
30
 
31
+ # Clears the spaces occupied by the interfaces belonging to the named
32
+ # group.
33
+ #
34
+ # @example
35
+ # Vedeu.trigger(:_clear_group_, name)
36
+ # Vedeu.clear_by_group(name)
37
+ #
38
+ # @return [void]
39
+ def clear_group!
40
+ Vedeu.bind(:_clear_group_) do |name|
41
+ Vedeu::Clear::NamedGroup.render(name)
42
+ end
43
+ end
44
+
28
45
  # Hide the cursor of the named interface or if a name is not given, the
29
46
  # interface currently in focus.
30
47
  #
@@ -36,7 +53,7 @@ module Vedeu
36
53
  # @return [void]
37
54
  def hide_cursor!
38
55
  Vedeu.bind(:_hide_cursor_) do |name|
39
- Vedeu::Visibility.hide_cursor(name)
56
+ Vedeu::Cursor.hide_cursor(name)
40
57
  end
41
58
  Vedeu.bind(:_cursor_hide_) do |name|
42
59
  Vedeu.trigger(:_hide_cursor_, name)
@@ -50,12 +67,13 @@ module Vedeu
50
67
  # effectively clear the terminal and show the new group.
51
68
  #
52
69
  # @example
53
- # Vedeu.trigger(:_hide_group_, group_name)
70
+ # Vedeu.trigger(:_hide_group_, name)
71
+ # Vedeu.hide_group(name)
54
72
  #
55
73
  # @return [void]
56
74
  def hide_group!
57
75
  Vedeu.bind(:_hide_group_) do |name|
58
- Vedeu.trigger(:_clear_group_, name)
76
+ Vedeu::Group.hide_group(name)
59
77
  end
60
78
  end
61
79
 
@@ -63,12 +81,12 @@ module Vedeu
63
81
  #
64
82
  # @example
65
83
  # Vedeu.trigger(:_hide_interface_, name)
84
+ # Vedeu.hide_interface(name)
66
85
  #
67
86
  # @return [void]
68
- # @see Vedeu::Buffer#hide
69
87
  def hide_interface!
70
88
  Vedeu.bind(:_hide_interface_) do |name|
71
- Vedeu.buffers.by_name(name).hide
89
+ Vedeu::Interface.hide_interface(name)
72
90
  end
73
91
  end
74
92
 
@@ -83,7 +101,7 @@ module Vedeu
83
101
  # @return [void]
84
102
  def show_cursor!
85
103
  Vedeu.bind(:_show_cursor_) do |name|
86
- Vedeu::Visibility.show_cursor(name)
104
+ Vedeu::Cursor.show_cursor(name)
87
105
  end
88
106
  Vedeu.bind(:_cursor_show_) do |name|
89
107
  Vedeu.trigger(:_show_cursor_, name)
@@ -94,13 +112,13 @@ module Vedeu
94
112
  # the named group.
95
113
  #
96
114
  # @example
97
- # Vedeu.trigger(:_show_group_, group_name)
115
+ # Vedeu.trigger(:_show_group_, name)
116
+ # Vedeu.show_group(name)
98
117
  #
99
118
  # @return [void]
100
119
  def show_group!
101
120
  Vedeu.bind(:_show_group_) do |name|
102
- Vedeu.trigger(:_clear_)
103
- Vedeu.trigger(:_refresh_group_, name)
121
+ Vedeu::Group.show_group(name)
104
122
  end
105
123
  end
106
124
 
@@ -108,12 +126,38 @@ module Vedeu
108
126
  #
109
127
  # @example
110
128
  # Vedeu.trigger(:_show_interface_, name)
129
+ # Vedeu.show_interface(name)
111
130
  #
112
131
  # @return [void]
113
- # @see Vedeu::Buffer#show
114
132
  def show_interface!
115
133
  Vedeu.bind(:_show_interface_) do |name|
116
- Vedeu.buffers.by_name(name).show
134
+ Vedeu::Interface.show_interface(name)
135
+ end
136
+ end
137
+
138
+ # Toggling a cursor.
139
+ #
140
+ # @example
141
+ # Vedeu.trigger(:_toggle_cursor_, name)
142
+ # Vedeu.toggle_cursor(name)
143
+ #
144
+ # @return [void]
145
+ def toggle_cursor!
146
+ Vedeu.bind(:_toggle_cursor_) do |name|
147
+ Vedeu::Cursor.toggle_cursor(name)
148
+ end
149
+ end
150
+
151
+ # Toggling a group.
152
+ #
153
+ # @example
154
+ # Vedeu.trigger(:_toggle_group_, name)
155
+ # Vedeu.toggle_group(name)
156
+ #
157
+ # @return [void]
158
+ def toggle_group!
159
+ Vedeu.bind(:_toggle_group_) do |name|
160
+ Vedeu::Group.toggle_group(name)
117
161
  end
118
162
  end
119
163
 
@@ -121,12 +165,12 @@ module Vedeu
121
165
  #
122
166
  # @example
123
167
  # Vedeu.trigger(:_toggle_interface_, name)
168
+ # Vedeu.toggle_interface(name)
124
169
  #
125
170
  # @return [void]
126
- # @see Vedeu::Buffer#toggle
127
171
  def toggle_interface!
128
172
  Vedeu.bind(:_toggle_interface_) do |name|
129
- Vedeu.buffers.by_name(name).toggle
173
+ Vedeu::Interface.toggle_interface(name)
130
174
  end
131
175
  end
132
176
 
@@ -79,13 +79,6 @@ module Vedeu
79
79
  true
80
80
  end
81
81
 
82
- # Returns the front buffer or, if that is empty, the interface cleared.
83
- #
84
- # @return [void]
85
- def clear
86
- Vedeu::Output.render(clear_buffer)
87
- end
88
-
89
82
  # Return a boolean indicating content presence on the buffer type.
90
83
  #
91
84
  # @return [Boolean] Whether the buffer targetted has content.
@@ -108,6 +101,7 @@ module Vedeu
108
101
  #
109
102
  # @example
110
103
  # Vedeu.trigger(:_hide_interface_, name)
104
+ # Vedeu.hide_interface(name)
111
105
  #
112
106
  # Will hide the named interface. If the interface is currently visible, it
113
107
  # will be cleared- rendered blank. To show the interface, the
@@ -117,11 +111,7 @@ module Vedeu
117
111
  #
118
112
  # @return [void]
119
113
  def hide
120
- return nil unless visible?
121
-
122
- Vedeu::Visibility.hide(interface)
123
-
124
- clear
114
+ Vedeu::Output.render(clear_buffer)
125
115
  end
126
116
 
127
117
  # Return the content for this buffer.
@@ -139,12 +129,12 @@ module Vedeu
139
129
  def render
140
130
  Vedeu::Output.render(buffer)
141
131
  end
142
- alias_method :content, :render
143
132
 
144
133
  # Show this buffer.
145
134
  #
146
135
  # @example
147
136
  # Vedeu.trigger(:_show_interface_, name)
137
+ # Vedeu.show_interface(name)
148
138
  #
149
139
  # Will show the named interface. If the interface is currently invisible, it
150
140
  # will be shown- rendered with its latest content. To hide the interface,
@@ -154,37 +144,7 @@ module Vedeu
154
144
  #
155
145
  # @return [void]
156
146
  def show
157
- return nil if visible?
158
-
159
- Vedeu::Visibility.show(interface)
160
-
161
- render
162
- end
163
-
164
- # Toggles the visibility of this buffer.
165
- #
166
- # @example
167
- # Vedeu.trigger(:_toggle_interface_, name)
168
- #
169
- # Will toggle the visibility of the named interface. If the interface is
170
- # currently visible, the area it occupies will be clears and the interface
171
- # will be marked invisible. If the interface is invisible, then the
172
- # interface will be marked visible and rendered in the area it occupies.
173
- #
174
- # @note
175
- # If an interface is marked visible whilst another view is occupying some
176
- # or all of the interface's current position, the interface will overwrite
177
- # this area- this may cause visual corruption.
178
- #
179
- # @return [void]
180
- def toggle
181
- if visible?
182
- hide
183
-
184
- else
185
- show
186
-
187
- end
147
+ Vedeu::Output.render(buffer)
188
148
  end
189
149
 
190
150
  private
@@ -249,18 +209,7 @@ module Vedeu
249
209
  #
250
210
  # @return [Vedeu::Interface]
251
211
  def interface
252
- @interface ||= Vedeu.interfaces.by_name(name)
253
- end
254
-
255
- # @return [Vedeu::Interface]
256
- def view
257
- if front?
258
- front
259
-
260
- else
261
- interface
262
-
263
- end
212
+ Vedeu.interfaces.by_name(name)
264
213
  end
265
214
 
266
215
  # @see Vedeu::Interface#visible
@@ -1,3 +1,5 @@
1
+ require 'vedeu/support/toggleable'
2
+
1
3
  module Vedeu
2
4
 
3
5
  # Each interface has its own Cursor which maintains the position and
@@ -7,6 +9,7 @@ module Vedeu
7
9
  class Cursor
8
10
 
9
11
  include Vedeu::Model
12
+ include Vedeu::Toggleable
10
13
 
11
14
  # @!attribute [r] attributes
12
15
  # @return [Hash]
@@ -28,11 +31,6 @@ module Vedeu
28
31
  # @return [Boolean|Symbol]
29
32
  attr_reader :state
30
33
 
31
- # @!attribute [r] visible
32
- # @return [Boolean|Symbol]
33
- attr_reader :visible
34
- alias_method :visible?, :visible
35
-
36
34
  # @!attribute [rw] x
37
35
  # @return [Fixnum]
38
36
  attr_accessor :x
@@ -94,9 +92,17 @@ module Vedeu
94
92
  end
95
93
  alias_method :to_str, :to_s
96
94
 
95
+ # Hide a named cursor, or without a name, the cursor of the currently
96
+ # focussed interface.
97
+ #
98
+ # @example
99
+ # Vedeu.hide_cursor(name)
100
+ #
97
101
  # @return [Vedeu::EscapeChar]
98
- def hide_cursor
99
- @hide_cursor ||= Vedeu::EscapeChar.new(Vedeu::Esc.hide_cursor)
102
+ def hide
103
+ super
104
+
105
+ visibility
100
106
  end
101
107
 
102
108
  # Return the position of this cursor.
@@ -106,15 +112,17 @@ module Vedeu
106
112
  @position ||= Vedeu::Position[y, x]
107
113
  end
108
114
 
115
+ # Show a named cursor, or without a name, the cursor of the currently
116
+ # focussed interface.
117
+ #
118
+ # @example
119
+ # Vedeu.show_cursor(name)
120
+ #
109
121
  # @return [Vedeu::EscapeChar]
110
- def show_cursor
111
- @show_cursor ||= Vedeu::EscapeChar.new(Vedeu::Esc.show_cursor)
112
- end
122
+ def show
123
+ super
113
124
 
114
- # @param value [Boolean]
115
- # @return [void]
116
- def visible=(value)
117
- @visible = @attributes[:visible] = value
125
+ visibility
118
126
  end
119
127
 
120
128
  private
@@ -145,9 +153,9 @@ module Vedeu
145
153
  #
146
154
  # @return [String]
147
155
  def visibility
148
- return show_cursor if visible?
156
+ return Vedeu::EscapeChar.new(Vedeu::Esc.show_cursor) if visible?
149
157
 
150
- hide_cursor
158
+ Vedeu::EscapeChar.new(Vedeu::Esc.hide_cursor)
151
159
  end
152
160
 
153
161
  end # Cursor