vedeu 0.6.10 → 0.6.11

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 (136) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vedeu/all.rb +17 -103
  3. data/lib/vedeu/api/all.rb +15 -0
  4. data/lib/vedeu/api/internal.rb +4 -0
  5. data/lib/vedeu/application/all.rb +6 -0
  6. data/lib/vedeu/bindings/all.rb +32 -0
  7. data/lib/vedeu/bindings/bindings.rb +0 -14
  8. data/lib/vedeu/bindings/refresh.rb +8 -2
  9. data/lib/vedeu/bindings/system.rb +1 -0
  10. data/lib/vedeu/borders/border.rb +1 -1
  11. data/lib/vedeu/borders/repository.rb +1 -1
  12. data/lib/vedeu/buffers/buffer.rb +2 -4
  13. data/lib/vedeu/buffers/repository.rb +1 -1
  14. data/lib/vedeu/colours/background.rb +1 -1
  15. data/lib/vedeu/colours/backgrounds.rb +1 -1
  16. data/lib/vedeu/colours/foreground.rb +1 -1
  17. data/lib/vedeu/colours/foregrounds.rb +1 -1
  18. data/lib/vedeu/colours/translator.rb +4 -3
  19. data/lib/vedeu/configuration/api.rb +2 -1
  20. data/lib/vedeu/configuration/cli.rb +1 -1
  21. data/lib/vedeu/cursors/cursor.rb +26 -26
  22. data/lib/vedeu/cursors/repository.rb +1 -1
  23. data/lib/vedeu/distributed/all.rb +16 -0
  24. data/lib/vedeu/distributed/test_application.rb +3 -3
  25. data/lib/vedeu/dsl/all.rb +22 -0
  26. data/lib/vedeu/dsl/composition.rb +43 -40
  27. data/lib/vedeu/dsl/dsl.rb +6 -3
  28. data/lib/vedeu/dsl/group.rb +23 -16
  29. data/lib/vedeu/dsl/interface.rb +48 -38
  30. data/lib/vedeu/dsl/keymap.rb +6 -7
  31. data/lib/vedeu/dsl/line.rb +6 -3
  32. data/lib/vedeu/dsl/stream.rb +2 -1
  33. data/lib/vedeu/editor/cursor.rb +1 -3
  34. data/lib/vedeu/editor/document.rb +4 -5
  35. data/lib/vedeu/editor/documents.rb +1 -1
  36. data/lib/vedeu/editor/line.rb +2 -3
  37. data/lib/vedeu/editor/lines.rb +2 -3
  38. data/lib/vedeu/esc/all.rb +14 -0
  39. data/lib/vedeu/esc/colours.rb +8 -4
  40. data/lib/vedeu/esc/esc.rb +89 -84
  41. data/lib/vedeu/events/aliases.rb +1 -2
  42. data/lib/vedeu/events/collection.rb +1 -1
  43. data/lib/vedeu/events/event.rb +1 -1
  44. data/lib/vedeu/events/repository.rb +1 -1
  45. data/lib/vedeu/events/trigger.rb +11 -9
  46. data/lib/vedeu/geometry/dimension.rb +1 -3
  47. data/lib/vedeu/geometry/generic_coordinate.rb +1 -3
  48. data/lib/vedeu/geometry/geometry.rb +1 -1
  49. data/lib/vedeu/geometry/repository.rb +3 -3
  50. data/lib/vedeu/input/all.rb +3 -0
  51. data/lib/vedeu/input/keymap.rb +10 -11
  52. data/lib/vedeu/input/keymaps.rb +1 -1
  53. data/lib/vedeu/input/keys.rb +1 -1
  54. data/lib/vedeu/input/mapper.rb +14 -12
  55. data/lib/vedeu/logging/all.rb +3 -0
  56. data/lib/vedeu/logging/log.rb +4 -2
  57. data/lib/vedeu/menus/menu.rb +2 -4
  58. data/lib/vedeu/menus/repository.rb +1 -1
  59. data/lib/vedeu/models/all.rb +15 -0
  60. data/lib/vedeu/models/cell.rb +1 -1
  61. data/lib/vedeu/models/escape.rb +1 -1
  62. data/lib/vedeu/models/group.rb +4 -3
  63. data/lib/vedeu/models/groups.rb +1 -1
  64. data/lib/vedeu/models/interface.rb +1 -1
  65. data/lib/vedeu/models/interfaces.rb +1 -1
  66. data/lib/vedeu/models/views/char.rb +1 -1
  67. data/lib/vedeu/models/views/collections/chars.rb +1 -1
  68. data/lib/vedeu/models/views/collections/lines.rb +1 -1
  69. data/lib/vedeu/models/views/collections/streams.rb +1 -1
  70. data/lib/vedeu/models/views/collections/view_collection.rb +1 -1
  71. data/lib/vedeu/models/views/composition.rb +1 -1
  72. data/lib/vedeu/models/views/line.rb +8 -6
  73. data/lib/vedeu/models/views/stream.rb +1 -1
  74. data/lib/vedeu/models/views/view.rb +1 -1
  75. data/lib/vedeu/null/all.rb +12 -0
  76. data/lib/vedeu/output/clear/named_group.rb +2 -1
  77. data/lib/vedeu/output/clear/named_interface.rb +5 -4
  78. data/lib/vedeu/output/compressor.rb +1 -0
  79. data/lib/vedeu/output/output.rb +3 -0
  80. data/lib/vedeu/output/presentation/colour.rb +10 -10
  81. data/lib/vedeu/output/presentation/presentation.rb +9 -9
  82. data/lib/vedeu/output/presentation/style.rb +2 -2
  83. data/lib/vedeu/output/refresh/refresh.rb +35 -0
  84. data/lib/vedeu/output/refresh/refresh_group.rb +66 -0
  85. data/lib/vedeu/output/renderers/all.rb +17 -0
  86. data/lib/vedeu/output/renderers/escape_sequence.rb +4 -2
  87. data/lib/vedeu/output/renderers/file.rb +7 -6
  88. data/lib/vedeu/output/renderers/html.rb +9 -7
  89. data/lib/vedeu/output/renderers/null.rb +1 -1
  90. data/lib/vedeu/output/renderers/renderer_options.rb +24 -20
  91. data/lib/vedeu/output/renderers/terminal.rb +1 -1
  92. data/lib/vedeu/output/renderers/text.rb +1 -1
  93. data/lib/vedeu/output/wordwrap.rb +7 -4
  94. data/lib/vedeu/plugins/all.rb +2 -0
  95. data/lib/vedeu/repositories/all.rb +16 -0
  96. data/lib/vedeu/repositories/collection.rb +93 -89
  97. data/lib/vedeu/repositories/model.rb +113 -102
  98. data/lib/vedeu/repositories/registerable.rb +60 -56
  99. data/lib/vedeu/repositories/repository.rb +161 -156
  100. data/lib/vedeu/repositories/store.rb +70 -66
  101. data/lib/vedeu/runtime/all.rb +15 -0
  102. data/lib/vedeu/runtime/launcher.rb +19 -16
  103. data/lib/vedeu/templating/all.rb +6 -0
  104. data/lib/vedeu/terminal/all.rb +14 -0
  105. data/lib/vedeu/terminal/buffer.rb +8 -7
  106. data/lib/vedeu/terminal/mode.rb +11 -10
  107. data/lib/vedeu/terminal/terminal.rb +50 -45
  108. data/lib/vedeu/version.rb +1 -1
  109. data/test/lib/vedeu/cursors/cursor_test.rb +4 -2
  110. data/test/lib/vedeu/editor/cursor_test.rb +0 -3
  111. data/test/lib/vedeu/esc/esc_test.rb +58 -54
  112. data/test/lib/vedeu/events/collection_test.rb +1 -1
  113. data/test/lib/vedeu/input/keys_test.rb +1 -1
  114. data/test/lib/vedeu/input/mapper_test.rb +1 -1
  115. data/test/lib/vedeu/models/views/collections/chars_test.rb +1 -1
  116. data/test/lib/vedeu/models/views/collections/lines_test.rb +1 -1
  117. data/test/lib/vedeu/models/views/collections/streams_test.rb +1 -1
  118. data/test/lib/vedeu/models/views/collections/view_collection_test.rb +1 -1
  119. data/test/lib/vedeu/output/refresh/refresh_group_test.rb +43 -0
  120. data/test/lib/vedeu/output/refresh/refresh_test.rb +50 -0
  121. data/test/lib/vedeu/output/renderers/renderer_options_test.rb +8 -4
  122. data/test/lib/vedeu/output/renderers_test.rb +2 -1
  123. data/test/lib/vedeu/repositories/collection_test.rb +105 -101
  124. data/test/lib/vedeu/repositories/model_test.rb +56 -52
  125. data/test/lib/vedeu/repositories/registerable_test.rb +36 -32
  126. data/test/lib/vedeu/repositories/repository_test.rb +178 -174
  127. data/test/lib/vedeu/repositories/store_test.rb +109 -105
  128. data/test/support/examples/material_colours_app.rb +0 -1
  129. data/test/support/helpers/model_test_class.rb +50 -46
  130. data/test/test_helper.rb +2 -2
  131. metadata +21 -9
  132. data/lib/vedeu/refresh/refresh.rb +0 -31
  133. data/lib/vedeu/refresh/refresh_group.rb +0 -59
  134. data/out_ +0 -50
  135. data/test/lib/vedeu/refresh/refresh_group_test.rb +0 -39
  136. data/test/lib/vedeu/refresh/refresh_test.rb +0 -46
