vedeu 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/Rakefile +6 -0
  4. data/bin/vedeu_drb_client +8 -3
  5. data/bin/vedeu_drb_server +113 -0
  6. data/bin/vedeu_test +1 -1
  7. data/docs/events.md +0 -127
  8. data/examples/borders_app.rb +17 -7
  9. data/examples/configuration_app.rb +1 -1
  10. data/examples/cursor_app.rb +4 -2
  11. data/examples/drb_app.rb +113 -0
  12. data/examples/focus_app.rb +1 -1
  13. data/examples/geometry_app.rb +1 -1
  14. data/examples/hello_world.rb +1 -1
  15. data/examples/lines_app.rb +1 -1
  16. data/features/start_stop.feature +1 -1
  17. data/inch.yml +5 -0
  18. data/lib/vedeu/all.rb +2 -0
  19. data/lib/vedeu/api.rb +1 -0
  20. data/lib/vedeu/application.rb +17 -36
  21. data/lib/vedeu/bindings.rb +134 -27
  22. data/lib/vedeu/buffers/display_buffer.rb +1 -4
  23. data/lib/vedeu/configuration/api.rb +15 -14
  24. data/lib/vedeu/configuration/cli.rb +17 -16
  25. data/lib/vedeu/configuration/configuration.rb +3 -1
  26. data/lib/vedeu/cursor/cursor.rb +6 -8
  27. data/lib/vedeu/cursor/move_cursor.rb +1 -0
  28. data/lib/vedeu/cursor/toggle_cursor.rb +1 -0
  29. data/lib/vedeu/debug.rb +23 -0
  30. data/lib/vedeu/distributed/all.rb +1 -1
  31. data/lib/vedeu/distributed/client.rb +55 -13
  32. data/lib/vedeu/distributed/server.rb +207 -0
  33. data/lib/vedeu/distributed/subprocess.rb +22 -21
  34. data/lib/vedeu/distributed/templates/default_application.vedeu +3 -1
  35. data/lib/vedeu/distributed/test_application.rb +2 -1
  36. data/lib/vedeu/distributed/uri.rb +1 -0
  37. data/lib/vedeu/dsl/all.rb +4 -2
  38. data/lib/vedeu/dsl/components/border.rb +11 -10
  39. data/lib/vedeu/dsl/components/geometry.rb +1 -0
  40. data/lib/vedeu/dsl/components/keymap.rb +1 -0
  41. data/lib/vedeu/dsl/components/menu.rb +1 -0
  42. data/lib/vedeu/dsl/interface.rb +1 -0
  43. data/lib/vedeu/dsl/line.rb +3 -1
  44. data/lib/vedeu/dsl/shared/colour.rb +1 -0
  45. data/lib/vedeu/dsl/shared/style.rb +1 -0
  46. data/lib/vedeu/dsl/shared/text.rb +2 -0
  47. data/lib/vedeu/dsl/shared/use.rb +3 -0
  48. data/lib/vedeu/dsl/stream.rb +3 -1
  49. data/lib/vedeu/dsl/view.rb +1 -0
  50. data/lib/vedeu/events/event.rb +9 -6
  51. data/lib/vedeu/events/trigger.rb +18 -7
  52. data/lib/vedeu/exceptions.rb +4 -1
  53. data/lib/vedeu/input/input.rb +1 -0
  54. data/lib/vedeu/input/key.rb +0 -1
  55. data/lib/vedeu/input/keymap.rb +5 -3
  56. data/lib/vedeu/input/keys.rb +1 -0
  57. data/lib/vedeu/input/mapper.rb +1 -0
  58. data/lib/vedeu/launcher.rb +35 -12
  59. data/lib/vedeu/main_loop.rb +53 -0
  60. data/lib/vedeu/models/collection.rb +11 -3
  61. data/lib/vedeu/models/focus.rb +3 -3
  62. data/lib/vedeu/models/geometry.rb +8 -16
  63. data/lib/vedeu/models/group.rb +1 -0
  64. data/lib/vedeu/models/menu.rb +2 -1
  65. data/lib/vedeu/models/model.rb +7 -1
  66. data/lib/vedeu/models/view/char.rb +52 -44
  67. data/lib/vedeu/models/view/chars.rb +1 -0
  68. data/lib/vedeu/models/view/composition.rb +2 -1
  69. data/lib/vedeu/models/view/interface.rb +5 -3
  70. data/lib/vedeu/models/view/interfaces.rb +1 -0
  71. data/lib/vedeu/models/view/line.rb +2 -1
  72. data/lib/vedeu/models/view/stream.rb +2 -1
  73. data/lib/vedeu/models/view/streams.rb +1 -0
  74. data/lib/vedeu/output/all.rb +4 -0
  75. data/lib/vedeu/output/border.rb +75 -206
  76. data/lib/vedeu/output/compositor.rb +1 -0
  77. data/lib/vedeu/output/html_char.rb +119 -0
  78. data/lib/vedeu/output/html_renderer.rb +89 -0
  79. data/lib/vedeu/output/output.rb +48 -44
  80. data/lib/vedeu/output/position_index.rb +12 -1
  81. data/lib/vedeu/output/renderer.rb +28 -0
  82. data/lib/vedeu/output/viewport.rb +14 -14
  83. data/lib/vedeu/output/virtual_buffer.rb +56 -0
  84. data/lib/vedeu/output/virtual_terminal.rb +42 -34
  85. data/lib/vedeu/output/wordwrap.rb +3 -0
  86. data/lib/vedeu/output/writer.rb +13 -1
  87. data/lib/vedeu/presentation/background.rb +1 -0
  88. data/lib/vedeu/presentation/colour.rb +8 -7
  89. data/lib/vedeu/presentation/foreground.rb +1 -0
  90. data/lib/vedeu/presentation/presentation.rb +43 -7
  91. data/lib/vedeu/presentation/translator.rb +12 -0
  92. data/lib/vedeu/repositories/repository.rb +8 -8
  93. data/lib/vedeu/support/bounding_area.rb +2 -0
  94. data/lib/vedeu/support/coercions.rb +2 -1
  95. data/lib/vedeu/support/common.rb +1 -0
  96. data/lib/vedeu/support/console.rb +17 -23
  97. data/lib/vedeu/support/content_geometry.rb +2 -0
  98. data/lib/vedeu/support/coordinate.rb +1 -0
  99. data/lib/vedeu/support/esc.rb +58 -29
  100. data/lib/vedeu/support/grid.rb +1 -0
  101. data/lib/vedeu/support/limit.rb +9 -0
  102. data/lib/vedeu/support/log.rb +31 -9
  103. data/lib/vedeu/support/node.rb +8 -18
  104. data/lib/vedeu/support/position.rb +13 -34
  105. data/lib/vedeu/support/position_validator.rb +3 -0
  106. data/lib/vedeu/support/read.rb +1 -0
  107. data/lib/vedeu/support/refresh.rb +3 -2
  108. data/lib/vedeu/support/terminal.rb +11 -5
  109. data/lib/vedeu/support/trace.rb +16 -1
  110. data/lib/vedeu/support/visible.rb +2 -0
  111. data/lib/vedeu/support/write.rb +1 -0
  112. data/lib/vedeu/traps.rb +1 -0
  113. data/lib/vedeu.rb +2 -0
  114. data/test/integration/distributed_test.rb +10 -8
  115. data/test/lib/vedeu/api_test.rb +3 -7
  116. data/test/lib/vedeu/application_test.rb +2 -5
  117. data/test/lib/vedeu/configuration/api_test.rb +12 -0
  118. data/test/lib/vedeu/cursor/cursor_test.rb +2 -0
  119. data/test/lib/vedeu/distributed/client_test.rb +17 -7
  120. data/test/lib/vedeu/distributed/server_test.rb +56 -0
  121. data/test/lib/vedeu/distributed/test_application_test.rb +7 -3
  122. data/test/lib/vedeu/dsl/components/border_test.rb +10 -2
  123. data/test/lib/vedeu/dsl/interface_test.rb +6 -0
  124. data/test/lib/vedeu/dsl/line_test.rb +19 -0
  125. data/test/lib/vedeu/dsl/shared/colour_test.rb +4 -26
  126. data/test/lib/vedeu/dsl/shared/text_test.rb +8 -1
  127. data/test/lib/vedeu/dsl/stream_test.rb +13 -1
  128. data/test/lib/vedeu/input/input_test.rb +1 -1
  129. data/test/lib/vedeu/input/key_test.rb +3 -16
  130. data/test/lib/vedeu/launcher_test.rb +11 -1
  131. data/test/lib/vedeu/main_loop_test.rb +41 -0
  132. data/test/lib/vedeu/models/geometry_test.rb +15 -34
  133. data/test/lib/vedeu/models/view/char_test.rb +44 -45
  134. data/test/lib/vedeu/models/view/interface_test.rb +6 -0
  135. data/test/lib/vedeu/models/view/line_test.rb +1 -1
  136. data/test/lib/vedeu/models/view/stream_test.rb +1 -1
  137. data/test/lib/vedeu/output/border_test.rb +6 -5
  138. data/test/lib/vedeu/output/compositor_test.rb +2 -20
  139. data/test/lib/vedeu/output/html_char_test.rb +85 -0
  140. data/test/lib/vedeu/output/html_renderer_test.rb +37 -0
  141. data/test/lib/vedeu/output/position_index_test.rb +2 -10
  142. data/test/lib/vedeu/output/renderer_test.rb +24 -0
  143. data/test/lib/vedeu/output/virtual_buffer_test.rb +53 -0
  144. data/test/lib/vedeu/output/virtual_terminal_test.rb +32 -2
  145. data/test/lib/vedeu/presentation/background_test.rb +41 -1
  146. data/test/lib/vedeu/presentation/colour_test.rb +10 -6
  147. data/test/lib/vedeu/presentation/foreground_test.rb +46 -6
  148. data/test/lib/vedeu/presentation/presentation_test.rb +44 -1
  149. data/test/lib/vedeu/presentation/translator_test.rb +34 -0
  150. data/test/lib/vedeu/repositories/repository_test.rb +1 -1
  151. data/test/lib/vedeu/support/bounding_area_test.rb +4 -12
  152. data/test/lib/vedeu/support/console_test.rb +9 -50
  153. data/test/lib/vedeu/support/esc_test.rb +7 -7
  154. data/test/lib/vedeu/support/position_test.rb +42 -0
  155. data/test/lib/vedeu/support/terminal_test.rb +5 -20
  156. data/test/lib/vedeu/support/write_test.rb +42 -18
  157. data/test/support/helpers/all.rb +0 -1
  158. data/test/support/helpers/repository_test_module.rb +1 -0
  159. data/test/test_helper.rb +5 -2
  160. data/vedeu.gemspec +7 -5
  161. metadata +60 -14
  162. data/lib/vedeu/distributed/application.rb +0 -91
  163. data/test/lib/vedeu/distributed/application_test.rb +0 -24
  164. data/test/support/helpers/presentation.rb +0 -16
