vedeu 0.1.6 → 0.1.7

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -15
  3. data/deps.md +93 -96
  4. data/lib/vedeu.rb +1 -6
  5. data/lib/vedeu/api/line.rb +0 -4
  6. data/lib/vedeu/api/view.rb +0 -1
  7. data/lib/vedeu/application.rb +1 -3
  8. data/lib/vedeu/instrumentation.rb +1 -1
  9. data/lib/vedeu/models/colour.rb +3 -2
  10. data/lib/vedeu/models/geometry.rb +16 -0
  11. data/lib/vedeu/models/interface.rb +9 -1
  12. data/lib/vedeu/output/render_interface.rb +3 -0
  13. data/lib/vedeu/output/text_adaptor.rb +2 -0
  14. data/lib/vedeu/output/view.rb +17 -24
  15. data/lib/vedeu/support/esc.rb +1 -21
  16. data/test/lib/vedeu/api/base_test.rb +0 -11
  17. data/test/lib/vedeu/api/grid_test.rb +10 -0
  18. data/test/lib/vedeu/api/line_test.rb +0 -11
  19. data/test/lib/vedeu/api/stream_test.rb +0 -11
  20. data/test/lib/vedeu/api/view_test.rb +1 -4
  21. data/test/lib/vedeu/models/composition_test.rb +3 -0
  22. data/test/lib/vedeu/output/view_test.rb +0 -27
  23. data/test/lib/vedeu/support/esc_test.rb +1 -21
  24. data/vedeu.gemspec +1 -1
  25. metadata +2 -20
  26. data/lib/vedeu/output/dsl_parser.rb +0 -19
  27. data/lib/vedeu/output/erb_parser.rb +0 -59
  28. data/lib/vedeu/output/json_parser.rb +0 -23
  29. data/lib/vedeu/output/menu_parser.rb +0 -51
  30. data/lib/vedeu/output/raw_parser.rb +0 -42
  31. data/lib/vedeu/support/helpers.rb +0 -66
  32. data/test/lib/vedeu/output/dsl_parser_test.rb +0 -19
  33. data/test/lib/vedeu/output/erb_parser_test.rb +0 -242
  34. data/test/lib/vedeu/output/json_parser_test.rb +0 -17
  35. data/test/lib/vedeu/output/menu_parser_test.rb +0 -46
  36. data/test/lib/vedeu/output/raw_parser_test.rb +0 -74
  37. data/test/lib/vedeu/support/helpers_test.rb +0 -71
@@ -1,3 +1,4 @@
1
+ require 'forwardable'
1
2
  require 'virtus'
2
3
 
3
4
  require 'vedeu'
@@ -14,10 +15,12 @@ require 'vedeu/support/terminal'
14
15
 
15
16
  module Vedeu
16
17
  class Interface
18
+ extend Forwardable
17
19
  include Vedeu::Queue
18
20
  include Virtus.model
19
21
 
20
22
  attribute :name, String
23
+ attribute :group, String
21
24
  attribute :lines, LineCollection
22
25
  attribute :colour, Colour, default: Colour.new
23
26
  attribute :style, Style, default: ''
@@ -26,10 +29,15 @@ module Vedeu
26
29
  attribute :cursor, Boolean, default: true
27
30
  attribute :delay, Float, default: 0
28
31
 
32
+ def_delegators :@geometry, :north, :east, :south, :west,
33
+ :top, :right, :bottom, :left
34
+
29
35
  def initialize(attributes = {})
30
36
  super
31
37
 
32
- Vedeu.events.on(:refresh, self.delay) { refresh }
38
+ Vedeu.events.on(:_refresh_, self.delay) { refresh }
39
+ Vedeu.events.on("_refresh_group_#{group}_".to_sym, self.delay) { refresh } unless group.nil? || group.empty?
40
+ Vedeu.events.on("_refresh_#{name}_".to_sym, self.delay) { refresh }
33
41
 
34
42
  self
35
43
  end
@@ -1,3 +1,6 @@
1
+ require 'vedeu/models/line'
2
+ require 'vedeu/models/stream'
3
+
1
4
  module Vedeu
2
5
  class RenderInterface
3
6
  def self.call(interface)
@@ -21,8 +21,10 @@ module Vedeu
21
21
  def lines
22
22
  if text.is_a?(::Array)
23
23
  text
24
+
24
25
  else
