vedeu 0.4.10 → 0.4.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a9fe2d78e6318aca74ab320786c9074d8b745eff
4
- data.tar.gz: 824f82bca58a42308ad10bec73fd49fbd1c20884
3
+ metadata.gz: bd5267f472bd0bcb05b29671a3e36b44ea4ec8d7
4
+ data.tar.gz: 1781dce30836a25b700ca8598728b5733f31ff1d
5
5
  SHA512:
6
- metadata.gz: 103b80280897cd8904924011ef77a0060256f60a5475c1725ad118a0b606861eaa7c0f4938fe2b4c1e06fb6edd9ff84809ee209aa57b07a73b49f8b12ba61c8f
7
- data.tar.gz: d39f7987ca6a1f517ad469d3be912d7748e2f7592128689eb3aace31cc5e59c57f5c2d62200d4c4f9abc009e91b017f6ecb8a2de5c420ac28983649c42356925
6
+ metadata.gz: b9a413311537e668d1a65a28a21e5b20b1dc11bfe5446a502cd2c6735e7c7db28ca758ce8842155974742a9d6a6e7f1cae3212e685477e40b35f37e747aef3d3
7
+ data.tar.gz: cd9da8bd56aa811eaa945a24940e91056cfda503246877f287b27e73e19959fd16faf00f404a382e5efcc0a564b8f3e30f6164d9504ab244259030c34edf1dde
@@ -22,8 +22,8 @@ class VedeuCursorApp
22
22
 
23
23
  geometry do
24
24
  centred true
25
- height 8
26
- width 8
25
+ height 10
26
+ width 10
27
27
  end
28
28
  end
29
29
 
@@ -38,6 +38,7 @@ class VedeuCursorApp
38
38
  view 'main_interface' do
39
39
  border do
40
40
  colour foreground: '#aadd00', background: '#000000'
41
+ title 'Move!'
41
42
  end
42
43
  lines do
43
44
  streams do
@@ -33,8 +33,7 @@ module Vedeu
33
33
 
34
34
  # @return [Boolean]
35
35
  def refresh_view?
36
- new_cursor.ox >= interface_width ||
37
- new_cursor.oy >= interface_height
36
+ new_cursor.ox >= interface_width || new_cursor.oy >= interface_height
38
37
  end
39
38
 
40
39
  # @return [Vedeu::Cursor]
@@ -64,24 +63,12 @@ module Vedeu
64
63
 
65
64
  # @return [Fixnum]
66
65
  def interface_height
67
- if interface.border?
68
- interface.border.height
69
-
70
- else
71
- interface.height
72
-
73
- end
66
+ interface.border.height
74
67
  end
75
68
 
76
69
  # @return [Fixnum]
77
70
  def interface_width
78
- if interface.border?
79
- interface.border.width
80
-
81
- else
82
- interface.width
83
-
84
- end
71
+ interface.border.width
85
72
  end
86
73
 
87
74
  # @return [Vedeu::Interface]
@@ -195,6 +195,24 @@ module Vedeu
195
195
  right(true)
196
196
  end
197
197
 
198
+ # If you have you are showing a top border, you could add a title.
199
+ #
200
+ # @example
201
+ # Vedeu.renders do
202
+ # view 'border_demo' do
203
+ # geometry { width: 50 }
204
+ # border do
205
+ # title 'My Cool Title'
206
+ # # ...
207
+ #
208
+ # +- My Cool Title --------------------------------+
209
+ #
210
+ # @param value [String] The title.
211
+ # @return [String]
212
+ def title(value)
213
+ model.title = value
214
+ end
215
+
198
216
  # Enable/disable the top border.
199
217
  #
200
218
  # @example
@@ -23,9 +23,9 @@ module Vedeu
23
23
  # @return [Vedeu::Line]
24
24
  attr_accessor :parent
25
25
 
26
- # @!attribute [r] value
26
+ # @!attribute [rw] value
27
27
  # @return [String]
28
- attr_reader :value
28
+ attr_accessor :value
29
29
 
30
30
  # Returns a new instance of Vedeu::Char.
31
31
  #
@@ -13,6 +13,7 @@ module Vedeu
13
13
  #
14
14
  class Border
15
15
 
16
+ include Vedeu::Common
16
17
  include Vedeu::Model
17
18
 
18
19
  # @!attribute [rw] attributes