@@ -9,6 +9,7 @@ module Vedeu
9
9
  # visibility of the cursor within that interface.
10
10
  #
11
11
  # @api private
12
+ #
12
13
  class Cursor
13
14
 
14
15
  extend Forwardable
@@ -49,6 +50,8 @@ module Vedeu
49
50
  @state = Vedeu::Visible.coerce(@attributes.fetch(:state))
50
51
  @x = @attributes.fetch(:x)
51
52
  @y = @attributes.fetch(:y)
53
+
54
+ @position = Vedeu::Position.new(@y, @x)
52
55
  end
53
56
 
54
57
  # Returns log friendly output.
@@ -76,6 +79,8 @@ module Vedeu
76
79
 
77
80
  private
78
81
 
82
+ attr_reader :position
83
+
79
84
  # The default values for a new instance of this class.
80
85
  #
81
86
  # @return [Hash]
@@ -85,7 +90,7 @@ module Vedeu
85
90
  ox: 0,
86
91
  oy: 0,
87
92
  repository: Vedeu.cursors,
88
- state: Vedeu::Visible.new(false),
93
+ state: false,
89
94
  x: 1,
90
95
  y: 1,
91
96
  }
@@ -98,13 +103,6 @@ module Vedeu
98
103
  [ position, visibility ].join
