vedeu 0.4.9 → 0.4.10

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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vedeu/api.rb +8 -0
  3. data/lib/vedeu/application.rb +2 -0
  4. data/lib/vedeu/bindings.rb +3 -0
  5. data/lib/vedeu/configuration/configuration.rb +1 -1
  6. data/lib/vedeu/cursor/cursor.rb +1 -1
  7. data/lib/vedeu/cursor/move.rb +1 -1
  8. data/lib/vedeu/cursor/refresh_cursor.rb +2 -0
  9. data/lib/vedeu/cursor/toggle.rb +1 -1
  10. data/lib/vedeu/debug.rb +36 -1
  11. data/lib/vedeu/distributed/client.rb +2 -0
  12. data/lib/vedeu/distributed/subprocess.rb +2 -0
  13. data/lib/vedeu/distributed/test_application.rb +2 -0
  14. data/lib/vedeu/distributed/uri.rb +2 -0
  15. data/lib/vedeu/events/event.rb +1 -1
  16. data/lib/vedeu/events/trigger.rb +2 -0
  17. data/lib/vedeu/geometry/all.rb +0 -1
  18. data/lib/vedeu/geometry/area.rb +22 -0
  19. data/lib/vedeu/geometry/centre.rb +2 -0
  20. data/lib/vedeu/geometry/content.rb +2 -0
  21. data/lib/vedeu/geometry/coordinate.rb +2 -0
  22. data/lib/vedeu/geometry/dimension.rb +2 -0
  23. data/lib/vedeu/geometry/geometry.rb +8 -3
  24. data/lib/vedeu/geometry/grid.rb +2 -0
  25. data/lib/vedeu/geometry/index_position.rb +21 -0
  26. data/lib/vedeu/geometry/limit.rb +2 -0
  27. data/lib/vedeu/geometry/position.rb +1 -1
  28. data/lib/vedeu/geometry/position_index.rb +2 -0
  29. data/lib/vedeu/geometry/position_validator.rb +2 -0
  30. data/lib/vedeu/input/input.rb +1 -1
  31. data/lib/vedeu/input/key.rb +1 -1
  32. data/lib/vedeu/input/keymap.rb +2 -0
  33. data/lib/vedeu/input/mapper.rb +8 -0
  34. data/lib/vedeu/launcher.rb +2 -0
  35. data/lib/vedeu/main_loop.rb +1 -3
  36. data/lib/vedeu/models/cell.rb +2 -0
  37. data/lib/vedeu/models/composition.rb +1 -1
  38. data/lib/vedeu/models/group.rb +1 -1
  39. data/lib/vedeu/models/interface.rb +35 -3
  40. data/lib/vedeu/models/line.rb +6 -1
  41. data/lib/vedeu/models/menu.rb +1 -1
  42. data/lib/vedeu/models/stream.rb +6 -17
  43. data/lib/vedeu/output/all.rb +3 -2
  44. data/lib/vedeu/output/background.rb +26 -0
  45. data/lib/vedeu/output/border.rb +105 -25
  46. data/lib/vedeu/output/clear.rb +17 -10
  47. data/lib/vedeu/output/colour.rb +1 -1
  48. data/lib/vedeu/output/compositor.rb +4 -1
  49. data/lib/vedeu/output/foreground.rb +26 -0
  50. data/lib/vedeu/output/html_char.rb +2 -0
  51. data/lib/vedeu/output/null_border.rb +49 -0
  52. data/lib/vedeu/output/output.rb +8 -44
  53. data/lib/vedeu/output/renderers/all.rb +3 -0
  54. data/lib/vedeu/output/{renderer.rb → renderers/file_renderer.rb} +14 -6
  55. data/lib/vedeu/output/{html_renderer.rb → renderers/html_renderer.rb} +3 -1
  56. data/lib/vedeu/output/renderers/terminal_renderer.rb +50 -0
  57. data/lib/vedeu/output/text.rb +1 -1
  58. data/lib/vedeu/output/translator.rb +21 -2
  59. data/lib/vedeu/output/viewport.rb +17 -50
  60. data/lib/vedeu/output/virtual_terminal.rb +2 -0
  61. data/lib/vedeu/output/wordwrap.rb +2 -0
  62. data/lib/vedeu/repositories/all.rb +82 -0
  63. data/lib/vedeu/repositories/collection.rb +16 -0
  64. data/lib/vedeu/repositories/repository.rb +2 -0
  65. data/lib/vedeu/support/log.rb +3 -0
  66. data/lib/vedeu/support/sentence.rb +2 -0
  67. data/lib/vedeu/support/template.rb +2 -0
  68. data/lib/vedeu/support/terminal.rb +6 -1
  69. data/lib/vedeu/support/trace.rb +2 -0
  70. data/lib/vedeu/support/visible.rb +6 -0
  71. data/test/lib/vedeu/dsl/components/border_test.rb +0 -270
  72. data/test/lib/vedeu/dsl/shared/text_test.rb +19 -0
  73. data/test/lib/vedeu/geometry/area_test.rb +32 -0
  74. data/test/lib/vedeu/geometry/index_position_test.rb +36 -0
  75. data/test/lib/vedeu/models/interface_test.rb +42 -1
  76. data/test/lib/vedeu/models/line_test.rb +15 -1
  77. data/test/lib/vedeu/models/stream_test.rb +15 -1
  78. data/test/lib/vedeu/output/background_test.rb +4 -2
  79. data/test/lib/vedeu/output/border_test.rb +229 -127
  80. data/test/lib/vedeu/output/clear_test.rb +14 -0
  81. data/test/lib/vedeu/output/foreground_test.rb +4 -2
  82. data/test/lib/vedeu/output/null_border_test.rb +53 -0
  83. data/test/lib/vedeu/output/output_test.rb +2 -0
  84. data/test/lib/vedeu/output/{renderer_test.rb → renderers/file_renderer_test.rb} +5 -5
  85. data/test/lib/vedeu/output/renderers/html_renderer_test.rb +71 -0
  86. data/test/lib/vedeu/output/renderers/terminal_renderer_test.rb +24 -0
  87. data/test/lib/vedeu/output/viewport_test.rb +100 -74
  88. data/vedeu.gemspec +1 -1
  89. metadata +15 -11
  90. data/lib/vedeu/geometry/bounding_area.rb +0 -136
  91. data/test/lib/vedeu/geometry/bounding_area_test.rb +0 -123
  92. data/test/lib/vedeu/output/html_renderer_test.rb +0 -42
