vedeu 0.0.40 → 0.0.41

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: 5d50ccc8e12767562af12af4793529e7349194a4
4
- data.tar.gz: 3f0eede2555296556c6be6f229f8393d9597a2f4
3
+ metadata.gz: d3aaa948386201db5583b301f0ce46662822e87e
4
+ data.tar.gz: 7b1660cd10ca3bb5ecac23f2a93a3f0558980708
5
5
  SHA512:
6
- metadata.gz: db682960148fc784f0b8dd745a1afd820e1698b0d0ab71d6f29c30a77ad42f159300ebaec49c235228354a1788ab30929c981eaa4d5c6aee843d7467c20c64ff
7
- data.tar.gz: c75a838470727f59dba50085130228ff295a7a1fa8f2af34caad8d0f25bfdcfc5dfd5c7939b41e3a0fa37726c4a1440c4f0bd410334d7d4e698b798aeaae49d8
6
+ metadata.gz: 8748d5c29561d109b1e2025e661c8778fd0bb5e5ffc09283eef8d9449869063b79bcf70d5e310518920c553218ff3b29a91fe6275c01f223cc58beb86d3411ea
7
+ data.tar.gz: 9583f518bf8d5eb588f695e56265c30564f2b7033fb11431ee465f8f5cefd01530b1ffac3618cce6016147a01b657b72ea0a27a9f35fc186b6bd18cd8a8584e6
data/README.md CHANGED
@@ -56,7 +56,7 @@ Expect proper documentation soon!
56
56
 
57
57
  To understand how Vedeu works, you need to familiarise yourself with some terms.
58
58
 
59
- - Interface: This is an area on the screen where you can take input or direct output. You will define it's colour and style, its dimensions, including position and give it a name. You can then direct the output of a command to this interface and Vedeu will ensure the content is placed there. Interfaces can be layered, allowing pseudo 3D effects (if that floats your boat), or to provide a richer application experience.
59
+ - Interface: This is an area on the screen where you can take input or direct output. You will define it's colour and style, its dimensions, including position and give it a name. You can then direct the output of a command to this interface and Vedeu will ensure the content is placed there.
60
60
 
61
61
  - Line: An interface is composed of many lines. Their length being the width of the interface and their number being the height of the interface.
62
62
 
@@ -78,17 +78,17 @@ To understand how Vedeu works, you need to familiarise yourself with some terms.
78
78
 
79
79
  Referring to the above example, interfaces have a name, and various default attributes.
80
80
 
81
- `y` sets the starting row point. (See Geometry)
82
- `x` sets the starting column point.
81
+ - `y` sets the starting row point. (See Geometry)
82
+ - `x` sets the starting column point.
83
83
 
84
- `width` sets character width of the interface
85
- `height` sets character height of the interface
86
- Note: not setting a width or height will set the values to the terminal's reported width and height.
84
+ - `width` sets character width of the interface
85
+ - `height` sets character height of the interface
87
86
 
88
- `foreground` sets the default foreground colour. (See Colours)
89
- `background` sets the default background colour.
87
+ Note: not setting a width or height will set the values to the terminal's reported width and height.
90
88
 
91
- `cursor` a boolean specifying whether the cursor should show.
89
+ - `foreground` sets the default foreground colour. (See Colours)
90
+ - `background` sets the default background colour.
91
+ - `cursor` is a Boolean specifying whether the cursor should show.
92
92
 
93
93
 
94
94
  ### On Defining Events
data/bin/log CHANGED
@@ -9,5 +9,5 @@ require 'vedeu'
9
9
  loop do
10
10
  Vedeu.log('-B<-------------------------------------------------------------------')
11
11
 
12
- sleep 10
12
+ sleep 60
13
13
  end
data/lib/vedeu.rb CHANGED
@@ -3,10 +3,15 @@ require 'vedeu/support/builder'
3
3
  require 'vedeu/support/events'
4
4
  require 'vedeu/support/geometry'
5
5
  require 'vedeu/support/menu'
6
+ require 'vedeu/parsing/parser'
6
7
  require 'vedeu/launcher'
7
8
 
8
9
  module Vedeu
9
- # Vedeu::Instrumentation::Trace.call
10
+ def self.debug?
11
+ false
12
+ end
13
+
14
+ Vedeu::Instrumentation::Trace.call if debug?
10
15
 
