vedeu 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/docs/dsl.md +3 -3
  3. data/examples/borders_app.rb +2 -0
  4. data/examples/colours_app.rb +2 -0
  5. data/examples/configuration_app.rb +2 -0
  6. data/examples/drb_app.rb +2 -0
  7. data/examples/focus_app.rb +2 -0
  8. data/examples/hello_world.rb +2 -0
  9. data/examples/material_colours_app.rb +2 -0
  10. data/lib/vedeu.rb +2 -0
  11. data/lib/vedeu/all.rb +4 -13
  12. data/lib/vedeu/api.rb +7 -6
  13. data/lib/vedeu/borders/border.rb +1 -1
  14. data/lib/vedeu/borders/render_border.rb +18 -18
  15. data/lib/vedeu/buffers/buffer.rb +18 -28
  16. data/lib/vedeu/colours/colour.rb +1 -1
  17. data/lib/vedeu/colours/colour_translator.rb +1 -1
  18. data/lib/vedeu/cursor/cursor.rb +9 -6
  19. data/lib/vedeu/dsl/border.rb +1 -1
  20. data/lib/vedeu/dsl/composition.rb +5 -5
  21. data/lib/vedeu/dsl/geometry.rb +1 -1
  22. data/lib/vedeu/dsl/group.rb +1 -1
  23. data/lib/vedeu/dsl/interface.rb +69 -93
  24. data/lib/vedeu/dsl/keymap.rb +1 -1
  25. data/lib/vedeu/dsl/line.rb +11 -11
  26. data/lib/vedeu/dsl/shared.rb +81 -0
  27. data/lib/vedeu/dsl/stream.rb +3 -3
  28. data/lib/vedeu/dsl/view.rb +76 -64
  29. data/lib/vedeu/models/escape.rb +1 -1
  30. data/lib/vedeu/models/interface.rb +3 -57
  31. data/lib/vedeu/models/menu.rb +1 -1
  32. data/lib/vedeu/models/views/all.rb +22 -0
  33. data/lib/vedeu/models/views/char.rb +175 -0
  34. data/lib/vedeu/models/views/chars.rb +13 -0
  35. data/lib/vedeu/models/views/composition.rb +73 -0
  36. data/lib/vedeu/models/views/line.rb +111 -0
  37. data/lib/vedeu/models/views/lines.rb +13 -0
  38. data/lib/vedeu/models/views/stream.rb +122 -0
  39. data/lib/vedeu/models/views/streams.rb +13 -0
  40. data/lib/vedeu/models/views/view.rb +157 -0
  41. data/lib/vedeu/models/views/view_collection.rb +13 -0
  42. data/lib/vedeu/null/view.rb +67 -0
  43. data/lib/vedeu/output/clear/named_interface.rb +4 -4
  44. data/lib/vedeu/output/compressor.rb +6 -6
  45. data/lib/vedeu/output/html_char.rb +6 -6
  46. data/lib/vedeu/output/output.rb +3 -3
  47. data/lib/vedeu/output/presentation.rb +1 -1
  48. data/lib/vedeu/output/renderers/escape_sequence.rb +1 -1
  49. data/lib/vedeu/output/renderers/file.rb +1 -1
  50. data/lib/vedeu/output/renderers/html.rb +3 -3
  51. data/lib/vedeu/output/renderers/json.rb +4 -4
  52. data/lib/vedeu/output/renderers/null.rb +1 -1
  53. data/lib/vedeu/output/renderers/terminal.rb +5 -5
  54. data/lib/vedeu/output/renderers/text.rb +3 -3
  55. data/lib/vedeu/output/style.rb +1 -1
  56. data/lib/vedeu/output/text.rb +20 -15
  57. data/lib/vedeu/output/viewport.rb +16 -23
  58. data/lib/vedeu/output/virtual_buffer.rb +9 -8
  59. data/lib/vedeu/output/virtual_terminal.rb +11 -11
  60. data/lib/vedeu/output/wordwrap.rb +5 -5
  61. data/lib/vedeu/runtime/application.rb +1 -1
  62. data/lib/vedeu/runtime/main_loop.rb +1 -1
  63. data/lib/vedeu/templating/helpers.rb +11 -10
  64. data/lib/vedeu/templating/template.rb +1 -1
  65. data/lib/vedeu/templating/view_template.rb +6 -6
  66. data/lib/vedeu/version.rb +1 -2
  67. data/test/lib/vedeu/api_test.rb +30 -30
  68. data/test/lib/vedeu/buffers/buffer_test.rb +5 -139
  69. data/test/lib/vedeu/colours/colour_translator_test.rb +3 -3
  70. data/test/lib/vedeu/configuration/api_test.rb +3 -3
  71. data/test/lib/vedeu/cursor/refresh_cursor_test.rb +1 -1
  72. data/test/lib/vedeu/dsl/composition_test.rb +7 -7
  73. data/test/lib/vedeu/dsl/group_test.rb +2 -2
  74. data/test/lib/vedeu/dsl/interface_test.rb +31 -21
  75. data/test/lib/vedeu/dsl/keymap_test.rb +4 -4
  76. data/test/lib/vedeu/dsl/line_test.rb +8 -8
  77. data/test/lib/vedeu/dsl/stream_test.rb +4 -4
  78. data/test/lib/vedeu/dsl/text_test.rb +11 -11
  79. data/test/lib/vedeu/dsl/view_test.rb +24 -29
  80. data/test/lib/vedeu/geometry/grid_test.rb +4 -4
  81. data/test/lib/vedeu/input/key_test.rb +1 -1
  82. data/test/lib/vedeu/internal_api_test.rb +18 -18
  83. data/test/lib/vedeu/models/focus_test.rb +54 -54
  84. data/test/lib/vedeu/models/interface_test.rb +11 -105
  85. data/test/lib/vedeu/models/menu_test.rb +1 -1
  86. data/test/lib/vedeu/models/views/char_test.rb +257 -0
  87. data/test/lib/vedeu/models/views/chars_test.rb +22 -0
  88. data/test/lib/vedeu/models/views/composition_test.rb +61 -0
  89. data/test/lib/vedeu/models/views/line_test.rb +189 -0
  90. data/test/lib/vedeu/models/views/lines_test.rb +22 -0
  91. data/test/lib/vedeu/models/views/stream_test.rb +138 -0
  92. data/test/lib/vedeu/models/views/streams_test.rb +22 -0
  93. data/test/lib/vedeu/models/views/view_test.rb +40 -0
  94. data/test/lib/vedeu/null/view_test.rb +12 -0
  95. data/test/lib/vedeu/output/clear/named_interface_test.rb +4 -4
  96. data/test/lib/vedeu/output/compressor_test.rb +28 -28
  97. data/test/lib/vedeu/output/html_char_test.rb +2 -2
  98. data/test/lib/vedeu/output/presentation_test.rb +10 -14
  99. data/test/lib/vedeu/output/renderers/escape_sequence_test.rb +20 -4
  100. data/test/lib/vedeu/output/renderers/html_test.rb +4 -4
  101. data/test/lib/vedeu/output/renderers/json_test.rb +3 -3
  102. data/test/lib/vedeu/output/text_test.rb +10 -10
  103. data/test/lib/vedeu/output/viewport_test.rb +21 -23
  104. data/test/lib/vedeu/output/virtual_buffer_test.rb +1 -1
  105. data/test/lib/vedeu/output/virtual_terminal_test.rb +1 -1
  106. data/test/lib/vedeu/output/wordwrap_test.rb +9 -9
  107. data/test/lib/vedeu/repositories/repository_test.rb +2 -2
  108. data/test/lib/vedeu/templating/helpers_test.rb +6 -39
  109. data/test/lib/vedeu/templating/template_test.rb +2 -2
  110. data/test/lib/vedeu/templating/view_template_test.rb +91 -91
  111. data/test/lib/vedeu/terminal_test.rb +1 -1
  112. metadata +33 -27
  113. data/lib/vedeu/buffers/display_buffer.rb +0 -39
  114. data/lib/vedeu/models/char.rb +0 -170
  115. data/lib/vedeu/models/chars.rb +0 -9
  116. data/lib/vedeu/models/composition.rb +0 -66
  117. data/lib/vedeu/models/line.rb +0 -112
  118. data/lib/vedeu/models/lines.rb +0 -9
  119. data/lib/vedeu/models/stream.rb +0 -122
  120. data/lib/vedeu/models/streams.rb +0 -9
  121. data/test/lib/vedeu/buffers/display_buffer_test.rb +0 -61
  122. data/test/lib/vedeu/models/char_test.rb +0 -253
  123. data/test/lib/vedeu/models/chars_test.rb +0 -18
  124. data/test/lib/vedeu/models/composition_test.rb +0 -57
  125. data/test/lib/vedeu/models/line_test.rb +0 -189
  126. data/test/lib/vedeu/models/lines_test.rb +0 -18
  127. data/test/lib/vedeu/models/stream_test.rb +0 -141
  128. data/test/lib/vedeu/models/streams_test.rb +0 -18
