vedeu 0.0.39 → 0.0.40

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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -30
  3. data/Rakefile +8 -9
  4. data/bin/log +13 -0
  5. data/deps.md +11 -95
  6. data/lib/vedeu.rb +14 -46
  7. data/lib/vedeu/application.rb +4 -8
  8. data/lib/vedeu/instrumentation.rb +111 -0
  9. data/lib/vedeu/launcher.rb +2 -2
  10. data/lib/vedeu/models/attributes/interface_collection.rb +2 -2
  11. data/lib/vedeu/models/attributes/line_collection.rb +2 -2
  12. data/lib/vedeu/models/attributes/stream_collection.rb +2 -2
  13. data/lib/vedeu/models/colour.rb +1 -1
  14. data/lib/vedeu/models/composition.rb +1 -1
  15. data/lib/vedeu/models/interface.rb +18 -10
  16. data/lib/vedeu/models/line.rb +3 -3
  17. data/lib/vedeu/models/presentation.rb +1 -1
  18. data/lib/vedeu/models/stream.rb +2 -2
  19. data/lib/vedeu/models/style.rb +1 -1
  20. data/lib/vedeu/output/render_interface.rb +1 -1
  21. data/lib/vedeu/{support → parsing}/compositor.rb +1 -1
  22. data/lib/vedeu/parsing/hash_parser.rb +1 -1
  23. data/lib/vedeu/parsing/parser.rb +6 -10
  24. data/lib/vedeu/{models/builders → support}/builder.rb +19 -9
  25. data/lib/vedeu/support/esc.rb +1 -1
  26. data/lib/vedeu/support/events.rb +15 -19
  27. data/lib/vedeu/support/geometry.rb +3 -3
  28. data/lib/vedeu/{input → support}/input.rb +6 -9
  29. data/lib/vedeu/support/menu.rb +3 -3
  30. data/lib/vedeu/support/persistence.rb +41 -0
  31. data/lib/vedeu/support/terminal.rb +1 -1
  32. data/test/example_app/lib/app.rb +85 -5
  33. data/test/lib/vedeu/application_test.rb +2 -2
  34. data/test/lib/vedeu/configuration_test.rb +2 -2
  35. data/test/lib/vedeu/launcher_test.rb +2 -2
  36. data/test/lib/vedeu/models/attributes/collection_test.rb +2 -2
  37. data/test/lib/vedeu/models/attributes/interface_collection_test.rb +4 -4
  38. data/test/lib/vedeu/models/attributes/line_collection_test.rb +3 -3
  39. data/test/lib/vedeu/models/attributes/stream_collection_test.rb +3 -3
  40. data/test/lib/vedeu/models/colour_test.rb +2 -2
  41. data/test/lib/vedeu/models/composition_test.rb +19 -19
  42. data/test/lib/vedeu/models/interface_test.rb +46 -34
  43. data/test/lib/vedeu/models/line_test.rb +2 -2
  44. data/test/lib/vedeu/models/presentation_test.rb +2 -2
  45. data/test/lib/vedeu/models/stream_test.rb +2 -2
  46. data/test/lib/vedeu/models/style_test.rb +31 -31
  47. data/test/lib/vedeu/output/clear_interface_test.rb +5 -5
  48. data/test/lib/vedeu/output/render_interface_test.rb +5 -6
  49. data/test/lib/vedeu/output/template.rb +2 -1
  50. data/test/lib/vedeu/{support → parsing}/compositor_test.rb +6 -4
  51. data/test/lib/vedeu/parsing/hash_parser_test.rb +2 -2
  52. data/test/lib/vedeu/parsing/json_parser_test.rb +2 -2
  53. data/test/lib/vedeu/parsing/parser_test.rb +6 -5
  54. data/test/lib/vedeu/parsing/text_adaptor_test.rb +2 -2
  55. data/test/lib/vedeu/{models/builders/interface_builder_test.rb → support/builder_test.rb} +10 -10
  56. data/test/lib/vedeu/support/esc_test.rb +2 -2
  57. data/test/lib/vedeu/support/events_test.rb +2 -2
  58. data/test/lib/vedeu/support/geometry_test.rb +2 -2
  59. data/test/lib/vedeu/{input → support}/input_test.rb +6 -7
  60. data/test/lib/vedeu/support/menu_test.rb +2 -2
  61. data/test/lib/vedeu/support/persistence_test.rb +55 -0
  62. data/test/lib/vedeu/support/queue_test.rb +2 -2
  63. data/test/lib/vedeu/support/terminal_test.rb +2 -2
  64. data/test/lib/vedeu/support/translator_test.rb +2 -2
  65. data/test/lib/vedeu/support/wordwrap_test.rb +2 -2
  66. data/test/lib/vedeu_test.rb +17 -2
  67. data/test/support/bench.rb +34 -0
  68. data/test/test_helper.rb +3 -11
  69. data/vedeu.gemspec +2 -2
  70. metadata +20 -44
  71. data/lib/vedeu/models/builders/command_builder.rb +0 -10
  72. data/lib/vedeu/models/builders/interface_builder.rb +0 -32
  73. data/lib/vedeu/models/command.rb +0 -23
  74. data/lib/vedeu/output/output.rb +0 -14
  75. data/lib/vedeu/process/process.rb +0 -51
  76. data/lib/vedeu/repository/command_repository.rb +0 -31
  77. data/lib/vedeu/repository/interface_repository.rb +0 -31
  78. data/lib/vedeu/repository/repository.rb +0 -41
  79. data/lib/vedeu/repository/storage.rb +0 -40
  80. data/lib/vedeu/support/exit.rb +0 -9
  81. data/test/lib/vedeu/models/builders/builder_test.rb +0 -11
  82. data/test/lib/vedeu/models/builders/command_builder_test.rb +0 -16
  83. data/test/lib/vedeu/models/command_test.rb +0 -40
  84. data/test/lib/vedeu/output/output_test.rb +0 -19
  85. data/test/lib/vedeu/process/process_test.rb +0 -71
  86. data/test/lib/vedeu/repository/command_repository_test.rb +0 -55
  87. data/test/lib/vedeu/repository/interface_repository_test.rb +0 -67
  88. data/test/lib/vedeu/repository/repository_test.rb +0 -81
  89. data/test/lib/vedeu/repository/storage_test.rb +0 -70
  90. data/test/lib/vedeu/support/exit_test.rb +0 -12
  91. data/test/support/dummy_command.rb +0 -9
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/models/line'
1
+ require 'test_helper'
2
+ require 'vedeu/models/line'
3
3
 