11
16
  # :nocov:
12
17
  module ClassMethods
@@ -43,6 +48,10 @@ module Vedeu
43
48
  Vedeu::Instrumentation::Log.logger.debug(message)
44
49
  end
45
50
 
51
+ def self.error(exception)
52
+ Vedeu::Instrumentation::Log.error(exception)
53
+ end
54
+
46
55
  def self.included(receiver)
47
56
  receiver.send(:include, ClassMethods)
48
57
  receiver.extend(ClassMethods)
@@ -1,6 +1,6 @@
1
1
  require 'date'
2
2
  require 'logger'
3
- require 'ruby-prof'
3
+ # require 'ruby-prof'
4
4
 
5
5
  require 'vedeu'
6
6
 
@@ -17,8 +17,10 @@ module Vedeu
17
17
  end
18
18
 
19
19
  def self.error(exception)
20
- logger.debug(exception.message + "\n" +
21
- exception.backtrace.join("\n"))
20
+ backtrace = exception.backtrace.join("\n")
21
+ message = exception.message + "\n" + backtrace
22
+
23
+ logger.debug(message)
22
24
  end
23
25
 
24
26
  private
@@ -28,34 +30,34 @@ module Vedeu
28
30
  end
29
31
  end
30
32
 
31
- class Profile
32
- def self.call(filename = 'profile.html', &block)
33
- new(filename).profile(&block)
34
- end
33
+ # class Profile
34
+ # def self.call(filename = 'profile.html', &block)
35
+ # new(filename).profile(&block)
36
+ # end
35
37
 
36
- def initialize(filename)
37
- @filename = filename
38
- end
38
+ # def initialize(filename)
39
+ # @filename = filename
40
+ # end
39
41
 
40
- def profile(&block)
41
- RubyProf.start
42
+ # def profile(&block)
43
+ # RubyProf.start
42
44
 
43
- yield
45
+ # yield
44
46
 
45
- result = RubyProf.stop.eliminate_methods!([/^Array/, /^Hash/])
47
+ # result = RubyProf.stop.eliminate_methods!([/^Array/, /^Hash/])
46
48
 
47
- File.open(filename, 'w') do |file|
48
- RubyProf::CallStackPrinter.new(result).print(file)
49
- RubyProf::GraphPrinter.new(result).print(file)
50
- end
51
- end
49
+ # File.open(filename, 'w') do |file|
50
+ # RubyProf::CallStackPrinter.new(result).print(file)
51
+ # RubyProf::GraphPrinter.new(result).print(file)
52
+ # end
53
+ # end
52
54
 
53
- private
55
+ # private
54
56
 
55
- def filename
56
- Vedeu.root_path + '/tmp/' + @filename
57
- end
58
- end
57
+ # def filename
58
+ # Vedeu.root_path + '/tmp/' + @filename
59
+ # end
60
+ # end
59
61
 
60
62
  class Trace
61
63
  def self.call(options = {})
@@ -19,8 +19,6 @@ module Vedeu
19
19
  def execute!
20
20
  $stdin, $stdout, $stderr = @stdin, @stdout, @stderr
21
21
 
22
- $stderr.reopen("logs/vedeu.log", "w")
23
-
24
22
  Application.start(configuration)
25
23
 
26
24
  @exit_code = 0
@@ -0,0 +1,56 @@
1
+ module Vedeu
2
+ class MenuParser
3
+ # Convert a Vedeu::Menu into an interface view.
4
+ #
5
+ # @param output [Hash] a key/value pair.
6
+ #
7
+ # @return [Hash]
8
+ def self.parse(output = {})
9
+ new(output).parse
10
+ end
11
+
12
+ def initialize(output = {})
13
+ @output = output
14
+ end
15
+
16
+ def parse
17
+ { interfaces: interface }
18
+ end
19
+
20
+ private
21
+
22
+ attr_reader :output
23
+
24
+ def interface
25
+ { name: name, lines: lines }
26
+ end
27
+
28
+ def lines
29
+ lines = []
30
+ items.each do |sel, cur, item|
31
+ if sel && cur
32
+ lines << { streams: { text: "*> #{item}" } }
33
+
34
+ elsif cur
35
+ lines << { streams: { text: " > #{item}" } }
36
+
37
+ elsif sel
38
+ lines << { streams: { text: "* #{item}" } }
39
+
40
+ else
41
+ lines << { streams: { text: " #{item}" } }
42
+
43
+ end
44
+ end
45
+ lines
46
+ end
47
+
48
+ def items
49
+ output.last
50
+ end
51
+
52
+ def name
53
+ output.first
54
+ end
55
+ end
56
+ end
@@ -1,6 +1,7 @@
1
1
  require 'vedeu/parsing/compositor'