@@ -14,7 +14,7 @@ module Vedeu
14
14
 
15
15
  describe '.open' do
16
16
  context 'when a block was not given' do
17
- it { proc { Terminal.open }.must_raise(InvalidSyntax) }
17
+ it { proc { Terminal.open }.must_raise(Vedeu::InvalidSyntax) }
18
18
  end
19
19
 
20
20
  it 'opens a new terminal console in raw mode' do
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.5.4
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-31 00:00:00.000000000 Z
11
+ date: 2015-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -277,7 +277,6 @@ files:
277
277
  - lib/vedeu/borders/render_border.rb
278
278
  - lib/vedeu/buffers/buffer.rb
279
279
  - lib/vedeu/buffers/buffers.rb
280
- - lib/vedeu/buffers/display_buffer.rb
281
280
  - lib/vedeu/cli/generator/all.rb
282
281
  - lib/vedeu/cli/generator/application.rb
283
282
  - lib/vedeu/cli/generator/helpers.rb
@@ -345,6 +344,7 @@ files:
345
344
  - lib/vedeu/dsl/line.rb
346
345
  - lib/vedeu/dsl/menu.rb
347
346
  - lib/vedeu/dsl/presentation.rb
347
+ - lib/vedeu/dsl/shared.rb
348
348
  - lib/vedeu/dsl/stream.rb
