vedeu 0.4.53 → 0.4.54

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