vedeu 0.6.33 → 0.6.34

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b2d162793e93e4fa86ae8aa3de42eebb420dfe04
4
- data.tar.gz: f85ce22f4ae5e77674fb833f8424236a89980ccc
3
+ metadata.gz: 12cdb96715e44a6ed789be72c594f11a2fca50c4
4
+ data.tar.gz: 5fb1b73c0e64a16bfaa3c227169fec1ad8d69475
5
5
  SHA512:
6
- metadata.gz: 9d43739fa7157c31b80664ef5745d9ba27321b876aa35eae85ddd1dd45f77a89d0d27386bfc50e699979cb4c21783432afab585fe7312b01f08da0916af9f12e
7
- data.tar.gz: b05c10e2f4903031809a462cd4257952fd925f5b8bc0a4dc84880f704b5e82b255510624cddde9828edf4d4c4eb729397d3cada44143ab03a0cb3a965d6ec752
6
+ metadata.gz: dcce80eac99efd8c58394bf7bc595ce26ec4534288357894afbbbb7ac7abe76dd4b4f1f80f5500b6208dbfe0be58882ad7c455a4e6f669d937a0b866ab2958df
7
+ data.tar.gz: e55fbfa42ce9f608f0f28dffa9584f763a5f6ae8126e03de8c841fde5377612d67d7437a33b5962c63119a14eccce43b1cf4e0933982b65e1751ba7372080638
data/.rubocop.yml CHANGED
@@ -93,6 +93,9 @@ Style/Next:
93
93
  - skip_modifier_ifs
94
94
  - always
95
95
 
96
+ Style/SpaceAroundOperators:
97
+ Enabled: false
98
+
96
99
  Style/SpaceAroundEqualsInParameterDefault:
97
100
  EnforcedStyle: space
98
101
 
data/lib/vedeu.rb CHANGED
@@ -23,13 +23,6 @@ module Vedeu
23
23
  extend Forwardable
24
24
  extend self
25
25
 
26
- # Return the name of currently focussed interface.
27
- #
28
- # @return [Vedeu::Models::Focus]
29
- def self.focusable
30
- @focusable ||= Vedeu::Models::Focus
31
- end
32
-
33
26
  end # Vedeu
34
27
 
35
28
  require 'vedeu/all'
@@ -7,24 +7,26 @@ module Vedeu
7
7
  class Area
8
8
 
9
9
  # @!attribute [r] y
10
- # @return [Fixnum] Returns the top coordinate of the interface.
10
+ # @return [Fixnum] Returns the top coordinate (row/line start
11
+ # position) of the interface.
11
12
  attr_reader :y
12
13
  alias_method :top, :y
13
14
 
14
15
  # @!attribute [r] yn
15
- # @return [Fixnum] Returns the bottom coordinate of the
16
- # interface.
16
+ # @return [Fixnum] Returns the bottom coordinate (row/line end
17
+ # position) of the interface.
17
18
  attr_reader :yn
18
19
  alias_method :bottom, :yn
19
20
 
20
21
  # @!attribute [r] x
21
- # @return [Fixnum] Returns the left coordinate of the interface.
22
+ # @return [Fixnum] Returns the left coordinate (column/character
23
+ # start position) of the interface.
22
24
  attr_reader :x
23
25
  alias_method :left, :x
24
26
 
25
27
  # @!attribute [r] xn
26
- # @return [Fixnum] Returns the right coordinate of the
27
- # interface.
28
+ # @return [Fixnum] Returns the right coordinate (column/
29
+ # character end position) of the interface.
28
30
  attr_reader :xn
29
31
  alias_method :right, :xn
30
32
 
@@ -44,7 +46,7 @@ module Vedeu
44
46
  d: attributes[:y],
45
47
  dn: attributes[:yn],
46
48
  d_dn: attributes[:y_yn],
47
- default: attributes[:y_default],
49
+ default: Vedeu.height,
48
50
  maximised: attributes[:maximised],
49
51
  centred: attributes[:centred],
50
52
  }
@@ -52,7 +54,7 @@ module Vedeu
52
54
  d: attributes[:x],
53
55
  dn: attributes[:xn],
