vedeu 0.8.4 → 0.8.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/TODO.md +4 -0
  3. data/docs/dsl.md +1 -11
  4. data/docs/dsl/by_method/geometry/align.md +1 -0
  5. data/docs/dsl/by_method/geometry/align_bottom.md +40 -0
  6. data/docs/dsl/by_method/geometry/align_centre.md +40 -0
  7. data/docs/dsl/by_method/geometry/align_left.md +40 -0
  8. data/docs/dsl/by_method/geometry/align_middle.md +40 -0
  9. data/docs/dsl/by_method/geometry/align_right.md +40 -0
  10. data/docs/dsl/by_method/geometry/align_top.md +40 -0
  11. data/docs/dsl/by_method/geometry/columns.md +1 -0
  12. data/docs/dsl/by_method/geometry/height.md +0 -0
  13. data/docs/dsl/by_method/geometry/horizontal_alignment.md +1 -0
  14. data/docs/dsl/by_method/geometry/rows.md +1 -0
  15. data/docs/dsl/by_method/geometry/vertical_alignment.md +1 -0
  16. data/docs/dsl/by_method/geometry/width.md +0 -0
  17. data/docs/dsl/by_method/geometry/x.md +1 -0
  18. data/docs/dsl/by_method/geometry/xn.md +1 -0
  19. data/docs/dsl/by_method/geometry/y.md +1 -0
  20. data/docs/dsl/by_method/geometry/yn.md +1 -0
  21. data/docs/dsl/by_method/render.md +5 -1
  22. data/docs/dsl/by_method/renders.md +31 -1
  23. data/docs/dsl/by_method/view.md +26 -0
  24. data/docs/dsl/by_method/view/stream.md +18 -0
  25. data/docs/dsl/by_method/views.md +32 -1
  26. data/docs/events/by_name/set_border_caption.md +2 -4
  27. data/docs/events/by_name/set_border_title.md +2 -4
  28. data/examples/views/empty_template.rb +0 -4
  29. data/examples/views/full_screen.rb +30 -5
  30. data/examples/views/misc_view.rb +464 -0
  31. data/examples/views/wordwrap.rb +72 -0
  32. data/examples/views/wordwrap.txt +8 -0
  33. data/integrations/dsl_app_021.rb +127 -0
  34. data/integrations/dsl_app_022.rb +133 -0
  35. data/integrations/expected/342_streams.out +1 -1
  36. data/integrations/expected/dsl_app_001.out +1 -1
  37. data/integrations/expected/dsl_app_002.out +1 -1
  38. data/integrations/expected/dsl_app_003.out +1 -1
  39. data/integrations/expected/dsl_app_004.out +1 -1
  40. data/integrations/expected/dsl_app_005.out +1 -1
  41. data/integrations/expected/dsl_app_006.out +1 -1
  42. data/integrations/expected/dsl_app_007.out +1 -1
  43. data/integrations/expected/dsl_app_008.out +1 -1
  44. data/integrations/expected/dsl_app_009.out +1 -1
  45. data/integrations/expected/dsl_app_010.out +1 -1
  46. data/integrations/expected/dsl_app_011.out +1 -1
  47. data/integrations/expected/dsl_app_012.out +1 -1
  48. data/integrations/expected/dsl_app_013.out +1 -1
  49. data/integrations/expected/dsl_app_014.out +1 -1
  50. data/integrations/expected/dsl_app_015.out +1 -1
  51. data/integrations/expected/dsl_app_016.out +1 -1
  52. data/integrations/expected/dsl_app_021.out +1 -0
  53. data/integrations/expected/dsl_app_022.out +1 -0
  54. data/integrations/support/test_interface_021.rb +7 -0
  55. data/integrations/support/test_interface_022.rb +15 -0
  56. data/lib/vedeu/all.rb +4 -2
  57. data/lib/vedeu/borders/border.rb +22 -6
  58. data/lib/vedeu/borders/repository.rb +4 -8
  59. data/lib/vedeu/buffers/buffer.rb +9 -6
  60. data/lib/vedeu/buffers/empty.rb +26 -23
  61. data/lib/vedeu/buffers/view.rb +44 -41
  62. data/lib/vedeu/cells/cursor.rb +0 -2
  63. data/lib/vedeu/cells/empty.rb +0 -1
  64. data/lib/vedeu/cells/escape.rb +0 -2
  65. data/lib/vedeu/coercers/alignment.rb +58 -8
  66. data/lib/vedeu/coercers/horizontal_alignment.rb +13 -9
  67. data/lib/vedeu/coercers/vertical_alignment.rb +13 -8
  68. data/lib/vedeu/common.rb +1 -1
  69. data/lib/vedeu/configuration/configuration.rb +41 -3
  70. data/lib/vedeu/cursors/coordinate.rb +1 -3
  71. data/lib/vedeu/cursors/cursor.rb +2 -6
  72. data/lib/vedeu/dsl/all.rb +1 -2
  73. data/lib/vedeu/dsl/border.rb +6 -6
  74. data/lib/vedeu/dsl/elements.rb +2 -2
  75. data/lib/vedeu/dsl/geometry.rb +7 -7
  76. data/lib/vedeu/dsl/{string → helpers}/align.rb +0 -0
  77. data/lib/vedeu/dsl/helpers/all.rb +17 -0
  78. data/lib/vedeu/dsl/{attributes.rb → helpers/attributes.rb} +0 -0
  79. data/lib/vedeu/dsl/{string → helpers}/text.rb +0 -0
  80. data/lib/vedeu/dsl/{string → helpers}/truncate.rb +0 -0
  81. data/lib/vedeu/dsl/{string → helpers}/wordwrap.rb +0 -0
  82. data/lib/vedeu/dsl/view.rb +11 -19
  83. data/lib/vedeu/dsl/views.rb +16 -106
  84. data/lib/vedeu/geometries/all.rb +0 -1
  85. data/lib/vedeu/geometries/area/area.rb +6 -12
  86. data/lib/vedeu/geometries/area/dimension.rb +21 -44
  87. data/lib/vedeu/geometries/dsl/all.rb +0 -1
  88. data/lib/vedeu/geometries/dsl/dsl.rb +22 -31
  89. data/lib/vedeu/geometries/geometry.rb +6 -0
  90. data/lib/vedeu/geometries/position.rb +6 -3
  91. data/lib/vedeu/geometries/repository.rb +1 -1
  92. data/lib/vedeu/input/mouse.rb +1 -0
  93. data/lib/vedeu/logging/log.rb +3 -6
  94. data/lib/vedeu/menus/dsl.rb +4 -5
  95. data/lib/vedeu/output/compressor.rb +11 -1
  96. data/lib/vedeu/output/viewport.rb +59 -59
  97. data/lib/vedeu/presentation/all.rb +1 -2
  98. data/lib/vedeu/presentation/colour.rb +75 -3
  99. data/lib/vedeu/{geometries/positionable.rb → presentation/position.rb} +4 -4
  100. data/lib/vedeu/presentation/presentation.rb +1 -3
  101. data/lib/vedeu/presentation/styles.rb +16 -1
  102. data/lib/vedeu/repositories/all.rb +0 -1
  103. data/lib/vedeu/sentence.rb +91 -0
  104. data/lib/vedeu/support/point.rb +72 -0
  105. data/lib/vedeu/terminal/terminal.rb +11 -53
  106. data/lib/vedeu/version.rb +1 -1
  107. data/lib/vedeu/views/composition.rb +11 -1
  108. data/lib/vedeu/views/default_attributes.rb +2 -0
  109. data/lib/vedeu/views/line.rb +16 -1
  110. data/lib/vedeu/views/stream.rb +16 -1
  111. data/lib/vedeu/views/view.rb +25 -17
  112. data/test/lib/vedeu/borders/border_test.rb +20 -2
  113. data/test/lib/vedeu/buffers/buffer_test.rb +15 -2
  114. data/test/lib/vedeu/buffers/empty_test.rb +51 -18
  115. data/test/lib/vedeu/buffers/view_test.rb +2 -2
  116. data/test/lib/vedeu/coercers/alignment_test.rb +32 -0
  117. data/test/lib/vedeu/coercers/horizontal_alignment_test.rb +16 -0
  118. data/test/lib/vedeu/coercers/vertical_alignment_test.rb +16 -0
  119. data/test/lib/vedeu/cursors/cursor_test.rb +4 -4
  120. data/test/lib/vedeu/cursors/dsl_test.rb +35 -21
  121. data/test/lib/vedeu/dsl/elements_test.rb +94 -2
  122. data/test/lib/vedeu/dsl/{string → helpers}/align_test.rb +0 -0
  123. data/test/lib/vedeu/dsl/{attributes_test.rb → helpers/attributes_test.rb} +0 -0
  124. data/test/lib/vedeu/dsl/{string → helpers}/text_test.rb +0 -0
  125. data/test/lib/vedeu/dsl/{string → helpers}/truncate_test.rb +0 -0
  126. data/test/lib/vedeu/dsl/{string → helpers}/wordwrap_test.rb +0 -0
  127. data/test/lib/vedeu/dsl/view_test.rb +22 -4
  128. data/test/lib/vedeu/dsl/views_test.rb +8 -5
  129. data/test/lib/vedeu/geometries/dsl/dsl_test.rb +2 -159
  130. data/test/lib/vedeu/geometries/position_test.rb +118 -60
  131. data/test/lib/vedeu/input/mouse_test.rb +1 -6
  132. data/test/lib/vedeu/logging/log_test.rb +14 -3
  133. data/test/lib/vedeu/presentation/colour_test.rb +77 -0
  134. data/test/lib/vedeu/{geometries/positionable_test.rb → presentation/position_test.rb} +4 -4
  135. data/test/lib/vedeu/sentence_test.rb +49 -0
  136. data/test/lib/vedeu/support/point_test.rb +139 -0
  137. data/test/lib/vedeu/terminal/terminal_test.rb +3 -44
  138. data/test/lib/vedeu/views/composition_test.rb +24 -4
  139. data/test/lib/vedeu/views/default_attributes_test.rb +10 -2
  140. data/test/lib/vedeu/views/view_test.rb +8 -15
  141. data/test/support/examples/material_colours_app.rb +0 -6
  142. data/vedeu.gemspec +1 -1
  143. metadata +58 -38
  144. data/examples/views/lines_line_stream.rb +0 -95
  145. data/examples/views/lines_line_streams.rb +0 -75
  146. data/examples/views/lines_line_streams_stream.rb +0 -78
  147. data/examples/views/lines_line_streams_stream_stream.rb +0 -50
  148. data/examples/views/lines_streams.rb +0 -93
  149. data/lib/vedeu/dsl/string/all.rb +0 -16
  150. data/lib/vedeu/geometries/dsl/validator.rb +0 -62
  151. data/lib/vedeu/presentation/background.rb +0 -54
  152. data/lib/vedeu/presentation/foreground.rb +0 -54
  153. data/lib/vedeu/repositories/parent.rb +0 -34
  154. data/test/lib/vedeu/geometries/dsl/validator_test.rb +0 -85
  155. data/test/lib/vedeu/presentation/background_test.rb +0 -74
  156. data/test/lib/vedeu/presentation/foreground_test.rb +0 -75
