vedeu 0.2.5 → 0.2.6

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: d92eea450aa078936ad63e48458e87bffc1b94ef
4
- data.tar.gz: 7b58b5c6c47151c7635971abc608b7951e1cfa77
3
+ metadata.gz: 2df80a2e1733e5183dbf7afef9ce4b5ba8a833b4
4
+ data.tar.gz: ebda4b179298868faf99b0aa9e074022d6a0c407
5
5
  SHA512:
6
- metadata.gz: 9363fca14b44becccaa8b29c32185175270e1ae9769d9ec0410db5c71a48cfcb199e3797e79a7bca7b4771743225641aeb44462bfe1d9c7205f3e2e06d215382
7
- data.tar.gz: da6d294f0a25f2b010972e6cdcee7ec8a3fe8b3cadf21cc28f34d6f602d1ff73e2a7c11aa03df2f3d2d0e2cf478af48812cca6f34e494eebff76fa2d7029c2cd
6
+ metadata.gz: 15805aa4cea7d6b7a41b11d6da45436488bbe2613380760f36ffd52d0db75d9e7954b18dec7524712cad114062d4ba74339bd54c6ec04d401f9cac757da73ba5
7
+ data.tar.gz: 2ca96c51ea3811ae78e6c7ea023fbd460c00e8ede0ca02ce6a0c2033c0e596a1059a8269f44634fd33c703573e2caa1925f17a3f0bb5f89f5433097c01392f15
@@ -59,12 +59,17 @@ Note: Nesting indicates where an API method is allowed/supposed to be used.
59
59
  #### Interfaces
60
60
 
61
61
  - interface
62
+ - background
62
63
  - centred (or centred!)
63
64
  - cursor
64
65
  - colour
65
66
  - delay
67
+ - focus!
68
+ - foreground
66
69
  - group
67
70
  - height
71
+ - keys
72
+ - line
68
73
  - name
69
74
  - style
70
75
  - use
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ lib_dir = File.dirname(__FILE__) + '/../../lib'
4
+ $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
5
+
6
+ -> { its -> { a } }
7
+ trap('INT') { exit! }
8
+
9
+ require 'vedeu'
10
+
11
+ # This example application shows how interface focus works.
12
+ #
13
+ # First, we set up the interfaces, noting that 'copper' should have focus when
14
+ # the application starts. Also note that 'status' should not show a cursor.
15
+ #
16
+ # The focus order is: copper, aluminium, boron, dubnium, status.
17
+ #
18
+ # Use 'space' to change focus.
19
+ class VedeuFocusApp
20
+ include Vedeu
21
+
22
+ event(:_initialize_) { Vedeu.trigger(:_refresh_) }
23
+
24
+ interface 'aluminium' do
25
+ colour foreground: '#ffffff', background: '#330000'
26
+ cursor true
27
+ height 2
28
+ width 2
29
+ x 3
30
+ y 3
31
+ end
32
+
33
+ interface 'boron' do
34
+ colour foreground: '#ffffff', background: '#003300'
35
+ cursor true
36
+ height 2
37
+ width 2
38
+ x 6
39
+ y 3
40
+ end
41
+
42
+ interface 'copper' do
43
+ colour foreground: '#ffffff', background: '#000033'
44
+ cursor true
45
+ focus!
46
+ height 2
47
+ width 2
48
+ x 3
49
+ y 6
50
+ end
51
+
52
+ interface 'dubnium' do
53
+ colour foreground: '#ffffff', background: '#333300'
54
+ cursor true
55
+ height 2
56
+ width 2
57
+ x 6
58
+ y 6
59
+ end
60
+
61
+ interface 'status' do
62
+ colour foreground: '#ffffff', background: '#000000'
63
+ cursor false
64
+ height 2
65
+ width 10
66
+ x 9
67
+ y 3
68
+ end
69
+
70
+ render do
71
+ view('aluminium') { line 'Al' }
72
+ view('boron') { line 'B' }
73
+ view('copper') { line 'Cu' }
74
+ view('dubnium') { line 'Db' }
75
+ view('status') { line Vedeu::Focus.current }
76
+
77
+ # Tell Vedeu that each interface can use 'space'.
78
+ keys('aluminium', 'boron', 'copper', 'dubnium', 'status') do
79
+ key(' ') do
80
+ Vedeu::Focus.next_item
81
+
82
+ render { view('status') { line Vedeu::Focus.current } }
83
+ end
84
+ end
85
+ end
86
+
87
+ def self.start
88
+ Vedeu::Launcher.new(['--debug']).execute!
89
+ end
90
+ end
91
+
92
+ VedeuFocusApp.start
@@ -29,7 +29,7 @@ module Vedeu
29
29
  end
