vedeu 0.0.18 → 0.0.19
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/.rubocop.yml +2 -0
- data/Rakefile +1 -1
- data/lib/vedeu.rb +1 -2
- data/lib/vedeu/output/compositor.rb +1 -1
- data/lib/vedeu/output/output.rb +1 -3
- data/lib/vedeu/process/process.rb +1 -1
- data/lib/vedeu/repository/command.rb +3 -3
- data/lib/vedeu/repository/interface.rb +4 -3
- data/lib/vedeu/repository/interface_repository.rb +3 -5
- data/lib/vedeu/repository/repository.rb +3 -7
- data/lib/vedeu/repository/storage.rb +3 -3
- data/lib/vedeu/support/queue.rb +2 -1
- data/lib/vedeu/support/terminal.rb +7 -7
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/input/input_test.rb +1 -1
- data/test/lib/vedeu/output/colour_test.rb +1 -1
- data/test/lib/vedeu/output/compositor_test.rb +2 -2
- data/test/lib/vedeu/output/directive_test.rb +2 -2
- data/test/lib/vedeu/output/position_test.rb +2 -2
- data/test/lib/vedeu/output/style_test.rb +1 -1
- data/test/lib/vedeu/output/translator_test.rb +1 -1
- data/test/lib/vedeu/repository/command_test.rb +5 -5
- data/test/lib/vedeu/repository/interface_test.rb +5 -3
- data/test/lib/vedeu/repository/repository_test.rb +0 -9
- data/test/lib/vedeu/repository/storage_test.rb +2 -2
- data/test/lib/vedeu/support/event_loop_test.rb +1 -1
- data/test/lib/vedeu/support/queue_test.rb +12 -12
- data/test/lib/vedeu/support/terminal_test.rb +2 -2
- data/test/test_helper.rb +5 -2
- data/vedeu.gemspec +19 -18
- metadata +17 -5
- data/lib/vedeu/output/buffer.rb +0 -96
- data/test/lib/vedeu/output/buffer_test.rb +0 -167
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb683143c7b17b1af0dfa7bed0e800cfa7f0c6c9
|
4
|
+
data.tar.gz: 6b58626d636f27909b8786cdde59d4617cf9f200
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22d4512e7ccbd63da7d11fc08b072458ed4f0622eba0ec69d33a0d75e43b217337b264f353ba97e16a2d270ddc9b963a39ccaade556837ceeff56d7642746561
|
7
|
+
data.tar.gz: b8149ebaf7937cc9af8fb7f33b1825e10c71d73318ae74c611fa5af7e6081f36be540c87aa49a32f8b4c9cefe4cc93dd3639f800c89be8f142d64298acd8a4d2
|
data/.rubocop.yml
ADDED
data/Rakefile
CHANGED
data/lib/vedeu.rb
CHANGED
@@ -11,7 +11,6 @@ require_relative 'vedeu/support/terminal'
|
|
11
11
|
|
12
12
|
require_relative 'vedeu/output/base'
|
13
13
|
require_relative 'vedeu/output/background'
|
14
|
-
require_relative 'vedeu/output/buffer'
|
15
14
|
require_relative 'vedeu/output/compositor'
|
16
15
|
require_relative 'vedeu/output/cursor'
|
17
16
|
require_relative 'vedeu/output/directive'
|
@@ -43,7 +42,7 @@ require_relative 'vedeu/version'
|
|
43
42
|
module Vedeu
|
44
43
|
def self.logger
|
45
44
|
@logger ||= Logger.new(root_path + '/logs/vedeu.log').tap do |log|
|
46
|
-
log.formatter = proc do |
|
45
|
+
log.formatter = proc do |_, time, _, msg|
|
47
46
|
"\n#{time.iso8601}: #{msg}\n"
|
48
47
|
end
|
49
48
|
end
|
data/lib/vedeu/output/output.rb
CHANGED
@@ -12,8 +12,8 @@ module Vedeu
|
|
12
12
|
@attributes = attributes || {}
|
13
13
|
@name = attributes[:name]
|
14
14
|
@klass = attributes[:klass]
|
15
|
-
@keyword = attributes.fetch(:options, {}).fetch(:keyword,
|
16
|
-
@keypress = attributes.fetch(:options, {}).fetch(:keypress,
|
15
|
+
@keyword = attributes.fetch(:options, {}).fetch(:keyword, '')
|
16
|
+
@keypress = attributes.fetch(:options, {}).fetch(:keypress, '')
|
17
17
|
end
|
18
18
|
|
19
19
|
def create
|
@@ -26,7 +26,7 @@ module Vedeu
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def executable
|
29
|
-
|
29
|
+
proc { |*args| attributes[:klass].dispatch(*args) }
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -2,7 +2,7 @@ module Vedeu
|
|
2
2
|
class Interface
|
3
3
|
include Queue
|
4
4
|
|
5
|
-
attr_accessor :id, :attributes, :active, :name
|
5
|
+
attr_accessor :id, :attributes, :active, :name, :cursor, :current
|
6
6
|
|
7
7
|
class << self
|
8
8
|
def create(attributes = {})
|
@@ -16,6 +16,7 @@ module Vedeu
|
|
16
16
|
@active = false
|
17
17
|
@name = attributes[:name]
|
18
18
|
@cursor = attributes.fetch(:cursor, true)
|
19
|
+
@current = []
|
19
20
|
end
|
20
21
|
|
21
22
|
def create
|
@@ -28,9 +29,9 @@ module Vedeu
|
|
28
29
|
|
29
30
|
def update
|
30
31
|
if enqueued?
|
31
|
-
dequeue
|
32
|
+
@current = dequeue
|
32
33
|
else
|
33
|
-
|
34
|
+
@current
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
@@ -24,11 +24,9 @@ module Vedeu
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def find_by_name(value)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
interface
|
27
|
+
query(klass, :name, value).tap do |interface|
|
28
|
+
fail UndefinedInterface unless interface
|
29
|
+
end
|
32
30
|
end
|
33
31
|
|
34
32
|
def update
|
@@ -4,16 +4,12 @@ module Vedeu
|
|
4
4
|
@adaptor ||= Storage.new
|
5
5
|
end
|
6
6
|
|
7
|
-
def adaptor=(adaptor)
|
8
|
-
@adaptor = adaptor
|
9
|
-
end
|
10
|
-
|
11
7
|
def find(id)
|
12
|
-
adaptor.find(
|
8
|
+
adaptor.find(klass, id)
|
13
9
|
end
|
14
10
|
|
15
11
|
def all
|
16
|
-
adaptor.all(
|
12
|
+
adaptor.all(klass)
|
17
13
|
end
|
18
14
|
|
19
15
|
def query(klass, attribute, value)
|
@@ -29,7 +25,7 @@ module Vedeu
|
|
29
25
|
end
|
30
26
|
|
31
27
|
def reset
|
32
|
-
adaptor.reset(
|
28
|
+
adaptor.reset(klass)
|
33
29
|
end
|
34
30
|
end
|
35
31
|
end
|
@@ -2,11 +2,11 @@ module Vedeu
|
|
2
2
|
class Storage
|
3
3
|
def initialize
|
4
4
|
@counter = 0
|
5
|
-
@map
|
5
|
+
@map = {}
|
6
6
|
end
|
7
7
|
|
8
8
|
def create(record)
|
9
|
-
@counter
|
9
|
+
@counter += 1
|
10
10
|
record.id ||= @counter
|
11
11
|
map_for(record)[record.id] = record
|
12
12
|
end
|
@@ -28,7 +28,7 @@ module Vedeu
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def query(klass, attribute, value)
|
31
|
-
map_for_class(klass).select do |
|
31
|
+
map_for_class(klass).select do |_, result|
|
32
32
|
return result if result.send(attribute) == value
|
33
33
|
end
|
34
34
|
|
data/lib/vedeu/support/queue.rb
CHANGED
@@ -63,7 +63,7 @@ module Vedeu
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def clear_line(index)
|
66
|
-
output(Position.set(index, 1) + (
|
66
|
+
output(Position.set(index, 1) + (' ' * width) + Position.set(index, 1))
|
67
67
|
end
|
68
68
|
|
69
69
|
def show_cursor
|
@@ -103,15 +103,15 @@ module Vedeu
|
|
103
103
|
|
104
104
|
def terminal_mode(&block)
|
105
105
|
{
|
106
|
-
cooked:
|
107
|
-
raw:
|
106
|
+
cooked: proc { Terminal.cooked(self, &block) },
|
107
|
+
raw: proc { Terminal.raw(self, &block) }
|
108
108
|
}
|
109
109
|
end
|
110
110
|
|
111
111
|
def cursor_mode
|
112
112
|
{
|
113
|
-
show:
|
114
|
-
hide:
|
113
|
+
show: proc { Terminal.show_cursor },
|
114
|
+
hide: proc { Terminal.hide_cursor }
|
115
115
|
}
|
116
116
|
end
|
117
117
|
|
@@ -128,11 +128,11 @@ module Vedeu
|
|
128
128
|
end
|
129
129
|
|
130
130
|
def clear_screen?
|
131
|
-
|
131
|
+
options.fetch(:clear)
|
132
132
|
end
|
133
133
|
|
134
134
|
def noop
|
135
|
-
|
135
|
+
proc {}
|
136
136
|
end
|
137
137
|
|
138
138
|
def options
|
data/lib/vedeu/version.rb
CHANGED
@@ -23,11 +23,11 @@ module Vedeu
|
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'sets an instance variable' do
|
26
|
-
subject.instance_variable_get(
|
26
|
+
subject.instance_variable_get('@output').must_equal([[]])
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'sets an instance variable' do
|
30
|
-
subject.instance_variable_get(
|
30
|
+
subject.instance_variable_get('@interface').must_equal('dummy')
|
31
31
|
end
|
32
32
|
|
33
33
|
describe '.arrange' do
|
@@ -22,11 +22,11 @@ module Vedeu
|
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'sets an instance variable' do
|
25
|
-
subject.instance_variable_get(
|
25
|
+
subject.instance_variable_get('@interface').must_be_instance_of(Interface)
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'sets an instance variable' do
|
29
|
-
subject.instance_variable_get(
|
29
|
+
subject.instance_variable_get('@directives').must_be_instance_of(Hash)
|
30
30
|
end
|
31
31
|
|
32
32
|
describe '.enact' do
|
@@ -24,8 +24,8 @@ module Vedeu
|
|
24
24
|
|
25
25
|
context 'when coordinates are provided' do
|
26
26
|
let(:subject) { described_class.set(y, x) }
|
27
|
-
let(:y)
|
28
|
-
let(:x)
|
27
|
+
let(:y) { 12 }
|
28
|
+
let(:x) { 19 }
|
29
29
|
|
30
30
|
it 'returns a position escape sequence' do
|
31
31
|
subject.must_equal("\e[12;19H")
|
@@ -3,7 +3,7 @@ require_relative '../../../test_helper'
|
|
3
3
|
module Vedeu
|
4
4
|
describe Translator do
|
5
5
|
let(:described_class) { Translator }
|
6
|
-
let(:html_colour)
|
6
|
+
let(:html_colour) {}
|
7
7
|
|
8
8
|
it 'returns a Translator instance' do
|
9
9
|
described_class.new(html_colour).must_be_instance_of(Translator)
|
@@ -21,23 +21,23 @@ module Vedeu
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'sets an instance variable' do
|
24
|
-
subject.instance_variable_get(
|
24
|
+
subject.instance_variable_get('@attributes').must_equal(attributes)
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'sets an instance variable' do
|
28
|
-
subject.instance_variable_get(
|
28
|
+
subject.instance_variable_get('@name').must_equal('dummy')
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'sets an instance variable' do
|
32
|
-
subject.instance_variable_get(
|
32
|
+
subject.instance_variable_get('@klass').must_equal(DummyCommand)
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'sets an instance variable' do
|
36
|
-
subject.instance_variable_get(
|
36
|
+
subject.instance_variable_get('@keyword').must_equal('dummy')
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'sets an instance variable' do
|
40
|
-
subject.instance_variable_get(
|
40
|
+
subject.instance_variable_get('@keypress').must_equal('d')
|
41
41
|
end
|
42
42
|
|
43
43
|
describe '#create' do
|
@@ -19,20 +19,22 @@ module Vedeu
|
|
19
19
|
}
|
20
20
|
let(:result) {}
|
21
21
|
|
22
|
+
after { InterfaceRepository.reset }
|
23
|
+
|
22
24
|
it 'returns an Interface instance' do
|
23
25
|
subject.must_be_instance_of(Interface)
|
24
26
|
end
|
25
27
|
|
26
28
|
it 'sets an instance variable' do
|
27
|
-
subject.instance_variable_get(
|
29
|
+
subject.instance_variable_get('@attributes').must_equal(attributes)
|
28
30
|
end
|
29
31
|
|
30
32
|
it 'sets an instance variable' do
|
31
|
-
subject.instance_variable_get(
|
33
|
+
subject.instance_variable_get('@active').must_equal(false)
|
32
34
|
end
|
33
35
|
|
34
36
|
it 'sets an instance variable' do
|
35
|
-
subject.instance_variable_get(
|
37
|
+
subject.instance_variable_get('@name').must_equal('dummy')
|
36
38
|
end
|
37
39
|
|
38
40
|
describe '#create' do
|
@@ -36,15 +36,6 @@ module Vedeu
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
describe '#adaptor=' do
|
40
|
-
let(:subject) { described_class.adaptor=(adaptor) }
|
41
|
-
let(:adaptor) { Storage.new }
|
42
|
-
|
43
|
-
it 'returns a Storage' do
|
44
|
-
subject.must_be_instance_of(Storage)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
39
|
describe '#find' do
|
49
40
|
let(:subject) { described_class.find(id) }
|
50
41
|
let(:id) { @dummy.id }
|
@@ -12,11 +12,11 @@ module Vedeu
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'sets an instance variable' do
|
15
|
-
subject.instance_variable_get(
|
15
|
+
subject.instance_variable_get('@counter').must_equal(0)
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'sets an instance variable' do
|
19
|
-
subject.instance_variable_get(
|
19
|
+
subject.instance_variable_get('@map').must_equal({})
|
20
20
|
end
|
21
21
|
|
22
22
|
describe '#create' do
|
@@ -4,21 +4,19 @@ module Vedeu
|
|
4
4
|
describe Queue do
|
5
5
|
let(:described_class) { Queue }
|
6
6
|
|
7
|
-
before { described_class.enqueue(:result) }
|
8
|
-
after { described_class.clear }
|
9
|
-
|
10
7
|
describe '.dequeue' do
|
11
8
|
let(:subject) { described_class.dequeue }
|
12
9
|
|
13
10
|
context 'when the queue is empty' do
|
14
|
-
before { described_class.clear }
|
15
|
-
|
16
11
|
it 'returns a NilClass' do
|
17
12
|
subject.must_be_instance_of(NilClass)
|
18
13
|
end
|
19
14
|
end
|
20
15
|
|
21
16
|
context 'when the queue is not empty' do
|
17
|
+
before { described_class.enqueue(:result) }
|
18
|
+
after { described_class.clear }
|
19
|
+
|
22
20
|
it 'returns the first entry added' do
|
23
21
|
subject.must_be_instance_of(Symbol)
|
24
22
|
end
|
@@ -26,15 +24,16 @@ module Vedeu
|
|
26
24
|
end
|
27
25
|
|
28
26
|
describe '.enqueue' do
|
29
|
-
let(:subject) { described_class.enqueue(result) }
|
30
|
-
|
27
|
+
let(:subject) { described_class.enqueue(:result) }
|
28
|
+
|
29
|
+
after { described_class.clear }
|
31
30
|
|
32
31
|
it 'returns an Array' do
|
33
32
|
subject.must_be_instance_of(Array)
|
34
33
|
end
|
35
34
|
|
36
35
|
it 'contains the enqueued item' do
|
37
|
-
subject.size.must_equal(
|
36
|
+
subject.size.must_equal(1)
|
38
37
|
end
|
39
38
|
end
|
40
39
|
|
@@ -42,14 +41,15 @@ module Vedeu
|
|
42
41
|
let(:subject) { described_class.enqueued? }
|
43
42
|
|
44
43
|
context 'when the queue contains data' do
|
44
|
+
before { described_class.enqueue(:result) }
|
45
|
+
after { described_class.clear }
|
46
|
+
|
45
47
|
it 'returns a TrueClass' do
|
46
48
|
subject.must_be_instance_of(TrueClass)
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
50
52
|
context 'when the queue is empty' do
|
51
|
-
before { described_class.clear }
|
52
|
-
|
53
53
|
it 'returns a FalseClass' do
|
54
54
|
subject.must_be_instance_of(FalseClass)
|
55
55
|
end
|
@@ -64,7 +64,7 @@ module Vedeu
|
|
64
64
|
end
|
65
65
|
|
66
66
|
it 'returns the size of the queue' do
|
67
|
-
subject.must_equal(
|
67
|
+
subject.must_equal(0)
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
@@ -88,7 +88,7 @@ module Vedeu
|
|
88
88
|
end
|
89
89
|
|
90
90
|
it 'returns the queue as a String' do
|
91
|
-
subject.must_equal(
|
91
|
+
subject.must_equal('[]')
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end
|
@@ -21,7 +21,7 @@ module Vedeu
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'returns the entered string' do
|
24
|
-
subject.must_equal(
|
24
|
+
subject.must_equal('test')
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -33,7 +33,7 @@ module Vedeu
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'returns the output' do
|
36
|
-
subject.must_equal(
|
36
|
+
subject.must_equal('')
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
data/test/test_helper.rb
CHANGED
@@ -6,7 +6,7 @@ require 'pry'
|
|
6
6
|
SimpleCov.start do
|
7
7
|
command_name 'MiniTest::Spec'
|
8
8
|
add_filter '/test/'
|
9
|
-
end unless ENV[
|
9
|
+
end unless ENV['no_simplecov']
|
10
10
|
|
11
11
|
module MiniTest
|
12
12
|
class Spec
|
@@ -22,7 +22,10 @@ end
|
|
22
22
|
|
23
23
|
# commented out by default (makes tests slower)
|
24
24
|
# require 'minitest/reporters'
|
25
|
-
# Minitest::Reporters.use!(
|
25
|
+
# Minitest::Reporters.use!(
|
26
|
+
# Minitest::Reporters::DefaultReporter.new({ color: true, slow_count: 5 })
|
27
|
+
# Minitest::Reporters::SpecReporter.new
|
28
|
+
# )
|
26
29
|
|
27
30
|
require_relative '../lib/vedeu.rb'
|
28
31
|
|
data/vedeu.gemspec
CHANGED
@@ -4,29 +4,30 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'vedeu/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'vedeu'
|
8
8
|
spec.version = Vedeu::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Gavin Laking']
|
10
|
+
spec.email = ['gavinlaking@gmail.com']
|
11
11
|
spec.summary = %q{A terminal case of wonderland.}
|
12
|
-
spec.homepage =
|
13
|
-
spec.license =
|
12
|
+
spec.homepage = 'http://www.gavinlaking.name/'
|
13
|
+
spec.license = 'MIT'
|
14
14
|
|
15
15
|
spec.files = `git ls-files -z`.split("\x0")
|
16
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
-
spec.require_paths = [
|
18
|
+
spec.require_paths = ['lib']
|
19
19
|
|
20
|
-
spec.add_development_dependency
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
30
|
-
spec.add_development_dependency
|
31
|
-
spec.add_development_dependency
|
20
|
+
spec.add_development_dependency 'aruba', '0.5.4'
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.5'
|
22
|
+
spec.add_development_dependency 'cucumber', '1.3.15'
|
23
|
+
spec.add_development_dependency 'guard-cucumber', '1.4.1'
|
24
|
+
spec.add_development_dependency 'guard', '2.6.1'
|
25
|
+
spec.add_development_dependency 'guard-minitest', '2.3.0'
|
26
|
+
spec.add_development_dependency 'minitest', '5.3.4'
|
27
|
+
spec.add_development_dependency 'minitest-reporters', '1.0.4'
|
28
|
+
spec.add_development_dependency 'mocha', '1.1.0'
|
29
|
+
spec.add_development_dependency 'pry', '0.10.0'
|
30
|
+
spec.add_development_dependency 'rake', '10.3.2'
|
31
|
+
spec.add_development_dependency 'rubocop'
|
32
|
+
spec.add_development_dependency 'simplecov', '0.8.2'
|
32
33
|
end
|
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.
|
4
|
+
version: 0.0.19
|
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-06-
|
11
|
+
date: 2014-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aruba
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - '='
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: 10.3.2
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rubocop
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: simplecov
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -187,6 +201,7 @@ extensions: []
|
|
187
201
|
extra_rdoc_files: []
|
188
202
|
files:
|
189
203
|
- ".gitignore"
|
204
|
+
- ".rubocop.yml"
|
190
205
|
- ".ruby-version"
|
191
206
|
- Gemfile
|
192
207
|
- Guardfile
|
@@ -214,7 +229,6 @@ files:
|
|
214
229
|
- lib/vedeu/launcher.rb
|
215
230
|
- lib/vedeu/output/background.rb
|
216
231
|
- lib/vedeu/output/base.rb
|
217
|
-
- lib/vedeu/output/buffer.rb
|
218
232
|
- lib/vedeu/output/colour.rb
|
219
233
|
- lib/vedeu/output/compositor.rb
|
220
234
|
- lib/vedeu/output/cursor.rb
|
@@ -246,7 +260,6 @@ files:
|
|
246
260
|
- test/lib/vedeu/launcher_test.rb
|
247
261
|
- test/lib/vedeu/output/background_test.rb
|
248
262
|
- test/lib/vedeu/output/base_test.rb
|
249
|
-
- test/lib/vedeu/output/buffer_test.rb
|
250
263
|
- test/lib/vedeu/output/colour_test.rb
|
251
264
|
- test/lib/vedeu/output/compositor_test.rb
|
252
265
|
- test/lib/vedeu/output/cursor_test.rb
|
@@ -310,7 +323,6 @@ test_files:
|
|
310
323
|
- test/lib/vedeu/launcher_test.rb
|
311
324
|
- test/lib/vedeu/output/background_test.rb
|
312
325
|
- test/lib/vedeu/output/base_test.rb
|
313
|
-
- test/lib/vedeu/output/buffer_test.rb
|
314
326
|
- test/lib/vedeu/output/colour_test.rb
|
315
327
|
- test/lib/vedeu/output/compositor_test.rb
|
316
328
|
- test/lib/vedeu/output/cursor_test.rb
|
data/lib/vedeu/output/buffer.rb
DELETED
@@ -1,96 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
class OutOfRangeError < StandardError; end
|
3
|
-
|
4
|
-
class Buffer
|
5
|
-
include Enumerable
|
6
|
-
|
7
|
-
attr_accessor :buffer
|
8
|
-
|
9
|
-
def initialize(options = {})
|
10
|
-
@options = options
|
11
|
-
@buffer = Array.new(height) { Array.new(width) { :cell } }
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_s
|
15
|
-
each { |row| puts row.inspect }
|
16
|
-
nil
|
17
|
-
end
|
18
|
-
|
19
|
-
def each(&block)
|
20
|
-
buffer.each(&block)
|
21
|
-
end
|
22
|
-
|
23
|
-
def cell(y, x)
|
24
|
-
raise OutOfRangeError if invalid_reference?(y, x)
|
25
|
-
buffer[y][x]
|
26
|
-
end
|
27
|
-
|
28
|
-
def set_cell(y, x, v = '')
|
29
|
-
raise OutOfRangeError if invalid_reference?(y, x)
|
30
|
-
buffer[y][x] = v
|
31
|
-
end
|
32
|
-
|
33
|
-
def set_row(y = 0, v = '')
|
34
|
-
if v.is_a?(String)
|
35
|
-
v.chars.each_with_index { |c, i| set_cell(y, i, c) }
|
36
|
-
else
|
37
|
-
v.each_with_index { |el, i| set_cell(y, i, el) }
|
38
|
-
end
|
39
|
-
row(y)
|
40
|
-
end
|
41
|
-
|
42
|
-
def row(y = 0)
|
43
|
-
buffer[y]
|
44
|
-
end
|
45
|
-
alias_method :y, :row
|
46
|
-
|
47
|
-
def set_column(x = 0, v = '')
|
48
|
-
if v.is_a?(String)
|
49
|
-
v.chars.each_with_index { |c, i| set_cell(i, x, c) }
|
50
|
-
else
|
51
|
-
v.each_with_index { |el, i| set_cell(i, x, el) }
|
52
|
-
end
|
53
|
-
column(x)
|
54
|
-
end
|
55
|
-
|
56
|
-
def column(x = 0)
|
57
|
-
buffer.inject([]) { |a, e| a << e[x] }
|
58
|
-
end
|
59
|
-
alias_method :x, :column
|
60
|
-
|
61
|
-
private
|
62
|
-
|
63
|
-
def invalid_reference?(y, x)
|
64
|
-
invalid_line?(y) || invalid_column?(x)
|
65
|
-
end
|
66
|
-
|
67
|
-
def invalid_line?(y)
|
68
|
-
y < 0 || y > (height - 1)
|
69
|
-
end
|
70
|
-
|
71
|
-
def invalid_column?(x)
|
72
|
-
x < 0 || x > (width - 1)
|
73
|
-
end
|
74
|
-
|
75
|
-
def width
|
76
|
-
options.fetch(:width)
|
77
|
-
end
|
78
|
-
alias_method :columns, :width
|
79
|
-
|
80
|
-
def height
|
81
|
-
options.fetch(:height)
|
82
|
-
end
|
83
|
-
alias_method :lines, :height
|
84
|
-
|
85
|
-
def options
|
86
|
-
defaults.merge!(@options)
|
87
|
-
end
|
88
|
-
|
89
|
-
def defaults
|
90
|
-
{
|
91
|
-
width: Terminal.width,
|
92
|
-
height: Terminal.height
|
93
|
-
}
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
@@ -1,167 +0,0 @@
|
|
1
|
-
require_relative '../../../test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
describe Buffer do
|
5
|
-
let(:described_class) { Buffer }
|
6
|
-
let(:described_instance) { described_class.new(options) }
|
7
|
-
let(:options) { { width: 4, height: 3 } }
|
8
|
-
let(:subject) { described_instance }
|
9
|
-
|
10
|
-
it 'returns a Buffer instance' do
|
11
|
-
subject.must_be_instance_of(Buffer)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'sets an instance variable' do
|
15
|
-
subject.instance_variable_get("@options").must_equal(options)
|
16
|
-
end
|
17
|
-
|
18
|
-
describe '#to_s' do
|
19
|
-
let(:subject) { capture_io { described_instance.to_s }.join }
|
20
|
-
|
21
|
-
# real method should return NilClass; want to capture io rather
|
22
|
-
# than have it spew into minitest output in terminal; see test
|
23
|
-
# below.
|
24
|
-
# it { subject.must_be_instance_of(NilClass) }
|
25
|
-
|
26
|
-
it "outputs the content of the buffer" do
|
27
|
-
subject.must_equal("[:cell, :cell, :cell, :cell]\n" \
|
28
|
-
"[:cell, :cell, :cell, :cell]\n" \
|
29
|
-
"[:cell, :cell, :cell, :cell]\n")
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe '#each' do
|
34
|
-
let(:subject) { described_instance.each }
|
35
|
-
|
36
|
-
it 'returns an Enumerator' do
|
37
|
-
subject.must_be_instance_of(Enumerator)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe '#cell' do
|
42
|
-
let(:subject) { described_instance.cell(y, x) }
|
43
|
-
let(:y) { 1 }
|
44
|
-
let(:x) { 2 }
|
45
|
-
|
46
|
-
it 'returns a Symbol' do
|
47
|
-
subject.must_be_instance_of(Symbol)
|
48
|
-
end
|
49
|
-
|
50
|
-
context 'when the reference is in range' do
|
51
|
-
it 'returns the value at that location' do
|
52
|
-
subject.must_equal(:cell)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
context 'when the reference is out of range' do
|
57
|
-
let(:y) { 4 }
|
58
|
-
|
59
|
-
it 'raises an exception' do
|
60
|
-
proc { subject }.must_raise(OutOfRangeError)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe '#set_cell' do
|
66
|
-
let(:subject) { described_instance.set_cell(y, x, v) }
|
67
|
-
let(:y) { 1 }
|
68
|
-
let(:x) { 2 }
|
69
|
-
let(:v) { '*' }
|
70
|
-
|
71
|
-
it 'returns a String' do
|
72
|
-
subject.must_be_instance_of(String)
|
73
|
-
end
|
74
|
-
|
75
|
-
context 'when the reference is in range' do
|
76
|
-
it 'returns the value at that location' do
|
77
|
-
subject.must_equal('*')
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context 'when the reference is out of range' do
|
82
|
-
let(:y) { 3 }
|
83
|
-
let(:x) { 4 }
|
84
|
-
|
85
|
-
it 'raises an exception' do
|
86
|
-
proc { subject }.must_raise(OutOfRangeError)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
describe '#set_row' do
|
92
|
-
let(:subject) { described_instance.set_row(y, v) }
|
93
|
-
let(:y) { 1 }
|
94
|
-
let(:v) { '****' }
|
95
|
-
|
96
|
-
it 'returns an Array' do
|
97
|
-
subject.must_be_instance_of(Array)
|
98
|
-
end
|
99
|
-
|
100
|
-
context 'when the value is a String' do
|
101
|
-
let(:v) { '****' }
|
102
|
-
|
103
|
-
it 'sets the row' do
|
104
|
-
subject.must_equal(['*', '*', '*', '*'])
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
context 'when the value is an Array' do
|
109
|
-
let(:v) { ['*','*','*','*'] }
|
110
|
-
|
111
|
-
it 'sets the row' do
|
112
|
-
subject.must_equal(['*', '*', '*', '*'])
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
describe '#row' do
|
118
|
-
let(:subject) { described_instance.row }
|
119
|
-
|
120
|
-
it 'returns an Array' do
|
121
|
-
subject.must_be_instance_of(Array)
|
122
|
-
end
|
123
|
-
|
124
|
-
it 'returns the content of the row at position y' do
|
125
|
-
subject.must_equal([:cell, :cell, :cell, :cell])
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
describe '#set_column' do
|
130
|
-
let(:subject) { described_instance.set_column(x, v) }
|
131
|
-
let(:x) { 2 }
|
132
|
-
let(:v) { '***' }
|
133
|
-
|
134
|
-
it 'returns an Array' do
|
135
|
-
subject.must_be_instance_of(Array)
|
136
|
-
end
|
137
|
-
|
138
|
-
context 'when the value is a String' do
|
139
|
-
let(:v) { '***' }
|
140
|
-
|
141
|
-
it 'sets the row' do
|
142
|
-
subject.must_equal(['*', '*', '*'])
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
context 'when the value is an Array' do
|
147
|
-
let(:v) { ['*', '*', '*'] }
|
148
|
-
|
149
|
-
it 'sets the row' do
|
150
|
-
subject.must_equal(['*', '*', '*'])
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
describe '#column' do
|
156
|
-
let(:subject) { described_instance.column }
|
157
|
-
|
158
|
-
it 'returns an Array' do
|
159
|
-
subject.must_be_instance_of(Array)
|
160
|
-
end
|
161
|
-
|
162
|
-
it 'returns the content of the column at position x' do
|
163
|
-
subject.must_equal([:cell, :cell, :cell])
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|
167
|
-
end
|