349
349
  - lib/vedeu/dsl/text.rb
350
350
  - lib/vedeu/dsl/use.rb
@@ -374,9 +374,6 @@ files:
374
374
  - lib/vedeu/log/log.rb
375
375
  - lib/vedeu/log/timer.rb
376
376
  - lib/vedeu/models/cell.rb
377
- - lib/vedeu/models/char.rb
378
- - lib/vedeu/models/chars.rb
379
- - lib/vedeu/models/composition.rb
380
377
  - lib/vedeu/models/escape.rb
381
378
  - lib/vedeu/models/focus.rb
382
379
  - lib/vedeu/models/group.rb
@@ -384,13 +381,19 @@ files:
384
381
  - lib/vedeu/models/interface.rb
385
382
  - lib/vedeu/models/interface_collection.rb
386
383
  - lib/vedeu/models/interfaces.rb
387
- - lib/vedeu/models/line.rb
388
- - lib/vedeu/models/lines.rb
389
384
  - lib/vedeu/models/menu.rb
390
385
  - lib/vedeu/models/menus.rb
391
- - lib/vedeu/models/stream.rb
392
- - lib/vedeu/models/streams.rb
393
386
  - lib/vedeu/models/toggleable.rb
387
+ - lib/vedeu/models/views/all.rb
388
+ - lib/vedeu/models/views/char.rb
389
+ - lib/vedeu/models/views/chars.rb
390
+ - lib/vedeu/models/views/composition.rb
391
+ - lib/vedeu/models/views/line.rb
392
+ - lib/vedeu/models/views/lines.rb
393
+ - lib/vedeu/models/views/stream.rb
394
+ - lib/vedeu/models/views/streams.rb
395
+ - lib/vedeu/models/views/view.rb
396
+ - lib/vedeu/models/views/view_collection.rb
394
397
  - lib/vedeu/null.rb