@@ -4,36 +4,38 @@ module Vedeu
4
4
 
5
5
  # DSL for creating collections of interfaces.
6
6
  #
7
- # Views with Vedeu are made up of simple building blocks. These blocks can
8
- # be arranged in a multitude of ways which I hope is more than sufficient
9
- # for your design needs.
7
+ # Views with Vedeu are made up of simple building blocks. These
8
+ # blocks can be arranged in a multitude of ways which I hope is
9
+ # more than sufficient for your design needs.
10
10
 
11
11
  # - A view (`Composition`) is made up of one or more interfaces.
12
- # - An interface is an area on the screen where you can take input or direct
13
- # output. You will define it's colour and style, its dimensions, including
14
- # position and give it a name. You can then direct the output of a
15
- # command, or event, to this interface and Vedeu will ensure the content
16
- # is placed there.
17
- # - Interfaces (`Interface`) are made up of lines (`Line`), their length
18
- # being the width of the interface and their number being the height of
19
- # the interface.
20
- # - An interface with `width: 12, height: 5` will have five lines, each made
21
- # of 12 characters- providing 60 cells. Colours and styles are handled by
22
- # terminal escape sequences and therefore do not consume a cell.
23
- # - Lines are made up of zero, one or multiple streams (`Stream`) which are
12
+ # - An interface is an area on the screen where you can take input
13
+ # or direct output. You will define it's colour and style, its
14
+ # dimensions, including position and give it a name. You can
15
+ # then direct the output of a command, or event, to this
16
+ # interface and Vedeu will ensure the content is placed there.
17
+ # - Interfaces (`Interface`) are made up of lines (`Line`), their
18
+ # length being the width of the interface and their number being
19
+ # the height of the interface.
20
+ # - An interface with `width: 12, height: 5` will have five lines,
21
+ # each made of 12 characters- providing 60 cells. Colours and
22
+ # styles are handled by terminal escape sequences and therefore
23
+ # do not consume a cell.
24
+ # - Lines are made up of zero, one or multiple streams which are
24
25
  # basically subsets of the line.