@@ -1,136 +0,0 @@
1
- module Vedeu
2
-
3
- # Provides coordinates based on the height and width provided.
4
- # Coordinates always start from 1, 1.
5
- #
6
- class BoundingArea
7
-
8
- # @!attribute [r] height
9
- # @return [Fixnum]
10
- attr_reader :height
11
-
12
- # @!attribute [r] width
13
- # @return [Fixnum]
14
- attr_reader :width
15
-
16
- # Returns an instance of BoundingArea.
17
- #
18
- # @param height [Fixnum]
19
- # @param width [Fixnum]
20
- # @return [Vedeu::BoundingArea]
21
- def initialize(height, width)
22
- @height = height
23
- @width = width
24
- end
25
-
26
- # Returns the top line (y) coordinate for the console.
27
- #
28
- # @example
29
- # # height = 20
30
- #
31
- # top # => 1
32
- # top(5) # => 6
33
- # top(-5) # => 1
34
- # top(25) # => 20
35
- #
36
- # @param offset [Fixnum] When provided, returns the top coordinate plus
37
- # the offset.
38
- # @return [Fixnum]
39
- def top(offset = 0)
40
- if offset >= height
41
- height
42
-
43
- elsif offset <= 1
44
- 1
45
-
46
- else
47
- 1 + offset
48
-
49
- end
50
- end
51
- alias_method :y, :top
52
-
53
- # Returns the bottom line (yn) coordinate for the console.
54
- #
55
- # @example
56
- # # height = 20
57
- #
58
- # bottom # => 20
59
- # bottom(5) # => 15
60
- # bottom(-5) # => 20
61
- # bottom(25) # => 1
62
- #
63
- # @param offset [Fixnum] When provided, returns the bottom coordinate minus
64
- # the offset.
65
- # @return [Fixnum]
66
- def bottom(offset = 0)
67
- if offset >= height
68
- 1
69
-
70
- elsif offset < 0
71
- height
72
-
73
- else
74
- height - offset
75
-
76
- end
77
- end
78
- alias_method :yn, :bottom
79
-
80
- # Returns the leftmost column (x) coordinate for the console.
81
- #
82
- # @example
83
- # # width = 40
84
- #
85
- # left # => 1
86
- # left(5) # => 6
87
- # left(-5) # => 1
88
- # left(45) # => 40
89
- #
90
- # @param offset [Fixnum] When provided, returns the left coordinate plus
91
- # the offset.
92
- # @return [Fixnum]
93
- def left(offset = 0)
94
- if offset >= width
95
- width
96
-
97
- elsif offset <= 1
98
- 1
99
-
100
- else
101
- 1 + offset
102
-
103
- end
104
- end
105
- alias_method :x, :left
106
-
107
- # Returns the rightmost column (yn) coordinate for the console.
108
- #
109
- # @example
110
- # # width = 40
111
- #
112
- # right # => 40
113
- # right(5) # => 35
114
- # right(-5) # => 40
115
- # right(45) # => 1
116
- #
117
- # @param offset [Fixnum] When provided, returns the right coordinate minus
118
- # the offset.
119
- # @return [Fixnum]
120
- def right(offset = 0)
121
- if offset >= width
122
- 1
123
-
124
- elsif offset < 0
125
- width
126
-
127
- else
128
- width - offset
129
-
130
- end
131
- end
132
- alias_method :xn, :right
133
-
134
- end # BoundingArea
135
-
136
- end # Vedeu
@@ -1,123 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- describe BoundingArea do
6
-
7
- let(:described) { Vedeu::BoundingArea }
8
- let(:instance) { described.new(height, width) }
9
- let(:height) { 15 }
10
- let(:width) { 40 }
11
-
12
- describe 'alias methods' do
13
- it { instance.must_respond_to(:y) }
14
- it { instance.must_respond_to(:yn) }
15
- it { instance.must_respond_to(:x) }
16
- it { instance.must_respond_to(:xn) }
17
- end
18
-
19
- describe '#initialize' do
20
- it { instance.must_be_instance_of(BoundingArea) }
21
- it { instance.instance_variable_get('@height').must_equal(height) }
22
- it { instance.instance_variable_get('@width').must_equal(width) }
23
- end
24
-
25
- describe '#height' do
26
- it 'returns the height' do
27
- instance.height.must_equal(height)
28
- end
29
- end
30
-
31
- describe '#width' do
32
- it 'returns the width' do
33
- instance.width.must_equal(width)
34
- end
35
- end
36
-
37
- describe '#top' do
38
- context 'when an offset is provided' do
39
- it 'returns the new top with the offset applied' do
40
- instance.top(5).must_equal(6)
41
- end
42
-
43
- context 'when the offset is greater or equal to the height' do
44
- it 'returns the height' do
45
- instance.top(20).must_equal(15)
46
- end
47
- end
48
-
49
- context 'when the offset is less than or equal to 1' do
50
- it { instance.top(-1).must_equal(1) }
51
- end
52
- end
53
-
54
- context 'when an offset is not provided' do
55
- it { instance.top.must_equal(1) }
56
- end
57
- end
58
-
59
- describe '#bottom' do
60
- context 'when an offset is provided' do
61
- it 'returns the new bottom with the offset applied' do
62
- instance.bottom(5).must_equal(10)
63
- end
64
-
65
- context 'when the offset is greater or equal to the height' do
66
- it { instance.bottom(30).must_equal(1) }
67
- end
68
-
69
- context 'when the offset is less than 0' do
70
- it { instance.bottom(-1).must_equal(height) }
71
- end
72
- end
73
-
74
- context 'when an offset is not provided' do
75
- it { instance.bottom.must_equal(15) }
76
- end
77
- end
78
-
79
- describe '#left' do
80
- context 'when an offset is provided' do
81
- it 'returns the new left with the offset applied' do
82
- instance.left(5).must_equal(6)
83
- end
84
-
85
- context 'when the offset is greater or equal to the width' do
86
- it 'returns the width' do
87
- instance.left(50).must_equal(40)
88
- end
89
- end
90
-
91
- context 'when the offset is less than or equal to 1' do
92
- it { instance.left(-1).must_equal(1) }
93
- end
94
- end
95
-
96
- context 'when an offset is not provided' do
97
- it { instance.left.must_equal(1) }
98
- end
99
- end
100
-
101
- describe '#right' do
102
- context 'when an offset is provided' do
103
- it 'returns the new right with the offset applied' do
104
- instance.right(5).must_equal(35)
105
- end
106
-
107
- context 'when the offset is greater or equal to the width' do
108
- it { instance.right(50).must_equal(1) }
109
- end
110
-
111
- context 'when the offset is less than 0' do
112
- it { instance.right(-1).must_equal(40) }
113
- end
114
- end
115
-
116
- context 'when an offset is not provided' do
117
- it { instance.right.must_equal(40) }
118
- end
119
- end
120
-
121
- end # BoundingArea
122
-
123
- end # Vedeu
@@ -1,42 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- describe HTMLRenderer do
6
-
7
- let(:described) { Vedeu::HTMLRenderer }
8
- let(:instance) { described.new(output) }
9
- let(:output) {}
10
-
11
- describe '#initialize' do
12
- it { instance.must_be_instance_of(Vedeu::HTMLRenderer) }
13
- it { instance.instance_variable_get('@output').must_equal(output) }
14
- end
15
-
16
- describe '#render' do
17
- subject { instance.render }
18
-
19
- it { subject.must_be_instance_of(String) }
20
- end
21
-
22
- describe '.to_file' do
23
- before { File.stubs(:open) }
24
-
25
- subject { described.to_file(output, path) }
26
-
27
- context 'when a path is given' do
28
- let(:path) { '/tmp/test_vedeu_html_renderer.html' }
29
-
30
- #it { subject.must_equal('') }
31
- end
32
-
33
- context 'when a path is not given' do
34
- let(:path) {}
35
-
36
-
37
- end
38
- end
39
-
40
- end # HTMLRenderer
41
-
42
- end # Vedeu