vedeu 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a1399f6a76d69ccbe0719a7b5fe44e830f875df
4
- data.tar.gz: e12da3c72a4206b001e7e4edcebf92184bf16cfa
3
+ metadata.gz: 78eafb32b9a942a36cbc9ed4d65bf96542e39c03
4
+ data.tar.gz: 6e79f409e8be1e884060585b04066ae0995e7aac
5
5
  SHA512:
6
- metadata.gz: 3ed55f709b264fea16d85ced18e5b39db468fa0a7e190ef0e05dd46fef640561d83f08efa634e97e498c92175aa042d21458f3609639795761892f376df16fcf
7
- data.tar.gz: aad70ea8b6d3486cfeabebf1227b779553dcf224ffc6232e47d5b292515ea86a6eabc9b6a03a18e2433c7ef8f12ee367291beea132f264c68b2d00971eefbbe8
6
+ metadata.gz: 3fb0a166b340bae5d0ba423c698f6304f20777291ab316defa98b5b4dbcdf91fed7160b1c567663346052fdced575e11d32fc0aec7fc6c59cae10ce48993cccb
7
+ data.tar.gz: c4e0c6cdea25d795fde8bc46358f74656efc15e69609efcd390c24d8464ce9f1163dcceaf44337ecf6f9b05081e7ce2d248a692e7905ebe0899440546b190c71
data/README.md CHANGED
@@ -24,32 +24,40 @@ TODO: Write detailed documentation
24
24
 
25
25
  ## Notes
26
26
 
27
- Application
28
- |-- Interfaces
29
- | |-- Dummy < Interface
30
- |
31
- |-- Terminal
32
- |-- Esc
33
- |-- Colour
34
-
35
- Base
36
- |-- Translator
37
- |-- Esc
38
- |-- Colour
39
-
40
- Compositor
41
- |-- Colour
42
- | |-- Foreground < Base
43
- | |-- Background < Base
44
- | |-- Translator
45
- |
46
- |-- Esc
47
- |-- Colour
48
-
49
- Interface
50
- |-- Terminal
51
- |-- Esc
52
- |-- Colour
27
+ Application
28
+ |-- Interfaces
29
+ | |-- Dummy < Interface
30
+ |
31
+ |-- Process
32
+ | |-- Commands
33
+ | | |-- Command
34
+ | |
35
+ | |-- Compositor
36
+ | | |-- Directive
37
+ | | | |-- Colour
38
+ | | | | |-- Foreground < Base
39
+ | | | | |-- Background < Base
40
+ | | | |
41
+ | | | |-- Position
42
+ | | | |-- Style
43
+ | | | |-- Esc
44
+ | | |
45
+ | | |-- Terminal
46
+ | |
47
+ | |-- Terminal
48
+ |
49
+ |-- Terminal
50
+
51
+ Base
52
+ |-- Translator
53
+ |-- Esc
54
+
55
+ Interface
56
+ |-- Terminal
57
+
58
+ Terminal
59
+ |-- Esc
60
+ |-- Position
53
61
 
54
62
 
55
63
  ## Contributing
data/lib/vedeu.rb CHANGED
@@ -16,9 +16,11 @@ require_relative 'vedeu/output/translator'
16
16
 
17
17
  require_relative 'vedeu/interface/interfaces'
18
18
  require_relative 'vedeu/interface/interface'
19
+ require_relative 'vedeu/interface/dummy'
19
20
 
20
21
  require_relative 'vedeu/process/commands'
21
22
  require_relative 'vedeu/process/command'
23
+ require_relative 'vedeu/process/exit'
22
24
  require_relative 'vedeu/process/process'
23
25
 
24
26
  require_relative 'vedeu/application'
@@ -1,8 +1,8 @@
1
1
  module Vedeu
2
2
  class Application
3
3
  class << self
4
- def start(interfaces = nil, options = {}, &block)
5
- new(interfaces, options).start(&block)
4
+ def start(interfaces = nil, options = {})
5
+ new(interfaces, options).start
6
6
  end
7
7
  end
8
8
 
@@ -10,15 +10,9 @@ module Vedeu
10
10
  @interfaces, @options = interfaces, options
11
11
  end
12
12
 
13
- def start(&block)
14
- if block_given?
15
-
16
- else
17
- Terminal.open(options) do
18
- initial_state
19
-
20
- Process.event_loop
21
- end
13
+ def start
14
+ Terminal.open(options) do
15
+ Process.main_sequence(interfaces)
22
16
  end
23
17
  ensure
24
18
  Terminal.close
@@ -26,15 +20,7 @@ module Vedeu
26
20
 
27
21
  private
28
22
 
