vedeu 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +26 -23
  3. data/deps.md +15 -19
  4. data/lib/vedeu.rb +8 -54
  5. data/lib/vedeu/api/base.rb +5 -3
  6. data/lib/vedeu/api/events.rb +75 -0
  7. data/lib/vedeu/api/interface.rb +12 -2
  8. data/lib/vedeu/api/store.rb +37 -0
  9. data/lib/vedeu/api/view.rb +12 -4
  10. data/lib/vedeu/application.rb +7 -3
  11. data/lib/vedeu/configuration.rb +4 -0
  12. data/lib/vedeu/instrumentation.rb +1 -9
  13. data/lib/vedeu/launcher.rb +5 -3
  14. data/lib/vedeu/models/attributes/background.rb +11 -0
  15. data/lib/vedeu/models/attributes/collection.rb +1 -7
  16. data/lib/vedeu/{output → models/attributes}/colour_translator.rb +19 -3
  17. data/lib/vedeu/models/attributes/foreground.rb +11 -0
  18. data/lib/vedeu/models/attributes/interface_collection.rb +5 -5
  19. data/lib/vedeu/models/colour.rb +2 -18
  20. data/lib/vedeu/models/interface.rb +22 -13
  21. data/lib/vedeu/models/line.rb +1 -2
  22. data/lib/vedeu/models/stream.rb +21 -13
  23. data/lib/vedeu/output/{clear_interface.rb → clear.rb} +5 -5
  24. data/lib/vedeu/output/{render_interface.rb → render.rb} +4 -4
  25. data/lib/vedeu/support/esc.rb +3 -0
  26. data/lib/vedeu/support/menu.rb +1 -1
  27. data/lib/vedeu/support/terminal.rb +4 -10
  28. data/test/lib/vedeu/api/base_test.rb +1 -1
  29. data/test/lib/vedeu/api/events_test.rb +37 -0
  30. data/test/lib/vedeu/api/grid_test.rb +11 -9
  31. data/test/lib/vedeu/api/interface_test.rb +10 -13
  32. data/test/lib/vedeu/api/line_test.rb +0 -2
  33. data/test/lib/vedeu/api/store_test.rb +49 -0
  34. data/test/lib/vedeu/api/stream_test.rb +1 -1
  35. data/test/lib/vedeu/api/view_test.rb +1 -1
  36. data/test/lib/vedeu/models/attributes/background_test.rb +8 -0
  37. data/test/lib/vedeu/models/attributes/colour_translator_test.rb +78 -0
  38. data/test/lib/vedeu/models/attributes/foreground_test.rb +8 -0
  39. data/test/lib/vedeu/models/attributes/interface_collection_test.rb +22 -6
  40. data/test/lib/vedeu/models/attributes/line_collection_test.rb +1 -6
  41. data/test/lib/vedeu/models/attributes/stream_collection_test.rb +1 -1
  42. data/test/lib/vedeu/models/composition_test.rb +108 -62
  43. data/test/lib/vedeu/models/geometry_test.rb +48 -0
  44. data/test/lib/vedeu/models/interface_test.rb +26 -10
  45. data/test/lib/vedeu/models/line_test.rb +0 -5
  46. data/test/lib/vedeu/output/{clear_interface_test.rb → clear_test.rb} +8 -8
  47. data/test/lib/vedeu/output/{render_interface_test.rb → render_test.rb} +7 -7
  48. data/test/lib/vedeu/support/esc_test.rb +12 -0
  49. data/test/lib/vedeu/support/terminal_test.rb +2 -1
  50. data/test/lib/vedeu_test.rb +0 -38
  51. data/test/support/colours.rb +1 -1
  52. data/vedeu.gemspec +1 -1
  53. metadata +23 -23
  54. data/lib/vedeu/output/text_adaptor.rb +0 -35
  55. data/lib/vedeu/support/events.rb +0 -51
  56. data/lib/vedeu/support/interface_store.rb +0 -43
  57. data/lib/vedeu/support/queue.rb +0 -31
  58. data/test/lib/vedeu/output/colour_translator_test.rb +0 -42
  59. data/test/lib/vedeu/output/text_adaptor_test.rb +0 -73
  60. data/test/lib/vedeu/support/events_test.rb +0 -35
  61. data/test/lib/vedeu/support/interface_store_test.rb +0 -51
  62. data/test/lib/vedeu/support/queue_test.rb +0 -44
@@ -9,7 +9,6 @@ module Vedeu
9
9
  foreground: '#ff0000',
10
10
  background: '#000000'
11
11
  },
12
- model: {},
13
12
  streams: [],
14
13
  style: 'normal'