2
2
  require 'vedeu/parsing/hash_parser'
3
3
  require 'vedeu/parsing/json_parser'
4
+ require 'vedeu/parsing/menu_parser'
4
5
 
5
6
  module Vedeu
6
7
  ParseError = Class.new(StandardError)
@@ -31,10 +32,15 @@ module Vedeu
31
32
  def parser
32
33
  return JSONParser if json?
33
34
  return HashParser if hash?
35
+ return MenuParser if menu?
34
36
 
35
37
  fail ParseError, 'Cannot process output from command.'
36
38
  end
37
39
 
40
+ def menu?
41
+ output.is_a?(Array)
42
+ end
43
+
38
44
  def hash?
39
45
  output.is_a?(Hash)
40
46
  end
@@ -48,7 +48,7 @@ module Vedeu
48
48
  attr_reader :handlers
49
49
 
50
50
  def log(message)
51
- Vedeu.log(sprintf("%42s%s", '', message))
51
+ Vedeu.log(sprintf("%42s%s", '', message)) if Vedeu.debug?
52
52
  end
53
53
  end
54
54
  end
@@ -35,13 +35,13 @@ module Vedeu
35
35
  end
36
36
 
37
37
  def current_item
38
- [@current, @collection[@current]]
38
+ @collection[@current]
39
39
  end
40
40
 
41
41
  def selected_item
42
42
  return nil unless @selected
43
43
 
44
- [@selected, @collection[@selected]]
44
+ @collection[@selected]
45
45
  end
46
46
 
47
47
  def items
@@ -87,37 +87,37 @@ module Vedeu
87
87
  def top_item
88
88
  @current = 0
89
89
 
90
- self
90
+ items
91
91
  end
92
92
 
93
93
  def bottom_item
94
94
  @current = last
95
95
 
96
- self
96
+ items
97
97
  end
98
98
 
99
99
  def next_item
100
100
  @current += 1 if @current < last
101
101
 
102
- self
102
+ items
103
103
  end
104
104
 
105
105
  def prev_item
106
106
  @current -= 1 if @current > 0
107
107
 
108
- self
108
+ items
109
109
  end
110
110
 
111
111
  def select_item
112
112
  @selected = @current
113
113
 
114
- self
114
+ items
115
115
  end
116
116
 
117
117
  def deselect_item
118
118
  @selected = nil
119
119
 
120
- self
120
+ items
121
121
  end
122
122
 
123
123
  def last
@@ -10,7 +10,7 @@ module Vedeu
10
10
  }).background.must_equal("\e[48;5;16m")
11
11
  end
12
12
 
13
- it 'returns an empty string if the value is empty' do
13
+ it 'returns an empty string when the value is empty' do
14
14
  Colour.new.background.must_equal('')
15
15
  end
16
16
  end
@@ -22,7 +22,7 @@ module Vedeu
22
22
  }).foreground.must_equal("\e[38;5;196m")
23
23
  end
24
24
 
25
- it 'returns an empty string if the value is empty' do
25
+ it 'returns an empty string when the value is empty' do
26
26
  Colour.new.foreground.must_equal('')
27
27
  end
28
28
  end
@@ -24,7 +24,7 @@ module Vedeu
24
24
  end
25
25
 
26
26
  it 'raises an exception when the output is anything else' do
27
- proc { Parser.parse([:invalid]) }.must_raise(ParseError)
27
+ proc { Parser.parse(:invalid) }.must_raise(ParseError)
28
28
  end
29
29
  end
30
30
  end
@@ -8,7 +8,7 @@ module Vedeu
8
8
  Esc.background_colour.must_equal("\e[48;5;16m")
9
9
  end
10
10
 
11
- it 'returns an empty string if the value is empty' do
11
+ it 'returns an empty string when the value is empty' do
12
12
  Esc.background_colour('').must_equal('')
13
13
  end
14
14
  end