99
104
  end
100
105
 
101
- # Returns the escape sequence for setting the position of the cursor.
102
- #
103
- # @return [String]
104
- def position
105
- Vedeu::Position.new(y, x).to_s
106
- end
107
-
108
106
  # Returns the escape sequence for setting the visibility of the cursor.
109
107
  #
110
108
  # @return [String]
@@ -5,6 +5,7 @@ require 'vedeu/support/position_validator'
5
5
  module Vedeu
6
6
 
7
7
  # Adjusts the position of the cursor.
8
+ #
8
9
  class MoveCursor
9
10
 
10
11
  extend Forwardable
@@ -1,6 +1,7 @@
1
1
  module Vedeu
2
2
 
3
3
  # Adjusts the visibility of the cursor.
4
+ #
4
5
  class ToggleCursor
5
6
 
6
7
  # @param cursor [Cursor]
@@ -0,0 +1,23 @@
1
+ require 'ruby-prof'
2
+
3
+ module Vedeu
4
+
5
+ # Helps to debug a running application by providing a stack trace of its
6
+ # execution upon exiting.
7
+ #
8
+ # @param filename [String]
9
+ # @param block [Proc]
10
+ def self.debug(filename = 'profile.html', &block)
11
+ RubyProf.start
12
+
13
+ yield
14
+
15
+ result = RubyProf.stop
16
+ result.eliminate_methods!([/^Array/, /^Hash/])
17
+
18
+ File.open('/tmp/' + filename, 'w') do |file|
19
+ RubyProf::CallStackPrinter.new(result).print(file)
20
+ end
21
+ end
22
+
23
+ end # Vedeu
@@ -1,6 +1,6 @@
1
1
  require 'vedeu/distributed/uri'