54
56
  d_dn: attributes[:x_xn],
55
- default: attributes[:x_default],
57
+ default: Vedeu.width,
56
58
  maximised: attributes[:maximised],
57
59
  centred: attributes[:centred],
58
60
  }
@@ -86,26 +88,39 @@ module Vedeu
86
88
  end
87
89
  alias_method :==, :eql?
88
90
 
91
+ # Returns an array containing the centred y and x coordinates of
92
+ # the interface.
93
+ #
89
94
  # @return [Array<Fixnum>]
90
95
  def centre
91
96
  [centre_y, centre_x]
92
97
  end
93
98
 
99
+ # Returns the centred y coordinate (the vertical centre row) of
100
+ # the interface.
101
+ #
94
102
  # @return [Fixnum]
95
103
  def centre_y
96
104
  (height / 2) + y
97
105
  end
98
106
 
107
+ # Returns the centred x coordinate (the horizontal centre
108
+ # character) of the interface.
109
+ #
99
110
  # @return [Fixnum]
100
111
  def centre_x
101
112
  (width / 2) + x
102
113
  end
103
114
 
115
+ # Returns the height of the interface.
116
+ #
104
117
  # @return [Fixnum]
105
118
  def height
106
119
  (y..yn).size
107
120
  end
108
121
 
122
+ # Returns the width of the interface.
123
+ #
109
124
  # @return [Fixnum]
110
125
  def width
111
126
  (x..xn).size
@@ -117,7 +132,7 @@ module Vedeu
117
132
  # `top` or `y` is 4.
118
133
  #
119
134
  # north # => 3
120
- # north(2) # => 2 (positive goes north)
135
+ # north(2) # => 2 (positive goes 'more' north)
121
136
  # north(-4) # => 8 (negative goes south)
122
137
  #
123
138
  # @param offset [Fixnum]
@@ -132,7 +147,7 @@ module Vedeu
132
147
  # `right` or `xn` is 19.
133
148
  #
134
149
  # east # => 20
135
- # east(2) # => 21 (positive goes east)
150
+ # east(2) # => 21 (positive goes 'more' east)
136
151
  # east(-4) # => 15 (negative goes west)
137
152
  #
138
153
  # @param offset [Fixnum]
@@ -147,7 +162,7 @@ module Vedeu
147
162
  # `bottom` or `yn` is 12.
148
163
  #
149
164
  # south # => 13
150
- # south(2) # => 14 (positive goes south)
165
+ # south(2) # => 14 (positive goes 'more' south)
151
166
  # south(-4) # => 8 (negative goes north)
152
167
  #
153
168
  # @param offset [Fixnum]
@@ -162,7 +177,7 @@ module Vedeu
162
177
  # `left` or `x` is 8.
163
178
  #
164
179
  # west # => 7
165
- # west(2) # => 6 (positive goes west)
180
+ # west(2) # => 6 (positive goes 'more' west)
166
181
  # west(-4) # => 12 (negative goes east)
167
182
  #
168
183
  # @param offset [Fixnum]
@@ -103,15 +103,15 @@ module Vedeu
103
103
  {
104
104
  client: @client,
105
105
  centred: @centred,
106
- height: _height,
106
+ height: height,
107
107
  maximised: @maximised,
108
108
  name: @name,
109
109
  repository: @repository,
110
- width: _width,
111
- x: _x,
112
- xn: _xn,
113
- y: _y,
114
- yn: _yn,
110
+ width: width,
111
+ x: x,
112
+ xn: xn,
113
+ y: y,
114
+ yn: yn,
115
115
  }
116
116
  end
117
117
 
@@ -144,51 +144,50 @@ module Vedeu
144
144
 
145
145
  # Moves the geometry down by one row.
146
146
  #
147
- # TODO: Move cursor also.
147
+ # @todo Move cursor also.
148
148
  # @return [Vedeu::Geometry::Geometry]
149
149
  def move_down
150
150
  return self if yn + 1 > Vedeu.height
151
151
 
152
- Vedeu::Geometry::Geometry.store(move_attributes(y: y + 1, yn: yn + 1))
152
+ move(y: y + 1, yn: yn + 1)
153
153
  end
154
154
 