4
4
  module Vedeu
5
5
  describe Line do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/models/presentation'
1
+ require 'test_helper'
2
+ require 'vedeu/models/presentation'
3
3
 
4
4
  module Vedeu
5
5
  class TestPresentation
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/models/stream'
1
+ require 'test_helper'
2
+ require 'vedeu/models/stream'
3
3
 
4
4
  module Vedeu
5
5
  describe Stream do
@@ -1,6 +1,6 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/models/presentation'
3
- require_relative '../../../../lib/vedeu/models/style'
1
+ require 'test_helper'
2
+ require 'vedeu/models/presentation'
3
+ require 'vedeu/models/style'
4
4
 
5
5
  module Vedeu
6
6
  class TestStyle
@@ -11,75 +11,75 @@ module Vedeu
11
11
  describe Style do
12
12
  describe '#style' do
13
13
  it 'returns an escape sequence for a single style' do
14
- test_style = TestStyle.new(style: 'normal')
15
- test_style.style.must_equal("\e[24m\e[21m\e[27m")
14
+ model = TestStyle.new(style: 'normal')
15
+ model.style.must_equal("\e[24m\e[21m\e[27m")
16
16
  end
17
17
 
18
18
  it 'returns an escape sequence for multiple styles' do
19
- test_style = TestStyle.new(style: ['normal', 'underline'])
20
- test_style.style.must_equal("\e[24m\e[21m\e[27m\e[4m")
19
+ model = TestStyle.new(style: ['normal', 'underline'])
20
+ model.style.must_equal("\e[24m\e[21m\e[27m\e[4m")
21
21
  end
22
22
 
23
23
  it 'returns an empty string for an unknown style' do
24
- test_style = TestStyle.new(style: 'unknown')
25
- test_style.style.must_equal('')
24
+ model = TestStyle.new(style: 'unknown')
25
+ model.style.must_equal('')
26
26
  end
27
27
 
28
28
  it 'has a style attribute' do
29
- test_style = TestStyle.new(style: ['normal'])
30
- test_style.style.must_equal("\e[24m\e[21m\e[27m")
29
+ model = TestStyle.new(style: ['normal'])
30
+ model.style.must_equal("\e[24m\e[21m\e[27m")
31
31
  end
