ruby_expect 1.5 → 1.6.0

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ruby_expect/expect.rb +40 -0
  3. metadata +18 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aae7564291f071fcddf3d57a076cd2fa88c26cbb
4
- data.tar.gz: 49e142d0d9a17e8c27461938915573cc7ccae623
3
+ metadata.gz: 64ab7f0e6b76231b1d7d190291a40dc31cc2f7c9
4
+ data.tar.gz: 57c2411697a5f8360015d23906403a2f56094090
5
5
  SHA512:
6
- metadata.gz: fe85ffc733d458dfa2d026a4f836acd878edf2188dbf2fb69802fa760d84ba7770066e2ba2181827b2ff9ab2aac6c8da24f89d11e6d9a62120e3f17f5aad0069
7
- data.tar.gz: 79bca0c7efff5f225082680cb5a34f935902012770ef0ba8c5afe380fc3834cc8701943191849998245a8b5053ae1b6037fef3b6e75ab1f8abb70e5dec663158
6
+ metadata.gz: 0c0e90e541aaab4c945292ba687d1dc416ea5453ee3746aff47cd23054fe43f80744f12f0579ac8f0f0f3908f6751d161b22ae0ac52c8fc4fd18ec836c1a4d7b
7
+ data.tar.gz: b45370d25213967730c4e023b7e87747f9296bfe11776174eaf5c7feeef57f2d5eddb8d94e7590e481f36b734742f2358a0745f3a100821eaa26b706bdfc1255
@@ -17,6 +17,7 @@
17
17
  require 'thread'
18
18
  require 'ruby_expect/procedure'
19
19
  require 'pty'
20
+ require 'io/console'
20
21
 
21
22
  #####
22
23
  #
@@ -276,7 +277,46 @@ module RubyExpect
276
277
  return true
277
278
  end
278
279
 
280
+ ###
281
+ # Provides the ability to hand control back to the user and
282
+ # allow them to interact with the spawned process.
283
+ def interact
284
+ if ($stdin.tty?)
285
+ $stdin.raw do |stdin|
286
+ interact_loop(stdin)
287
+ end
288
+ else
289
+ interact_loop($stdin)
290
+ end
291
+ end
292
+
279
293
  private
294
+ def interact_loop stdin
295
+ done = false
296
+ while (! done)
297
+ avail = IO.select([@read_fh, stdin])
298
+ avail[0].each do |fh|
299
+ if (fh == stdin)
300
+ if (stdin.eof?)
301
+ done = true
302
+ else
303
+ c = stdin.read_nonblock(1)
304
+ $stdout.flush
305
+ @write_fh.write(c)
306
+ @write_fh.flush
307
+ end
308
+ elsif (fh == @read_fh)
309
+ if (@read_fh.eof?)
310
+ done = true
311
+ else
312
+ $stdout.write(@read_fh.read_nonblock(1024))
313
+ $stdout.flush
314
+ end
315
+ end
316
+ end
317
+ end
318
+ end
319
+
280
320
  def read_proc
281
321
  begin
282
322
  ready = IO.select([@read_fh], nil, nil, 1)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_expect
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.5'
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Bates
@@ -9,7 +9,21 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2014-10-27 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '5.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '5.3'
13
27
  description: Ruby implementation for send/expect interaction
14
28
  email: abates@omeganetserv.com
15
29
  executables: []
@@ -28,12 +42,12 @@ require_paths:
28
42
  - lib
29
43
  required_ruby_version: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ">="
45
+ - - '>='
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  required_rubygems_version: !ruby/object:Gem::Requirement
35
49
  requirements:
36
- - - ">="
50
+ - - '>='
37
51
  - !ruby/object:Gem::Version
38
52
  version: '0'
39
53
  requirements: []