1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/pty: moved documents and samples to the appropriate places.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2010-06-23 08:25:12 +00:00
parent c7d001465c
commit 80684e9c09
7 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,48 @@
#
# sample program of expect.rb
#
# by A. Ito
#
# This program reports the latest version of ruby interpreter
# by connecting to ftp server at ruby-lang.org.
#
require 'pty'
require 'expect'
fnames = []
PTY.spawn("ftp ftp.ruby-lang.org") do |r_f,w_f,pid|
w_f.sync = true
$expect_verbose = false
if !ENV['USER'].nil?
username = ENV['USER']
elsif !ENV['LOGNAME'].nil?
username = ENV['LOGNAME']
else
username = 'guest'
end
r_f.expect(/^(Name).*: |(word):|> /) do
w_f.puts($1 ? "ftp" : $2 ? "#{username}@" : "cd pub/ruby")
end
r_f.expect("> ") do
w_f.print "dir\n"
end
r_f.expect(/[^\-]> /) do |output|
for x in output[0].split("\n")
if x =~ /(ruby.*?\.tar\.gz)/ then
fnames.push $1
end
end
end
begin
w_f.print "quit\n"
rescue
end
end
print "The latest ruby interpreter is "
print fnames.sort.pop
print "\n"

37
sample/pty/script.rb Normal file
View file

@ -0,0 +1,37 @@
require 'pty'
if ARGV.size == 0 then
ofile = "typescript"
else
ofile = ARGV[0]
end
logfile = File.open(ofile,"a")
system "stty -echo raw lnext ^_"
PTY.spawn("/bin/csh") do |r_pty,w_pty,pid|
Thread.new do
while true
w_pty.print STDIN.getc.chr
w_pty.flush
end
end
begin
while true
c = r_pty.sysread(512)
break if c.nil?
print c
STDOUT.flush
logfile.print c
end
rescue
# print $@,':',$!,"\n"
logfile.close
end
end
system "stty echo -raw lnext ^v"

92
sample/pty/shl.rb Normal file
View file

@ -0,0 +1,92 @@
#
# old-fashioned 'shl' like program
# by A. Ito
#
# commands:
# c creates new shell
# C-z suspends shell
# p lists all shell
# 0,1,... choose shell
# q quit
require 'pty'
$shells = []
$n_shells = 0
$r_pty = nil
$w_pty = nil
def writer
system "stty -echo raw"
begin
while true
c = STDIN.getc
if c == 26 then # C-z
$reader.raise(nil)
return 'Suspend'
end
$w_pty.print c.chr
$w_pty.flush
end
rescue
$reader.raise(nil)
return 'Exit'
ensure
system "stty echo -raw"
end
end
$reader = Thread.new {
while true
begin
next if $r_pty.nil?
c = $r_pty.getc
if c.nil? then
Thread.stop
end
print c.chr
STDOUT.flush
rescue
Thread.stop
end
end
}
# $reader.raise(nil)
while true
print ">> "
STDOUT.flush
case gets
when /^c/i
$shells[$n_shells] = PTY.spawn("/bin/csh")
$r_pty,$w_pty = $shells[$n_shells]
$n_shells += 1
$reader.run
if writer == 'Exit'
$n_shells -= 1
$shells[$n_shells] = nil
end
when /^p/i
for i in 0..$n_shells
unless $shells[i].nil?
print i,"\n"
end
end
when /^([0-9]+)/
n = $1.to_i
if $shells[n].nil?
print "\##{i} doesn't exist\n"
else
$r_pty,$w_pty = $shells[n]
$reader.run
if writer == 'Exit' then
$shells[n] = nil
end
end
when /^q/i
exit
end
end