@@ -1,75 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # frozen_string_literal: true
4
-
5
- require 'bundler/setup'
6
- require 'vedeu'
7
-
8
- class DSLApp
9
-
10
- Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
11
-
12
- Vedeu.configure do
13
- debug!
14
- log '/tmp/vedeu_views_dsl.log'
15
- run_once!
16
- standalone!
17
- end
18
-
19
- Vedeu.interface :test1_interface do
20
- border do
21
- title 'Test 1'
22
- end
23
- geometry do
24
- x 4
25
- y 3
26
- xn 34
27
- yn 8
28
- end
29
- end
30
-
31
- Vedeu.interface :test2_interface do
32
- border do
33
- title 'Test 2'
34
- end
35
- geometry do
36
- x 36
37
- y 3
38
- xn 66
39
- yn 8
40
- end
41
- end
42
-
43
- Vedeu.keymap '_global_' do
44
- key('q') { Vedeu.exit }
45
- end
46
-
47
- Vedeu.render do
48
- view(:test1_interface) do
49
- lines do
50
- line do
51
- streams do
52
- end
53
- end
54
- end
55
- end
56
-
57
- view(:test2_interface) do
58
- lines do
59
- line do
60
- streams do
61
- text 'v->ls->l->ss->text 1', { foreground: '#00ffff' }
62
- text 'v->ls->l->ss->text 2', { foreground: '#ffff00' }
63
- end
64
- end
65
- end
66
- end
67
- end
68
-
69
- def self.start(argv = ARGV)
70
- Vedeu::Launcher.execute!(argv)
71
- end
72
-
73
- end # DSLApp
74
-
75
- DSLApp.start
@@ -1,78 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # frozen_string_literal: true
4
-
5
- require 'bundler/setup'
6
- require 'vedeu'
7
-
8
- class DSLApp
9
-
10
- Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
11
-
12
- Vedeu.configure do
13
- debug!
14
- log '/tmp/vedeu_views_dsl.log'
15
- run_once!
16
- standalone!
17
- end
18
-
19
- Vedeu.interface :test1_interface do
20
- border do
21
- title 'Test 1'
22
- end
23
- geometry do
24
- x 4
25
- y 3
26
- xn 34
27
- yn 8
28
- end
29
- end
30
-
31
- Vedeu.interface :test2_interface do
32
- border do
33
- title 'Test 2'
34
- end
35
- geometry do
36
- x 36
37
- y 3
38
- xn 66
39
- yn 8
40
- end
41
- end
42
-
43
- Vedeu.render do
44
- view(:test1_interface) do
45
- lines do
46
- line do
47
- streams do
48
- stream 'test 1', { foreground: '#00ff00' }
49
- end
50
- end
51
- end
52
- end
53
-
54
- view(:test2_interface) do
55
- lines do
56
- line do
57
- streams do
58
- stream do
59
- text 'text 1', { foreground: '#00ffff' }
60
- text 'text 2', { foreground: '#ffff00' }
61
- end
62
- stream do
63
- text 'text 3', { foreground: '#ff0000' }
64
- text 'text 4', { foreground: '#ff00ff' }
65
- end
66
- end
67
- end
68
- end
69
- end
70
- end
71
-
72
- def self.start(argv = ARGV)
73
- Vedeu::Launcher.execute!(argv)
74
- end
75
-
76
- end # DSLApp
77
-
78
- DSLApp.start
@@ -1,50 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # frozen_string_literal: true
4
-
5
- require 'bundler/setup'
6
- require 'vedeu'
7
-
8
- class DSLApp
9
-
10
- Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
11
-
12
- Vedeu.configure do
13
- debug!
14
- log '/tmp/vedeu_views_dsl.log'
15
- run_once!
16
- standalone!
17
- end
18
-
19
- Vedeu.interface :main_interface do
20
- border do
21
- title 'Test 1'
22
- end
23
- geometry do
24
- x 4
25
- y 3
26
- xn 34
27
- yn 8
28
- end
29
- end
30
-
31
- Vedeu.render do
32
- view(:main_interface) do
33
- lines do
34
- line do
35
- streams do
36
- stream 'v->ls->l->ss->stream 1', { foreground: '#ffff00' }
37
- stream 'v->ls->l->ss->stream 2', { foreground: '#00ffff' }
38
- end
39
- end
40
- end
41
- end
42
- end
43
-
44
- def self.start(argv = ARGV)
45
- Vedeu::Launcher.execute!(argv)
46
- end
47
-
48
- end # DSLApp
49
-
50
- DSLApp.start
@@ -1,93 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # frozen_string_literal: true
4
-
5
- require 'bundler/setup'
6
- require 'vedeu'
7
-
8
- class DSLApp
9
-
10
- Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
11
-
12
- Vedeu.configure do
13
- debug!
14
- log '/tmp/vedeu_views_dsl.log'
15
- run_once!
16
- standalone!
17
- end
18
-
19
- Vedeu.interface :test1_interface do
20
- border do
21
- title 'Test 1'
22
- end
23
- geometry do
24
- x 4
25
- y 3
26
- xn 34
27
- yn 8
28
- end
29
- end
30
-
31
- Vedeu.interface :help1_interface do
32
- geometry do
33
- x use(:test1_interface).x
34
- y use(:test1_interface).south
35
- xn use(:test1_interface).xn
36
- yn use(:test1_interface).south(3)
37
- end
38
- end
39
-
40
- Vedeu.interface :test2_interface do
41
- border do
42
- title 'Test 2'
43
- end
44
- geometry do
45
- x use(:test1_interface).east(6)
46
- y use(:test1_interface).y
47
- width use(:test1_interface).width
48
- height use(:test1_interface).height
49
- end
50
- end
51
-
52
- Vedeu.interface :help2_interface do
53
- geometry do
54
- x use(:test2_interface).x
55
- y use(:test2_interface).south
56
- xn use(:test2_interface).xn
57
- yn use(:test2_interface).south(3)
58
- end
59
- end
60
-
61
- Vedeu.render do
62
- view(:test1_interface) do
63
- lines do
64
- streams do
65
- text 'v->ls->ss->text 1', { foreground: '#00ff00' }
66
- text 'v->ls->ss->text 2', { foreground: '#0000ff' }
67
- end
68
- end
69
- end
70
-
71
- view(:help1_interface) do
72
- end
73
-
74
- view(:test2_interface) do
75
- lines do
76
- streams do
77
- stream 'v->ls->ss->stream 1', { foreground: '#00ff00' }
78
- stream 'v->ls->ss->stream 2', { foreground: '#ff0000' }
79
- end
80
- end
81
- end
82
-
83
- view(:help2_interface) do
84
- end
85
- end
86
-
87
- def self.start(argv = ARGV)
88
- Vedeu::Launcher.execute!(argv)
89
- end
90
-
91
- end # DSLApp
92
-
93
- DSLApp.start
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Vedeu
4
-
5
- # Provides a mechanism to help configure and use Vedeu.
6
- #
7
- module DSL
8
-
9
- end # DSL
10
-
11
- end # Vedeu
12
-
13
- require 'vedeu/dsl/string/align'
14
- require 'vedeu/dsl/string/truncate'
15
- require 'vedeu/dsl/string/wordwrap'
16
- require 'vedeu/dsl/string/text'
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Vedeu
4
-
5
- module Geometries
6
-
7
- # Validate values given to {Vedeu::Geometries::DSL}.
8
- #
9
- # @api private
10
- #
11
- module Validator
12
-
13
- include Vedeu::Common
14
-
15
- # @param value [Fixnum] The number of lines/rows.
16
- # @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
17
- # @return [Boolean]
18
- def validate_height!(value)
19
- fail Vedeu::Error::InvalidSyntax,
20
- 'No height given.' if absent?(value)
21
-
22
- true
23
- end
24
-
25
- # @param value [Symbol] One of :center, :centre, :left,
26
- # :none, :right.
27
- # @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
28
- # @return [Boolean]
29
- def validate_horizontal_alignment!(value)
30
- fail Vedeu::Error::InvalidSyntax,
31
- 'No horizontal alignment given. Valid values are :center, ' \
32
- ':centre, :left, :none, :right.' unless present?(value)
33
-
34
- true
35
- end
36
-
37
- # @param value [Symbol] One of :bottom, :middle, :none, :top.
38
- # @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
39
- # @return [Boolean]
40
- def validate_vertical_alignment!(value)
41
- fail Vedeu::Error::InvalidSyntax,
42
- 'No vertical alignment given. Valid values are :bottom, ' \
43
- ':middle, :none, :top.' unless present?(value)
44
-
45
- true
46
- end
47
-
48
- # @param value [Fixnum] The number of characters/columns.
49
- # @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
50
- # @return [Boolean]
51
- def validate_width!(value)
52
- fail Vedeu::Error::InvalidSyntax,
53
- 'No width given.' if absent?(value)
54
-
55
- true
56
- end
57
-
58
- end # Validator
59
-
60
- end # Geometries
61
-
62
- end # Vedeu
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Vedeu
4
-
5
- module Presentation
6
-
7
- module Colour
8
-
9
- # Provides the background colour when included in a class with
10
- # a colour attribute.
11
- #
12
- # @api private
13
- #
14
- module Background
15
-
16
- include Vedeu::Repositories::Parent
17
-
18
- # When the background colour for the model exists, return it,
19
- # otherwise returns the parent background colour, or an empty
20
- # Vedeu::Colours::Background.
21
- #
22
- # @return [Vedeu::Colours::Background]
23
- def background
24
- @background ||= if colour && present?(colour.background)
25
- colour.background
26
-
27
- elsif named_colour?
28
- named_colour.background
29
-
30
- elsif parent && present?(parent.background)
31
- parent.background
32
-
33
- else
34
- Vedeu::Colours::Background.new
35
-
36
- end
37
- end
38
-
39
- # Allows the setting of the background colour by coercing the
40
- # given value into a Vedeu::Colours::Background colour.
41
- #
42
- # @return [Vedeu::Colours::Background]
43
- def background=(value)
44
- @background = colour.background = value
45
- @_colour = @colour = colour
46
- end
47
-
48
- end # Background
49
-
50
- end # Colour
51
-
52
- end # Presentation
53
-
54
- end # Vedeu
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Vedeu
4
-
5
- module Presentation
6
-
7
- module Colour
8
-
9
- # Provides the foreground colour when included in a class with
10
- # a colour attribute.
11
- #
12
- # @api private
13
- #
14
- module Foreground
15
-
16
- include Vedeu::Repositories::Parent
17
-
18
- # When the foreground colour for the model exists, return it,
19
- # otherwise returns the parent foreground colour, or an empty
20
- # Vedeu::Colours::Foreground.
21
- #
22
- # @return [Vedeu::Colours::Foreground]
23
- def foreground
24
- @foreground ||= if colour && present?(colour.foreground)
25
- colour.foreground
26
-
27
- elsif named_colour?
28
- named_colour.foreground
29
-
30
- elsif parent && present?(parent.foreground)
31
- parent.foreground
32
-
33
- else
34
- Vedeu::Colours::Foreground.new
35
-
36
- end
37
- end
38
-
39
- # Allows the setting of the foreground colour by coercing the
40
- # given value into a Vedeu::Colours::Foreground colour.
41
- #
42
- # @return [Vedeu::Colours::Foreground]
43
- def foreground=(value)
44
- @foreground = colour.foreground = value
45
- @_colour = @colour = colour
46
- end
47
-
48
- end # Foreground
49
-
50
- end # Colour
51
-
52
- end # Presentation
53
-
54
- end # Vedeu