vedeu 0.1.7 → 0.1.8

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.
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