29
- attr_reader :options
30
-
31
- def initial_state
32
- interfaces.initial
33
- end
34
-
35
- def interfaces
36
- @interfaces ||= Interfaces.default
37
- end
23
+ attr_reader :interfaces, :options
38
24
 
39
25
  def options
40
26
  defaults.merge!(@options)
@@ -0,0 +1,9 @@
1
+ module Vedeu
2
+ class Dummy < Interface
3
+ def initial_state; end
4
+
5
+ # def input; end
6
+
7
+ # def output; end
8
+ end
9
+ end
@@ -1,37 +1,62 @@
1
1
  module Vedeu
2
+ class NotImplementedError < StandardError; end
3
+
2
4
  class Interface
3
5
  def initialize(options = {})
4
6
  @options = options
5
7
  end
6
8
 
7
- def initial; end
9
+ def initial_state
10
+ raise NotImplementedError, 'Subclasses implement this method.'
11
+ end
8
12
 
9
- def main
10
- output
13
+ def event_loop
14
+ while true do
15
+ command = input
11
16
 
12
- input
13
- end
17
+ break if command == :stop
14
18
 
15
- def output
16
- Terminal.hide_cursor
19
+ output(command)
20
+ end
17
21
  end
18
22
 
19
23
  def input
20
- Terminal.show_cursor
24
+ evaluate
25
+ end
26
+
27
+ def output(command)
28
+ Compositor.write(command)
29
+ end
30
+
31
+ private
32
+
33
+ attr_reader :options
34
+
35
+ def evaluate
36
+ Commands.execute(read)
37
+ end
38
+
39
+ def read
40
+ Terminal.input
21
41
  end
22
42
 
23
43
  def width
24
- options[:width] || Terminal.width
44
+ options[:width]
25
45
  end
26
46
 
27
47
  def height
28
- options[:height] || Terminal.height
48
+ options[:height]
29
49
  end
30
50
 
31
- private
51
+ def options
52
+ defaults.merge!(@options)
53
+ end
32
54
 
33
- attr_reader :options
55
+ def defaults
56
+ {
57
+ width: Terminal.width,
58
+ height: Terminal.height
59
+ }
60
+ end
34
61
  end
35
-
36
- class Dummy < Interface; end
37
62
  end
@@ -29,12 +29,12 @@ module Vedeu
29
29
  interfaces
30
30
  end
31
31
 
32
- def initial
33
- interfaces.values.map { |io| io.call.initial }
32
+ def initial_state
33
+ interfaces.values.map { |io| io.call.initial_state }
34
34
  end
35
35
 
36
- def main
37
- interfaces.values.map { |io| io.call.main }
36
+ def event_loop
37
+ interfaces.values.map { |io| io.call.event_loop }
38
38
  end
39
39
 
40
40
  private
@@ -49,10 +49,4 @@ module Vedeu
49
49
  commands.fetch(command, false)
50
50
  end
51
51
  end
52
-
53
- class Exit
54
- def self.dispatch
55
- :stop
56
- end
57
- end
58
52
  end
@@ -0,0 +1,7 @@
1
+ module Vedeu
2
+ class Exit
3
+ def self.dispatch
4
+ :stop
5
+ end
6
+ end
7
+ end
@@ -1,31 +1,33 @@
1
1
  module Vedeu
2
2
  class Process
3
3
  class << self
4
- def event_loop
5
- new.event_loop
4
+ def main_sequence(interfaces = nil)
5
+ new(interfaces).main_sequence
6
6
  end
7
7
  end
8
8
 
9
- def initialize; end
10
-
11
- def event_loop
12
- while true do
13
- command = evaluate
9
+ def initialize(interfaces = nil)
10
+ @interfaces = interfaces
11
+ end
14
12
 
15
- break if command == :stop
13
+ def main_sequence
14
+ initial_state
16
15
 
17
- Compositor.write(command)
18
- end
16
+ event_loop
19
17
  end
20
18
 
21
19
  private
22
20
 
23
- def evaluate
24
- Commands.execute(read)
21
+ def event_loop
22
+ interfaces.event_loop
23
+ end
24
+
25
+ def initial_state
26
+ interfaces.initial_state
25
27
  end
26
28
 
27
- def read
28
- Terminal.input
29
+ def interfaces
30
+ @interfaces ||= Interfaces.default
29
31
  end
30
32
  end
31
33
  end
@@ -85,7 +85,7 @@ module Vedeu
85
85
  def initial_setup!
86
86
  Terminal.clear_screen if clear_screen?
87
87
  set_cursor
88
- output(Position.reset)
88
+ Terminal.output(Position.reset)
89
89
  end
90
90
 
91
91
  private
data/lib/vedeu/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vedeu
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -2,10 +2,10 @@ require_relative '../../test_helper'
2
2
 
3
3
  module Vedeu
4
4
  describe Application do