@@ -51,6 +52,10 @@ module Vedeu
51
52
  attr_accessor :show_top
52
53
  alias_method :top?, :show_top
53
54
 
55
+ # @!attribute [rw] title
56
+ # @return [String]
57
+ attr_accessor :title
58
+
54
59
  # @!attribute [rw] top_left
55
60
  # @return [String]
56
61
  attr_accessor :top_left
@@ -90,7 +95,8 @@ module Vedeu
90
95
  # @option attributes enabled [Boolean] Indicate whether the border is to be
91
96
  # shown for this interface.
92
97
  # @option attributes horizontal [String] The horizontal border character.
93
- # @option attributes name [String]
98
+ # @option attributes name [String] The name of the interface to which this
99
+ # border relates.
94
100
  # @option attributes style []
95
101
  # @option attributes show_bottom [Boolean] Indicate whether the bottom
96
102
  # border is to be shown.
@@ -100,6 +106,8 @@ module Vedeu
100
106
  # is to be shown.
101
107
  # @option attributes show_top [Boolean] Indicate whether the top border is
102
108
  # to be shown.
109
+ # @option attributes title [String] A title bar for when the top border is
110
+ # to be shown.
103
111
  # @option attributes top_left [String] The top left border character.
104
112
  # @option attributes top_right [String] The top right border character.
105
113
  # @option attributes vertical [String] The vertical border character.
@@ -113,6 +121,7 @@ module Vedeu
113
121
  @show_left = @attributes[:show_left]
114
122
  @show_right = @attributes[:show_right]
115
123
  @show_top = @attributes[:show_top]
124
+ @title = @attributes[:title]
116
125
  @top_left = @attributes[:top_left]
117
126
  @top_right = @attributes[:top_right]
118
127
  @horizontal = @attributes[:horizontal]
@@ -125,46 +134,30 @@ module Vedeu
125
134
 
126
135
  # @return [Fixnum]
127
136
  def bx
128
- if enabled? && left?
129
- interface.x + 1
137
+ bo = (enabled? && left?) ? 1 : 0
130
138
 
131
- else
132
- interface.x
133
-
134
- end
139
+ interface.x + bo
135
140
  end
136
141
 
137
142
  # @return [Fixnum]
138
143
  def bxn
139
- if enabled? && right?
140
- interface.xn - 1
144
+ bo = (enabled? && right?) ? 1 : 0
141
145
 
142
- else
143
- interface.xn
144
-
145
- end
146
+ interface.xn - bo
146
147
  end
147
148
 
148
149
  # @return [Fixnum]
149
150
  def by
150
- if enabled? && top?
151
- interface.y + 1
152
-
153
- else
154
- interface.y
151
+ bo = (enabled? && top?) ? 1 : 0
155
152
 
156
- end
153
+ interface.y + bo
157
154
  end
158
155
 
159
156
  # @return [Fixnum]
160
157
  def byn
161
- if enabled? && bottom?
162
- interface.yn - 1
158
+ bo = (enabled? && bottom?) ? 1 : 0
163
159
 
164
- else
165
- interface.yn
166
-
167
- end
160
+ interface.yn - bo
168
161
  end
169
162
 
170
163
  # Returns the width of the interface determined by whether a left, right,
@@ -172,18 +165,7 @@ module Vedeu
172
165
  #
173
166
  # @return [Fixnum]
174
167
  def width
175
- return interface.width unless enabled?
176
-
177
- if left? && right?
178
- interface.width - 2
179
-
180
- elsif left? || right?
181
- interface.width - 1
182
-
183
- else
184
- interface.width
185
-
186
- end
168
+ (bx..bxn).size
187
169
  end
188
170
 
189
171
  # Returns the height of the interface determined by whether a top, bottom,
@@ -191,18 +173,7 @@ module Vedeu
191
173
  #
192
174
  # @return [Fixnum]
193
175
  def height
194
- return interface.height unless enabled?
195
-
196
- if top? && bottom?
197
- interface.height - 2
198
-
199
- elsif top? || bottom?
200
- interface.height - 1
201
-
202
- else
203
- interface.height
204
-
205
- end
176
+ (by..byn).size
206
177
  end
207
178
 
208
179
  # @return [Vedeu::Colour]
@@ -246,17 +217,7 @@ module Vedeu
246
217
  #
247
218
  # @return [String]