32
32
 
33
33
  it 'returns an empty string for empty or nil' do
34
- test_style = TestStyle.new(style: '')
35
- test_style.style.must_equal('')
34
+ model = TestStyle.new(style: '')
35
+ model.style.must_equal('')
36
36
  end
37
37
 
38
38
  it 'returns an empty string for empty or nil' do
39
- test_style = TestStyle.new(style: nil)
40
- test_style.style.must_equal('')
39
+ model = TestStyle.new(style: nil)
40
+ model.style.must_equal('')
41
41
  end
42
42
 
43
43
  it 'returns an empty string for empty or nil' do
44
- test_style = TestStyle.new(style: [])
45
- test_style.style.must_equal('')
44
+ model = TestStyle.new(style: [])
45
+ model.style.must_equal('')
46
46
  end
47
47
  end
48
48
 
49
49
  describe '#style_original' do
50
50
  it 'returns an escape sequence for a single style' do
51
- test_style = TestStyle.new(style: 'normal')
52
- test_style.style_original.must_equal(['normal'])
51
+ model = TestStyle.new(style: 'normal')
52
+ model.style_original.must_equal(['normal'])
53
53
  end
54
54
 
55
55
  it 'returns an escape sequence for multiple styles' do
56
- test_style = TestStyle.new(style: ['normal', 'underline'])
57
- test_style.style_original.must_equal(['normal', 'underline'])
56
+ model = TestStyle.new(style: ['normal', 'underline'])
57
+ model.style_original.must_equal(['normal', 'underline'])
58
58
  end
59
59
 
60
60
  it 'returns an empty string for an unknown style' do
61
- test_style = TestStyle.new(style: 'unknown')
62
- test_style.style_original.must_equal(['unknown'])
61
+ model = TestStyle.new(style: 'unknown')
62
+ model.style_original.must_equal(['unknown'])
63
63
  end
64
64
 
65
65
  it 'has a style attribute' do
66
- test_style = TestStyle.new(style: ['normal'])
67
- test_style.style_original.must_equal(['normal'])
66
+ model = TestStyle.new(style: ['normal'])
67
+ model.style_original.must_equal(['normal'])
68
68
  end
69
69
 
70
70
  it 'returns an empty string for empty or nil' do
71
- test_style = TestStyle.new(style: '')
72
- test_style.style_original.must_equal([''])
71
+ model = TestStyle.new(style: '')
72
+ model.style_original.must_equal([''])
73
73
  end
74
74
 
75
75
  it 'returns an empty string for empty or nil' do
76
- test_style = TestStyle.new(style: nil)
77
- test_style.style_original.must_equal('')
76
+ model = TestStyle.new(style: nil)
77
+ model.style_original.must_equal('')
78
78
  end
79
79
 
80
80
  it 'returns an empty string for empty or nil' do
81
- test_style = TestStyle.new(style: [])
82
- test_style.style_original.must_equal('')
81
+ model = TestStyle.new(style: [])
82
+ model.style_original.must_equal('')
83
83
  end
84
84
  end
85
85
  end
@@ -1,11 +1,11 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/repository/interface_repository'
3
- require_relative '../../../../lib/vedeu/output/clear_interface'
4
- require_relative '../../../../lib/vedeu/models/interface'
1
+ require 'test_helper'
2
+ require 'vedeu/output/clear_interface'
3
+ require 'vedeu/models/interface'
4
+ require 'vedeu/support/persistence'
5
5
 
6
6
  module Vedeu
7
7
  describe ClearInterface do
8
- before { InterfaceRepository.reset }
8
+ before { Persistence.reset }
9
9
 
10
10
  describe '.call' do
11
11
  it 'returns the escape sequence to clear the whole interface' do
@@ -1,12 +1,11 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/repository/interface_repository'
3
- require_relative '../../../../lib/vedeu/output/clear_interface'
4
- require_relative '../../../../lib/vedeu/output/render_interface'
5
- require_relative '../../../../lib/vedeu/models/interface'
1
+ require 'test_helper'
2
+ require 'vedeu/output/render_interface'
3
+ require 'vedeu/models/interface'
4
+ require 'vedeu/support/persistence'
6
5
 
7
6
  module Vedeu
8
7
  describe RenderInterface do