25
26
  text.split(/\n/)
27
+
26
28
  end
27
29
  end
28
30
 
@@ -1,42 +1,35 @@
1
1
  require 'vedeu/models/composition'
2
- require 'vedeu/output/dsl_parser'
3
- require 'vedeu/output/erb_parser'
4
- require 'vedeu/output/raw_parser'
5
- require 'vedeu/output/json_parser'
6
- require 'vedeu/output/menu_parser'
7
- require 'vedeu/output/raw_parser'
8
2
 
9
3
  module Vedeu
4
+ NotImplemented = Class.new(StandardError)
5
+
10
6
  class View
11
- def self.render(type, output)
12
- new(type, output).render
7
+ include Vedeu::API
8
+
9
+ def self.render(object = nil)
10
+ new(object).render
13
11
  end
14
12
 
15
- def initialize(type, output)
16
- @type, @output = type, output
13
+ def initialize(object = nil)
14
+ @object = object
17
15
  end
18
16
 
19
17
  def render
20
- Composition.enqueue(parsed_output)
18
+ Composition.enqueue(interfaces)
21
19
  end
22
20
 
23
- private
21
+ def output
22
+ fail NotImplemented, 'Implement #output on your subclass of Vedeu::View.'
23
+ end
24
24
 
25
- attr_reader :type, :output
25
+ private
26
26
 
27
- def parsed_output
28
- @parsed ||= parser.parse(output)
29
- end
27
+ attr_reader :object
30
28
 
31
- def parser
29
+ def interfaces
32
30
  {
33
- dsl: DSLParser,
34
- erb: ERBParser,
35
- json: JSONParser,
36
- hash: RawParser,
37
- menu: MenuParser,
38
- raw: RawParser,
39
- }.fetch(type)
31
+ interfaces: [ output ]
32
+ }
40
33
  end
41
34
  end
42
35
  end
@@ -1,21 +1,7 @@
1
- require 'vedeu/output/colour_translator'
2
-
3
1
  module Vedeu
4
2
  module Esc
5
3
  extend self
6
4
 
7
- def background_colour(value = '')
8
- return '' if value.nil? || value.empty?
9
-
10
- ["\e[48;5;", colour_translator(value), 'm'].join
11
- end
12
-
13
- def foreground_colour(value = '')
14
- return '' if value.nil? || value.empty?
15
-
16
- ["\e[38;5;", colour_translator(value), 'm'].join
17
- end
18
-
19
5
  def set_position(y = 1, x = 1)
20
6
  row = (y == 0 || y == nil) ? 1 : y
21
7
  column = (x == 0 || x == nil) ? 1 : x
@@ -30,7 +16,7 @@ module Vedeu
30
16
  when 'blink_off' then "\e[25m"
31
17
  when 'bold' then "\e[1m"
32
18
  when 'bold_off' then "\e[21m"
33
- when 'clear' then "\e[2J"
19
+ when 'clear' then "\e[38;2;39m\e[48;2;49m\e[2J"
34
20
  when 'colour_reset' then "\e[38;2;39m\e[48;2;49m"
35
21
  when 'fg_reset' then "\e[38;2;39m"
36
22
  when 'hide_cursor' then "\e[?25l"
@@ -46,11 +32,5 @@ module Vedeu
46
32
  ''
47
33
  end
48
34
  end
49
-
50
- private
51
-
52
- def colour_translator(value)
53
- ColourTranslator.translate(value)
54
- end
55
35
  end
56
36
  end
@@ -7,17 +7,6 @@ require 'vedeu/support/interface_store'
7
7
  module Vedeu
8
8
  module API
9
9
  describe Base do
10
- before do
11
- InterfaceStore.reset
12
- Interface.save('testing_view') do
13
- width 80
14
- height 25
15
- x 1
16
- y 1
17
- colour foreground: '#ffffff', background: '#000000'
18
- centred false
19
- end
20
- end
21
10
  end
22
11
  end
23
12
  end
@@ -2,6 +2,16 @@ require 'test_helper'
2
2
 
3
3
  require 'vedeu/api/grid'
4
4
 
5
+ describe Fixnum do
6
+ describe '#columns' do
7
+ it 'returns the width if the value is in range' do
8
+ IO.console.stub :winsize, [25, 60] do
9
+ 1.columns.must_equal(5)
10
+ end
11
+ end
12
+ end
13
+ end
14
+
5
15
  module Vedeu
