vedeu 0.1.15 → 0.1.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +2 -0
- data/README.md +116 -98
- data/lib/vedeu.rb +24 -11
- data/lib/vedeu/api/api.rb +174 -33
- data/lib/vedeu/api/composition.rb +2 -13
- data/lib/vedeu/api/helpers.rb +41 -0
- data/lib/vedeu/api/interface.rb +147 -34
- data/lib/vedeu/api/line.rb +47 -0
- data/lib/vedeu/api/stream.rb +41 -0
- data/lib/vedeu/application.rb +9 -2
- data/lib/vedeu/configuration.rb +66 -8
- data/lib/vedeu/launcher.rb +11 -0
- data/lib/vedeu/models/attributes/background.rb +29 -0
- data/lib/vedeu/models/attributes/coercions.rb +30 -0
- data/lib/vedeu/models/attributes/colour_translator.rb +106 -16
- data/lib/vedeu/models/attributes/foreground.rb +29 -0
- data/lib/vedeu/models/attributes/presentation.rb +15 -0
- data/lib/vedeu/models/colour.rb +12 -7
- data/lib/vedeu/models/composition.rb +23 -5
- data/lib/vedeu/models/geometry.rb +101 -16
- data/lib/vedeu/models/interface.rb +36 -28
- data/lib/vedeu/models/line.rb +16 -14
- data/lib/vedeu/models/stream.rb +17 -25
- data/lib/vedeu/models/style.rb +29 -0
- data/lib/vedeu/support/buffer.rb +36 -21
- data/lib/vedeu/support/buffers.rb +88 -0
- data/lib/vedeu/{output → support}/clear.rb +9 -2
- data/lib/vedeu/support/esc.rb +16 -2
- data/lib/vedeu/support/event.rb +104 -0
- data/lib/vedeu/support/events.rb +61 -0
- data/lib/vedeu/support/focus.rb +69 -0
- data/lib/vedeu/{api → support}/grid.rb +29 -25
- data/lib/vedeu/support/groups.rb +51 -0
- data/lib/vedeu/support/input.rb +5 -0
- data/lib/vedeu/support/log.rb +105 -0
- data/lib/vedeu/support/menu.rb +19 -0
- data/lib/vedeu/support/position.rb +7 -0
- data/lib/vedeu/{output → support}/render.rb +12 -6
- data/lib/vedeu/support/terminal.rb +21 -0
- data/lib/vedeu/support/trace.rb +54 -0
- data/lib/vedeu/{output → support}/view.rb +15 -10
- data/test/lib/vedeu/api/api_test.rb +55 -29
- data/test/lib/vedeu/api/interface_test.rb +3 -49
- data/test/lib/vedeu/api/line_test.rb +71 -0
- data/test/lib/vedeu/api/stream_test.rb +25 -0
- data/test/lib/vedeu/models/attributes/background_test.rb +83 -0
- data/test/lib/vedeu/models/attributes/coercer_test.rb +52 -0
- data/test/lib/vedeu/models/attributes/foreground_test.rb +83 -0
- data/test/lib/vedeu/models/attributes/presentation_test.rb +30 -0
- data/test/lib/vedeu/models/composition_test.rb +6 -6
- data/test/lib/vedeu/models/geometry_test.rb +34 -0
- data/test/lib/vedeu/models/interface_test.rb +0 -12
- data/test/lib/vedeu/models/line_test.rb +1 -13
- data/test/lib/vedeu/models/stream_test.rb +4 -50
- data/test/lib/vedeu/models/style_test.rb +39 -0
- data/test/lib/vedeu/support/buffer_test.rb +7 -3
- data/test/lib/vedeu/support/buffers_test.rb +15 -0
- data/test/lib/vedeu/{output → support}/clear_test.rb +8 -1
- data/test/lib/vedeu/support/esc_test.rb +2 -2
- data/test/lib/vedeu/support/event_test.rb +41 -0
- data/test/lib/vedeu/support/events_test.rb +70 -0
- data/test/lib/vedeu/support/focus_test.rb +114 -0
- data/test/lib/vedeu/support/grid_test.rb +31 -0
- data/test/lib/vedeu/support/groups_test.rb +65 -0
- data/test/lib/vedeu/{output → support}/render_test.rb +8 -1
- data/test/lib/vedeu/{output → support}/view_test.rb +1 -1
- data/test/test_helper.rb +3 -1
- data/vedeu.gemspec +3 -2
- metadata +67 -31
- data/lib/vedeu/api/events.rb +0 -46
- data/lib/vedeu/api/log.rb +0 -84
- data/lib/vedeu/models/attributes/attributes.rb +0 -25
- data/lib/vedeu/models/store.rb +0 -29
- data/lib/vedeu/output/buffers.rb +0 -65
- data/test/lib/vedeu/api/events_test.rb +0 -36
- data/test/lib/vedeu/api/grid_test.rb +0 -33
- data/test/lib/vedeu/models/attributes/attributes_test.rb +0 -39
- data/test/lib/vedeu/models/attributes/colour_translator_test.rb +0 -78
- data/test/lib/vedeu/models/store_test.rb +0 -57
- 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
|