15
14
  })
@@ -19,10 +18,6 @@ module Vedeu
19
18
  line.colour.must_be_instance_of(Colour)
20
19
  end
21
20
 
22
- it 'has a model attribute' do
23
- line.model.must_be_instance_of(Hash)
24
- end
25
-
26
21
  it 'has a streams attribute' do
27
22
  line.streams.must_equal([])
28
23
  end
@@ -1,22 +1,22 @@
1
1
  require 'test_helper'
2
- require 'vedeu/output/clear_interface'
2
+ require 'vedeu/output/clear'
3
3
  require 'vedeu/models/interface'
4
- require 'vedeu/support/interface_store'
4
+ require 'vedeu/api/store'
5
5
 
6
6
  module Vedeu
7
- describe ClearInterface do
8
- before { InterfaceStore.reset }
7
+ describe Clear do
8
+ before { API::Store.reset }
9
9
 
10
10
  describe '.call' do
11
11
  it 'returns the escape sequence to clear the whole interface' do
12
12
  interface = Interface.new({
13
- name: 'ClearInterface.call',
13
+ name: 'Clear.call',
14
14
  geometry: {
15
15
  width: 5,
16
16
  height: 2
17
17
  }
18
18
  })
19
- ClearInterface.call(interface).must_equal(
19
+ Clear.call(interface).must_equal(
20
20
  "\e[1;1H \e[1;1H" \
21
21
  "\e[2;1H \e[2;1H"
22
22
  )
@@ -24,7 +24,7 @@ module Vedeu
24
24
 
25
25
  it 'returns the escape sequence to clear the whole interface with specified colours' do
26
26
  interface = Interface.new({
27
- name: 'ClearInterface.call',
27
+ name: 'Clear.call',
28
28
  geometry: {
29
29
  width: 5,
30
30
  height: 2,
@@ -34,7 +34,7 @@ module Vedeu
34
34
  background: '#ffff00'
35
35
  }
36
36
  })
37
- ClearInterface.call(interface).must_equal(
37
+ Clear.call(interface).must_equal(
38
38
  "\e[38;5;46m\e[48;5;226m" \
39
39
  "\e[1;1H \e[1;1H" \
40
40
  "\e[2;1H \e[2;1H"
@@ -1,11 +1,11 @@
1
1
  require 'test_helper'
2
- require 'vedeu/output/render_interface'
2
+ require 'vedeu/output/render'
3
3
  require 'vedeu/models/interface'
4
- require 'vedeu/support/interface_store'
4
+ require 'vedeu/api/store'
5
5
 
6
6
  module Vedeu
7
- describe RenderInterface do
8
- before { InterfaceStore.reset }
7
+ describe Render do
8
+ before { API::Store.reset }
9
9
 
10
10
  describe '.call' do
11
11
  it 'returns the content for the interface' do
@@ -31,7 +31,7 @@ module Vedeu
31
31
  }
32
32
  ]
33
33
  })
34
- RenderInterface.call(interface).must_equal(
34
+ Render.call(interface).must_equal(
35
35
  "\e[1;1H \e[1;1H" \
36
36
  "\e[2;1H \e[2;1H" \
37
37
  "\e[3;1H \e[3;1H" \
@@ -50,7 +50,7 @@ module Vedeu
50
50
  },
51
51
  lines: []
52
52
  })
53
- RenderInterface.call(interface).must_equal(
53
+ Render.call(interface).must_equal(
54
54
  "\e[1;1H \e[1;1H" \
55
55
  "\e[2;1H \e[2;1H" \
56
56
  "\e[3;1H \e[3;1H"
@@ -80,7 +80,7 @@ module Vedeu
80
80
  }
81
81
  ]
82
82
  })