248
219
  def bottom
249
- return [] unless bottom?
250
-
251
- out = []
252
-
253
- out << border(bottom_left, :bottom_left) if left?
254
- width.times do |ix|
255
- out << border(horizontal, :bottom_horizontal, nil, ix)
256
- end
257
- out << border(bottom_right, :bottom_right) if right?
258
-
259
- out.flatten
220
+ top_or_bottom('bottom')
260
221
  end
261
222
 
262
223
  # Renders the left border for the interface.
@@ -283,20 +244,50 @@ module Vedeu
283
244
  #
284
245
  # @return [String]
285
246
  def top
286
- return [] unless top?
247
+ top_or_bottom('top')
248
+ end
249
+
250
+ private
251
+
252
+ # @param prefix [String]
253
+ # @return [String]
254
+ def top_or_bottom(prefix)
255
+ predicate = (prefix + '?').to_sym
256
+ _left = (prefix + '_left').to_sym
257
+ _right = (prefix + '_right').to_sym
258
+ _horizontal = (prefix + '_horizontal').to_sym
259
+
260
+ return [] unless send(predicate)
287
261
 
288
262
  out = []
289
- out << border(top_left, :top_left) if left?
290
- width.times do |ix|
291
- out << border(horizontal, :top_horizontal, nil, ix)
263
+ out << border(send(_left), _left) if left?
264
+
265
+ if prefix == 'top' && defined_value?(title)
266
+ title_out = []
267
+ width.times do |ix|
268
+ title_out << border(horizontal, _horizontal, nil, ix)
269
+ end
270
+
271
+ truncate = title.chomp.slice(0..(width - 5))
272
+ pad = truncate.center(truncate.size + 2).chars
273
+ out << title_out.each_with_index do |b, i|
274
+ if i >= 1 && i <= pad.size
275
+ b.border = nil
276
+ b.value = pad[(i - 1)]
277
+ end
278
+ end
279
+
280
+ else
281
+ width.times do |ix|
282
+ out << border(horizontal, _horizontal, nil, ix)
283
+ end
284
+
292
285
  end
293
- out << border(top_right, :top_right) if right?
294
286
 
295
- out.flatten
287
+ out << border(send(_right), _right) if right?
288
+ out
296
289
  end
297
290
 
298
- private
299
-
300
291
  # @param value [String]
301
292
  # @param type [Symbol|NilClass]
302
293
  # @param iy [Fixnum]
@@ -311,6 +302,11 @@ module Vedeu
311
302
  border: type })
312
303
  end
313
304
 
305
+ # @return [Vedeu::Interface]
306
+ def interface
307
+ @interface ||= Vedeu.interfaces.find(name)
308
+ end
309
+
314
310
  # The default values for a new instance of this class.
315
311
  #
316
312
  # @return [Hash]
@@ -328,6 +324,7 @@ module Vedeu
328
324
  show_right: true,
329
325
  show_top: true,
330
326
  style: [],
327
+ title: '',
331
328
  top_left: "\x6C", # ┌
332
329
  top_right: "\x6B", # ┐
333
330
  vertical: "\x78", # │
@@ -172,6 +172,15 @@ module Vedeu
172
172
  it { subject.must_be_instance_of(TrueClass) }
173
173
  end
174
174
 
175
+ describe '#title' do
176
+ let(:value) { 'Some title'}
177
+
178
+ subject { instance.title(value) }
179
+
180
+ it { subject.must_be_instance_of(String) }
181
+ it { subject.must_equal('Some title') }
182
+ end
183
+
175
184
  describe '#top_left' do
176
185
  let(:char) { 'A' }
177
186
 
@@ -57,6 +57,7 @@ module Vedeu
57
57
  show_right: true,
58
58
  show_top: true,
59
59
  style: [],
60
+ title: '',
60
61
  top_left: 'l',
61
62
  top_right: 'k',
62
63
  vertical: 'x',
data/vedeu.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'vedeu'
7
- spec.version = '0.4.10'
7
+ spec.version = '0.4.11'
8
8
  spec.authors = ['Gavin Laking']
9
9
  spec.email = ['gavinlaking@gmail.com']
10
10
  spec.summary = %q{A terminal case of wonderland.}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vedeu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.10
4
+ version: 0.4.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-23 00:00:00.000000000 Z
11
+ date: 2015-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aruba