155
155
  # Moves the geometry left by one column.
156
156
  #
157
- # TODO: Move cursor also.
157
+ # @todo Move cursor also.
158
158
  # @return [Vedeu::Geometry::Geometry]
159
159
  def move_left
160
160
  return self if x - 1 < 1
161
161
 
162
- Vedeu::Geometry::Geometry.store(move_attributes(x: x - 1, xn: xn - 1))
162
+ move(x: x - 1, xn: xn - 1)
163
163
  end
164
164
 
165
165
  # Moves the geometry to the top left of the terminal.
166
166
  #
167
- # TODO: Move cursor also.
167
+ # @todo Move cursor also.
168
168
  # @return [Vedeu::Geometry::Geometry]
169
169
  def move_origin
170
- Vedeu::Geometry::Geometry.store(
171
- move_attributes(x: 1, xn: (xn - x + 1), y: 1, yn: (yn - y + 1)))
170
+ move(x: 1, xn: (xn - x + 1), y: 1, yn: (yn - y + 1))
172
171
  end
173
172
 
174
173
  # Moves the geometry right by one column.
175
174
  #
176
- # TODO: Move cursor also.
175
+ # @todo Move cursor also.
177
176
  # @return [Vedeu::Geometry::Geometry]
178
177
  def move_right
179
178
  return self if xn + 1 > Vedeu.width
180
179
 
181
- Vedeu::Geometry::Geometry.store(move_attributes(x: x + 1, xn: xn + 1))
180
+ move(x: x + 1, xn: xn + 1)
182
181
  end
183
182
 
184
183
  # Moves the geometry up by one column.
185
184
  #
186
- # TODO: Move cursor also.
185
+ # @todo Move cursor also.
187
186
  # @return [Vedeu::Geometry::Geometry]
188
187
  def move_up
189
188
  return self if y - 1 < 1
190
189
 
191
- Vedeu::Geometry::Geometry.store(move_attributes(y: y - 1, yn: yn - 1))
190
+ move(y: y - 1, yn: yn - 1)
192
191
  end
193
192
 
194
193
  # Will unmaximise the named interface geometry. Previously, when
@@ -223,75 +222,38 @@ module Vedeu
223
222
  # @return [Hash<Symbol => Boolean, Fixnum>]
224
223
  def area_attributes
225
224
  {
226
- y: _y,
227
- yn: _yn,
228
- y_yn: _height,
229
- y_default: Vedeu.height,
230
- x: _x,
231
- xn: _xn,
232
- x_xn: _width,
233
- x_default: Vedeu.width,
234
- centred: centred,
235
- maximised: maximised,
225
+ centred: @centred,
226
+ maximised: @maximised,
227
+ x: @x.is_a?(Proc) ? @x.call : @x,
228
+ xn: @xn.is_a?(Proc) ? @xn.call : @xn,
229
+ x_xn: @width.is_a?(Proc) ? @width.call : @width,
230
+ y: @y.is_a?(Proc) ? @y.call : @y,
231
+ yn: @yn.is_a?(Proc) ? @yn.call : @yn,
232
+ y_yn: @height.is_a?(Proc) ? @height.call : @height,
236
233
  }
237
234
  end
238
235
 
239
- # @param attrs [Hash<Symbol => Fixnum>]
240
- # @option attrs x [Fixnum]
241
- # @option attrs xn [Fixnum]
242
- # @option attrs y [Fixnum]
243
- # @option attrs yn [Fixnum]
244
- # @return [Hash<Symbol => Boolean, Fixnum>]
245
- def move_attributes(attrs = {})
246
- attributes.merge!(
247
- centred: false,
248
- maximised: false,
249
- x: x,
250
- xn: xn,
251
- y: y,
252
- yn: yn).merge!(attrs)
253
- end
254
-
255
- # Returns the row/line start position for the interface.
256
- #
257
- # @return [Fixnum]
258
- def _y
259
- @y.is_a?(Proc) ? @y.call : @y
260
- end
261
-
262
- # Returns the row/line end position for the interface.
263
- #
264
- # @return [Fixnum]
265
- def _yn
266
- @yn.is_a?(Proc) ? @yn.call : @yn
267
- end
268
-
269
- # Returns the column/character start position for the interface.
270
- #
271
- # @return [Fixnum]
272
- def _x
273
- @x.is_a?(Proc) ? @x.call : @x
274
- end
275
-
276
- # Returns the column/character end position for the interface.
277
- #
278
- # @return [Fixnum]
279
- def _xn
280
- @xn.is_a?(Proc) ? @xn.call : @xn
281
- end
282
-
283
- # Returns the width of the interface.
236
+ # When moving an interface;
237
+ # 1) Reset the centred and maximised states to false; it wont be
238
+ # centred if moved, and cannot be moved if maximised.
239
+ # 2) Get the current coordinates of the interface, then:
240
+ # 3) Override the attributes with the new coordinates for
241
+ # desired movement; these are usually +/- 1 of the current
242
+ # state, depending on direction.
284
243
  #