2
+ require 'vedeu/distributed/server'
2
3
  require 'vedeu/distributed/client'
3
- require 'vedeu/distributed/application'
4
4
  require 'vedeu/distributed/subprocess'
5
5
  require 'vedeu/distributed/test_application'
6
6
 
@@ -4,49 +4,91 @@ module Vedeu
4
4
 
5
5
  module Distributed
6
6
 
7
+ # A class for the client side of the DRb server/client relationship.
8
+ #
7
9
  # @example
8
- # client = Vedeu::Distributed::Client.new("druby://localhost:21420")
10
+ # client = Vedeu::Distributed::Client.connect("druby://localhost:21420")
9
11
  # client.input('a')
10
12
  # client.output # => 'some content...'
11
- # client.stop
12
13
  #
13
14
  class Client
14
15
 
16
+ # @param uri [String]
17
+ # @return [Client]
18
+ def self.connect(uri)
19
+ new(uri).connect
20
+ end
21
+
15
22
  # @param uri [String]
16
23
  # @return [Client]
17
24
  def initialize(uri)
18
25
  @uri = uri.to_s
19
26
  end
20
27
 
28
+ # Simulate connecting to the DRb server by requesting its status.
29
+ #
30
+ # @return [Symbol]
31
+ def connect
32
+ server.status
33
+
34
+ rescue DRb::DRbBadURI
35
+ puts "Could not connect to DRb server, URI may be bad."
36
+
37
+ rescue DRb::DRbConnError
38
+ puts "Could not connect to DRb server."
39
+
40
+ end
41
+
42
+ # Send input to the DRb server.
43
+ #
21
44
  # @param data [String|Symbol]
22
- # @return []
45
+ # @return [void]
23
46
  def input(data)
24
47
  server.input(data)
48
+
49
+ rescue DRb::DRbConnError
50
+ puts "Could not connect to DRb server."
51
+
25
52
  end
26
53
  alias_method :read, :input
27
54
 