25
- # - An interface, line or stream can have a colour (`colour`) attribute.
26
- # - An interface, line or stream can have a style (`style`) attribute.
27
- # - Interfaces have a position (`y`, `x`) on the screen, and a size.
28
- # (`width`, `height`)
26
+ # - An interface, line or stream can have a colour attribute.
27
+ # - An interface, line or stream can have a style attribute.
28
+ # - Interfaces have a position (`y`, `x`) on the screen, and a
29
+ # size. (`width`, `height`)
29
30
  # - Interfaces can be placed relative to each other based on their
30
31
  # attributes.
31
- # - An interface has a `top`, `right`, `bottom`, `left`.
32
- # - An interface also has a `north` and `west` (`top` and `left` minus 1
33
- # respectively).
34
- # - An interface also has a `south` and `east` (`bottom` and `right`
35
- # plus 1 respectively).
36
- # - Colours are defined in CSS-style values, i.e. `#ff0000` would be red.
32
+ # - An interface has a `top`, `right`, `bottom`, `left`.
33
+ # - An interface also has a `north` and `west` (`top` and `left`
34
+ # minus 1 respectively).
35
+ # - An interface also has a `south` and `east` (`bottom` and
36
+ # `right` plus 1 respectively).
37
+ # - Colours are defined in CSS-style values, i.e. `#ff0000` would
38
+ # be red.
37
39
  # - Styles are named. See the table below for supported styles.
38
40
  #
39
41
  class Composition
@@ -54,14 +56,15 @@ module Vedeu
54
56
  #
55
57
  # A view is just an Interface object.
56
58
  #