@@ -18,7 +18,7 @@ module Vedeu
18
18
  Esc.foreground_colour.must_equal("\e[38;5;231m")
19
19
  end
20
20
 
21
- it 'returns an empty string if the value is empty' do
21
+ it 'returns an empty string when the value is empty' do
22
22
  Esc.foreground_colour('').must_equal('')
23
23
  end
24
24
  end
@@ -44,12 +44,12 @@ module Vedeu
44
44
  end
45
45
 
46
46
  describe '#terminal_height' do
47
- it 'raises an exception if the value is less than 1' do
47
+ it 'raises an exception when the value is less than 1' do
48
48
  geometry = Geometry.new({ height: 6, width: 18, terminal_height: -2 })
49
49
  proc { geometry.terminal_height }.must_raise(OutOfBoundsError)
50
50
  end
51
51
 
52
- it 'raises an exception if the value is greater than the terminal height' do
52
+ it 'raises an exception when the value is greater than the terminal height' do
53
53
  console = IO.console
54
54
  console.stub :winsize, [25, 80] do
55
55
  geometry = Geometry.new({ height: 6, width: 18, terminal_height: 30 })
@@ -65,7 +65,7 @@ module Vedeu
65
65
  end
66
66
  end
67
67
 
68
- it 'returns the default height if not set' do
68
+ it 'returns the default height when not set' do
69
69
  console = IO.console
70
70
  console.stub :winsize, [25, 80] do
71
71
  geometry = Geometry.new({ height: 6, width: 18 })
@@ -75,12 +75,12 @@ module Vedeu
75
75
  end
76
76
 
77
77
  describe '#height' do
78
- it 'raises an exception if the value is less than 1' do
78
+ it 'raises an exception when the value is less than 1' do
79
79
  geometry = Geometry.new({ height: -6, width: 18 })
80
80
  proc { geometry.height }.must_raise(OutOfBoundsError)
81
81
  end
82
82
 
83
- it 'raises an exception if the value is greater than the terminal height' do
83
+ it 'raises an exception when the value is greater than the terminal height' do
84
84
  console = IO.console
85
85
  console.stub :winsize, [25, 80] do
86
86
  geometry = Geometry.new({ height: 30, width: 18 })
@@ -95,12 +95,12 @@ module Vedeu
95
95
  end
96
96
 
97
97
  describe '#y' do
98
- it 'raises an exception if the value is less than 1' do
98
+ it 'raises an exception when the value is less than 1' do
99
99
  geometry = Geometry.new({ height: 6, width: 18, y: -2 })
100
100
  proc { geometry.y }.must_raise(OutOfBoundsError)
101
101
  end
102
102
 
103
- it 'raises an exception if the value is greater than the terminal height' do
103
+ it 'raises an exception when the value is greater than the terminal height' do
104
104
  console = IO.console
105
105
  console.stub :winsize, [25, 80] do
106
106
  geometry = Geometry.new({ height: 6, width: 18, y: 30 })
@@ -113,19 +113,19 @@ module Vedeu
113
113
  geometry.y.must_equal(6)
114
114
  end
115
115
 
116
- it 'returns 1 if not set' do
116
+ it 'returns 1 when not set' do
117
117
  geometry = Geometry.new({ height: 6, width: 18 })
118
118
  geometry.y.must_equal(1)
119
119
  end
120
120
  end
121
121
 
122
122
  describe '#terminal_width' do
123
- it 'raises an exception if the value is less than 1' do
123
+ it 'raises an exception when the value is less than 1' do
124
124
  geometry = Geometry.new({ height: 6, width: 18, terminal_width: -2 })
125
125
  proc { geometry.terminal_width }.must_raise(OutOfBoundsError)
126
126
  end
127
127
 
128
- it 'raises an exception if the value is greater than the terminal width' do
128
+ it 'raises an exception when the value is greater than the terminal width' do
129
129
  console = IO.console
130
130
  console.stub :winsize, [25, 80] do
131
131
  geometry = Geometry.new({ height: 6, width: 18, terminal_width: 85 })
@@ -141,7 +141,7 @@ module Vedeu
141
141
  end
142
142
  end
143
143
 
144
- it 'returns the default width if not set' do
144
+ it 'returns the default width when not set' do
145
145
  console = IO.console
146
146
  console.stub :winsize, [25, 80] do
147
147
  geometry = Geometry.new({ height: 6, width: 18 })