5
- let(:described_class){ Application }
6
- let(:instance) { described_class.new(interfaces, options) }
7
- let(:interfaces) {}
8
- let(:options) { {} }
5
+ let(:described_class) { Application }
6
+ let(:instance) { described_class.new(interfaces, options) }
7
+ let(:interfaces) {}
8
+ let(:options) { {} }
9
9
 
10
10
  describe '#start' do
11
11
  before { Esc.stubs(:clear).returns('') }
@@ -0,0 +1,22 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Vedeu
4
+ describe Dummy do
5
+ let(:described_class) { Dummy }
6
+ let(:instance) { described_class.new }
7
+
8
+ describe '#initial_state' do
9
+ subject { instance.initial_state }
10
+
11
+ it { subject.must_be_instance_of(NilClass) }
12
+ end
13
+
14
+ describe '#input' do
15
+ subject { instance.input }
16
+ end
17
+
18
+ describe '#output' do
19
+ subject { instance.output }
20
+ end
21
+ end
22
+ end
@@ -2,75 +2,39 @@ require_relative '../../../test_helper'
2
2
 
3
3
  module Vedeu
4
4
  describe Interface do
5
- let(:described_class) { Interface }
6
- let(:instance) { described_class.new(options) }
7
- let(:options) { {} }
5
+ let(:described_class) { Interface }
6
+ let(:instance) { described_class.new(options) }
7
+ let(:options) { {} }
8
8
 
9
9
  before do
10
10
  Terminal.stubs(:width).returns(80)
11
11
  Terminal.stubs(:height).returns(25)
12
- Terminal.stubs(:show_cursor)
13
- Terminal.stubs(:hide_cursor)
14
12
  end
15
13
 
16
14
  it { instance.must_be_instance_of(Interface) }
17
15
 
18
- describe '#initial' do
19
- subject { instance.initial }
16
+ describe '#initial_state' do
17
+ subject { instance.initial_state }
20
18
 
21
- context 'capturing output' do
22
- let(:io) { capture_io { subject }.join }
23
-
24
- it { io.must_be_instance_of(String) }
25
- end
19
+ it { proc { subject }.must_raise(NotImplementedError) }
26
20
  end
27
21
 
28
- describe '#main' do
29
- subject { instance.main }
30
-
31
- it { subject.must_be_instance_of(NilClass) }
22
+ describe '#event_loop' do
23
+ subject { instance.event_loop }
32
24
 
33
- context 'capturing output' do
34
- let(:io) { capture_io { subject }.join }
35
-
36
- it { io.must_be_instance_of(String) }
37
- end
25
+ it { skip }
38
26
  end
39
27
 
40
28
  describe '#input' do
41
29
  subject { instance.input }
42
30
 
43
- it { subject.must_be_instance_of(NilClass) }
44
-
45
- context 'capturing output' do
46
- let(:io) { capture_io { subject }.join }
47
-
48
- it { io.must_be_instance_of(String) }
49
- end
31
+ it { skip }
50
32
  end
51
33
 
52
34
  describe '#output' do
53
35
  subject { instance.output }
54
36
 
55
- it { subject.must_be_instance_of(NilClass) }
56
-
57
- context 'capturing output' do
58
- let(:io) { capture_io { subject }.join }
59
-
60
- it { io.must_be_instance_of(String) }
61
- end
62
- end
63
-
64
- describe '#width' do
65
- subject { instance.width }
66
-
67
- it { subject.must_be_instance_of(Fixnum) }
68
- end
69
-
70
- describe '#height' do
71
- subject { instance.height }
72
-
73
- it { subject.must_be_instance_of(Fixnum) }
37
+ it { skip }
74
38
  end
75
39
  end
76
40
  end
@@ -48,14 +48,14 @@ module Vedeu
48
48
  it { subject.must_be_instance_of(Hash) }
49
49
  end
50
50
 
51
- describe '#initial' do
52
- subject { instance.initial }
51
+ describe '#initial_state' do
52
+ subject { instance.initial_state }
53
53
 
54
54
  it { subject.must_be_instance_of(Array) }
55
55
  end
56
56
 
57
- describe '#main' do
58
- subject { instance.main }
57
+ describe '#event_loop' do
58
+ subject { instance.event_loop }
59
59
 
60
60
  it { subject.must_be_instance_of(Array) }
61
61
  end
@@ -47,16 +47,4 @@ module Vedeu
47
47
  it { subject.must_be_instance_of(String) }
48
48
  end
49
49
  end
50
-
51
- describe Exit do
52
- let(:described_class) { Exit }
53
-
54
- describe '.dispatch' do
55
- subject { described_class.dispatch }
56
-
57
- it { subject.must_be_instance_of(Symbol) }
58
-
59
- it { subject.must_equal(:stop) }
60
- end
61
- end
62
50
  end