57
- # When a view already exists, we take its attributes and use them as the
58
- # basis for the newly defined view. This way we don't need to specify
59
- # everything again.
59
+ # When a view already exists, we take its attributes and use
60
+ # them as the basis for the newly defined view. This way we
61
+ # don't need to specify everything again.
60
62
  #
61
63
  # @todo More documentation required.
62
- # @param name [String] The name of the interface you are targetting for
63
- # this view.
64
- # @param block [Proc] The directives you wish to send to this interface.
64
+ # @param name [String] The name of the interface you are
65
+ # targetting for this view.
66
+ # @param block [Proc] The directives you wish to send to this
67
+ # interface.
65
68
  #
66
69
  # @example
67
70
  # view 'my_interface' do
@@ -90,13 +93,13 @@ module Vedeu
90
93
  #
91
94
  # @todo More documentation required.
92
95
  #
93
- # @param name [String] The name of interface for which this template's
94
- # content belongs to.
95
- # @param filename [String] The filename (including path) to the template
96
- # to be used. Yoy can use `File.dirname(__FILE__)` to use relative
97
- # paths.
98
- # @param object [Object] The object for which the values of template's
99
- # variables can be obtained.
96
+ # @param name [String] The name of interface for which this
97
+ # template's content belongs to.
98
+ # @param filename [String] The filename (including path) to the
99
+ # template to be used. Yoy can use `File.dirname(__FILE__)` to
100
+ # use relative paths.
101
+ # @param object [Object] The object for which the values of
102
+ # template's variables can be obtained.
100
103
  # @param options [Hash] See {Vedeu::Output::Wordwrap}
101
104
  # @raise [Vedeu::Error::MissingRequired]
102
105
  # @return [Vedeu::Views::Views<Vedeu::Views::View>]
@@ -128,8 +131,8 @@ module Vedeu
128
131
  new_attributes(name).merge!(value: lines)
129
132
  end
130
133
 
131
- # Return the current attributes combined with the existing interface
132
- # attributes defined by the interface.
134
+ # Return the current attributes combined with the existing
135
+ # interface attributes defined by the interface.
133
136
  #
134
137
  # @param name [String] The name of the interface.
135
138
  # @return [Hash]
data/lib/vedeu/dsl/dsl.rb CHANGED
@@ -7,11 +7,13 @@ module Vedeu
7
7
  protected
8
8
 
9
9
  # @!attribute [r] client
10
- # @return [Object] The object instance where the DSL is being used.
10
+ # @return [Object] The object instance where the DSL is being
11
+ # used.
11
12
  attr_reader :client
12
13
 
13
14
  # @!attribute [r] model
14
- # @return [void] The new model object which the DSL is constructing.
15
+ # @return [void] The new model object which the DSL is
16
+ # constructing.
15
17
  attr_reader :model
16
18
 
17
19
  private
@@ -33,7 +35,8 @@ module Vedeu
33
35
  # Attempts to find the missing method on the client object.
34
36
  #
35
37
  # @param method [Symbol] The name of the method sought.
36
- # @param args [Array] The arguments which the method was to be invoked with.
38
+ # @param args [Array] The arguments which the method was to be
39
+ # invoked with.
37
40
  # @param block [Proc] The optional block provided to the method.
38
41
  # @return [void]
39
42
  def method_missing(method, *args, &block)
@@ -2,25 +2,27 @@ module Vedeu
2
2
 
3
3
  module DSL
4
4
 
5
- # Interfaces can be configured to be part of a named group. Once an
6
- # interface is a member of group, the group can be affected by other
7
- # controls. For example, assuming the client application is a simple Git
8
- # client, it may have a group called 'commit'. The 'commit' group will
9
- # contain the interfaces 'diff' (to show the changes), 'staged' (to show
10
- # which files are staged) and 'unstaged'. A refresh of the 'commit' group
11
- # would cause all interfaces belonging to the group to refresh. Similarly,
12
- # showing or hiding the group would of course, show or hide the interfaces
13
- # of that group.
5
+ # Interfaces can be configured to be part of a named group. Once
6
+ # an interface is a member of group, the group can be affected by
7
+ # other controls. For example, assuming the client application is
8
+ # a simple Git client, it may have a group called 'commit'. The
9
+ # 'commit' group will contain the interfaces 'diff' (to show the
10
+ # changes), 'staged' (to show which files are staged) and
11
+ # 'unstaged'. A refresh of the 'commit' group would cause all
12
+ # interfaces belonging to the group to refresh. Similarly,
13
+ # showing or hiding the group would of course, show or hide the
14
+ # interfaces of that group.
14
15
  #
15
16
  class Group