28
- # @return []
55
+ # Fetch output from the DRb server.
56
+ #
57
+ # @return [void]
29
58
  def output
30
59
  server.output
60
+
61
+ rescue DRb::DRbConnError
62
+ puts "Could not connect to DRb server."
63
+
31
64
  end
32
65
  alias_method :write, :output
33
66
 
34
- # @return []
35
- def start
36
- # client should be able to start a server, but what if one already
37
- # exists?
38
- end
67
+ # Shutdown the DRb server and the client application.
68
+ #
69
+ # @note
70
+ # {Vedeu::Application} will raise StopIteration when its `.stop` method
71
+ # is called. Here we rescue that to give a clean client exit.
72
+ #
73
+ # @return [void]
74
+ def shutdown
75
+ server.shutdown
76
+
77
+ Process.kill("KILL", server.pid)
78
+
79
+ rescue DRb::DRbConnError
80
+ puts "Could not connect to DRb server."
81
+
82
+ rescue Interrupt
83
+ puts "Client application exited."
39
84
 
40
- # @return []
41
- def stop
42
- server.stop
43
85
  end
44
86
 
45
87
  private
46
88
 
47
89
  attr_reader :uri
48
90
 
49
- # @return []
91
+ # @return [void]
50
92
  def server
51
93
  @server ||= DRbObject.new_with_uri(uri)
52
94
  end
@@ -0,0 +1,207 @@
1
+ require 'drb'
2
+ require 'singleton'
3
+
4
+ module Vedeu
5
+
6
+ module Distributed
7
+
8
+ # A class for the server side of the DRb server/client relationship.
9
+ #
10
+ # @api private
11
+ #
12
+ class Server
13
+
14
+ $SAFE = 1 # disable `eval` and related calls on strings passed
15
+
16
+ include Singleton
17
+
18
+ # @param data [String|Symbol]
19
+ # @return [void]
20
+ def self.input(data)
21
+ instance.input(data)
22
+ end
23
+
24
+ # @return [void]
25
+ def self.output
26
+ instance.output
27
+ end
28
+
29
+ # @return [void]
30
+ def self.restart
31
+ instance.restart
32
+ end
33
+
34
+ # @return [void]
35
+ def self.shutdown
36
+ instance.shutdown
37
+ end
38
+
39
+ # @return [void]
40
+ def self.start
41
+ instance.start
42
+ end
43
+
44
+ # @return [Symbol]
45
+ def self.status
46
+ instance.status
47
+ end
48
+
49
+ # @return [void]
50
+ def self.stop
51
+ instance.stop
52
+ end
53
+
54
+ # @param data [String|Symbol]
55
+ # @return [void]
56
+ def input(data)
57
+ Vedeu.trigger(:_drb_input_, data)
58
+ end
59
+ alias_method :read, :input
60
+
61
+ # @return [void]
62
+ def output
63
+ Vedeu.trigger(:_drb_retrieve_output_)
64
+ end
65
+ alias_method :write, :output
66
+
67
+ # @return [Fixnum] The PID of the currently running application.
68
+ def pid
69
+ Process.pid
70
+ end
71
+
72
+ # @return [void]
73
+ def restart
74
+ return not_enabled unless drb?
75
+
76
+ if drb_running?
77
+ log('Restarting')
78
+
79
+ stop
80
+
81
+ start
82
+
83
+ else
84
+ log('Not running')
85
+
86
+ start
87
+
88
+ end
89
+ end
90
+
91
+ # When called will stop the DRb server and attempt to terminate the client
92
+ # application.
93
+ #
94
+ # @note
95
+ # :_exit_ never gets triggered as when the DRb server goes away, no
96
+ # further methods will be called.
97
+ #
98
+ # @return [void]
99
+ def shutdown
100
+ return not_enabled unless drb?
101
+
102
+ stop if drb_running?
103
+
104
+ Vedeu.trigger(:_exit_)
105
+
106
+ Terminal.restore_screen
107
+ end
108
+
109
+ # @return [Vedeu::Distributed::Server]
110
+ def start
111
+ return not_enabled unless drb?
112
+
113
+ if drb_running?
114
+ log('Already started')
115
+
116
+ else
117
+ log('Starting')
118
+
119
+ DRb.start_service(uri, self)
120
+
121
+ # DRb.thread.join # not convinced this is needed here
122
+ end
123
+ end
124
+
125
+ # @return [Symbol]
126
+ def status
127
+ return not_enabled unless drb?
128
+
129
+ if drb_running?
130
+ log('Running')
131
+
132
+ :running
133
+
134
+ else
135
+ log('Stopped')
136
+
137
+ :stopped
138
+
139
+ end
140
+ end
141
+
142
+ # @return [void]
143
+ def stop
144
+ return not_enabled unless drb?
145
+
146
+ if drb_running?
147
+ log('Stopping')
148
+
149
+ DRb.stop_service
150
+
151
+ DRb.thread.join
152
+
153
+ else
154
+ log('Already stopped')
155
+
156
+ end
157
+ rescue NoMethodError # raised when #join is called on NilClass.
158
+ # ...
159
+
160
+ end
161
+
162
+ private
163
+
164
+ attr_reader :configuration
165
+
166
+ # @return [Boolean]
167
+ def drb?
168
+ Vedeu::Configuration.drb?
169
+ end
170
+
171
+ # @return [String]
172
+ def drb_host
173
+ Vedeu::Configuration.drb_host
174
+ end
175
+
176
+ # @return [|NilClass]
177
+ def drb_running?
178
+ DRb.thread
179
+ end
180
+
181
+ # @return [Fixnum|String]
182
+ def drb_port
183
+ Vedeu::Configuration.drb_port
184
+ end
185
+
186
+ # @return [void]
187
+ def log(message)
188
+ Vedeu.log(type: :drb, message: "#{message}: '#{uri}'")
189
+ end
190
+
191
+ # @return [Symbol]
192
+ def not_enabled
193
+ log('Not enabled')
194
+
195
+ :drb_not_enabled
196
+ end
197
+
198
+ # @return [String]
199
+ def uri
200
+ Vedeu::Distributed::Uri.new(drb_host, drb_port).to_s
201
+ end
202
+
203
+ end # Server
204
+
205
+ end # Distributed
206
+
207
+ end # Vedeu
@@ -32,7 +32,7 @@ module Vedeu
32
32
  class Subprocess