30
30
  alias_method :centred!, :centred
31
31
 
32
- # Set the cursor visibility on an interface or view.
32
+ # Set the cursor visibility on an interface.
33
33
  #
34
34
  # @param value [Boolean] Any value other than nil or false will evaluate
35
35
  # to true.
@@ -70,6 +70,15 @@ module Vedeu
70
70
  attributes[:delay] = value
71
71
  end
72
72
 
73
+ # Specify this interface as being in focus when the application starts.
74
+ # If multiple interfaces are defined, and this is included in each, then
75
+ # the last defined will be the interface in focus.
76
+ #
77
+ # @return [String] The name of the interface in focus.
78
+ def focus!
79
+ attributes[:focus] = true
80
+ end
81
+
73
82
  # Specify a group for an interface. Interfaces of the same group can be
74
83
  # targetted together; for example you may want to refresh multiple
75
84
  # interfaces at once.
@@ -26,13 +26,20 @@ module Vedeu
26
26
  #
27
27
  # @return [Array]
28
28
  def render
29
- Terminal.output(view)
29
+ Terminal.output(view, cursor)
30
30
  end
31
31
 
32
32
  private
33
33
 
34
34
  attr_reader :name
35
35
 
36
+ # Renders the cursor into the currently focussed interface. May be hidden.
37
+ #
38
+ # @return [String]
39
+ def cursor
40
+ Interface.new(Vedeu::Interfaces.find(Focus.current)).cursor.to_s
41
+ end
42
+
36
43
  # Renders the buffer unless empty, otherwise clears the area which the
37
44
  # interface occupies.
38
45
  #
@@ -30,7 +30,7 @@ module Vedeu
30
30
  #
31
31
  # @return [String]
32
32
  def render
33
- out = [ Clear.call(interface) ]
33
+ out = [clear]
34
34
 
35
35
  Vedeu.log("Rendering view: '#{interface.name}'")
36
36
 
@@ -38,7 +38,6 @@ module Vedeu
38
38
  out << interface.origin(index)
39
39
  out << line.join
40
40
  end
41
- out << interface.cursor.to_s if interface.in_focus?
42
41
  out.join
43
42
  end
44
43
 
@@ -46,6 +45,10 @@ module Vedeu
46
45
 
47
46
  attr_reader :interface
48
47
 
48
+ def clear
49
+ Clear.call(interface)
50
+ end
51
+
49
52
  end # Render
50
53
 
51
54
  end # Vedeu
@@ -6,7 +6,6 @@ module Vedeu
6
6
  # @api private
7
7
  module Buffers
8
8
 
9
- include Common
10
9
  include Repository
11
10
  extend self
12
11
 
@@ -6,7 +6,6 @@ module Vedeu
6
6
  # @api private
7
7
  module Cursors
8
8
 
9
- include Common
10
9
  include Repository
11
10
  include Positional
12
11
  extend self
@@ -7,7 +7,6 @@ module Vedeu
7
7
  # @api private
8
8
  module Focus
9
9
 
10
- include Common
11
10
  include Repository
12
11
  extend self
13
12
 
@@ -25,9 +24,15 @@ module Vedeu
25
24
  def add(attributes)
26
25
  validate_attributes!(attributes)
27
26
 
28
- return storage << attributes[:name] unless registered?(attributes[:name])
27
+ return storage if registered?(attributes[:name])
29
28
 
30
- storage
29
+ if attributes[:focus]
30
+ storage.unshift(attributes[:name])
31
+
32
+ else
33
+ storage.push(attributes[:name])
34
+
35
+ end
31
36
  end
32
37
 
33
38
  # Focus an interface by name.
@@ -40,11 +45,7 @@ module Vedeu
40
45
 
41
46
  storage.rotate!(storage.index(name))