16
17
 
17
18
  include Vedeu::DSL
18
19
 
19
- # Specify a new group of interfaces with a simple DSL. Creating a group
20
- # with the same name as an existing group overwrites the existing group.
20
+ # Specify a new group of interfaces with a simple DSL. Creating
21
+ # a group with the same name as an existing group overwrites the
22
+ # existing group.
21
23
  #
22
- # The example below resembles 'vim' (the popular terminal-based text
23
- # editor):
24
+ # The example below resembles 'vim' (the popular terminal-based
25
+ # text editor):
24
26
  #
25
27
  # Vedeu.group 'title_screen' do
26
28
  # add 'welcome_interface'
@@ -37,7 +39,9 @@ module Vedeu
37
39
  # or more succinctly:
38
40
  #
39
41
  # Vedeu.group 'main_screen' do
40
- # members 'editor_interface', 'status_interface', 'command_interface'
42
+ # members 'editor_interface',
43
+ # 'status_interface',
44
+ # 'command_interface'
41
45
  # # ... some code
42
46
  # end
43
47
  #
@@ -50,7 +54,8 @@ module Vedeu
50
54
  #
51
55
  # @param name [String] The name of this group.
52
56
  # @param block [Proc]
53
- # @raise [Vedeu::Error::InvalidSyntax] The required block was not given.
57
+ # @raise [Vedeu::Error::InvalidSyntax] The required block was
58
+ # not given.
54
59
  # @return [Vedeu::Models::Group]
55
60
  def self.group(name, &block)
56
61
  fail Vedeu::Error::InvalidSyntax, 'block not given' unless block_given?
@@ -83,7 +88,9 @@ module Vedeu
83
88
  # Add the named interfaces to this group in bulk.
84
89
  #
85
90
  # Vedeu.group 'main_screen' do
86
- # members ['editor_interface', 'some_interface', 'other_interface']
91
+ # members ['editor_interface',
92
+ # 'some_interface',
93
+ # 'other_interface']
87
94
  # end
88
95
  #
89
96
  # @param interface_names [Array<String>]
@@ -17,19 +17,22 @@ module Vedeu
17
17
 
18
18
  include Vedeu::Common
19
19
 
20
- # Register an interface by name which will display output from a event
21
- # or command. This provides the means for you to define your the views
22
- # of your application without their content.
20
+ # Register an interface by name which will display output from
21
+ # an event or a command. This provides the means for you to
22
+ # define your the views of your application without their
23
+ # content.
23
24
  #
24
25
  # Vedeu.interface 'my_interface' do
25
26
  # # ... some code
26
27
  # end
27
28
  #
28
- # @param name [String] The name of the interface. Used to reference the
29
- # interface throughout your application's execution lifetime.
30
- # @param block [Proc] A set of attributes which define the features of
31
- # the interface.
32
- # @raise [Vedeu::Error::InvalidSyntax] The required block was not given.
29
+ # @param name [String] The name of the interface. Used to
30
+ # reference the interface throughout your application's
31
+ # execution lifetime.
32
+ # @param block [Proc] A set of attributes which define the
33
+ # features of the interface.
34
+ # @raise [Vedeu::Error::InvalidSyntax] The required block was
35
+ # not given.
33
36
  # @return [Vedeu::Models::Interface]
34
37
  # @todo More documentation required.
35
38
  def interface(name, &block)
@@ -50,8 +53,8 @@ module Vedeu
50
53
  private
51
54
 
52
55
  # Registers a set of buffers for the interface unless already
53
- # registered, and also adds interface's name to list of focussable
54
- # interfaces.
56
+ # registered, and also adds interface's name to list of
57
+ # focussable interfaces.
55
58
  #
56
59
  # @see Vedeu::Buffers::Buffer
57
60
  # @return [Vedeu::Buffers::Buffer]
@@ -59,14 +62,16 @@ module Vedeu
59
62
  Vedeu::Buffers::Buffer.new(name: name).store
60
63
  end
61
64
 
62
- # Registers a new cursor for the interface unless already registered.
65
+ # Registers a new cursor for the interface unless already
66
+ # registered.
63
67
  #
64
68
  # @return [Vedeu::Cursors::Cursor]
65
69
  def add_cursor!(name)
66
70
  Vedeu::Cursors::Cursor.new(name: name).store
67
71
  end
68
72
 
69
- # Registers interface name in focus list unless already registered.
73
+ # Registers interface name in focus list unless already
74
+ # registered.
70
75
  #