395
398
  - lib/vedeu/null/border.rb
396
399
  - lib/vedeu/null/buffer.rb
@@ -398,6 +401,7 @@ files:
398
401
  - lib/vedeu/null/geometry.rb
399
402
  - lib/vedeu/null/interface.rb
400
403
  - lib/vedeu/null/menu.rb
404
+ - lib/vedeu/null/view.rb
401
405
  - lib/vedeu/output/clear/named_group.rb
402
406
  - lib/vedeu/output/clear/named_interface.rb
403
407
  - lib/vedeu/output/compressor.rb
@@ -468,7 +472,6 @@ files:
468
472
  - test/lib/vedeu/borders/render_border_test.rb
469
473
  - test/lib/vedeu/buffers/buffer_test.rb
470
474
  - test/lib/vedeu/buffers/buffers_test.rb
471
- - test/lib/vedeu/buffers/display_buffer_test.rb
472
475
  - test/lib/vedeu/cli/generator/application_test.rb
473
476
  - test/lib/vedeu/cli/generator/helpers_test.rb
474
477
  - test/lib/vedeu/cli/generator/view_test.rb
@@ -533,9 +536,6 @@ files:
533
536
  - test/lib/vedeu/log/log_test.rb
534
537
  - test/lib/vedeu/log/timer_test.rb
535
538
  - test/lib/vedeu/models/cell_test.rb
536
- - test/lib/vedeu/models/char_test.rb
537
- - test/lib/vedeu/models/chars_test.rb
538
- - test/lib/vedeu/models/composition_test.rb
539
539
  - test/lib/vedeu/models/escape_test.rb
540
540
  - test/lib/vedeu/models/focus_test.rb
541
541
  - test/lib/vedeu/models/group_test.rb
@@ -543,19 +543,24 @@ files:
543
543
  - test/lib/vedeu/models/interface_collection_test.rb
544
544
  - test/lib/vedeu/models/interface_test.rb
545
545
  - test/lib/vedeu/models/interfaces_test.rb
546
- - test/lib/vedeu/models/line_test.rb
547
- - test/lib/vedeu/models/lines_test.rb
548
546
  - test/lib/vedeu/models/menu_test.rb
549
547
  - test/lib/vedeu/models/menus_test.rb
550
- - test/lib/vedeu/models/stream_test.rb
551
- - test/lib/vedeu/models/streams_test.rb
552
548
  - test/lib/vedeu/models/toggleable_test.rb
549
+ - test/lib/vedeu/models/views/char_test.rb
550
+ - test/lib/vedeu/models/views/chars_test.rb
551
+ - test/lib/vedeu/models/views/composition_test.rb
552
+ - test/lib/vedeu/models/views/line_test.rb
553
+ - test/lib/vedeu/models/views/lines_test.rb
554
+ - test/lib/vedeu/models/views/stream_test.rb
555
+ - test/lib/vedeu/models/views/streams_test.rb
556
+ - test/lib/vedeu/models/views/view_test.rb
553
557
  - test/lib/vedeu/null/border_test.rb
554
558
  - test/lib/vedeu/null/buffer_test.rb
555
559
  - test/lib/vedeu/null/generic_test.rb
556
560
  - test/lib/vedeu/null/geometry_test.rb
557
561
  - test/lib/vedeu/null/interface_test.rb
558
562
  - test/lib/vedeu/null/menu_test.rb
563
+ - test/lib/vedeu/null/view_test.rb
559
564
  - test/lib/vedeu/output/clear/named_group_test.rb