33
33
 
34
34
  # @param application [Vedeu::TestApplication]
35
- # @return []
35
+ # @return [Array]
36
36
  def self.execute!(application)
37
37
  new(application).execute!
38
38
  end
@@ -41,51 +41,52 @@ module Vedeu
41
41
  # @return [Vedeu::Subprocess]
42
42
  def initialize(application)
43
43
  @application = application
44
+ @pid = nil
44
45
  end
45
46
 
46
- # @return []
47
+ # @return [Array]
47
48
  def execute!
48
49
  file_open && file_write && file_close
49
50
 
50
- begin
51
- PTY.spawn(command) do |stdin, stdout, pid|
52
- begin
53
- stdin.each { |line| print line }
51
+ @pid = fork do
52
+ exec(file_path)
53
+ end
54
54
 
55
- rescue Errno::EIO
56
- puts 'Errno::EIO: Process may have stopped giving output.'
55
+ Process.detach(@pid)
57
56
 
58
- end
59
- end
60
- rescue PTY::ChildExited
61
- puts 'PTY::ChildExited: Process exited.'
57
+ self
58
+ end
62
59
 
63
- ensure
64
- file_unlink
60
+ # Sends the KILL signal to the process.
61
+ #
62
+ # @return [void]
63
+ def kill
64
+ Process.kill('KILL', pid)
65
65
 
66
- end
66
+ file_unlink
67
67
  end
68
68
 
69
69
  private
70
70
 
71
- attr_reader :application
71
+ attr_reader :application
72
+ attr_accessor :pid
72
73
 
73
74
  # @return [String]
74
75
  def command
75
76
  "ruby #{file_path}"
76
77
  end
77
78
 