71
76
  # @return [void]
72
77
  def add_focusable!(name)
@@ -95,14 +100,16 @@ module Vedeu
95
100
 
96
101
  # Set the cursor visibility on an interface.
97
102
  #
98
- # @param value [Boolean] Any value other than nil or false will evaluate
103
+ # @param value [Boolean] Any value other than nil or false will
104
+ # evaluate
99
105
  # to true.
100
106
  #
101
107
  # @example
102
108
  # Vedeu.interface 'my_interface' do
103
109
  # cursor true # => show the cursor for this interface
104
110
  # # or...
105
- # cursor :show # => both of these are equivalent to line above
111
+ # cursor :show # => both of these are equivalent to line
112
+ # # above
106
113
  # # or...
107
114
  # cursor! #
108
115
  # # ...
@@ -116,8 +123,9 @@ module Vedeu
116
123
  # end
117
124
  #
118
125
  # Vedeu.view 'my_interface' do
119
- # cursor true # => Specify the visibility of the cursor when the view
120
- # # ... # is rendered.
126
+ # cursor true # => Specify the visibility of the cursor when
127
+ # # the view is rendered.
128
+ # # ...
121
129
  # end
122
130
  #
123
131
  # @return [Vedeu::Cursors::Cursor]
@@ -134,15 +142,16 @@ module Vedeu
134
142
  cursor(true)
135
143
  end
136
144
 
137
- # To maintain performance interfaces can be delayed from refreshing too
138
- # often, the reduces artefacts particularly when resizing the terminal
139
- # screen.
145
+ # To maintain performance interfaces can be delayed from
146
+ # refreshing too often, the reduces artefacts particularly when
147
+ # resizing the terminal screen.
140
148
  #
141
149
  # @param value [Fixnum|Float] Time in seconds. (0.5 = 500ms).
142
150
  #
143
151
  # @example
144
152
  # Vedeu.interface 'my_interface' do
145
- # delay 0.5 # interface will not update more often than every 500ms.
153
+ # delay 0.5 # interface will not update more often than
154
+ # # every 500ms.
146
155
  # # ...
147
156
  # end
148
157
  #
@@ -151,11 +160,12 @@ module Vedeu
151
160
  model.delay = value
152
161
  end
153
162
 
154
- # Specify this interface as being in focus when the application starts.
163
+ # Specify this interface as being in focus when the application
164
+ # starts.
155
165
  #
156
- # @note If multiple interfaces are defined, and this is included in each,
157
- # then the last defined will be the interface in focus. However, this
158
- # behaviour can be overridden:
166
+ # @note If multiple interfaces are defined, and this is included
167
+ # in each, then the last defined will be the interface in
168
+ # focus. However, this behaviour can be overridden:
159
169
  #
160
170
  # ```ruby
161
171
  # Vedeu.focus_by_name 'some_interface'
@@ -169,9 +179,9 @@ module Vedeu
169
179
  Vedeu::Models::Focus.add(model.name, true) if present?(model.name)
170
180
  end
171
181
 
172
- # Specify a group for an interface. Interfaces of the same group can be
173
- # targetted together; for example you may want to refresh multiple
174
- # interfaces at once.
182
+ # Specify a group for an interface. Interfaces of the same group
183
+ # can be targetted together; for example you may want to refresh
184
+ # multiple interfaces at once.
175
185
  #
176
186
  # @example
177
187
  # Vedeu.interface 'my_interface' do
@@ -179,8 +189,8 @@ module Vedeu
179
189
  # # ...
180
190
  # end
181
191
  #
182
- # @param name [String] The name of the group to which this interface
183
- # should belong.
192
+ # @param name [String] The name of the group to which this
193
+ # interface should belong.
184
194
  # @return [Vedeu::Models::Group]
185
195
  def group(name)
186
196
  return false unless present?(name)
@@ -196,8 +206,8 @@ module Vedeu
196
206
  end
197
207
  alias_method :keys, :keymap
198
208
 
199
- # The name of the interface. Used to reference the interface throughout
200
- # your application's execution lifetime.
209
+ # The name of the interface. Used to reference the interface
210
+ # throughout your application's execution lifetime.
201
211
  #
202
212
  # @param value [String]
203
213
  #
@@ -247,8 +257,8 @@ module Vedeu
247
257
 
248
258
  # Use a value from another model.
249
259
  #
250
- # @param name [String] The name of the interface model you wish to use a
251
- # value from.
260
+ # @param name [String] The name of the interface model you wish
261
+ # to use a value from.
252
262
  # @return [Vedeu::Models::Interface]
