vedeu 0.1.15 → 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +2 -0
  3. data/README.md +116 -98
  4. data/lib/vedeu.rb +24 -11
  5. data/lib/vedeu/api/api.rb +174 -33
  6. data/lib/vedeu/api/composition.rb +2 -13
  7. data/lib/vedeu/api/helpers.rb +41 -0
  8. data/lib/vedeu/api/interface.rb +147 -34
  9. data/lib/vedeu/api/line.rb +47 -0
  10. data/lib/vedeu/api/stream.rb +41 -0
  11. data/lib/vedeu/application.rb +9 -2
  12. data/lib/vedeu/configuration.rb +66 -8
  13. data/lib/vedeu/launcher.rb +11 -0
  14. data/lib/vedeu/models/attributes/background.rb +29 -0
  15. data/lib/vedeu/models/attributes/coercions.rb +30 -0
  16. data/lib/vedeu/models/attributes/colour_translator.rb +106 -16
  17. data/lib/vedeu/models/attributes/foreground.rb +29 -0
  18. data/lib/vedeu/models/attributes/presentation.rb +15 -0
  19. data/lib/vedeu/models/colour.rb +12 -7
  20. data/lib/vedeu/models/composition.rb +23 -5
  21. data/lib/vedeu/models/geometry.rb +101 -16
  22. data/lib/vedeu/models/interface.rb +36 -28
  23. data/lib/vedeu/models/line.rb +16 -14
  24. data/lib/vedeu/models/stream.rb +17 -25
  25. data/lib/vedeu/models/style.rb +29 -0
  26. data/lib/vedeu/support/buffer.rb +36 -21
  27. data/lib/vedeu/support/buffers.rb +88 -0
  28. data/lib/vedeu/{output → support}/clear.rb +9 -2
  29. data/lib/vedeu/support/esc.rb +16 -2
  30. data/lib/vedeu/support/event.rb +104 -0
  31. data/lib/vedeu/support/events.rb +61 -0
  32. data/lib/vedeu/support/focus.rb +69 -0
  33. data/lib/vedeu/{api → support}/grid.rb +29 -25
  34. data/lib/vedeu/support/groups.rb +51 -0
  35. data/lib/vedeu/support/input.rb +5 -0
  36. data/lib/vedeu/support/log.rb +105 -0
  37. data/lib/vedeu/support/menu.rb +19 -0
  38. data/lib/vedeu/support/position.rb +7 -0
  39. data/lib/vedeu/{output → support}/render.rb +12 -6
  40. data/lib/vedeu/support/terminal.rb +21 -0
  41. data/lib/vedeu/support/trace.rb +54 -0
  42. data/lib/vedeu/{output → support}/view.rb +15 -10
  43. data/test/lib/vedeu/api/api_test.rb +55 -29
  44. data/test/lib/vedeu/api/interface_test.rb +3 -49
  45. data/test/lib/vedeu/api/line_test.rb +71 -0
  46. data/test/lib/vedeu/api/stream_test.rb +25 -0
  47. data/test/lib/vedeu/models/attributes/background_test.rb +83 -0
  48. data/test/lib/vedeu/models/attributes/coercer_test.rb +52 -0
  49. data/test/lib/vedeu/models/attributes/foreground_test.rb +83 -0
  50. data/test/lib/vedeu/models/attributes/presentation_test.rb +30 -0
  51. data/test/lib/vedeu/models/composition_test.rb +6 -6
  52. data/test/lib/vedeu/models/geometry_test.rb +34 -0
  53. data/test/lib/vedeu/models/interface_test.rb +0 -12
  54. data/test/lib/vedeu/models/line_test.rb +1 -13
  55. data/test/lib/vedeu/models/stream_test.rb +4 -50
  56. data/test/lib/vedeu/models/style_test.rb +39 -0
  57. data/test/lib/vedeu/support/buffer_test.rb +7 -3
  58. data/test/lib/vedeu/support/buffers_test.rb +15 -0
  59. data/test/lib/vedeu/{output → support}/clear_test.rb +8 -1
  60. data/test/lib/vedeu/support/esc_test.rb +2 -2
  61. data/test/lib/vedeu/support/event_test.rb +41 -0
  62. data/test/lib/vedeu/support/events_test.rb +70 -0
  63. data/test/lib/vedeu/support/focus_test.rb +114 -0
  64. data/test/lib/vedeu/support/grid_test.rb +31 -0
  65. data/test/lib/vedeu/support/groups_test.rb +65 -0
  66. data/test/lib/vedeu/{output → support}/render_test.rb +8 -1
  67. data/test/lib/vedeu/{output → support}/view_test.rb +1 -1
  68. data/test/test_helper.rb +3 -1
  69. data/vedeu.gemspec +3 -2
  70. metadata +67 -31
  71. data/lib/vedeu/api/events.rb +0 -46
  72. data/lib/vedeu/api/log.rb +0 -84
  73. data/lib/vedeu/models/attributes/attributes.rb +0 -25
  74. data/lib/vedeu/models/store.rb +0 -29
  75. data/lib/vedeu/output/buffers.rb +0 -65
  76. data/test/lib/vedeu/api/events_test.rb +0 -36
  77. data/test/lib/vedeu/api/grid_test.rb +0 -33
  78. data/test/lib/vedeu/models/attributes/attributes_test.rb +0 -39
  79. data/test/lib/vedeu/models/attributes/colour_translator_test.rb +0 -78
  80. data/test/lib/vedeu/models/store_test.rb +0 -57
  81. data/test/lib/vedeu/output/buffers_test.rb +0 -35