6
16
  module API
7
17
  describe Grid do
@@ -7,17 +7,6 @@ require 'vedeu/support/interface_store'
7
7
  module Vedeu
8
8
  module API
9
9
  describe Line do
10
- before do
11
- InterfaceStore.reset
12
- Interface.save('testing_view') do
13
- width 80
14
- height 25
15
- x 1
16
- y 1
17
- colour foreground: '#ffffff', background: '#000000'
18
- centred false
19
- end
20
- end
21
10
  end
22
11
  end
23
12
  end
@@ -7,17 +7,6 @@ require 'vedeu/support/interface_store'
7
7
  module Vedeu
8
8
  module API
9
9
  describe Stream do
10
- before do
11
- InterfaceStore.reset
12
- Interface.save('testing_view') do
13
- width 80
14
- height 25
15
- x 1
16
- y 1
17
- colour foreground: '#ffffff', background: '#000000'
18
- centred false
19
- end
20
- end
21
10
  end
22
11
  end
23
12
  end
@@ -410,7 +410,6 @@ module Vedeu
410
410
  end
411
411
 
412
412
  it 'handles alignment' do
413
- skip
414
413
  Vedeu.view 'testing_view' do
415
414
  line do
416
415
  stream do
@@ -438,7 +437,6 @@ module Vedeu
438
437
  end
439
438
 
440
439
  it 'handles alignment' do
441
- skip
442
440
  Vedeu.view 'testing_view' do
443
441
  line do
444
442
  stream do
@@ -458,7 +456,7 @@ module Vedeu
458
456
  style: [],
459
457
  width: 80,
460
458
  align: :centre,
461
- text: 'This is aligned right, and padded with spaces.'
459
+ text: 'This is aligned centrally, and padded with spaces.'
462
460
  }]
463
461
  }]
464
462
  }
@@ -466,7 +464,6 @@ module Vedeu
466
464
  end
467
465
 
468
466
  it 'handles alignment' do
469
- skip
470
467
  Vedeu.view 'testing_view' do
471
468
  line do
472
469
  stream do
@@ -1,4 +1,7 @@
1
1
  require 'test_helper'
2
+
3
+ require 'json'
4
+
2
5
  require 'vedeu/models/composition'
3
6
  require 'vedeu/support/interface_store'
4
7
 
@@ -4,33 +4,6 @@ require 'vedeu/output/view'
4
4
  module Vedeu
5
5
  describe View do
6
6
  describe '.render' do
7
- it 'returns when the type is :erb' do
8
- skip
9
- View.render(:erb, '').must_equal('')
10
- end
11
-
12
- it 'returns when the type is :json' do
13
- skip
14
- View.render(:json, '').must_equal('')
15
- end
16
-
17
- it 'returns when the type is :raw' do
18
- skip
19
- View.render(:raw, '').must_equal('')
20
- end
21
-
22
- it 'returns when the type is :menu' do
23
- skip
24
- View.render(:menu, '').must_equal('')
25
- end
26
-
27
- it 'returns when the type is not set' do
28
- proc { View.render(nil, '') }.must_raise(KeyError)
29
- end
30
-
31
- it 'returns when the type is not recognised' do
32
- proc { View.render(:unknown, '') }.must_raise(KeyError)
33
- end
34
7
  end
35
8
  end
36
9
  end
@@ -3,26 +3,6 @@ require 'vedeu/support/esc'
3
3
 
4
4
  module Vedeu
5
5
  describe Esc do
6
- describe '.background_colour' do
7
- it 'returns an escape sequence' do
8
- Esc.background_colour('#000000').must_equal("\e[48;5;16m")
9
- end
10
-
11
- it 'returns an empty string when the value is empty' do
12
- Esc.background_colour('').must_equal('')
13
- end
14
- end
15
-
16
- describe '.foreground_colour' do
17
- it 'returns an escape sequence' do
18
- Esc.foreground_colour('#ffffff').must_equal("\e[38;5;231m")
19
- end
20
-
21
- it 'returns an empty string when the value is empty' do
22
- Esc.foreground_colour('').must_equal('')
23
- end
24
- end
25
-
26
6
  describe '.set_position' do
27
7
  it 'returns a position escape sequence when no coordinates are provided' do
28
8
  Esc.set_position.must_equal("\e[1;1H")