253
263
  def use(name)
254
264
  model.repository.by_name(name)
@@ -256,8 +266,8 @@ module Vedeu
256
266
 
257
267
  # Set the visibility of the interface.
258
268
  #
259
- # @param value [Boolean] Any value other than nil or false will evaluate
260
- # to true.
269
+ # @param value [Boolean] Any value other than nil or false will
270
+ # evaluate to true.
261
271
  #
262
272
  # @example
263
273
  # Vedeu.interface 'my_interface' do
@@ -286,9 +296,9 @@ module Vedeu
286
296
  model.visible = boolean
287
297
  end
288
298
 
289
- # Set the zindex of the interface. This controls the render order of
290
- # interfaces. Interfaces with a lower zindex will render before those
291
- # with a higher zindex.
299
+ # Set the zindex of the interface. This controls the render
300
+ # order of interfaces. Interfaces with a lower zindex will
301
+ # render before those with a higher zindex.
292
302
  #
293
303
  # @example
294
304
  # --4-- # rendered last
@@ -69,25 +69,24 @@ module Vedeu
69
69
 
70
70
  # Define keypress(es) to perform an action.
71
71
  #
72
- # @param value_or_values [Array<String>|Array<Symbol>|String|Symbol]
72
+ # @param values [Array<String>|Array<Symbol>|String|Symbol]
73
73
  # The key(s) pressed. Special keys can be found in
74
74
  # {Vedeu::Input::Input#specials}. When more than one key is
75
75
  # defined, then the extras are treated as aliases.
76
76
  # @param block [Proc] The action to perform when this key is pressed. Can
77
77
  # be a method call or event triggered.
78
78
  # @raise [Vedeu::Error::InvalidSyntax]
79
- # When the required block is not given, the value_or_values parameter is
79
+ # When the required block is not given, the values parameter is
80
80
  # undefined, or when processing the collection, a member is undefined.
81
81
  # @return [Array] A collection containing the keypress(es).
82
- def key(*value_or_values, &block)
82
+ def key(*values, &block)
83
83
  fail Vedeu::Error::InvalidSyntax,
84
84
  'No action defined for `key`.' unless block_given?
85
85
 
86
- unless present?(value_or_values)
87
- fail Vedeu::Error::InvalidSyntax, 'No keypress(es) defined for `key`.'
88
- end
86
+ fail Vedeu::Error::InvalidSyntax,
87
+ 'No keypress(es) defined for `key`.' unless present?(values)
89
88
 
90
- value_or_values.each do |value|
89
+ values.each do |value|
91
90
  unless present?(value)
92
91
  fail Vedeu::Error::InvalidSyntax,
93
92
  'An invalid value for `key` was encountered.'
@@ -59,7 +59,8 @@ module Vedeu
59
59
  # end
60
60
  # end
61
61
  #
62
- # @raise [Vedeu::Error::InvalidSyntax] When no block or value is provided.
62
+ # @raise [Vedeu::Error::InvalidSyntax] When no block or value is
63
+ # provided.
63
64
  # @return [Vedeu::Views::Lines]
64
65
  def line(value = '', &block)
65
66
  if block_given?
@@ -81,7 +82,8 @@ module Vedeu
81
82
  alias_method :line=, :line
82
83
 
83
84
  # Define multiple streams (a stream is a subset of a line).
84
- # Uses {Vedeu::DSL::Stream} for all directives within the required block.
85
+ # Uses {Vedeu::DSL::Stream} for all directives within the
86
+ # required block.
85
87
  #
86
88
  # Vedeu.renders do
87
89
  # view 'my_interface' do
@@ -98,7 +100,8 @@ module Vedeu
98
100
  # end
99
101
  #
100
102
  # @param block [Proc]
101
- # @raise [Vedeu::Error::InvalidSyntax] The required block was not given.
103
+ # @raise [Vedeu::Error::InvalidSyntax] The required block was
104
+ # not given.
102
105
  # @return [Vedeu::Views::Streams<Vedeu::Views::Stream>]
103
106
  # @see Vedeu::DSL::Stream for subdirectives.
104
107
  def streams(&block)
@@ -21,7 +21,8 @@ module Vedeu
21
21
  end
22
22
 
23
23
  # @param block [Proc]
24
- # @raise [Vedeu::Error::InvalidSyntax] The required block was not given.
24
+ # @raise [Vedeu::Error::InvalidSyntax] The required block was
25
+ # not given.
25
26
  # @return [void]