@@ -1,36 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
- module API
5
- describe Events do
6
- describe '#event' do
7
- it 'adds the event block to the handlers' do
8
- skip
9
- events = Events.new
10
- events.event(:some_event) { proc { |x| x } }
11
- end
12
-
13
- it 'adds the specified throttle to the throttles' do
14
- skip
15
- events = Events.new
16
- events.event(:some_event, 250) { proc { |x| x } }
17
- end
18
- end
19
-
20
- describe '#trigger' do
21
- it 'returns a collection containing the event when the event is ' \
22
- 'pre-registered' do
23
- events = Events.new do
24
- event(:_exit_) { fail StopIteration }
25
- end
26
- proc { events.trigger(:_exit_) }.must_raise(StopIteration)
27
- end
28
-
29
- it 'returns an empty collection when the event has not been registered' do
30
- events = Events.new
31
- events.trigger(:_not_found_).must_be_empty
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,33 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe Fixnum do
4
- describe '#columns' do
5
- it 'returns the width if the value is in range' do
6
- IO.console.stub :winsize, [25, 60] do
7
- 1.columns.must_equal(5)
8
- end
9
- end
10
- end
11
- end
12
-
13
- module Vedeu
14
- module API
15
- describe Grid do
16
- describe '.columns' do
17
- it 'raises an exception if the value is less than 1' do
18
- proc { Grid.columns(0) }.must_raise(OutOfRange)
19
- end
20
-
21
- it 'raises an exception if the value is greater than 12' do
22
- proc { Grid.columns(13) }.must_raise(OutOfRange)
23
- end
24
-
25
- it 'returns the width if the value is in range' do
26
- IO.console.stub :winsize, [25, 80] do
27
- Grid.columns(7).must_equal(42)
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,39 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
- class TestClass
5
- include Attributes
6
-
7
- def initialize(*args); end
8
- end
9
-
10
- describe Attributes do
11
- describe '#coercer' do
12
- it 'returns an empty collection when nil or empty' do
13
- [nil, '', [], {}].each do |empty_value|
14
- Attributes.coercer(empty_value, TestClass, :key).must_equal([])
15
- end
16
- end
17
-
18
- it 'returns a single model in a collection when a String' do
19
- Attributes.coercer('test', TestClass, :key).size.must_equal(1)
20
- end
21
-
22
- it 'returns a collection of models when a single hash' do
23
- Attributes.coercer({ :test1 => 'test1' }, TestClass, :key)
24
- .size.must_equal(1)
25
- end
26
-
27
- it 'returns a collection of models when multiple hashes' do
28
- Attributes.coercer([
29
- { :test1 => 'test1' }, { :test2 => 'test2' }
30
- ], TestClass, :key).size.must_equal(2)
31
- end
32
-
33
- it 'returns a collection of models when a single array' do
34
- Attributes.coercer([{ :test3 => 'test3' }], TestClass, :key)
35
- .size.must_equal(1)
36
- end
37
- end
38
- end
39
- end
@@ -1,78 +0,0 @@
1
- require 'test_helper'
2
- require 'vedeu/models/attributes/colour_translator'
3
-
4
- module Vedeu
5
- describe ColourTranslator do
6
- describe '#background' do
7
- {
8
- '#5f0000' => "\e[48;2;95;0;0m",
9
- '#008700' => "\e[48;2;0;135;0m",
10
- '#0000d7' => "\e[48;2;0;0;215m",
11
- '#afafaf' => "\e[48;2;175;175;175m",
12
- '#afd700' => "\e[48;2;175;215;0m",
13
- '#af005f' => "\e[48;2;175;0;95m",
14
- }.map do |html_colour, terminal_colour|
15
- it 'translation is performed' do
16
- ColourTranslator.new(html_colour).background
17
- .must_equal(terminal_colour)
18
- end
19
- end
20
-
21
- it 'returns empty string when not present' do
22
- ColourTranslator.new.background.must_equal('')
23
- end
24
-
25
- it 'returns empty string when the wrong type!' do
26
- ColourTranslator.new(:wrong_type).background.must_equal('')
27
- end
28
-
29
- it 'returns empty string when invalid format' do
30
- ColourTranslator.new('345678').background.must_equal('')
31
- end
32
-
33
- it 'returns empty string when invalid format' do
34
- ColourTranslator.new('#h11111').background.must_equal('')
35
- end
36
-
37
- it 'returns empty string when invalid format' do
38
- ColourTranslator.new('#1111').background.must_equal('')
39
- end
40
- end
41
-
42
- describe '#foreground' do
43
- {
44
- '#5f0000' => "\e[38;2;95;0;0m",
45
- '#008700' => "\e[38;2;0;135;0m",
46
- '#0000d7' => "\e[38;2;0;0;215m",
47
- '#afafaf' => "\e[38;2;175;175;175m",
48
- '#afd700' => "\e[38;2;175;215;0m",
49
- '#af005f' => "\e[38;2;175;0;95m",
50
- }.map do |html_colour, terminal_colour|
51
- it 'translation is performed' do
52
- ColourTranslator.new(html_colour).foreground
53
- .must_equal(terminal_colour)
54
- end
55
- end
56
-
57
- it 'returns empty string when not present' do
58
- ColourTranslator.new.foreground.must_equal('')
59
- end
60
-
61
- it 'returns empty string when the wrong type!' do
62
- ColourTranslator.new(:wrong_type).foreground.must_equal('')
63
- end
64
-
65
- it 'returns empty string when invalid format' do
66
- ColourTranslator.new('345678').foreground.must_equal('')
67
- end
68
-
69
- it 'returns empty string when invalid format' do
70
- ColourTranslator.new('#h11111').foreground.must_equal('')
71
- end
72
-
73
- it 'returns empty string when invalid format' do
74
- ColourTranslator.new('#1111').foreground.must_equal('')
75
- end
76
- end
77
- end
78
- end
@@ -1,57 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
- describe Store do
5
- before { Store.reset }
6
-
7
- describe '#create' do
8
- it 'stores the interface attributes and returns the storage collection' do
9
- attributes = { name: 'sulphur' }
10
-
11
- Store.create(attributes).must_equal({ 'sulphur' => { name: 'sulphur' } })
12
- end
13
- end
14
-
15
- describe '#query' do
16
- before do
17
- Store.reset
18
- Vedeu.interface('chlorine')
19
- end
20
-
21
- it 'returns the record when found' do
22
- Store.query('chlorine').must_equal(
23
- {
24
- name: 'chlorine',
25
- group: '',
26
- lines: [],
27
- colour: {},
28
- style: '',
29
- geometry: {},
30
- cursor: true,
31
- delay: 0.0
32
- }
33
- )
34
- end
35
-
36
- it 'raises an exception when name is empty' do
37
- proc { Store.query('') }.must_raise(EntityNotFound)
38
- end
39
-
40
- it 'raises an exception when name is nil' do
41
- proc { Store.query(nil) }.must_raise(EntityNotFound)
42
- end
43
-
44
- it 'raises an exception when the record cannot be found' do
45
- proc { Store.query('dummy') }.must_raise(EntityNotFound)
46
- end
47
- end
48
-
49
- describe '#reset' do
50
- it 'deletes all records stored' do
51
- Vedeu.interface('potassium')
52
-
53
- Store.reset.must_equal({})
54
- end
55
- end
56
- end
57
- end
@@ -1,35 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
- describe Buffers do
5
- before do
6
- Buffers.reset
7
- end
8
-
9
- describe '.create' do
10
- it 'creates an entry for the interface, and saves :clear' do
11
- end
12
- end
13
-
14
- describe '.enqueue' do
15
- it 'raises an exception if the interface cannot be found by name' do
16
- name = 'unknown'
17
- sequence = '...'
18
- proc { Buffers.enqueue(name, sequence) }.must_raise(RefreshFailed)
19
- end
20
-
21
- it 'saves the new sequence for the interface into :next' do
22
- end
23
- end
24
-
25
- describe '.refresh_all' do
26
- it 'requests each stored interface to be refreshed' do
27
- end
28
- end
29
-
30
- describe '.reset' do
31
- it 'destroys all saved buffers' do
32
- end
33
- end
34
- end
35
- end