83
- RenderInterface.call(interface).must_equal(
83
+ Render.call(interface).must_equal(
84
84
  "\e[1;1H \e[1;1H" \
85
85
  "\e[2;1H \e[2;1H" \
86
86
  "\e[3;1H \e[3;1H" \
@@ -42,6 +42,10 @@ module Vedeu
42
42
  Esc.string('clear').must_equal("\e[38;2;39m\e[48;2;49m\e[2J")
43
43
  end
44
44
 
45
+ it 'returns an escape sequence when the style is clear_line' do
46
+ Esc.string('clear_line').must_equal("\e[38;2;39m\e[48;2;49m\e[2K")
47
+ end
48
+
45
49
  it 'returns an escape sequence when the style is colour_reset' do
46
50
  Esc.string('colour_reset').must_equal("\e[38;2;39m\e[48;2;49m")
47
51
  end
@@ -54,6 +58,14 @@ module Vedeu
54
58
  Esc.string('hide_cursor').must_equal("\e[?25l")
55
59
  end
56
60
 
61
+ it 'returns an escape sequence when the style is screen_init' do
62
+ Esc.string('screen_init').must_equal("\e[0m\e[38;2;39m\e[48;2;49m\e[2J\e[?25l")
63
+ end
64
+
65
+ it 'returns an escape sequence when the style is screen_exit' do
66
+ Esc.string('screen_exit').must_equal("\e[?25h\e[38;2;39m\e[48;2;49m\e[0m")
67
+ end
68
+
57
69
  it 'returns an escape sequence when the style is negative' do
58
70
  Esc.string('negative').must_equal("\e[7m")
59
71
  end
@@ -22,7 +22,8 @@ module Vedeu
22
22
  describe '.clear_last_line' do
23
23
  it 'returns an escape sequence to clear the last line' do
24
24
  console.stub :winsize, [25, 25] do
25
- Terminal.clear_last_line.must_equal("\e[24;1H\e[2K")
25
+ Terminal.clear_last_line
26
+ .must_equal("\e[24;1H\e[38;2;39m\e[48;2;49m\e[2K")
26
27
  end
27
28
  end
28
29
  end
@@ -3,46 +3,8 @@ require 'vedeu'
3
3
 
4
4
  module Vedeu
5
5
  describe API do
6
- describe '.interface' do
7
- end
8
-
9
- describe '.event' do
10
- end
11
-
12
- describe '.run' do
13
- end
14
-
15
- # describe '.view' do
16
- # it 'returns the interface referenced by name' do
17
- # Vedeu.interface 'Vedeu.view' do
18
- # width 5
19
- # height 5
20
- # end
21
-
22
- # Vedeu.view('Vedeu.view').must_be_instance_of(Interface)
23
- # Vedeu.view('Vedeu.view').name.must_equal('Vedeu.view')
24
- # end
25
-
26
- # it 'raises an exception if the interface does not exist' do
27
- # proc { Vedeu.view('unknown') }.must_raise(EntityNotFound)
28
- # end
29
- # end
30
6
  end
31
7
  end
32
8
 
33
9
  describe Vedeu do
34
- describe '.events' do
35
- it 'creates some system events for the client application' do
36
- end
37
- end
38
-
39
- describe '.log' do
40
- it 'returns a logger instance for writing debug messages to' do
41
- end
42
- end
43
-
44
- describe '.error' do
45
- it 'writes an error to the log' do
46
- end
47
- end
48
10
  end
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- require_relative '../../lib/vedeu/output/colour_translator'
2
+ require_relative '../../lib/vedeu/models/attributes/colour_translator'
3
3
 
4
4
  values = ["00", "5f", "87", "af", "d7", "ff"]
5
5
  codes = {}
data/vedeu.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'vedeu'
7
- spec.version = '0.1.7'
7
+ spec.version = '0.1.8'
8
8
  spec.authors = ['Gavin Laking']
9
9
  spec.email = ['gavinlaking@gmail.com']
10
10
  spec.summary = %q{A terminal case of wonderland.}
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.1.7
4
+ version: 0.1.8
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-08-08 00:00:00.000000000 Z
11
+ date: 2014-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -186,16 +186,21 @@ files:
186
186
  - deps.md
187
187
  - lib/vedeu.rb
188
188
  - lib/vedeu/api/base.rb
189
+ - lib/vedeu/api/events.rb
189
190
  - lib/vedeu/api/grid.rb
190
191
  - lib/vedeu/api/interface.rb
191
192
  - lib/vedeu/api/line.rb
193
+ - lib/vedeu/api/store.rb
192
194
  - lib/vedeu/api/stream.rb
193
195
  - lib/vedeu/api/view.rb
194
196
  - lib/vedeu/application.rb
195
197
  - lib/vedeu/configuration.rb
196
198
  - lib/vedeu/instrumentation.rb
197
199
  - lib/vedeu/launcher.rb
200
+ - lib/vedeu/models/attributes/background.rb
198
201
  - lib/vedeu/models/attributes/collection.rb
202
+ - lib/vedeu/models/attributes/colour_translator.rb
203
+ - lib/vedeu/models/attributes/foreground.rb
199
204
  - lib/vedeu/models/attributes/interface_collection.rb
200
205
  - lib/vedeu/models/attributes/line_collection.rb
201
206
  - lib/vedeu/models/attributes/stream_collection.rb
@@ -206,30 +211,30 @@ files:
206
211
  - lib/vedeu/models/line.rb
207
212
  - lib/vedeu/models/stream.rb
208
213
  - lib/vedeu/models/style.rb
209
- - lib/vedeu/output/clear_interface.rb
210
- - lib/vedeu/output/colour_translator.rb
211
- - lib/vedeu/output/render_interface.rb
212
- - lib/vedeu/output/text_adaptor.rb
214
+ - lib/vedeu/output/clear.rb
215
+ - lib/vedeu/output/render.rb
213
216
  - lib/vedeu/output/view.rb
214
217
  - lib/vedeu/support/esc.rb
215
- - lib/vedeu/support/events.rb
216
218
  - lib/vedeu/support/input.rb
217
- - lib/vedeu/support/interface_store.rb
218
219
  - lib/vedeu/support/menu.rb
219
- - lib/vedeu/support/queue.rb
220
220
  - lib/vedeu/support/terminal.rb
221
221
  - lib/vedeu/support/wordwrap.rb
222
222
  - logs/.gitkeep
223
223
  - test/lib/vedeu/api/base_test.rb
224
+ - test/lib/vedeu/api/events_test.rb
224
225
  - test/lib/vedeu/api/grid_test.rb
225
226
  - test/lib/vedeu/api/interface_test.rb
226
227
  - test/lib/vedeu/api/line_test.rb
228
+ - test/lib/vedeu/api/store_test.rb
227
229
  - test/lib/vedeu/api/stream_test.rb
228
230
  - test/lib/vedeu/api/view_test.rb
229
231
  - test/lib/vedeu/application_test.rb
230
232
  - test/lib/vedeu/configuration_test.rb
231
233
  - test/lib/vedeu/launcher_test.rb
234
+ - test/lib/vedeu/models/attributes/background_test.rb
232
235
  - test/lib/vedeu/models/attributes/collection_test.rb
236
+ - test/lib/vedeu/models/attributes/colour_translator_test.rb
237
+ - test/lib/vedeu/models/attributes/foreground_test.rb
233
238
  - test/lib/vedeu/models/attributes/interface_collection_test.rb
234
239
  - test/lib/vedeu/models/attributes/line_collection_test.rb
235
240
  - test/lib/vedeu/models/attributes/stream_collection_test.rb
@@ -240,17 +245,12 @@ files:
240
245
  - test/lib/vedeu/models/line_test.rb
241
246
  - test/lib/vedeu/models/stream_test.rb
242
247
  - test/lib/vedeu/models/style_test.rb
243
- - test/lib/vedeu/output/clear_interface_test.rb
244
- - test/lib/vedeu/output/colour_translator_test.rb
245
- - test/lib/vedeu/output/render_interface_test.rb
246
- - test/lib/vedeu/output/text_adaptor_test.rb
248
+ - test/lib/vedeu/output/clear_test.rb
249
+ - test/lib/vedeu/output/render_test.rb
247
250
  - test/lib/vedeu/output/view_test.rb
248
251
  - test/lib/vedeu/support/esc_test.rb
249
- - test/lib/vedeu/support/events_test.rb
250
252
  - test/lib/vedeu/support/input_test.rb
251
- - test/lib/vedeu/support/interface_store_test.rb
252
253
  - test/lib/vedeu/support/menu_test.rb
253
- - test/lib/vedeu/support/queue_test.rb
254
254
  - test/lib/vedeu/support/terminal_test.rb
255
255
  - test/lib/vedeu/support/wordwrap_test.rb
256
256
  - test/lib/vedeu_test.rb
@@ -304,15 +304,20 @@ specification_version: 4
304
304
  summary: A terminal case of wonderland.
305
305
  test_files:
306
306
  - test/lib/vedeu/api/base_test.rb
307
+ - test/lib/vedeu/api/events_test.rb
307
308
  - test/lib/vedeu/api/grid_test.rb
308
309
  - test/lib/vedeu/api/interface_test.rb
309
310
  - test/lib/vedeu/api/line_test.rb
311
+ - test/lib/vedeu/api/store_test.rb
310
312
  - test/lib/vedeu/api/stream_test.rb
311
313
  - test/lib/vedeu/api/view_test.rb
312
314
  - test/lib/vedeu/application_test.rb
313
315
  - test/lib/vedeu/configuration_test.rb
314
316
  - test/lib/vedeu/launcher_test.rb
317
+ - test/lib/vedeu/models/attributes/background_test.rb
315
318
  - test/lib/vedeu/models/attributes/collection_test.rb
319
+ - test/lib/vedeu/models/attributes/colour_translator_test.rb
320
+ - test/lib/vedeu/models/attributes/foreground_test.rb
316
321
  - test/lib/vedeu/models/attributes/interface_collection_test.rb
317
322
  - test/lib/vedeu/models/attributes/line_collection_test.rb
318
323
  - test/lib/vedeu/models/attributes/stream_collection_test.rb
@@ -323,17 +328,12 @@ test_files:
323
328
  - test/lib/vedeu/models/line_test.rb
324
329
  - test/lib/vedeu/models/stream_test.rb
325
330
  - test/lib/vedeu/models/style_test.rb
326
- - test/lib/vedeu/output/clear_interface_test.rb
327
- - test/lib/vedeu/output/colour_translator_test.rb
328
- - test/lib/vedeu/output/render_interface_test.rb
329
- - test/lib/vedeu/output/text_adaptor_test.rb
331
+ - test/lib/vedeu/output/clear_test.rb
332
+ - test/lib/vedeu/output/render_test.rb
330
333
  - test/lib/vedeu/output/view_test.rb
331
334
  - test/lib/vedeu/support/esc_test.rb
332
- - test/lib/vedeu/support/events_test.rb
333
335
  - test/lib/vedeu/support/input_test.rb
334
- - test/lib/vedeu/support/interface_store_test.rb
335
336
  - test/lib/vedeu/support/menu_test.rb
336
- - test/lib/vedeu/support/queue_test.rb
337
337
  - test/lib/vedeu/support/terminal_test.rb
338
338
  - test/lib/vedeu/support/wordwrap_test.rb
339
339
  - test/lib/vedeu_test.rb
@@ -1,35 +0,0 @@
1
- module Vedeu
2
- class TextAdaptor
3
- def self.adapt(text)
4
- new(text).adapt
5
- end
6
-
7
- def initialize(text)
8
- @text = text
9
- end
10
-
11
- def adapt
12
- return [] if no_content?
13
-
14
- lines.map { |line| { streams: { text: line } } }
15
- end
16
-
17
- private
18
-
19
- attr_reader :text
20
-
21
- def lines
22
- if text.is_a?(::Array)
23
- text
24
-
25
- else
26
- text.split(/\n/)
27
-
28
- end
29
- end
30
-
31
- def no_content?
32
- text.nil? || text.empty?
33
- end
34
- end
35
- end
@@ -1,51 +0,0 @@
1
- # Todo: mutation (events)
2
-
3
- module Vedeu
4
- class Events
5
- def initialize(&block)
6
- @handlers = Hash.new do |hash, key|
7
- hash[key] = {
8
- delay: 0,
9
- events: [],
10
- last_exec: 0,
11
- }
12
- end
13
- self.instance_eval(&block) if block_given?
14
- self
15
- end
16
-
17
- def add(object, &block)
18
- @self_before_instance_eval = eval 'self', block.binding
19
-
20
- self.instance_eval(&block)
21
- end
22
-
23
- def on(event, delay = 0, &block)
24
- handlers[event][:events] << block
25
- handlers[event][:delay] = delay
26
- handlers[event]
27
- end
28
-
29
- def trigger(event, *args)
30
- elapsed = Time.now.to_f - handlers[event][:last_exec]
31
-
32
- if elapsed > handlers[event][:delay]
33
- handlers[event][:last_exec] = Time.now.to_f
34
-
35
- handlers[event][:events].each do |handler|
36
- handler.call(*args)
37
- end
38
- end
39
- end
40
-
41
- # :nocov:
42
- def method_missing(method, *args, &block)
43
- @self_before_instance_eval.send method, *args, &block
44
- end
45
- # :nocov:
46
-
47
- private
48
-
49
- attr_reader :handlers, :throttles
50
- end
51
- end
@@ -1,43 +0,0 @@
1
- require 'vedeu/models/interface'
2
-
3
- # Todo: mutation (persistence)
4
-
5
- module Vedeu
6
- EntityNotFound = Class.new(StandardError)
7
-
8
- module InterfaceStore
9
- extend self
10
-
11
- def update(name, attributes = {})
12
- interface = query(name)
13
- interface.attributes = attributes
14
- interface
15
-
16
- rescue EntityNotFound
17
- create(attributes)
18
-
19
- end
20
-
21
- def create(attributes)
22
- storage.store(attributes[:name], Interface.new(attributes))
23
- end
24
-
25
- def query(interface_name)
26
- storage.select do |name, interface|
27
- return interface if name == interface_name
28
- end unless interface_name.nil? || interface_name.empty?
29
-
30
- fail EntityNotFound, "Interface could not be found."
31
- end
32
-
33
- def reset
34
- @storage = {}
35
- end
36
-
37
- private
38
-
39
- def storage
40
- @storage ||= {}
41
- end
42
- end
43
- end