560
565
  - test/lib/vedeu/output/clear/named_interface_test.rb
561
566
  - test/lib/vedeu/output/compressor_test.rb
@@ -631,7 +636,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
631
636
  version: '0'
632
637
  requirements: []
633
638
  rubyforge_project:
634
- rubygems_version: 2.4.8
639
+ rubygems_version: 2.4.5
635
640
  signing_key:
636
641
  specification_version: 4
637
642
  summary: A terminal case of wonderland.
@@ -655,7 +660,6 @@ test_files:
655
660
  - test/lib/vedeu/borders/render_border_test.rb
656
661
  - test/lib/vedeu/buffers/buffer_test.rb
657
662
  - test/lib/vedeu/buffers/buffers_test.rb
658
- - test/lib/vedeu/buffers/display_buffer_test.rb
659
663
  - test/lib/vedeu/cli/generator/application_test.rb
660
664
  - test/lib/vedeu/cli/generator/helpers_test.rb
661
665
  - test/lib/vedeu/cli/generator/view_test.rb
@@ -720,9 +724,6 @@ test_files:
720
724
  - test/lib/vedeu/log/log_test.rb
721
725
  - test/lib/vedeu/log/timer_test.rb
722
726
  - test/lib/vedeu/models/cell_test.rb
723
- - test/lib/vedeu/models/char_test.rb
724
- - test/lib/vedeu/models/chars_test.rb
725
- - test/lib/vedeu/models/composition_test.rb
726
727
  - test/lib/vedeu/models/escape_test.rb
727
728
  - test/lib/vedeu/models/focus_test.rb
728
729
  - test/lib/vedeu/models/group_test.rb
@@ -730,19 +731,24 @@ test_files:
730
731
  - test/lib/vedeu/models/interface_collection_test.rb
731
732
  - test/lib/vedeu/models/interface_test.rb
732
733
  - test/lib/vedeu/models/interfaces_test.rb
733
- - test/lib/vedeu/models/line_test.rb
734
- - test/lib/vedeu/models/lines_test.rb
735
734
  - test/lib/vedeu/models/menu_test.rb
736
735
  - test/lib/vedeu/models/menus_test.rb
737
- - test/lib/vedeu/models/stream_test.rb
738
- - test/lib/vedeu/models/streams_test.rb
739
736
  - test/lib/vedeu/models/toggleable_test.rb
737
+ - test/lib/vedeu/models/views/char_test.rb
738
+ - test/lib/vedeu/models/views/chars_test.rb
739
+ - test/lib/vedeu/models/views/composition_test.rb
740
+ - test/lib/vedeu/models/views/line_test.rb
741
+ - test/lib/vedeu/models/views/lines_test.rb
742
+ - test/lib/vedeu/models/views/stream_test.rb
743
+ - test/lib/vedeu/models/views/streams_test.rb
744
+ - test/lib/vedeu/models/views/view_test.rb
740
745
  - test/lib/vedeu/null/border_test.rb
741
746
  - test/lib/vedeu/null/buffer_test.rb
742
747
  - test/lib/vedeu/null/generic_test.rb
743
748
  - test/lib/vedeu/null/geometry_test.rb
744
749
  - test/lib/vedeu/null/interface_test.rb
745
750
  - test/lib/vedeu/null/menu_test.rb
751
+ - test/lib/vedeu/null/view_test.rb
746
752
  - test/lib/vedeu/output/clear/named_group_test.rb
747
753
  - test/lib/vedeu/output/clear/named_interface_test.rb
748
754
  - test/lib/vedeu/output/compressor_test.rb