26
27
  def stream(&block)
27
28
  fail Vedeu::Error::InvalidSyntax, 'block not given' unless block_given?
@@ -53,9 +53,7 @@ module Vedeu
53
53
  # @option attributes ox [Fixnum]
54
54
  # @return [Vedeu::Editor::Cursor]
55
55
  def initialize(attributes = {})
56
- @attributes = defaults.merge!(attributes)
57
-
58
- @attributes.each do |key, value|
56
+ defaults.merge!(attributes).each do |key, value|
59
57
  instance_variable_set("@#{key}", value)
60
58
  end
61
59
  end
@@ -6,7 +6,7 @@ module Vedeu
6
6
  #
7
7
  class Document
8
8
 
9
- include Vedeu::Model
9
+ include Vedeu::Repositories::Model
10
10
  extend Forwardable
11
11
 
12
12
  def_delegators :border,
@@ -41,12 +41,11 @@ module Vedeu
41
41
  # @param attributes [Hash]
42
42
  # @option attributes data [String]
43
43
  # @option attributes name [String]
44
- # @option attributes repository [Vedeu::Repository]
44
+ # @option attributes repository
45
+ # [Vedeu::Repositories::Repository]
45
46
  # @return [Vedeu::Editor::Document]
46
47
  def initialize(attributes = {})
47
- @attributes = defaults.merge!(attributes)
48
-
49
- @attributes.each do |key, value|
48
+ defaults.merge!(attributes).each do |key, value|
50
49
  instance_variable_set("@#{key}", value || defaults.fetch(key))
51
50
  end
52
51
  end
@@ -4,7 +4,7 @@ module Vedeu
4
4
 
5
5
  # Allows the storing of documents.
6
6
  #
7
- class Documents < Vedeu::Repository
7
+ class Documents < Vedeu::Repositories::Repository
8
8
 
9
9
  singleton_class.send(:alias_method, :documents, :repository)
10
10
 
@@ -110,9 +110,8 @@ module Vedeu
110
110
  def insert_character(character, index = nil)
111
111
  return self unless character
112
112
 
113
- insert = Vedeu::Editor::Insert.into(line, character, index, size)
114
-
115
- Vedeu::Editor::Line.coerce(insert)
113
+ Vedeu::Editor::Line.coerce(Vedeu::Editor::Insert
114
+ .into(line, character, index, size))
116
115
  end
117
116
 
118
117
  # Return the size of the line in characters.
@@ -137,9 +137,8 @@ module Vedeu
137
137
  def insert_line(line, index = nil)
138
138
  return self unless line
139
139
 
140
- insert = Vedeu::Editor::Insert.into(lines, line, index, size)
141
-
142
- Vedeu::Editor::Lines.coerce(insert)
140
+ Vedeu::Editor::Lines.coerce(Vedeu::Editor::Insert
141
+ .into(lines, line, index, size))
143
142
  end
144
143
 
145
144
  # Returns the line at the given index.
@@ -0,0 +1,14 @@
1
+ module Vedeu
2
+
3
+ # Provides escape sequence strings.
4
+ #
5
+ module EscapeSequences
6
+
7
+ end # EscapeSequences
8
+
9
+ end # Vedeu
10
+
11
+ require 'vedeu/esc/actions'
12
+ require 'vedeu/esc/borders'
13
+ require 'vedeu/esc/colours'
14
+ require 'vedeu/esc/esc'
@@ -28,13 +28,17 @@ module Vedeu
28
28
  # to produce the desired colours:
29
29
  #
30
30
  # @example
31
- # Esc.red # => "\e[31m"
31
+ # # "\e[31m"
32
+ # Vedeu::EscapeSequences::Esc.red
32
33
  #
33
- # Esc.red { 'some text' } # => "\e[31msome text\e[39m"
34
+ # # "\e[31msome text\e[39m"
35
+ # Vedeu::EscapeSequences::Esc.red { 'some text' }
34
36
  #
35
- # Esc.on_blue # => "\e[44m"
37
+ # # "\e[44m"
38
+ # Vedeu::EscapeSequences::Esc.on_blue
36
39
  #
37
- # Esc.on_blue { 'some text' } # => "\e[44msome text\e[49m"
40
+ # # "\e[44msome text\e[49m"
41
+ # Vedeu::EscapeSequences::Esc.on_blue { 'some text' }
38
42
  #
39
43
  # # Valid names:
40
44
  # :black, :red, :green, :yellow, :blue, :magenta, :cyan,