78
- # @return []
79
+ # @return [Fixnum] The number of bytes written.
79
80
  def file_write
80
81
  file.write(application)
81
82
  end
82
83
 
83
- # @return []
84
+ # @return [NilClass]
84
85
  def file_close
85
86
  file.close
86
87
  end
87
88
 
88
- # @return []
89
+ # @return [Fixnum] The number of files removed; 1.
89
90
  def file_unlink
90
91
  File.unlink("/tmp/foo_#{timestamp}")
91
92
  end
@@ -95,9 +96,9 @@ module Vedeu
95
96
  file.path
96
97
  end
97
98
 
98
- # @return []
99
+ # @return [File]
99
100
  def file_open
100
- @file ||= File.new("/tmp/foo_#{timestamp}", "w")
101
+ @file ||= File.new("/tmp/foo_#{timestamp}", "w", 0755)
101
102
  end
102
103
  alias_method :file, :file_open
103
104
 
@@ -1,3 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
1
3
  lib_dir = "<%= @object.lib_dir %>"
2
4
  $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
3
5
 
@@ -27,7 +29,7 @@ class VedeuTestApplication
27
29
  stdout = STDOUT,
28
30
  stderr = STDERR,
29
31
  kernel = Kernel)
30
- Vedeu::Launcher.new(argv, stdin, stdout, stderr, kernel).execute!
32
+ Vedeu::Launcher.execute!(argv, stdin, stdout, stderr, kernel)
31
33
  end
32
34
  end
33
35
 
@@ -27,6 +27,8 @@ module Vedeu
27
27
  :menus,
28
28
  :views
29
29
 
30
+ # @param attributes [Hash]
31
+ # @param block [Proc]
30
32
  # @return [String]
31
33
  def self.build(attributes = {}, &block)
32
34
  new(attributes).build(&block)
@@ -41,7 +43,6 @@ module Vedeu
41
43
  # @option attributes keymaps [String]
42
44
  # @option attributes menus [String]
43
45
  # @option attributes views [String]
44
- # @param block [Proc]
45
46
  # @return [TestApplication]
46
47
  def initialize(attributes = {})
47
48
  @attributes = defaults.merge(attributes)
@@ -4,6 +4,7 @@ module Vedeu
4
4
 
5
5
  # Value class which provides the host and port for the DRb server and
6
6
  # client.
7
+ #
7
8
  class Uri
8
9
 
9
10
  attr_reader :host, :port
data/lib/vedeu/dsl/all.rb CHANGED
@@ -9,6 +9,8 @@ require 'vedeu/dsl/view'
9
9
 
10
10
  module Vedeu
11
11
 
12
+ # Provides a mechanism to help configure and use Vedeu.
13
+ #
12
14
  module DSL
13
15
 
14
16
  # Attempts to find the missing method on the client object.
@@ -16,9 +18,9 @@ module Vedeu
16
18
  # @param method [Symbol] The name of the method sought.
17
19
  # @param args [Array] The arguments which the method was to be invoked with.
18
20
  # @param block [Proc] The optional block provided to the method.
19
- # @return []
21
+ # @return [void]
20
22
  def method_missing(method, *args, &block)
21
- Vedeu.log("!!!method_missing '#{method}'")
23
+ Vedeu.log(type: :debug, message: "!!!method_missing '#{method}'")
22
24
 
23
25
  client.send(method, *args, &block) if client
24
26
  end
@@ -39,6 +39,7 @@ module Vedeu
39
39
  # @param name [String] The name of the interface or view to which this
40
40
  # border belongs.
41
41
  # @param block [Proc]
42
+ # @raise [InvalidSyntax] The required block was not given.
42
43
  # @return [Vedeu::Border]
43
44
  def border(name, &block)
44
45
  fail InvalidSyntax, 'block not given' unless block_given?
@@ -70,7 +71,7 @@ module Vedeu
70
71
  # character.
71
72
  # @return [String]
72
73
  def bottom_left(char)
73
- model.attributes[:bottom_left] = char
74
+ model.bottom_left = char
74
75
  end
75
76
 