9
- before { InterfaceRepository.reset }
8
+ before { Persistence.reset }
10
9
 
11
10
  describe '.call' do
12
11
  it 'returns the content for the interface' do
@@ -1,4 +1,5 @@
1
- require_relative '../../../test_helper'
1
+ require 'test_helper'
2
+ require 'vedeu/output/template'
2
3
 
3
4
  module Vedeu
4
5
  describe Template do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/compositor'
1
+ require 'test_helper'
2
+ require 'vedeu/parsing/compositor'
3
3
 
4
4
  module Vedeu
5
5
  describe Compositor do
@@ -30,9 +30,11 @@ module Vedeu
30
30
  }
31
31
 
32
32
  Compositor.enqueue(attributes)
33
- InterfaceRepository.query(:name, 'Compositor.enqueue_1').dequeue
33
+ Persistence
34
+ .query('Compositor.enqueue_1').dequeue
34
35
  .must_match(/bd459118e6175689e4394e242debc2ae/)
35
- InterfaceRepository.query(:name, 'Compositor.enqueue_2').dequeue
36
+ Persistence
37
+ .query('Compositor.enqueue_2').dequeue
36
38
  .must_match(/837acb2cb2ea3ef359257851142a7830/)
37
39
  end
38
40
  end
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/parsing/hash_parser'
1
+ require 'test_helper'
2
+ require 'vedeu/parsing/hash_parser'
3
3
 
4
4
  module Vedeu
5
5
  describe HashParser do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/parsing/json_parser'
1
+ require 'test_helper'
2
+ require 'vedeu/parsing/json_parser'
3
3
 
4
4
  module Vedeu
5
5
  describe JSONParser do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/parsing/parser'
1
+ require 'test_helper'
2
+ require 'vedeu/parsing/parser'
3
3
 
4
4
  module Vedeu
5
5
  describe Parser do
@@ -9,10 +9,11 @@ module Vedeu
9
9
  end
10
10
 
11
11
  it 'returns a Composition when the output is JSON' do
12
- skip('This is not working as it should...')
12
+ file = File.read('test/support/json/int1_lin1_str1.json')
13
+ parser = Parser.parse(file)
13
14
 
14
- Parser.parse("{\"some\": \"JSON\"}")
15
- .must_be_instance_of(Composition)
15
+ parser.must_be_instance_of(Array)
16
+ parser.size.must_equal(1)
16
17
  end
17
18
 
18
19
  it 'returns a collection of interfaces when the output is a Hash' do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/parsing/text_adaptor'
1
+ require 'test_helper'
2
+ require 'vedeu/parsing/text_adaptor'
3
3
 
4
4
  module Vedeu
5
5
  describe TextAdaptor do
@@ -1,10 +1,10 @@
1
- require_relative '../../../../test_helper'
2
- require_relative '../../../../../lib/vedeu/models/builders/interface_builder'
1
+ require 'test_helper'
2
+ require 'vedeu/support/builder'
3
3
 
4
4
  module Vedeu
5
- describe InterfaceBuilder do
5
+ describe Builder do
6
6
  it 'creates and stores a new interface' do
7
- interface = InterfaceBuilder.build('widget') do
7
+ interface = Builder.build('widget') do
8
8
  colour foreground: '#ff0000', background: '#5f0000'
9
9
  cursor false
10
10
  width 10
@@ -16,7 +16,7 @@ module Vedeu
16
16
 
17
17
  it 'overrides x and y when centred is true' do
18
18
  IO.console.stub :winsize, [10, 40] do
19
- interface = InterfaceBuilder.build('widget') do
19
+ interface = Builder.build('widget') do
20
20
  colour foreground: '#ff0000', background: '#5f0000'
21
21
  cursor false
22
22
  centred true
@@ -25,13 +25,13 @@ module Vedeu
25
25
  x 5
26
26
  y 5
27
27
  end
28
- interface.x.must_equal(15)
29
- interface.y.must_equal(4)
28
+ interface.x.must_equal(15)
29
+ interface.y.must_equal(4)
30
30
  end
31
31
  end
32
32
 
33
33
  it 'uses x and y when centred is false' do
34
- interface = InterfaceBuilder.build('widget') do
34
+ interface = Builder.build('widget') do
35
35
  colour foreground: '#ff0000', background: '#5f0000'
36
36
  cursor false
37
37
  centred false