@@ -1,39 +0,0 @@
1
- module Vedeu
2
-
3
- # This module is included in Vedeu::Interface to provide means to store client
4
- # application views created with {Vedeu.renders} or {Vedeu.views}.
5
- #
6
- module DisplayBuffer
7
-
8
- include Vedeu::Common
9
-
10
- # Store the view and immediately refresh it; causing to be pushed to the
11
- # Terminal.
12
- #
13
- # @return [Vedeu::Interface]
14
- def store_immediate
15
- store_deferred
16
-
17
- Vedeu::Refresh.by_name(name)
18
-
19
- self
20
- end
21
-
22
- # When a name is given, the view is stored with this name. This view will be
23
- # shown next time the refresh event is triggered for the interface.
24
- #
25
- # @raise [Vedeu::InvalidSyntax] The name is not defined.
26
- # @return [Vedeu::Interface]
27
- def store_deferred
28
- unless present?(name)
29
- fail Vedeu::InvalidSyntax, 'Cannot store an interface without a name.'
30
- end
31
-
32
- Vedeu.buffers.by_name(name).add(self)
33
-
34
- self
35
- end
36
-
37
- end # DisplayBuffer
38
-
39
- end # Vedeu
@@ -1,170 +0,0 @@
1
- module Vedeu
2
-
3
- # A Char represents a single character of the terminal. It is a container for
4
- # the a single character in a {Vedeu::Stream}.
5
- #
6
- # Though a multi-character String can be passed as a value, only the first
7
- # character is returned in the escape sequence.
8
- #
9
- class Char
10
-
11
- include Comparable
12
- include Vedeu::Presentation
13
-
14
- # @!attribute [rw] border
15
- # @return [NilClass|Symbol]
16
- attr_accessor :border
17
-
18
- # @!attribute [rw] parent
19
- # @return [Vedeu::Line]
20
- attr_accessor :parent
21
-
22
- # @!attribute [r] attributes
23
- # @return [Hash]
24
- attr_reader :attributes
25
-
26
- # @!attribute [r] position
27
- # @return [Vedeu::Position]
28
- attr_reader :position
29
-
30
- # @!attribute [w] value
31
- # @return [String]
32
- attr_writer :value
33
-
34
- # Returns a new instance of Vedeu::Char.
35
- #
36
- # @param attributes [Hash]
37
- # @option attributes value [String]
38
- # @option attributes parent [Vedeu::Line]
39
- # @option attributes colour [Vedeu::Colour]
40
- # @option attributes style [Vedeu::Style]
41
- # @option attributes position [Vedeu::Position]
42
- # @option attributes border [NilClass|Symbol] A symbol representing the
43
- # border 'piece' this Char represents.
44
- # @return [Vedeu::Char]
45
- def initialize(attributes = {})
46
- @attributes = attributes
47
- @border = @attributes[:border]
48
- @parent = @attributes[:parent]
49
- @value = @attributes[:value]
50
- end
51
-
52
- # When {Vedeu::Viewport#padded_lines} has less lines that required to fill
53
- # the visible area of the interface, it creates a line that contains a
54
- # single {Vedeu::Char} containing a space (0x20); later,
55
- # {Vedeu::Viewport#padded_columns} will attempts to call `#chars` on an
56
- # expected {Vedeu::Line} and fail; this method fixes that.
57
- #
58
- # @return [Array]
59
- def chars
60
- []
61
- end
62
-
63
- # An object is equal when its values are the same.
64
- #
65
- # @param other [Vedeu::Char]
66
- # @return [Boolean]
67
- def eql?(other)
68
- self.class == other.class && value == other.value &&
69
- position == other.position
70
- end
71
- alias_method :==, :eql?
72
-
73
- # Override Ruby's Object#inspect method to provide a more helpful output.
74
- #
75
- # @return [String]
76
- def inspect
77
- "<Vedeu::Char '#{Vedeu::Esc.escape(to_s)}'>"
78
- end
79
-
80
- # @return [Vedeu::Position]
81
- def position
82
- @position = Vedeu::Position.coerce(@attributes[:position])
83
- end
84
-
85
- # Sets the position of the Char.
86
- #
87
- # @param value [Vedeu::Position]
88
- # @return [Vedeu::Position]
89
- def position=(value)
90
- @position = @attributes[:position] = Vedeu::Position.coerce(value)
91
- end
92
-
93
- # @return [String]
94
- def value
95
- if border
96
- Vedeu::Esc.border { @value }
97
-
98
- else
99
- @value
100
-
101
- end
102
- end
103
-
104
- # Returns the x position for the Char when set.
105
- #
106
- # @return [Fixnum|NilClass]
107
- def x
108
- position.x if position
109
- end
110
-
111
- # Returns the y position for the Char when set.
112
- #
113
- # @return [Fixnum|NilClass]
114
- def y
115
- position.y if position
116
- end
117
-
118
- # Returns a Hash of all the values before coercion.
119
- #
120
- # @note
121
- # From this hash we should be able to construct a new instance of
122
- # Vedeu::Char, however, at the moment, `:parent` cannot be coerced.
123
- #
124
- # @return [Hash]
125
- def to_hash
126
- {
127
- border: border.to_s,
128
- colour: colour_to_hash,
129
- parent: parent_to_hash,
130
- position: position_to_hash,
131
- style: style.to_s,
132
- value: value,
133
- }
134
- end
135
-
136
- # @return [String]
137
- def to_html
138
- @to_html ||= Vedeu::HTMLChar.render(self)
139
- end
140
-
141
- private
142
-
143
- # @return [Hash]
144
- def colour_to_hash
145
- {
146
- background: background.to_s,
147
- foreground: foreground.to_s,
148
- }
149
- end
150
-
151
- # @return [Hash]
152
- def parent_to_hash
153
- {
154
- background: parent_background.to_s,
155
- foreground: parent_foreground.to_s,
156
- style: parent_style.to_s,
157
- }
158
- end
159
-
160
- # @return [Hash]
161
- def position_to_hash
162
- {
163
- y: y,
164
- x: x,
165
- }
166
- end
167
-
168
- end # Char
169
-
170
- end # Vedeu
@@ -1,9 +0,0 @@
1
- module Vedeu
2
-
3
- # A collection of {Vedeu::Char} instances.
4
- #
5
- class Chars < Vedeu::Collection
6
-
7
- end # Chars
8
-
9
- end # Vedeu
@@ -1,66 +0,0 @@
1
- module Vedeu
2
-
3
- # A composition is a collection of interfaces.
4
- #
5
- class Composition
6
-
7
- include Vedeu::Model
8
- include Vedeu::Presentation
9
-
10
- collection Vedeu::InterfaceCollection
11
- member Vedeu::Interface
12
-
13
- # @!attribute [r] attributes
14
- # @return [Hash]
15
- attr_reader :attributes
16
-
17
- # Returns a new instance of Vedeu::Composition.
18
- #
19
- # @param attributes [Hash]
20
- # @option attributes colour [Vedeu::Colour]
21
- # @option attributes interfaces [void]
22
- # @option attributes style [Vedeu::Style]
23
- # @return [Vedeu::Composition]
24
- def initialize(attributes = {})
25
- @attributes = defaults.merge!(attributes)
26
-
27
- @interfaces = @attributes[:interfaces]
28
- end
29
-
30
- # @param child [Vedeu::Interface]
31
- # @return [Vedeu::InterfaceCollection]
32
- def add(child)
33
- @interfaces = interfaces.add(child)
34
- end
35
-
36
- # @return [Vedeu::InterfaceCollection]
37
- def interfaces
38
- collection.coerce(@interfaces, self)
39
- end
40
- alias_method :value, :interfaces
41
-
42
- # Composition objects do not have a parent.
43
- #
44
- # @return [NilClass]
45
- def parent
46
- nil
47
- end
48
-
49
- private
50
-
51
- # The default values for a new instance of this class.
52
- #
53
- # @return [Hash]
54
- def defaults
55
- {
56
- client: nil,
57
- colour: nil,
58
- interfaces: [],
59
- repository: Vedeu.interfaces,
60
- style: nil,
61
- }
62
- end
63
-
64
- end # Composition
65
-
66
- end # Vedeu