vedeu 0.1.10 → 0.1.12
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 +4 -4
- data/lib/vedeu.rb +2 -10
- data/lib/vedeu/api/api.rb +29 -1
- data/lib/vedeu/api/events.rb +1 -26
- data/lib/vedeu/api/{base.rb → helpers.rb} +1 -18
- data/lib/vedeu/api/interface.rb +16 -3
- data/lib/vedeu/api/line.rb +29 -4
- data/lib/vedeu/api/log.rb +13 -1
- data/lib/vedeu/api/store.rb +0 -4
- data/lib/vedeu/api/stream.rb +29 -2
- data/lib/vedeu/api/view.rb +4 -2
- data/lib/vedeu/models/attributes/attributes.rb +25 -0
- data/lib/vedeu/models/attributes/colour_translator.rb +0 -10
- data/lib/vedeu/models/colour.rb +23 -3
- data/lib/vedeu/models/composition.rb +32 -2
- data/lib/vedeu/models/geometry.rb +38 -22
- data/lib/vedeu/models/interface.rb +57 -12
- data/lib/vedeu/models/line.rb +28 -4
- data/lib/vedeu/models/stream.rb +36 -6
- data/lib/vedeu/output/buffers.rb +8 -4
- data/lib/vedeu/output/clear.rb +1 -3
- data/lib/vedeu/output/render.rb +12 -4
- data/lib/vedeu/support/esc.rb +12 -2
- data/lib/vedeu/support/menu.rb +10 -10
- data/test/lib/vedeu/api/events_test.rb +4 -4
- data/test/lib/vedeu/api/interface_test.rb +9 -9
- data/test/lib/vedeu/api/view_test.rb +1 -1
- data/test/lib/vedeu/models/attributes/{collection_test.rb → attributes_test.rb} +7 -7
- data/test/lib/vedeu/models/geometry_test.rb +0 -65
- data/test/lib/vedeu/models/line_test.rb +29 -4
- data/test/lib/vedeu/models/stream_test.rb +56 -11
- data/test/lib/vedeu/output/render_test.rb +1 -0
- data/vedeu.gemspec +1 -3
- metadata +6 -38
- data/lib/vedeu/models/attributes/background.rb +0 -7
- data/lib/vedeu/models/attributes/collection.rb +0 -11
- data/lib/vedeu/models/attributes/foreground.rb +0 -7
- data/lib/vedeu/models/attributes/interface_collection.rb +0 -13
- data/lib/vedeu/models/attributes/line_collection.rb +0 -9
- data/lib/vedeu/models/attributes/stream_collection.rb +0 -9
- data/lib/vedeu/models/style.rb +0 -15
- data/test/lib/vedeu/models/attributes/interface_collection_test.rb +0 -40
- data/test/lib/vedeu/models/attributes/line_collection_test.rb +0 -25
- data/test/lib/vedeu/models/attributes/stream_collection_test.rb +0 -23
- data/test/lib/vedeu/models/style_test.rb +0 -48
- data/test/support/bench.rb +0 -34
- data/test/support/colours.rb +0 -39
data/lib/vedeu/models/style.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
class Style < Virtus::Attribute
|
3
|
-
def coerce(value_or_values)
|
4
|
-
return '' if value_or_values.nil? || value_or_values.empty?
|
5
|
-
|
6
|
-
if value_or_values.is_a?(::Array)
|
7
|
-
value_or_values.map { |s| Esc.string(s) }.join
|
8
|
-
|
9
|
-
else
|
10
|
-
Esc.string(value_or_values)
|
11
|
-
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
describe InterfaceCollection do
|
5
|
-
describe '#coerce' do
|
6
|
-
before { API::Store.reset }
|
7
|
-
|
8
|
-
it 'returns an empty collection when there are no interfaces' do
|
9
|
-
composition = Composition.new
|
10
|
-
composition.interfaces.must_equal([])
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'returns a collection when there is a single interface' do
|
14
|
-
Vedeu.interface('dumb') {}
|
15
|
-
|
16
|
-
composition = Composition.new(
|
17
|
-
{
|
18
|
-
interfaces: { name: 'dumb' }
|
19
|
-
}
|
20
|
-
)
|
21
|
-
composition.interfaces.first.must_be_instance_of(Interface)
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'returns a collection when there are multiple interfaces' do
|
25
|
-
Vedeu.interface('dumb') {}
|
26
|
-
Vedeu.interface('dumber') {}
|
27
|
-
|
28
|
-
composition = Composition.new(
|
29
|
-
{
|
30
|
-
interfaces: [
|
31
|
-
{ name: 'dumb' },
|
32
|
-
{ name: 'dumber' }
|
33
|
-
]
|
34
|
-
}
|
35
|
-
)
|
36
|
-
composition.interfaces.size.must_equal(2)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
describe LineCollection do
|
5
|
-
let(:interface) { Interface.new(attributes) }
|
6
|
-
|
7
|
-
describe '#coerce' do
|
8
|
-
it 'returns an empty collection when there are no lines' do
|
9
|
-
Interface.new({ lines: [] }).lines.must_equal([])
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'contains a single Line object when there is a single line' do
|
13
|
-
Interface.new({ lines: { streams: { text: 'some text' } } })
|
14
|
-
.lines.size.must_equal(1)
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'contains multiple Line objects when there are multiple lines' do
|
18
|
-
Interface.new({ lines: [
|
19
|
-
{ text: 'some text' },
|
20
|
-
{ text: 'some more text' }
|
21
|
-
] }).lines.size.must_equal(2)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
describe StreamCollection do
|
5
|
-
describe '#coerce' do
|
6
|
-
it 'returns an empty array when there is no stream' do
|
7
|
-
Line.new.streams.must_equal([])
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'contains a single Stream when there is a single stream' do
|
11
|
-
Line.new({ streams: [{ text: 'some text' }] }).streams.size
|
12
|
-
.must_equal(1)
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'contains multiple Stream when there are multiple streams' do
|
16
|
-
Line.new({ streams: [
|
17
|
-
{ text: 'some text' },
|
18
|
-
{ text: 'some more text' }
|
19
|
-
] }).streams.size.must_equal(2)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
class TestStyle
|
5
|
-
include Virtus.model
|
6
|
-
|
7
|
-
attribute :style, Style
|
8
|
-
end
|
9
|
-
|
10
|
-
describe Style do
|
11
|
-
describe '#style' do
|
12
|
-
it 'returns an escape sequence for a single style' do
|
13
|
-
model = TestStyle.new(style: 'normal')
|
14
|
-
model.style.must_equal("\e[24m\e[21m\e[27m")
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'returns an escape sequence for multiple styles' do
|
18
|
-
model = TestStyle.new(style: ['normal', 'underline'])
|
19
|
-
model.style.must_equal("\e[24m\e[21m\e[27m\e[4m")
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'returns an empty string for an unknown style' do
|
23
|
-
model = TestStyle.new(style: 'unknown')
|
24
|
-
model.style.must_equal('')
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'has a style attribute' do
|
28
|
-
model = TestStyle.new(style: ['normal'])
|
29
|
-
model.style.must_equal("\e[24m\e[21m\e[27m")
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'returns an empty string for empty or nil' do
|
33
|
-
model = TestStyle.new(style: '')
|
34
|
-
model.style.must_equal('')
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'returns an empty string for empty or nil' do
|
38
|
-
model = TestStyle.new(style: nil)
|
39
|
-
model.style.must_equal('')
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'returns an empty string for empty or nil' do
|
43
|
-
model = TestStyle.new(style: [])
|
44
|
-
model.style.must_equal('')
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
data/test/support/bench.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'benchmark'
|
2
|
-
|
3
|
-
class Foo
|
4
|
-
def bar(a, b)
|
5
|
-
a + b
|
6
|
-
end
|
7
|
-
|
8
|
-
def baz
|
9
|
-
a + b
|
10
|
-
end
|
11
|
-
|
12
|
-
def a
|
13
|
-
rand(1000_000)
|
14
|
-
end
|
15
|
-
|
16
|
-
def b
|
17
|
-
rand(1000_000)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
foo = Foo.new
|
22
|
-
|
23
|
-
Benchmark.bm 30 do |x|
|
24
|
-
x.report 'original method' do
|
25
|
-
1000000.times do |_|
|
26
|
-
foo.bar(rand(1_000_000), rand(1_000_000))
|
27
|
-
end
|
28
|
-
end
|
29
|
-
x.report 'shiny new method' do
|
30
|
-
1000000.times do |_|
|
31
|
-
foo.baz
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/test/support/colours.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require_relative '../../lib/vedeu/models/attributes/colour_translator'
|
3
|
-
|
4
|
-
values = ["00", "5f", "87", "af", "d7", "ff"]
|
5
|
-
codes = {}
|
6
|
-
|
7
|
-
values.each do |r|
|
8
|
-
values.each do |g|
|
9
|
-
values.each do |b|
|
10
|
-
value = ["#", r, g, b].join
|
11
|
-
trans = Vedeu::ColourTranslator.translate(value)
|
12
|
-
codes[trans] = value
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# basic
|
18
|
-
30.upto(38) do |fg|
|
19
|
-
40.upto(48) do |bg|
|
20
|
-
print "\e[38;2;#{fg}m\e[48;2;#{bg}mVedeu\e[0m"
|
21
|
-
end
|
22
|
-
print "\n"
|
23
|
-
end
|
24
|
-
|
25
|
-
# foreground
|
26
|
-
codes.each_slice(6) do |c|
|
27
|
-
c.each do |k, v|
|
28
|
-
printf "\e[48;2;49m \e[38;5;%s30m%s %3s ", k, v, k
|
29
|
-
end
|
30
|
-
print "\e[48;2;49m\e[38;2;39m\n"
|
31
|
-
end
|
32
|
-
|
33
|
-
# background
|
34
|
-
codes.each_slice(6) do |c|
|
35
|
-
c.each do |k, v|
|
36
|
-
printf "\e[48;5;%sm \e[38;2;30m%s %3s ", k, v, k
|
37
|
-
end
|
38
|
-
print "\e[48;2;49m\e[38;2;39m\n"
|
39
|
-
end
|