@@ -46,14 +46,14 @@ module Vedeu
46
46
 
47
47
  it 'allows interfaces to share behaviour' do
48
48
  IO.console.stub :winsize, [10, 40] do
49
- main = InterfaceBuilder.build('main') do
49
+ main = Builder.build('main') do
50
50
  colour foreground: '#ff0000', background: '#000000'
51
51
  cursor false
52
52
  centred true
53
53
  width 10
54
54
  height 2
55
55
  end
56
- status = InterfaceBuilder.build('status') do
56
+ status = Builder.build('status') do
57
57
  colour foreground: 'aadd00', background: '#4040cc'
58
58
  cursor true
59
59
  centred true
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/esc'
1
+ require 'test_helper'
2
+ require 'vedeu/support/esc'
3
3
 
4
4
  module Vedeu
5
5
  describe Esc do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/events'
1
+ require 'test_helper'
2
+ require 'vedeu/support/events'
3
3
 
4
4
  module Vedeu
5
5
  describe Events do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/geometry'
1
+ require 'test_helper'
2
+ require 'vedeu/support/geometry'
3
3
 
4
4
  module Vedeu
5
5
  describe Geometry do
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/input/input'
1
+ require 'test_helper'
2
+ require 'vedeu/support/input'
3
3
 
4
4
  module Vedeu
5
5
  describe Input do
@@ -37,17 +37,16 @@ module Vedeu
37
37
  }
38
38
 
39
39
  keypresses.each do |keypress, value|
40
- it 'enqueues the captured input from the terminal' do
41
- Queue.reset
40
+ it 'triggers a :key event with the key pressed' do
42
41
  Terminal.stub :input, keypress do
43
- Input.capture
44
- Queue.entries.must_equal([value])
42
+ Vedeu.stub :trigger, value do
43
+ Input.capture.must_equal(value)
44
+ end
45
45
  end
46
46
  end
47
47
  end
48
48
 
49
49
  it 'switches the terminal mode when escape is pressed' do
50
- Queue.reset
51
50
  Terminal.stub :input, "\e" do
52
51
  proc { Input.capture }.must_raise(ModeSwitch)
53
52
  end
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/menu'
1
+ require 'test_helper'
2
+ require 'vedeu/support/menu'
3
3
 
4
4
  module Vedeu
5
5
  describe Menu do
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+ require 'vedeu/support/persistence'
3
+
4
+ module Vedeu
5
+ describe Persistence do
6
+ before { Persistence.reset }
7
+
8
+ describe '.update' do
9
+ it 'returns an Interface' do
10
+ Persistence.update('dummy', { name: 'dumber' })
11
+ .must_be_instance_of(Interface)
12
+ end
13
+
14
+ it 'updates and returns the existing interface when the interface exists' do
15
+ Persistence.update('dummy', { name: 'dumber' }).name
16
+ .must_equal('dumber')
17
+ end
18
+
19
+ it 'returns a new interface when the interface does not exist' do
20
+ Persistence.update('dummy', { name: 'dumber' }).name
21
+ .must_equal('dumber')
22
+ end
23
+ end
24
+
25
+ describe '#create' do
26
+ it 'creates and returns the stored record' do
27
+ Persistence.create({ name: 'dummy' })
28
+ .must_be_instance_of(Interface)
29
+ end
30
+ end
31
+
32
+ describe '#query' do
33
+ it 'returns false if the value is not provided' do
34
+ Persistence.query(nil).must_equal(false)
35
+ end
36
+
37
+ it 'returns the record if found' do
38
+ Persistence.create({ name: 'hydrogen' })
39
+
40
+ Persistence.query('hydrogen').name.must_equal('hydrogen')
41
+ end
42
+
43
+ it 'raises an exception when the record cannot be found' do
44
+ proc { Persistence.query('dummy') }.must_raise(EntityNotFound)
45
+ end
46
+ end
47
+
48
+ describe '#reset' do
49
+ it 'deletes all records stored' do
50
+ Persistence.create({ name: 'dumb' })
51
+ Persistence.reset.must_equal({})
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,5 +1,5 @@
1
- require_relative '../../../test_helper'
2
- require_relative '../../../../lib/vedeu/support/queue'
1
+ require 'test_helper'
2
+ require 'vedeu/support/queue'
3
3
 
4
4
  module Vedeu
5
5
  describe Queue do