vedeu 0.0.2 → 0.0.3
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 +3 -1
- data/lib/vedeu/buffer.rb +22 -9
- data/lib/vedeu/colour.rb +98 -0
- data/lib/vedeu/terminal.rb +25 -0
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/colour_test.rb +57 -0
- data/test/lib/vedeu/terminal_test.rb +30 -0
- metadata +7 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7b69828438f5c4c2e1f77d6e896bbbfd457b274
|
4
|
+
data.tar.gz: ee12ce2adccea5c742fa57481244ddcbe5361c51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b295f951023c13aac3d7a15982c8f9537d9bf44b8e3431b7019950baac7d90ec78f94efcac5549933d7e749b7ff2da2532079727bf5cf70c58281e5ac537c2ee
|
7
|
+
data.tar.gz: 81a59ef69bdb6bea4e16d05b4beaa8f5723de52e651454ea54b22bfeea517c30553b92d4ff79a9b04b657e8acd478f66ab0df3deae6ac77fdf53d6e6920df05f
|
data/lib/vedeu.rb
CHANGED
data/lib/vedeu/buffer.rb
CHANGED
@@ -2,6 +2,8 @@ module Vedeu
|
|
2
2
|
class OutOfRangeError < StandardError; end
|
3
3
|
|
4
4
|
class Buffer
|
5
|
+
include Enumerable
|
6
|
+
|
5
7
|
attr_accessor :buffer
|
6
8
|
|
7
9
|
def initialize(options = {})
|
@@ -9,16 +11,13 @@ module Vedeu
|
|
9
11
|
@buffer = Array.new(height) { Array.new(width) { ' ' } }
|
10
12
|
end
|
11
13
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
y.map do |x|
|
16
|
-
print "'#{x}'"
|
17
|
-
end
|
18
|
-
print "\n"
|
19
|
-
end
|
14
|
+
def each(&block)
|
15
|
+
buffer.each(&block)
|
16
|
+
end
|
20
17
|
|
21
|
-
|
18
|
+
def contents
|
19
|
+
puts
|
20
|
+
buffer.map { |y| y.map { |x| print "'#{x}'" }; puts }
|
22
21
|
end
|
23
22
|
|
24
23
|
def cell(y, x)
|
@@ -90,4 +89,18 @@ module Vedeu
|
|
90
89
|
}
|
91
90
|
end
|
92
91
|
end
|
92
|
+
|
93
|
+
def self.test_Vedeu__Buffer(klass = Vedeu::Buffer)
|
94
|
+
buffer = klass.new(width: 5, height: 3)
|
95
|
+
|
96
|
+
buffer.set_row(0, 'field')
|
97
|
+
buffer.set_row(1, 'grows')
|
98
|
+
buffer.set_row(2, 'maize')
|
99
|
+
|
100
|
+
puts
|
101
|
+
|
102
|
+
buffer.map { |y| y.map { |x| print "#{x}" }; puts }
|
103
|
+
|
104
|
+
puts
|
105
|
+
end
|
93
106
|
end
|
data/lib/vedeu/colour.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
module Vedeu
|
2
|
+
class Colour
|
3
|
+
class << self
|
4
|
+
def set(pair = [])
|
5
|
+
new(pair).set
|
6
|
+
end
|
7
|
+
alias_method :reset, :set
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(pair = [])
|
11
|
+
@pair = pair
|
12
|
+
end
|
13
|
+
|
14
|
+
def set
|
15
|
+
return reset if pair.empty?
|
16
|
+
|
17
|
+
[esc, foreground_code, ';', background_code, 'm'].join
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
attr_reader :pair
|
23
|
+
|
24
|
+
def foreground_code
|
25
|
+
foreground_codes[foreground] || foreground_codes[:default]
|
26
|
+
end
|
27
|
+
|
28
|
+
def background_code
|
29
|
+
background_codes[background] || background_codes[:default]
|
30
|
+
end
|
31
|
+
|
32
|
+
def foreground_codes
|
33
|
+
{
|
34
|
+
black: 30,
|
35
|
+
red: 31,
|
36
|
+
green: 32,
|
37
|
+
yellow: 33,
|
38
|
+
blue: 34,
|
39
|
+
magenta: 35,
|
40
|
+
cyan: 36,
|
41
|
+
white: 37,
|
42
|
+
default: 39,
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
def background_codes
|
47
|
+
{
|
48
|
+
black: 40,
|
49
|
+
red: 41,
|
50
|
+
green: 42,
|
51
|
+
yellow: 43,
|
52
|
+
blue: 44,
|
53
|
+
magenta: 45,
|
54
|
+
cyan: 46,
|
55
|
+
white: 47,
|
56
|
+
default: 49,
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
def foreground
|
61
|
+
pair[0]
|
62
|
+
end
|
63
|
+
|
64
|
+
def background
|
65
|
+
pair[1]
|
66
|
+
end
|
67
|
+
|
68
|
+
def reset
|
69
|
+
[esc, '0m'].join
|
70
|
+
end
|
71
|
+
|
72
|
+
def esc
|
73
|
+
[27.chr, '['].join
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.test_Vedue__Colour(klass = Vedeu::Colour)
|
78
|
+
codes = [
|
79
|
+
:black,
|
80
|
+
:red,
|
81
|
+
:green,
|
82
|
+
:yellow,
|
83
|
+
:blue,
|
84
|
+
:magenta,
|
85
|
+
:cyan,
|
86
|
+
:white,
|
87
|
+
:default
|
88
|
+
]
|
89
|
+
|
90
|
+
codes.each do |fg|
|
91
|
+
codes.each do |bg|
|
92
|
+
print [klass.set([fg, bg]), '*', klass.reset].join
|
93
|
+
end
|
94
|
+
puts
|
95
|
+
end
|
96
|
+
puts
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Vedeu
|
2
|
+
class Terminal
|
3
|
+
def width
|
4
|
+
size[1]
|
5
|
+
end
|
6
|
+
|
7
|
+
def height
|
8
|
+
size[0]
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def size
|
14
|
+
IO.console.winsize
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.test_Vedue__Terminal(klass = Vedeu::Terminal)
|
19
|
+
terminal = klass.new
|
20
|
+
|
21
|
+
puts "Width: #{terminal.width}"
|
22
|
+
puts "Height: #{terminal.height}"
|
23
|
+
puts
|
24
|
+
end
|
25
|
+
end
|
data/lib/vedeu/version.rb
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
describe Colour do
|
5
|
+
let(:klass) { Colour }
|
6
|
+
let(:instance) { klass.new }
|
7
|
+
let(:pair) { [] }
|
8
|
+
|
9
|
+
it 'returns an instance of self' do
|
10
|
+
instance.must_be_instance_of(Vedeu::Colour)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '.set' do
|
14
|
+
subject { klass.set(pair) }
|
15
|
+
|
16
|
+
context 'when both the foreground and background is specified' do
|
17
|
+
let(:pair) { [:red, :yellow] }
|
18
|
+
|
19
|
+
it 'returns the code for red on yellow' do
|
20
|
+
subject.must_equal("\e[31;43m")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when a foreground is specified' do
|
25
|
+
let(:pair) { [:blue] }
|
26
|
+
|
27
|
+
it 'returns the code for blue on default' do
|
28
|
+
subject.must_equal("\e[34;49m")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when a background is specified' do
|
33
|
+
let(:pair) { [nil, :cyan] }
|
34
|
+
|
35
|
+
it 'returns the code for default with cyan background' do
|
36
|
+
subject.must_equal("\e[39;46m")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when an invalid foreground/background is specified' do
|
41
|
+
let(:pair) { [:melon, :raspberry] }
|
42
|
+
|
43
|
+
it 'returns the default code' do
|
44
|
+
subject.must_equal("\e[39;49m")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when no foreground/background is specified' do
|
49
|
+
let(:pair) { [] }
|
50
|
+
|
51
|
+
it 'returns the reset code' do
|
52
|
+
subject.must_equal("\e[0m")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
describe Terminal do
|
5
|
+
let(:klass) { Terminal }
|
6
|
+
let(:instance) { klass.new }
|
7
|
+
let(:console) { stub }
|
8
|
+
|
9
|
+
before do
|
10
|
+
IO.stubs(:console).returns(console)
|
11
|
+
console.stubs(:winsize).returns([25, 80])
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'returns an instance of self' do
|
15
|
+
instance.must_be_instance_of(Vedeu::Terminal)
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#width' do
|
19
|
+
it 'returns the width of the terminal' do
|
20
|
+
instance.width.must_equal(80)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#height' do
|
25
|
+
it 'returns the height of the terminal' do
|
26
|
+
instance.height.must_equal(25)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
@@ -238,8 +238,12 @@ files:
|
|
238
238
|
- features/.gitkeep
|
239
239
|
- lib/vedeu.rb
|
240
240
|
- lib/vedeu/buffer.rb
|
241
|
+
- lib/vedeu/colour.rb
|
242
|
+
- lib/vedeu/terminal.rb
|
241
243
|
- lib/vedeu/version.rb
|
242
244
|
- test/lib/vedeu/buffer_test.rb
|
245
|
+
- test/lib/vedeu/colour_test.rb
|
246
|
+
- test/lib/vedeu/terminal_test.rb
|
243
247
|
- test/test_helper.rb
|
244
248
|
- vedeu.gemspec
|
245
249
|
homepage: http://www.gavinlaking.name/
|
@@ -269,5 +273,7 @@ summary: A terminal case of wonderland.
|
|
269
273
|
test_files:
|
270
274
|
- features/.gitkeep
|
271
275
|
- test/lib/vedeu/buffer_test.rb
|
276
|
+
- test/lib/vedeu/colour_test.rb
|
277
|
+
- test/lib/vedeu/terminal_test.rb
|
272
278
|
- test/test_helper.rb
|
273
279
|
has_rdoc:
|