285
- # @return [Fixnum]
286
- def _width
287
- @width.is_a?(Proc) ? @width.call : @width
288
- end
244
+ # @param coordinates [Hash<Symbol => Fixnum>]
245
+ # @option coordinates x [Fixnum] The starting column/character
246
+ # position.
247
+ # @option coordinates xn [Fixnum] The ending column/character
248
+ # position.
249
+ # @option coordinates y [Fixnum] The starting row/line position.
250
+ # @option coordinates yn [Fixnum] The ending row/line position.
251
+ # @return [Hash<Symbol => Boolean, Fixnum>]
252
+ def move(coordinates = {})
253
+ attrs = attributes.merge!(centred: false, maximised: false)
254
+ .merge!(coordinates)
289
255
 
290
- # Returns the height of the interface.
291
- #
292
- # @return [Fixnum]
293
- def _height
294
- @height.is_a?(Proc) ? @height.call : @height
256
+ Vedeu::Geometry::Geometry.store(attrs)
295
257
  end
296
258
 
297
259
  # Returns the default options/attributes for this class.
@@ -300,7 +262,7 @@ module Vedeu
300
262
  def defaults
301
263
  {
302
264
  client: nil,
303
- centred: nil,
265
+ centred: false,
304
266
  height: nil,
305
267
  maximised: false,
306
268
  name: nil,
@@ -32,6 +32,13 @@ module Vedeu
32
32
  Vedeu.geometries.by_name(name).maximise
33
33
  end
34
34
 
35
+ Vedeu.bind(:_movement_refresh_) do |name|
36
+ Vedeu.trigger(:_clear_)
37
+ Vedeu.trigger(:_refresh_)
38
+ Vedeu.trigger(:_clear_view_, name)
39
+ Vedeu.trigger(:_refresh_view_, name)
40
+ end
41
+
35
42
  # See {file:docs/events/view.md#\_unmaximise_}
36
43
  Vedeu.bind(:_unmaximise_) do |name|
37
44
  Vedeu.geometries.by_name(name).unmaximise
@@ -41,10 +48,7 @@ module Vedeu
41
48
  Vedeu.bind(:"_view_#{direction}_") do |name|
42
49
  Vedeu.geometries.by_name(name).send("move_#{direction}")
43
50
 
44
- Vedeu.trigger(:_clear_)
45
- Vedeu.trigger(:_refresh_)
46
- Vedeu.trigger(:_clear_view_, name)
47
- Vedeu.trigger(:_refresh_view_, name)
51
+ Vedeu.trigger(:_movement_refresh_, name)
48
52
  end
49
53
  end
50
54
 
@@ -76,7 +76,7 @@ module Vedeu
76
76
  # @param name [String|Symbol]
77
77
  # @return [void]
78
78
  def add_focusable!(name)
79
- Vedeu.focusable.add(name) unless Vedeu.focusable.registered?(name)
79
+ Vedeu::Models::Focus.add(name)
80
80
  end
81
81
 
82
82
  # Returns the client object which called the DSL method.
data/lib/vedeu/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Vedeu
2
2
 
3
3
  # The current version of Vedeu.
4
- VERSION = '0.6.33'.freeze
4
+ VERSION = '0.6.34'.freeze
5
5
 
6
6
  end
@@ -12,48 +12,69 @@ module Vedeu
12
12
  describe Refresh do
13
13
 
14
14
  let(:described) { Vedeu::Buffers::Refresh }
15
- let(:instance) { described.new(_name) }
15
+ let(:instance) { described.new(_name, options) }
16
16
  let(:_name) { 'Vedeu::Buffers::Refresh' }
17
- let(:ready) { true }
17
+ let(:options) {
18
+ {
19
+ content_only: content_only,
20
+ }
21
+ }
22
+ let(:content_only) { false }
23
+ let(:ready) { true }
24
+ let(:buffer) { mock('Vedeu::Buffers::Buffer', render: nil) }
18
25
 
19
26
  before do
20
- Vedeu.stubs(:ready?).returns(ready)
27
+ Vedeu.stubs(:trigger).with(:_clear_view_content_, _name)
28
+ Vedeu.stubs(:trigger).with(:_refresh_border_, _name)
21
29
  end
22
30
 
23
31
  describe '#initialize' do
24
32
  it { instance.must_be_instance_of(described) }
25
33
  it { instance.instance_variable_get('@name').must_equal(_name) }
34
+ it { instance.instance_variable_get('@options').must_equal(options) }
26
35
  end
27
36
 
28
37
  describe '.by_name' do
38
+ before do
39
+ Vedeu.buffers.stubs(:by_name).with(_name).returns(buffer)
40
+ end
41
+
29
42
  subject { described.by_name(_name) }
30
43
 
31
- context 'when Vedeu is not yet ready' do
32
- let(:buffer) { mock(render: '') }
44
+ it {
45
+ Vedeu.expects(:trigger).with(:_clear_view_content_, _name)
46
+ subject
47
+ }
33
48
 
34
- before do
35
- Vedeu.stubs(:trigger).with(:_clear_view_content_, _name)
36
- Vedeu.buffers.expects(:by_name).with(_name).returns(buffer)
37
- Vedeu.stubs(:trigger).with(:_refresh_border_, _name)
38
- end
49
+ it {
50
+ Vedeu.buffers.expects(:by_name).with(_name).returns(buffer)
51
+ subject
52
+ }
39
53
 
40
- let(:ready) { false }
54
+ it {
55
+ Vedeu.expects(:trigger).with(:_refresh_border_, _name)
56
+ subject
57
+ }
58
+ end
41
59
 
42
- it {
43
- Vedeu.expects(:trigger).with(:_clear_view_content_, _name)
44
- subject
45
- }
60
+ describe '.refresh_content_by_name' do
61
+ let(:content_only) { true }
46
62
 
47
- it {
48
- Vedeu.expects(:trigger).with(:_refresh_border_, _name)
49
- subject
50
- }
63
+ before do
64
+ Vedeu.buffers.stubs(:by_name).with(_name).returns(buffer)
51
65
  end
52
66
 
53
- context 'when Vedeu is ready' do
54
- # @todo Add more tests.
55
- # it { skip }
56
- end
67
+ subject { described.refresh_content_by_name(_name) }
68
+
69
+ it {
70
+ Vedeu.expects(:trigger).with(:_clear_view_content_, _name)
71
+ subject
72
+ }
73
+
74
+ it {
75
+ Vedeu.buffers.expects(:by_name).with(_name).returns(buffer)
76
+ subject
77
+ }
57
78
  end
58
79
 
59
80
  describe '#by_name' do
data/vedeu.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'minitest', '5.8.1'
27
27
  spec.add_development_dependency 'minitest-reporters', '1.1.3'
28
28
  spec.add_development_dependency 'mocha', '1.1.0'
29
- spec.add_development_dependency 'pry', '0.10.2'
29
+ spec.add_development_dependency 'pry', '0.10.3'
30
30
  spec.add_development_dependency 'rubocop', '0.34.2'
31
31
  spec.add_development_dependency 'simplecov', '0.10.0'
32
32
  spec.add_development_dependency 'simplecov-console', '0.2.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vedeu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.33
4
+ version: 0.6.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 0.10.2
103
+ version: 0.10.3
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 0.10.2
110
+ version: 0.10.3
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rubocop
113
113
  requirement: !ruby/object:Gem::Requirement