42
47
 
43
- Vedeu.log("Interface in focus: '#{current}'")
44
-
45
- refresh
46
-
47
- current
48
+ update
48
49
  end
49
50
 
50
51
  # Return the interface currently focussed.
@@ -72,12 +73,9 @@ module Vedeu
72
73
  def next_item
73
74
  storage.rotate!
74
75
 
75
- Vedeu.log("Interface in focus: '#{current}'")
76
-
77
- refresh
78
-
79
- current
76
+ update
80
77
  end
78
+ alias_method :next, :next_item
81
79
 
82
80
  # Put the previous interface relative to the current interface in focus.
83
81
  #
@@ -85,12 +83,10 @@ module Vedeu
85
83
  def prev_item
86
84
  storage.rotate!(-1)
87
85
 
88
- Vedeu.log("Interface in focus: '#{current}'")
89
-
90
- refresh
91
-
92
- current
86
+ update
93
87
  end
88
+ alias_method :prev, :prev_item
89
+ alias_method :previous, :prev_item
94
90
 
95
91
  # Refresh the interface in focus.
96
92
  #
@@ -117,6 +113,20 @@ module Vedeu
117
113
 
118
114
  private
119
115
 
116
+ # Return the name of the interface in focus after triggering the refresh
117
+ # event for that interface. Returns false if the storage is empty.
118
+ #
119
+ # @return [String|FalseClass]
120
+ def update
121
+ return false if storage.empty?
122
+
123
+ Vedeu.log("Interface in focus: '#{current}'")
124
+
125
+ refresh
126
+
127
+ current
128
+ end
129
+
120
130
  # Returns an empty collection ready for the storing of interface names.
121
131
  #
122
132
  # @return [Array]
@@ -5,7 +5,6 @@ module Vedeu
5
5
  # @api private
6
6
  module Groups
7
7
 
8
- include Common
9
8
  include Repository
10
9
  extend self
11
10
 
@@ -5,7 +5,6 @@ module Vedeu
5
5
  # @api private
6
6
  module Interfaces
7
7
 
8
- include Common
9
8
  include Repository
10
9
  extend self
11
10
 
@@ -5,7 +5,6 @@ module Vedeu
5
5
  # @api private
6
6
  module Keymaps
7
7
 
8
- include Common
9
8
  include Repository
10
9
  extend self
11
10
 
@@ -5,7 +5,6 @@ module Vedeu
5
5
  # @api private
6
6
  module Menus
7
7
 
8
- include Common
9
8
  include Repository
10
9
  extend self
11
10
 
@@ -6,7 +6,6 @@ module Vedeu
6
6
  # @api private
7
7
  module Offsets
8
8
 
9
- include Common
10
9
  include Repository
11
10
  include Positional
12
11
  extend self
@@ -5,7 +5,7 @@ module Vedeu
5
5
  # @api private
6
6
  module Refresh
7
7
 
8
- include Vedeu::Common
8
+ include Common
9
9
  extend self
10
10
 
11
11
  # System event to refresh all registered interfaces.
@@ -22,7 +22,7 @@ module Vedeu
22
22
  #
23
23
  # @return [|NoInterfacesDefined]
24
24
  def by_focus
25
- by_name(Vedeu::Focus.current)
25
+ by_name(Focus.current)
26
26
  end
27
27
 
28
28
  # Refresh an interface, or collection of interfaces belonging to a group.
@@ -31,7 +31,7 @@ module Vedeu
31
31
  # @return [Array|GroupNotFound] A collection of the names of interfaces
32
32
  # refreshed, or an exception if the group was not found.
33
33
  def by_group(group_name)
34
- Vedeu::Groups.find(group_name).each { |name| by_name(name) }
34
+ Groups.find(group_name).each { |name| by_name(name) }
35
35
  end
36
36
 
37
37
  # Refresh an interface by name.
@@ -39,7 +39,7 @@ module Vedeu
39
39
  # @param name [String] The name of the interface to be refreshed.
40
40
  # @return [Array|BufferNotFound]
41
41
  def by_name(name)
42
- Vedeu::Compositor.render(name)
42
+ Compositor.render(name)
43
43
  end
44
44
 
45
45
  # Register a refresh event for an interface or group of interfaces by name.