@@ -151,12 +151,12 @@ module Vedeu
151
151
  end
152
152
 
153
153
  describe '#width' do
154
- it 'raises an exception if the value is less than 1' do
154
+ it 'raises an exception when the value is less than 1' do
155
155
  geometry = Geometry.new({ height: 6, width: -18 })
156
156
  proc { geometry.width }.must_raise(OutOfBoundsError)
157
157
  end
158
158
 
159
- it 'raises an exception if the value is greater than the terminal width' do
159
+ it 'raises an exception when the value is greater than the terminal width' do
160
160
  console = IO.console
161
161
  console.stub :winsize, [25, 80] do
162
162
  geometry = Geometry.new({ height: 6, width: 85 })
@@ -171,12 +171,12 @@ module Vedeu
171
171
  end
172
172
 
173
173
  describe '#x' do
174
- it 'raises an exception if the value is less than 1' do
174
+ it 'raises an exception when the value is less than 1' do
175
175
  geometry = Geometry.new({ height: 6, width: 18, x: -2 })
176
176
  proc { geometry.x }.must_raise(OutOfBoundsError)
177
177
  end
178
178
 
179
- it 'raises an exception if the value is greater than the terminal width' do
179
+ it 'raises an exception when the value is greater than the terminal width' do
180
180
  console = IO.console
181
181
  console.stub :winsize, [25, 80] do
182
182
  geometry = Geometry.new({ height: 6, width: 18, x: 85 })
@@ -189,7 +189,7 @@ module Vedeu
189
189
  geometry.x.must_equal(6)
190
190
  end
191
191
 
192
- it 'returns 1 if not set' do
192
+ it 'returns 1 when not set' do
193
193
  geometry = Geometry.new({ height: 6, width: 18 })
194
194
  geometry.x.must_equal(1)
195
195
  end
@@ -201,7 +201,7 @@ module Vedeu
201
201
  geometry.centred.must_equal(false)
202
202
  end
203
203
 
204
- it 'sets the centred attribute to true if not set' do
204
+ it 'sets the centred attribute to true when not set' do
205
205
  geometry = Geometry.new({ height: 6, width: 18 })
206
206
  geometry.centred.must_equal(true)
207
207
  end
@@ -24,19 +24,21 @@ module Vedeu
24
24
  end
25
25
 
26
26
  it 'returns the selected index when an item is selected' do
27
- menu.next_item.select_item
27
+ menu.next_item
28
+ menu.select_item
28
29
  menu.selected.must_equal(1)
29
30
  end
30
31
  end
31
32
 
32
33
  describe '#current_item' do
33
- it 'returns a tuple containing the current index and item' do
34
- menu.current_item.must_equal([0, 'hydrogen'])
34
+ it 'returns the current item from the collection' do
35
+ menu.current_item.must_equal('hydrogen')
35
36
  end
36
37
 
37
- it 'when the current item has changed, the tuple will change' do
38
- menu.next_item.next_item
39
- menu.current_item.must_equal([2, 'nitrogen'])
38
+ it 'when the current item has changed' do
39
+ menu.next_item
40
+ menu.next_item
41
+ menu.current_item.must_equal('nitrogen')
40
42
  end
41
43
  end
42
44
 
@@ -45,9 +47,10 @@ module Vedeu
45
47
  menu.selected_item.must_equal(nil)
46
48
  end
47
49
 
48
- it 'returns a tuple containing the selected index and item' do
49
- menu.next_item.select_item
50
- menu.selected_item.must_equal([1, 'carbon'])
50
+ it 'returns the selected item from the collection' do
51
+ menu.next_item
52
+ menu.select_item
53
+ menu.selected_item.must_equal('carbon')
51
54
  end
52
55
  end
53
56
 
@@ -64,7 +67,8 @@ module Vedeu
64
67
  end
65
68
 
66
69
  it 'returns a tuple when the current has changed' do