@@ -59,7 +39,7 @@ module Vedeu
59
39
  end
60
40
 
61
41
  it 'returns an escape sequence when the style is clear' do
62
- Esc.string('clear').must_equal("\e[2J")
42
+ Esc.string('clear').must_equal("\e[38;2;39m\e[48;2;49m\e[2J")
63
43
  end
64
44
 
65
45
  it 'returns an escape sequence when the style is colour_reset' do
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.6'
7
+ spec.version = '0.1.7'
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.6
4
+ version: 0.1.7
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-07 00:00:00.000000000 Z
11
+ date: 2014-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -208,17 +208,11 @@ files:
208
208
  - lib/vedeu/models/style.rb
209
209
  - lib/vedeu/output/clear_interface.rb
210
210
  - lib/vedeu/output/colour_translator.rb
211
- - lib/vedeu/output/dsl_parser.rb
212
- - lib/vedeu/output/erb_parser.rb
213
- - lib/vedeu/output/json_parser.rb
214
- - lib/vedeu/output/menu_parser.rb
215
- - lib/vedeu/output/raw_parser.rb
216
211
  - lib/vedeu/output/render_interface.rb
217
212
  - lib/vedeu/output/text_adaptor.rb
218
213
  - lib/vedeu/output/view.rb
219
214
  - lib/vedeu/support/esc.rb
220
215
  - lib/vedeu/support/events.rb
221
- - lib/vedeu/support/helpers.rb
222
216
  - lib/vedeu/support/input.rb
223
217
  - lib/vedeu/support/interface_store.rb
224
218
  - lib/vedeu/support/menu.rb
@@ -248,17 +242,11 @@ files:
248
242
  - test/lib/vedeu/models/style_test.rb
249
243
  - test/lib/vedeu/output/clear_interface_test.rb
250
244
  - test/lib/vedeu/output/colour_translator_test.rb
251
- - test/lib/vedeu/output/dsl_parser_test.rb
252
- - test/lib/vedeu/output/erb_parser_test.rb
253
- - test/lib/vedeu/output/json_parser_test.rb
254
- - test/lib/vedeu/output/menu_parser_test.rb
255
- - test/lib/vedeu/output/raw_parser_test.rb
256
245
  - test/lib/vedeu/output/render_interface_test.rb
257
246
  - test/lib/vedeu/output/text_adaptor_test.rb
258
247
  - test/lib/vedeu/output/view_test.rb
259
248
  - test/lib/vedeu/support/esc_test.rb
260
249
  - test/lib/vedeu/support/events_test.rb
261
- - test/lib/vedeu/support/helpers_test.rb
262
250
  - test/lib/vedeu/support/input_test.rb
263
251
  - test/lib/vedeu/support/interface_store_test.rb
264
252
  - test/lib/vedeu/support/menu_test.rb
@@ -337,17 +325,11 @@ test_files:
337
325
  - test/lib/vedeu/models/style_test.rb
338
326
  - test/lib/vedeu/output/clear_interface_test.rb
339
327
  - test/lib/vedeu/output/colour_translator_test.rb
340
- - test/lib/vedeu/output/dsl_parser_test.rb
341
- - test/lib/vedeu/output/erb_parser_test.rb
342
- - test/lib/vedeu/output/json_parser_test.rb
343
- - test/lib/vedeu/output/menu_parser_test.rb
344
- - test/lib/vedeu/output/raw_parser_test.rb
345
328
  - test/lib/vedeu/output/render_interface_test.rb
346
329
  - test/lib/vedeu/output/text_adaptor_test.rb
347
330
  - test/lib/vedeu/output/view_test.rb
348
331
  - test/lib/vedeu/support/esc_test.rb
349
332
  - test/lib/vedeu/support/events_test.rb
350
- - test/lib/vedeu/support/helpers_test.rb
351
333
  - test/lib/vedeu/support/input_test.rb
352
334
  - test/lib/vedeu/support/interface_store_test.rb
353
335
  - test/lib/vedeu/support/menu_test.rb
@@ -1,19 +0,0 @@
1
- module Vedeu
2
- class DSLParser
3
- def self.parse(data)
4
- new(data).parse
5
- end
6
-
7
- def initialize(data)
8
- @data = data
9
- end
10
-
11
- def parse
12
- { interfaces: [ data ] }
13
- end
14
-
15
- private
16
-
17
- attr_reader :data
18
- end
19
- end