@@ -61,7 +61,7 @@ module Vedeu
61
61
 
62
62
  return false if Events.registered?(event)
63
63
 
64
- Events.add(event, { delay: delay }) { Vedeu::Refresh.send(type, name) }
64
+ Events.add(event, { delay: delay }) { Refresh.send(type, name) }
65
65
 
66
66
  true
67
67
  end
@@ -5,6 +5,8 @@ module Vedeu
5
5
  # @api private
6
6
  module Repository
7
7
 
8
+ include Common
9
+
8
10
  # Return the whole repository.
9
11
  #
10
12
  # @return [Hash]
@@ -165,6 +165,33 @@ module Vedeu
165
165
  end
166
166
  end
167
167
 
168
+ describe '#focus!' do
169
+ it 'returns true' do
170
+ API::Interface.new({ name: 'curium' }).focus!.must_equal(true)
171
+ end
172
+
173
+ it 'sets the interface as current' do
174
+ Vedeu.interface('curium') { focus! }
175
+
176
+ Focus.current.must_equal('curium')
177
+ end
178
+
179
+ it 'multiple calls will set the last to being current' do
180
+ Vedeu.interface('curium') { focus! }
181
+ Vedeu.interface('iodine') {}
182
+ Vedeu.interface('dysprosium') { focus! }
183
+
184
+ Focus.current.must_equal('dysprosium')
185
+ end
186
+
187
+ it 'no calls will leave the first interface defined as being current' do
188
+ Vedeu.interface('curium') {}
189
+ Vedeu.interface('dysprosium') {}
190
+
191
+ Focus.current.must_equal('curium')
192
+ end
193
+ end
194
+
168
195
  describe '#group' do
169
196
  it 'sets the group attribute' do
170
197
  Vedeu.interface 'iron' do
@@ -28,7 +28,8 @@ module Vedeu
28
28
  Compositor.render('xenon').must_equal([
29
29
  "\e[1;1H \e[1;1H" \
30
30
  "\e[2;1H \e[2;1H" \
31
- "\e[3;1H \e[3;1H" \
31
+ "\e[3;1H \e[3;1H",
32
+
32
33
  "\e[1;1H\e[?25l"
33
34
  ])
34
35
  end
@@ -63,7 +64,8 @@ module Vedeu
63
64
  "\e[3;1H \e[3;1H" \
64
65
  "\e[1;1Hargon" \
65
66
  "\e[2;1Hboron" \
66
- "\e[3;1Hradon" \
67
+ "\e[3;1Hradon",
68
+
67
69
  "\e[1;1H\e[?25l"
68
70
  ])
69
71
  end
@@ -39,7 +39,6 @@ module Vedeu
39
39
  "\e[1;1Hthis is the first" \
40
40
  "\e[2;1Hthis is the second and it is lon" \
41
41
  "\e[3;1Hthis is the third, it is even lo" \
42
- "\e[1;1H\e[?25l"
43
42
  )
44
43
  end
45
44
 
@@ -56,8 +55,7 @@ module Vedeu
56
55
  Render.call(interface).must_equal(
57
56
  "\e[1;1H \e[1;1H" \
58
57
  "\e[2;1H \e[2;1H" \
59
- "\e[3;1H \e[3;1H" \
60
- "\e[1;1H\e[?25l"
58
+ "\e[3;1H \e[3;1H"
61
59
  )
62
60
  end
63
61
 
@@ -90,8 +88,7 @@ module Vedeu
90
88
  "\e[3;1H \e[3;1H" \
91
89
  "\e[1;1Hthis is the first" \
92
90
  "\e[2;1H" \
93
- "\e[3;1Hthis is the third, it is even lo" \
94
- "\e[1;1H\e[?25l"
91
+ "\e[3;1Hthis is the third, it is even lo"
95
92
  )
96
93
  end
97
94
 
