vedeu 0.5.4 → 0.5.5

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