67
- menu.next_item.items.must_equal(
70
+ menu.next_item
71
+ menu.items.must_equal(
68
72
  [
69
73
  [false, false, 'hydrogen'],
70
74
  [false, true, 'carbon'],
@@ -75,7 +79,8 @@ module Vedeu
75
79
  end
76
80
 
77
81
  it 'returns a tuple when an item is selected' do
78
- menu.next_item.select_item
82
+ menu.next_item
83
+ menu.select_item
79
84
  menu.items.must_equal(
80
85
  [
81
86
  [false, false, 'hydrogen'],
@@ -88,8 +93,10 @@ module Vedeu
88
93
 
89
94
  it 'returns a tuple when the current has changed and an item ' \
90
95
  'is selected' do
91
- menu.next_item.select_item
92
- menu.next_item.next_item
96
+ menu.next_item
97
+ menu.select_item
98
+ menu.next_item
99
+ menu.next_item
93
100
  menu.items.must_equal(
94
101
  [
95
102
  [false, false, 'hydrogen'],
@@ -104,29 +111,53 @@ module Vedeu
104
111
  describe '#render' do
105
112
  it 'returns a tuple' do
106
113
  menu.render.must_equal(
107
- [' > hydrogen', ' carbon', ' nitrogen', ' oxygen']
114
+ [
115
+ ' > hydrogen',
116
+ ' carbon',
117
+ ' nitrogen',
118
+ ' oxygen'
119
+ ]
108
120
  )
109
121
  end
110
122
 
111
123
  it 'returns a tuple when the current has changed' do
112
- menu.next_item.render.must_equal(
113
- [' hydrogen', ' > carbon', ' nitrogen', ' oxygen']
124
+ menu.next_item
125
+ menu.render.must_equal(
126
+ [
127
+ ' hydrogen',
128
+ ' > carbon',
129
+ ' nitrogen',
130
+ ' oxygen'
131
+ ]
114
132
  )
115
133
  end
116
134
 
117
135
  it 'returns a tuple when an item is selected' do
118
- menu.next_item.select_item
136
+ menu.next_item
137
+ menu.select_item
119
138
  menu.render.must_equal(
120
- [' hydrogen', '*> carbon', ' nitrogen', ' oxygen']
139
+ [
140
+ ' hydrogen',
141
+ '*> carbon',
142
+ ' nitrogen',
143
+ ' oxygen'
144
+ ]
121
145
  )
122
146
  end
123
147
 
124
148
  it 'returns a tuple when the current has changed and an item ' \
125
149
  'is selected' do
126
- menu.next_item.select_item
127
- menu.next_item.next_item
150
+ menu.next_item
151
+ menu.select_item
152
+ menu.next_item
153
+ menu.next_item
128
154
  menu.render.must_equal(
129
- [' hydrogen', '* carbon', ' nitrogen', ' > oxygen']
155
+ [
156
+ ' hydrogen',
157
+ '* carbon',
158
+ ' nitrogen',
159
+ ' > oxygen'
160
+ ]
130
161
  )
131
162
  end
132
163
  end
@@ -134,94 +165,101 @@ module Vedeu
134
165
  describe '#top_item' do
135
166
  it 'sets current to the index of the first item' do
136
167
  menu.next_item
137
- menu.top_item.current.must_equal(0)
138
- end
139
-
140
- it 'returns the instance' do
141
- menu.top_item.must_equal(menu)
168
+ menu.top_item
169
+ menu.current.must_equal(0)
142
170
  end
143
171
 
144
- it 'is chainable' do
145
- menu.top_item.current.must_equal(0)
172
+ it 'returns the items' do
173
+ menu.top_item.must_equal(menu.items)
146
174
  end
147
175
  end
148
176
 
149
177
  describe '#bottom_item' do
150
178
  it 'sets current to the index of the last item' do
151
- menu.bottom_item.current.must_equal(3)
152
- end
153
-
154
- it 'returns the instance' do
155
- menu.top_item.must_equal(menu)
179
+ menu.bottom_item
180
+ menu.current.must_equal(3)
156
181
  end
157
182
 
158
- it 'is chainable' do
159
- menu.bottom_item.current.must_equal(3)
183
+ it 'returns the items' do
184
+ menu.bottom_item.must_equal(menu.items)
160
185
  end
161
186
  end
162
187
 
163
188
  describe '#next_item' do
164
189
  it 'sets the current to the index of the next item' do
165
- menu.next_item.current.must_equal(1)
190
+ menu.next_item
191
+ menu.current.must_equal(1)
166
192
  end
167
193
 
168
- it 'returns the instance' do
169
- menu.next_item.must_equal(menu)
194
+ it 'returns the items' do
195
+ menu.next_item.must_equal(menu.items)
170
196
  end
171
197
 
172
- it 'is chainable but does not loop' do
173
- menu.next_item.next_item.next_item.next_item.next_item.current.must_equal(3)
198
+ it 'does not loop' do
199
+ menu.next_item
200
+ menu.next_item
201
+ menu.next_item
202
+ menu.next_item
203
+ menu.next_item
204
+ menu.current.must_equal(3)
174
205
  end
175
206
  end
176
207
 
177
208
  describe '#prev_item' do
178
209
  it 'does not loop' do
179
- menu.prev_item.current.must_equal(0)
210
+ menu.prev_item
211
+ menu.current.must_equal(0)
180
212
  end
181
213
 
182
214
  it 'sets the current to the index of the previous item' do
183
- menu.next_item.next_item.prev_item.current.must_equal(1)
215
+ menu.next_item
216
+ menu.next_item
217
+ menu.prev_item
218
+ menu.current.must_equal(1)
184
219
  end
185
220
 
186
- it 'returns the instance' do
187
- menu.prev_item.must_equal(menu)
221
+ it 'returns the items' do
222
+ menu.prev_item.must_equal(menu.items)
188
223
  end
189
224
 
190
- it 'is chainable' do
191
- menu.next_item.next_item.next_item.prev_item.prev_item.current.must_equal(1)
225
+ it 'does not loop' do
226
+ menu.next_item
227
+ menu.next_item
228
+ menu.next_item
229
+ menu.prev_item
230
+ menu.prev_item
231
+ menu.current.must_equal(1)
192
232
  end
193
233
  end
194
234
 
195
235
  describe '#select_item' do
196
236
  it 'sets the selected index to the current index' do
197
- menu.select_item.selected.must_equal(0)
237
+ menu.select_item
238
+ menu.selected.must_equal(0)
198
239
  end
199
240
 
200
241
  it 'sets the selected index to the current index' do
201
- menu.next_item.select_item.selected.must_equal(1)
202
- end
203
-
204
- it 'returns the instance' do
205
- menu.select_item.must_equal(menu)
242
+ menu.next_item
243
+ menu.select_item
244
+ menu.selected.must_equal(1)
206
245
  end
207
246
 
208
- it 'is chainable' do
209
- menu.select_item.selected.must_equal(0)
247
+ it 'returns the items' do
248
+ menu.select_item.must_equal(menu.items)
210
249
  end
211
250
  end
212
251
 
213
252
  describe '#deselect_item' do
214
253
  it 'sets the selected index to nil' do
215
- menu.next_item.next_item.select_item
216
- menu.deselect_item.selected.must_equal(nil)
217
- end
218
-
219
- it 'returns the instance' do
220
- menu.deselect_item.must_equal(menu)
254
+ menu.next_item
255
+ menu.next_item
256
+ menu.select_item
257
+ menu.deselect_item
258
+ menu.selected.must_equal(nil)
221
259
  end
222
260
 
223
- it 'is chainable' do
224
- menu.deselect_item.selected.must_equal(nil)
261
+ it 'returns the items' do
262
+ menu.deselect_item.must_equal(menu.items)
225
263
  end
226
264
  end
227
265
 
@@ -30,11 +30,11 @@ module Vedeu
30
30
  end
31
31
 
32
32
  describe '#query' do
33
- it 'returns false if the value is not provided' do
33
+ it 'returns false when the value is not provided' do
34
34
  Persistence.query(nil).must_equal(false)
35
35
  end
36
36
 
37
- it 'returns the record if found' do
37
+ it 'returns the record when found' do
38
38
  Persistence.create({ name: 'hydrogen' })
39
39
 
40
40
  Persistence.query('hydrogen').name.must_equal('hydrogen')
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.0.40'
7
+ spec.version = '0.0.41'
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.0.40
4
+ version: 0.0.41
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-07-24 00:00:00.000000000 Z
11
+ date: 2014-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -192,6 +192,7 @@ files:
192
192
  - lib/vedeu/parsing/compositor.rb
193
193
  - lib/vedeu/parsing/hash_parser.rb
194
194
  - lib/vedeu/parsing/json_parser.rb
195
+ - lib/vedeu/parsing/menu_parser.rb
195
196
  - lib/vedeu/parsing/parser.rb
196
197
  - lib/vedeu/parsing/text_adaptor.rb
197
198
  - lib/vedeu/support/builder.rb