@@ -136,7 +133,9 @@ module Vedeu
136
133
  [
137
134
  "\e[1;1H \e[1;1H" \
138
135
  "\e[2;1H \e[2;1H" \
139
- "\e[1;1Ht\e[38;2;255;255;255m\e[48;2;0;0;0mh\e[38;2;255;255;255m\e[48;2;0;0;0me\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mg\e[38;2;255;255;255m\e[48;2;0;0;0mr\e[38;2;255;255;255m\e[48;2;0;0;0ma\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mi\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0mg\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0mr\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0me\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0me\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0mn\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0ma\e[38;2;255;255;255m\e[48;2;0;0;0mn\e[38;2;255;255;255m\e[48;2;0;0;0md\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mt\e[38;2;255;255;255m\e[48;2;0;0;0mh\e[38;2;255;255;255m\e[48;2;0;0;0me\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0mk\e[38;2;255;255;255m\e[48;2;0;0;0my\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mi\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255mb\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255ml\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255mu\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255me\e[38;2;255;255;255m\e[48;2;0;0;0m.\e[38;2;255;255;255m\e[48;2;0;0;0m"
136
+ "\e[1;1Ht\e[38;2;255;255;255m\e[48;2;0;0;0mh\e[38;2;255;255;255m\e[48;2;0;0;0me\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mg\e[38;2;255;255;255m\e[48;2;0;0;0mr\e[38;2;255;255;255m\e[48;2;0;0;0ma\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mi\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0mg\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0mr\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0me\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0me\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0mn\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0ma\e[38;2;255;255;255m\e[48;2;0;0;0mn\e[38;2;255;255;255m\e[48;2;0;0;0md\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mt\e[38;2;255;255;255m\e[48;2;0;0;0mh\e[38;2;255;255;255m\e[48;2;0;0;0me\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0mk\e[38;2;255;255;255m\e[48;2;0;0;0my\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mi\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255mb\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255ml\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255mu\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255me\e[38;2;255;255;255m\e[48;2;0;0;0m.\e[38;2;255;255;255m\e[48;2;0;0;0m",
137
+
138
+ "\e[1;1H\e[?25l"
140
139
  ]
141
140
  )
142
141
  end
@@ -8,7 +8,7 @@ module Vedeu
8
8
  after { Focus.reset }
9
9
 
10
10
  describe '#add' do
11
- it 'adds an interface to storage focussed' do
11
+ it 'adds an interface to storage' do
12
12
  Focus.add({ name: 'thallium' }).must_equal(['thallium'])
13
13
  end
14
14
 
@@ -18,6 +18,18 @@ module Vedeu
18
18
  Focus.registered.must_equal(['thallium'])
19
19
  end
20
20
 
21
+ it 'adds the interface to storage focussed' do
22
+ Focus.add({ name: 'thallium' })
23
+ Focus.add({ name: 'lead', focus: true })
24
+ Focus.registered.must_equal(['lead', 'thallium'])
25
+ end
26
+
27
+ it 'adds the interface to storage unfocussed' do
28
+ Focus.add({ name: 'thallium' })
29
+ Focus.add({ name: 'lead' })
30
+ Focus.registered.must_equal(['thallium', 'lead'])
31
+ end
32
+
21
33
  it 'raises an exception if the attributes does not have a :name key' do
22
34
  attributes = { no_name_key: '' }
23
35
 
@@ -70,6 +82,10 @@ module Vedeu
70
82
  Focus.add({ name: 'bismuth' })
71
83
  Focus.next_item.must_equal('lead')
72
84
  end
85
+
86
+ it 'returns false if storage is empty' do
87
+ Focus.next_item.must_equal(false)
88
+ end
73
89
  end
74
90
 
75
91
  describe '#prev_item' do
@@ -79,6 +95,10 @@ module Vedeu
79
95
  Focus.add({ name: 'bismuth' })
80
96
  Focus.prev_item.must_equal('bismuth')
81
97
  end
98
+
99
+ it 'returns false if storage is empty' do
100
+ Focus.prev_item.must_equal(false)
101
+ end
82
102
  end
83
103
 
84
104
  describe '#refresh' do
@@ -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.2.5'
7
+ spec.version = '0.2.6'
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.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-24 00:00:00.000000000 Z
11
+ date: 2014-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -187,6 +187,7 @@ files:
187
187
  - docs/events.md
188
188
  - docs/getting_started.md
189
189
  - examples/cursor_app/cursor_app.rb
190
+ - examples/focus_app.rb
190
191
  - examples/hello_world.rb
191
192
  - examples/lines_app/lines_app.rb
192
193
  - lib/vedeu.rb