76
77
  # Set the character to be used to draw the bottom right corner of the
@@ -87,7 +88,7 @@ module Vedeu
87
88
  # character.
88
89
  # @return [String]
89
90
  def bottom_right(char)
90
- model.attributes[:bottom_right] = char
91
+ model.bottom_right = char
91
92
  end
92
93
 
93
94
  # Set the character to be used to draw a horizontal part of the border.
@@ -103,7 +104,7 @@ module Vedeu
103
104
  # character.
104
105
  # @return [String]
105
106
  def horizontal(char)
106
- model.attributes[:horizontal] = char
107
+ model.horizontal = char
107
108
  end
108
109
 
109
110
  # Enable/disable the bottom border.
@@ -122,7 +123,7 @@ module Vedeu
122
123
  # false.
123
124
  # @return [Boolean]
124
125
  def bottom(boolean)
125
- model.attributes[:show_bottom] = !!boolean
126
+ model.show_bottom = !!boolean
126
127
  end
127
128
  alias_method :show_bottom, :bottom
128
129
 
@@ -152,7 +153,7 @@ module Vedeu
152
153
  # false.
153
154
  # @return [Boolean]
154
155
  def left(boolean)
155
- model.attributes[:show_left] = !!boolean
156
+ model.show_left = !!boolean
156
157
  end
157
158
  alias_method :show_left, :left
158
159
 
@@ -182,7 +183,7 @@ module Vedeu
182
183
  # false.
183
184
  # @return [Boolean]
184
185
  def right(boolean)
185
- model.attributes[:show_right] = !!boolean
186
+ model.show_right = !!boolean
186
187
  end
187
188
  alias_method :show_right, :right
188
189
 
@@ -212,7 +213,7 @@ module Vedeu
212
213
  # false.
213
214
  # @return [Boolean]
214
215
  def top(boolean)
215
- model.attributes[:show_top] = !!boolean
216
+ model.show_top = !!boolean
216
217
  end
217
218
  alias_method :show_top, :top
218
219
 
@@ -239,7 +240,7 @@ module Vedeu
239
240
  # character.
240
241
  # @return [String]
241
242
  def top_left(char)
242
- model.attributes[:top_left] = char
243
+ model.top_left = char
243
244
  end
244
245
 
245
246
  # Set the character to be used to draw the top right corner of the border.
@@ -255,7 +256,7 @@ module Vedeu
255
256
  # character.
256
257
  # @return [String]
257
258
  def top_right(char)
258
- model.attributes[:top_right] = char
259
+ model.top_right = char
259
260
  end
260
261
 
261
262
  # Set the character to be used to draw a vertical part of the border.
@@ -271,7 +272,7 @@ module Vedeu
271
272
  # character.
272
273
  # @return [String]
273
274
  def vertical(char)
274
- model.attributes[:vertical] = char
275
+ model.vertical = char
275
276
  end
276
277
 
277
278
  private
@@ -23,6 +23,7 @@ module Vedeu
23
23
  # @param name [String] The name of the interface or view to which this
24
24
  # geometry belongs.
25
25
  # @param block [Proc]
26
+ # @raise [InvalidSyntax] The required block was not given.
26
27
  # @return [Vedeu::Geometry]
27
28
  def geometry(name, &block)
28
29
  fail InvalidSyntax, 'block not given' unless block_given?
@@ -9,6 +9,7 @@ module Vedeu
9
9
  # Provides methods to be used to define keypress mapped to actions.
10
10
  #
11
11
  # @api public
12
+ #
12
13
  class Keymap
13
14
 
14
15
  include Vedeu::Common
@@ -6,6 +6,7 @@ module Vedeu
6
6
  # events to drive them.
7
7
  #
8
8
  # @api public
9
+ #
9
10
  class Menu
10
11
 
11
12
  include Vedeu::DSL
@@ -11,6 +11,7 @@ module Vedeu
11
11
  module DSL
12
12
 
13
13
  # DSL for creating interfaces.
14
+ #
14
15
  class Interface
15
16
 
16
17
  include Vedeu::Common