@@ -0,0 +1,15 @@
1
+ require_relative '../../../test_helper'
2
+
3
+ module Vedeu
4
+ describe Exit do
5
+ let(:described_class) { Exit }
6
+
7
+ describe '.dispatch' do
8
+ subject { described_class.dispatch }
9
+
10
+ it { subject.must_be_instance_of(Symbol) }
11
+
12
+ it { subject.must_equal(:stop) }
13
+ end
14
+ end
15
+ end
@@ -2,9 +2,8 @@ require_relative '../../../test_helper'
2
2
 
3
3
  module Vedeu
4
4
  describe Process do
5
- let(:described_class) { Process }
6
- let(:instance) { described_class.new }
7
- let(:block) {}
5
+ let(:described_class) { Process }
6
+ let(:instance) { described_class.new }
8
7
 
9
8
  it { instance.must_be_instance_of(Process) }
10
9
  end
@@ -5,28 +5,20 @@ trap('INT') { exit! }
5
5
 
6
6
  require_relative '../../../../lib/vedeu'
7
7
 
8
- # define an interface
9
- # Vedeu::Interfaces.define do |interface|
10
- # interface.add("", ...)
11
- # end
12
-
13
8
  class Fake
14
9
  def self.dispatch
15
10
  puts "Fake dispatched..."
16
11
  [
17
- [[:white, :red], "Fake executed...", :reset],
18
- [[:white, :green], "Test executed...", :reset],
12
+ [[17, 6], [:red, :white], "Fake executed...", :reset],
13
+ [[19, 5], [:green, :white], "Test executed...", :reset],
19
14
  ]
20
15
  end
21
16
  end
22
17
 
23
- # use default interface
24
18
  Vedeu::Interfaces.default
25
19
 
26
- # define some commands
27
20
  Vedeu::Commands.define do |command|
28
21
  command.add("test", Fake)
29
22
  end
30
23
 
31
- # create main loop
32
24
  Vedeu::Application.start
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
4
+ version: 0.0.5
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-05-20 00:00:00.000000000 Z
11
+ date: 2014-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -154,6 +154,7 @@ files:
154
154
  - bin/vedeu
155
155
  - lib/vedeu.rb
156
156
  - lib/vedeu/application.rb
157
+ - lib/vedeu/interface/dummy.rb
157
158
  - lib/vedeu/interface/interface.rb
158
159
  - lib/vedeu/interface/interfaces.rb
159
160
  - lib/vedeu/output/background.rb
@@ -168,10 +169,12 @@ files:
168
169
  - lib/vedeu/output/translator.rb
169
170
  - lib/vedeu/process/command.rb
170
171
  - lib/vedeu/process/commands.rb
172
+ - lib/vedeu/process/exit.rb
171
173
  - lib/vedeu/process/process.rb
172
174
  - lib/vedeu/support/terminal.rb
173
175
  - lib/vedeu/version.rb
174
176
  - test/lib/vedeu/application_test.rb
177
+ - test/lib/vedeu/interface/dummy_test.rb
175
178
  - test/lib/vedeu/interface/interface_test.rb
176
179
  - test/lib/vedeu/interface/interfaces_test.rb
177
180
  - test/lib/vedeu/output/background_test.rb
@@ -186,6 +189,7 @@ files:
186
189
  - test/lib/vedeu/output/translator_test.rb
187
190
  - test/lib/vedeu/process/command_test.rb
188
191
  - test/lib/vedeu/process/commands_test.rb
192
+ - test/lib/vedeu/process/exit_test.rb
189
193
  - test/lib/vedeu/process/process_test.rb
190
194
  - test/lib/vedeu/support/terminal_test.rb
191
195
  - test/lib/vedeu/version_test.rb
@@ -218,6 +222,7 @@ specification_version: 4
218
222
  summary: A terminal case of wonderland.
219
223
  test_files:
220
224
  - test/lib/vedeu/application_test.rb
225
+ - test/lib/vedeu/interface/dummy_test.rb
221
226
  - test/lib/vedeu/interface/interface_test.rb
222
227
  - test/lib/vedeu/interface/interfaces_test.rb
223
228
  - test/lib/vedeu/output/background_test.rb
@@ -232,6 +237,7 @@ test_files:
232
237
  - test/lib/vedeu/output/translator_test.rb
233
238
  - test/lib/vedeu/process/command_test.rb
234
239
  - test/lib/vedeu/process/commands_test.rb
240
+ - test/lib/vedeu/process/exit_test.rb
235
241
  - test/lib/vedeu/process/process_test.rb
236
242
  - test/lib/vedeu/support/terminal_test.rb
237
243
  - test/lib/vedeu/version_test.rb