diff options
Diffstat (limited to 'ruby_1_8_5/sample')
128 files changed, 0 insertions, 8186 deletions
diff --git a/ruby_1_8_5/sample/README b/ruby_1_8_5/sample/README deleted file mode 100644 index 53d16de335..0000000000 --- a/ruby_1_8_5/sample/README +++ /dev/null @@ -1,52 +0,0 @@ -README this file -biorhythm.rb biorhythm calculator -cal.rb cal(1) clone -cbreak.rb no echo done by ioctl -clnt.rb socket client -dbmtest.rb test for dbm -dir.rb directory access -dualstack-fetch.rb IPv6 demo -dualstack-httpd.rb IPv6 demo -dstore.rb object database on dbm -eval.rb simple evaluator -export.rb method access example -exyacc.rb extrace BNF from yacc file -fact.rb factorial calculator -fib.awk Fibonacci number (AWK) -fib.pl Fibonacci number (Perl) -fib.py Fibonacci number (Python) -fib.rb Fibonacci number (Ruby) -fib.scm Fibonacci number (Scheme) -freq.rb count word occurrence -from.rb scan mail spool -fullpath.rb convert ls -lR to fullpath format -getopts.test test fot getopt.rb -goodfriday.rb print various christian calendar event. -io.rb io test -irb.rb interactive ruby -less.rb front end for less -list.rb stupid object sample -list2.rb stupid object sample -list3.rb stupid object sample -mine.rb simple mine sweeper -mkproto.rb extract prototype from C -mpart.rb split file int multi part -mrshtest.rb test marshal -observ.rb observer design pattern sample -occur.pl count word occurrence (Perl) -occur.rb count word occurrence (Ruby) -occur2.rb count word occurrence - another style -philos.rb famous dining philosophers -pi.rb calculate PI -rcs.awk random character stereogram (AWK) -rcs.rb random character stereogram (Ruby) -rcs.dat data for random character stereogram -rd2html.rb rd (Ruby Document) to HTML translator -regx.rb regular expression tester -sieve.rb sieve of Eratosthenes -svr.rb socket server -test.rb test suite used by `make test' -time.rb /usr/bin/time clone -trojan.rb simple tool to find file that may be trojan horse. -tsvr.rb socket server using thread -uumerge.rb merge files and uudecode them diff --git a/ruby_1_8_5/sample/biorhythm.rb b/ruby_1_8_5/sample/biorhythm.rb deleted file mode 100644 index 0f89bb99e1..0000000000 --- a/ruby_1_8_5/sample/biorhythm.rb +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/local/bin/ruby -# -# biorhythm.rb - -# $Release Version: $ -# $Revision: 1.9 $ -# $Date: 2003/05/05 14:02:14 $ -# by Yasuo OHBA(STAFS Development Room) -# -# -- -# -# -# - -# probably based on: -# -# Newsgroups: comp.sources.misc,de.comp.sources.os9 -# From: fkk@stasys.sta.sub.org (Frank Kaefer) -# Subject: v41i126: br - Biorhythm v3.0, Part01/01 -# Message-ID: <1994Feb1.070616.15982@sparky.sterling.com> -# Sender: kent@sparky.sterling.com (Kent Landfield) -# Organization: Sterling Software -# Date: Tue, 1 Feb 1994 07:06:16 GMT -# -# Posting-number: Volume 41, Issue 126 -# Archive-name: br/part01 -# Environment: basic, dos, os9 - -include Math -require "date.rb" -require "parsearg.rb" -require "parsedate.rb" - -def usage() - print "Usage:\n" - print "biorhythm.rb [options]\n" - print " options...\n" - print " -D YYYYMMDD(birthday) : use default values.\n" - print " --sdate | --date YYYYMMDD : use system date; use specified date.\n" - print " --birthday YYYYMMDD : specifies your birthday.\n" - print " -v | -g : show values or graph.\n" - print " --days DAYS : graph range (only in effect for graphs).\n" - print " --help : help\n" -end -$USAGE = 'usage' - -def printHeader(y, m, d, p, w) - print "\n>>> Biorhythm <<<\n" - printf "The birthday %04d.%02d.%02d is a %s\n", y, m, d, w - printf "Age in days: [%d]\n\n", p -end - -def getPosition(z) - pi = Math::PI - z = Integer(z) - phys = (50.0 * (1.0 + sin((z / 23.0 - (z / 23)) * 360.0 * pi / 180.0))).to_i - emot = (50.0 * (1.0 + sin((z / 28.0 - (z / 28)) * 360.0 * pi / 180.0))).to_i - geist =(50.0 * (1.0 + sin((z / 33.0 - (z / 33)) * 360.0 * pi / 180.0))).to_i - return phys, emot, geist -end - -def parsedate(s) - ParseDate::parsedate(s).values_at(0, 1, 2) -end - -def name_of_week(date) - Date::DAYNAMES[date.wday] -end - -# -# main program -# -parseArgs(0, nil, "vg", "D:", "sdate", "date:", "birthday:", "days:") - -if $OPT_D - dd = Date.today - bd = Date.new(*parsedate($OPT_D)) - ausgabeart = "g" -else - if $OPT_birthday - bd = Date.new(*parsedate($OPT_birthday)) - else - STDERR.print("Birthday (YYYYMMDD) : ") - unless (si = STDIN.gets.chop).empty? - bd = Date.new(*parsedate(si)) - end - end - if !bd - STDERR.print "BAD Input Birthday!!\n" - exit() - end - - if $OPT_sdate - dd = Date.today - elsif $OPT_date - dd = Date.new(*parsedate($OPT_date)) - else - STDERR.print("Date [<RETURN> for Systemdate] (YYYYMMDD) : ") - unless (si = STDIN.gets.chop).empty? - dd = Date.new(*parsedate(si)) - end - end - dd ||= Date.today - - if $OPT_v - ausgabeart = "v" - elsif $OPT_g - ausgabeart = "g" - else - STDERR.print("Values for today or Graph (v/g) [default g] : ") - ausgabeart = STDIN.gets.chop - end -end -if ausgabeart == "v" - printHeader(bd.year, bd.month, bd.day, dd - bd, name_of_week(bd)) - print "\n" - - phys, emot, geist = getPosition(dd - bd) - printf "Biorhythm: %04d.%02d.%02d\n", dd.year, dd.month, dd.day - printf "Physical: %d%%\n", phys - printf "Emotional: %d%%\n", emot - printf "Mental: %d%%\n", geist - print "\n" -else - if $OPT_days - display_period = $OPT_days.to_i - elsif $OPT_D - display_period = 9 - else - STDERR.printf("Graph for how many days [default 10] : ") - display_period = STDIN.gets.chop - if display_period.empty? - display_period = 9 - else - display_period = display_period.to_i - 1 - end - end - - printHeader(bd.year, bd.month, bd.day, dd - bd, name_of_week(bd)) - print " P=physical, E=emotional, M=mental\n" - print " -------------------------+-------------------------\n" - print " Bad Condition | Good Condition\n" - print " -------------------------+-------------------------\n" - - (dd - bd).step(dd - bd + display_period) do |z| - phys, emot, geist = getPosition(z) - - printf "%04d.%02d.%02d : ", dd.year, dd.month, dd.day - p = (phys / 2.0 + 0.5).to_i - e = (emot / 2.0 + 0.5).to_i - g = (geist / 2.0 + 0.5).to_i - graph = "." * 51 - graph[25] = ?| - graph[p] = ?P - graph[e] = ?E - graph[g] = ?M - print graph, "\n" - dd = dd + 1 - end - print " -------------------------+-------------------------\n\n" -end diff --git a/ruby_1_8_5/sample/cal.rb b/ruby_1_8_5/sample/cal.rb deleted file mode 100644 index fa20352f71..0000000000 --- a/ruby_1_8_5/sample/cal.rb +++ /dev/null @@ -1,154 +0,0 @@ -#! /usr/bin/env ruby - -# cal.rb: Written by Tadayoshi Funaba 1998-2004 -# $Id: cal.rb,v 2.7 2004-01-10 23:52:51+09 tadf Exp $ - -require 'date' - -class Cal - - START = - { - 'cn' => true, # China - 'de' => 2342032, # Germany (protestant states) - 'dk' => 2342032, # Denmark - 'es' => 2299161, # Spain - 'fi' => 2361390, # Finland - 'fr' => 2299227, # France - 'gb' => 2361222, # United Kingdom - 'gr' => 2423868, # Greece - 'hu' => 2301004, # Hungary - 'it' => 2299161, # Italy - 'jp' => true, # Japan - 'no' => 2342032, # Norway - 'pl' => 2299161, # Poland - 'pt' => 2299161, # Portugal - 'ru' => 2421639, # Russia - 'se' => 2361390, # Sweden - 'us' => 2361222, # United States - 'os' => false, # (old style) - 'ns' => true # (new style) - } - - DEFAULT_START = 'gb' - - def initialize - opt_j; opt_m; opt_t; opt_y; opt_c - end - - def opt_j(flag=false) @opt_j = flag end - def opt_m(flag=false) @opt_m = flag end - def opt_t(flag=false) @opt_t = flag end - def opt_y(flag=false) @opt_y = flag end - - def opt_c(arg=DEFAULT_START) @start = START[arg] end - - def set_params - @dw = if @opt_j then 3 else 2 end - @mw = (@dw + 1) * 7 - 1 - @mn = if @opt_j then 2 else 3 end - @tw = (@mw + 2) * @mn - 2 - @k = if @opt_m then 1 else 0 end - @da = if @opt_j then :yday else :mday end - end - - def pict(y, m) - d = (1..31).detect{|d| Date.valid_date?(y, m, d, @start)} - fi = Date.new(y, m, d, @start) - fi -= (fi.jd - @k + 1) % 7 - - ve = (fi..fi + 6).collect{|cu| - %w(S M Tu W Th F S)[cu.wday] - } - ve += (fi..fi + 41).collect{|cu| - if cu.mon == m then cu.send(@da) end.to_s - } - - ve = ve.collect{|e| e.rjust(@dw)} - - gr = group(ve, 7) - gr = trans(gr) if @opt_t - ta = gr.collect{|xs| xs.join(' ')} - - ca = %w(January February March April May June July - August September October November December)[m - 1] - ca = ca + ' ' + y.to_s if not @opt_y - ca = ca.center(@mw) - - ta.unshift(ca) - end - - def group(xs, n) - (0..xs.size / n - 1).collect{|i| xs[i * n, n]} - end - - def trans(xs) - (0..xs[0].size - 1).collect{|i| xs.collect{|x| x[i]}} - end - - def stack(xs) - if xs.empty? then [] else xs[0] + stack(xs[1..-1]) end - end - - def block(xs, n) - stack(group(xs, n).collect{|ys| trans(ys).collect{|zs| zs.join(' ')}}) - end - - def unlines(xs) - xs.collect{|x| x + "\n"}.join - end - - def monthly(y, m) - unlines(pict(y, m)) - end - - def addmon(y, m, n) - y, m = (y * 12 + (m - 1) + n).divmod(12) - return y, m + 1 - end - - def yearly(y) - y.to_s.center(@tw) + "\n\n" + - unlines(block((0..11).collect{|n| pict(*addmon(y, 1, n))}, @mn)) + "\n" - end - - def print(y, m) - set_params - if @opt_y then yearly(y) else monthly(y, m) end - end - -end - -if __FILE__ == $0 - - require 'getopts' - - def usage - warn 'usage: cal [-c iso3166] [-jmty] [[month] year]' - exit 1 - end - - usage unless getopts('jmty', "c:#{Cal::DEFAULT_START}") - - y, m = ARGV.values_at(1, 0).compact.collect{|x| x.to_i} - $OPT_y ||= (y and not m) - - to = Date.today - y ||= to.year - m ||= to.mon - - usage unless m >= 1 and m <= 12 - usage unless y >= -4712 - usage if Cal::START[$OPT_c].nil? - - cal = Cal.new - - cal.opt_j($OPT_j) - cal.opt_m($OPT_m) - cal.opt_t($OPT_t) - cal.opt_y($OPT_y) - cal.opt_c($OPT_c) - - print cal.print(y, m) - -end diff --git a/ruby_1_8_5/sample/cbreak.rb b/ruby_1_8_5/sample/cbreak.rb deleted file mode 100644 index cbb15d2f41..0000000000 --- a/ruby_1_8_5/sample/cbreak.rb +++ /dev/null @@ -1,36 +0,0 @@ -# ioctl example works on Sun - -CBREAK = 0x00000002 -ECHO = 0x00000008 -TIOCGETP = 0x40067408 -TIOCSETP = 0x80067409 - -def cbreak () - set_cbreak(TRUE) -end - -def cooked () - set_cbreak(FALSE) -end - -def set_cbreak (on) - tty = "\0" * 256 - STDIN.ioctl(TIOCGETP, tty) - ttys = tty.unpack("C4 S") - if on - ttys[4] |= CBREAK - ttys[4] &= ~ECHO - else - ttys[4] &= ~CBREAK - ttys[4] |= ECHO - end - tty = ttys.pack("C4 S") - STDIN.ioctl(TIOCSETP, tty) -end -cbreak(); - -print("this is no-echo line: "); -readline().print -cooked(); -print("this is echo line: "); -readline() diff --git a/ruby_1_8_5/sample/clnt.rb b/ruby_1_8_5/sample/clnt.rb deleted file mode 100644 index 0f3d17bf19..0000000000 --- a/ruby_1_8_5/sample/clnt.rb +++ /dev/null @@ -1,21 +0,0 @@ -# socket example - client side -# usage: ruby clnt.rb [host] port - -require "socket" - -if ARGV.length >= 2 - host = ARGV.shift -else - host = "localhost" -end -print("Trying ", host, " ...") -STDOUT.flush -s = TCPSocket.open(host, ARGV.shift) -print(" done\n") -print("addr: ", s.addr.join(":"), "\n") -print("peer: ", s.peeraddr.join(":"), "\n") -while line = gets() - s.write(line) - print(s.readline) -end -s.close diff --git a/ruby_1_8_5/sample/dbmtest.rb b/ruby_1_8_5/sample/dbmtest.rb deleted file mode 100644 index c77cc2065b..0000000000 --- a/ruby_1_8_5/sample/dbmtest.rb +++ /dev/null @@ -1,14 +0,0 @@ -# ruby dbm acess -require "dbm" - -d = DBM.open("test") -keys = d.keys -if keys.length > 0 then - for k in keys; print k, "\n"; end - for v in d.values; print v, "\n"; end -else - d['foobar'] = 'FB' - d['baz'] = 'BZ' - d['quux'] = 'QX' -end - diff --git a/ruby_1_8_5/sample/dir.rb b/ruby_1_8_5/sample/dir.rb deleted file mode 100644 index b627383946..0000000000 --- a/ruby_1_8_5/sample/dir.rb +++ /dev/null @@ -1,12 +0,0 @@ -# directory access -# list all files but .*/*~/*.o -dirp = Dir.open(".") -for f in dirp - case f - when /^\./, /~$/, /\.o/ - # do not print - else - print f, "\n" - end -end -dirp.close diff --git a/ruby_1_8_5/sample/drb/README.rd b/ruby_1_8_5/sample/drb/README.rd deleted file mode 100644 index 5cf1f51913..0000000000 --- a/ruby_1_8_5/sample/drb/README.rd +++ /dev/null @@ -1,56 +0,0 @@ -= Sample scripts - -* array and iteretor - * darray.rb --- server - * darrayc.rb --- client - -* simple chat - * dchats.rb --- server - * dchatc.rb --- client - -* distributed chasen (for Japanese) - * dhasen.rb --- server - * dhasenc.rb --- client - -* simple log server - * dlogd.rb --- server - * dlogc.rb --- client - -* Queue server, and DRbUnknown demo - * dqueue.rb --- server - * dqin.rb --- client. push DQEntry objects. - * dqout.rb --- client. pop DQEntry objects. - * dqlib.rb --- define DQEntry - -* IdConv customize demo: reference by name - * name.rb --- server - * namec.rb --- client - -* extserv - * extserv_test.rb - -* IdConv customize demo 2: using TimerIdConv - * holders.rb --- server - * holderc.rb --- client - -* rinda, remote tuplespace - * rinda_ts.rb --- TupleSpace server. - * rindas.rb --- provide simple service via TupleSpace. - * rindac.rb --- service user - -* observer - cdbiff - ((<URI:http://namazu.org/~satoru/cdbiff/>)) - * dbiff.rb --- dcdbiff server - * dcdbiff.rb --- dcdbiff client - -* drbssl - * drbssl_s.rb - * drbssl_c.rb - -* add DRbProtocl - * http0.rb - * http0serv.rb - -* Rinda::Ring - * ring_place.rb - * ring_echo.rb diff --git a/ruby_1_8_5/sample/drb/README.rd.ja b/ruby_1_8_5/sample/drb/README.rd.ja deleted file mode 100644 index 04143b9ad5..0000000000 --- a/ruby_1_8_5/sample/drb/README.rd.ja +++ /dev/null @@ -1,59 +0,0 @@ -= ¥µ¥ó¥×¥ë¥¹¥¯¥ê¥×¥È - -* Array¤ò¥ê¥â¡¼¥È¤«¤éÍøÍѤ·¤Æ¥¤¥Æ¥ì¡¼¥¿¤ò»î¤¹¡£ - * darray.rb --- server - * darrayc.rb --- client - -* ´Ê°×¥Á¥ã¥Ã¥È - * dchats.rb --- server - * dchatc.rb --- client - -* ʬ»¶chasen - * dhasen.rb --- server - * dhasenc.rb --- client - -* ´Ê°×¥í¥°¥µ¡¼¥Ð - * dlogd.rb --- server - * dlogc.rb --- client - -* Queue¥µ¡¼¥Ð¡£ - ¥¯¥é¥¤¥¢¥ó¥Èdqin.rb¤ÏQueue¥µ¡¼¥Ð¤ÎÃΤé¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È(DQEntry)¤ò - push¤¹¤ë¤¬DRbUnknown¤Ë¤è¤ê¥¯¥é¥¤¥¢¥ó¥Èdqout.rb¤¬pop¤Ç¤¤ë¡£ - * dqueue.rb --- server - * dqin.rb --- client¡£DQEntry¥ª¥Ö¥¸¥§¥¯¥È¤òpush¤¹¤ë - * dqout.rb --- client¡£DQEntry¥ª¥Ö¥¸¥§¥¯¥È¤òpop¤¹¤ë - * dqlib.rb --- DQEntry¤òÄêµÁ¤·¤¿¥é¥¤¥Ö¥é¥ê - -* ̾Á°¤Ë¤è¤ë»²¾È - IdConv¤ò¥«¥¹¥¿¥Þ¥¤¥º¤·¤Æid¤Ç¤Ê¤¯Ì¾Á°¤Ç»²¾È¤¹¤ëÎã - * name.rb --- server - * namec.rb --- client - -* extserv¤Î¥µ¥ó¥×¥ë - * extserv_test.rb - -* TimerIdConv¤Î»ÈÍÑÎã - * holders.rb --- server¡£ruby -d hodlers.rb¤È¤¹¤ë¤ÈTimerIdConv¤ò»ÈÍѤ¹¤ë¡£ - * holderc.rb --- client - -* rinda.rb¤Î»ÈÍÑÎã - * rinda_ts.rb --- TupleSpace¥µ¡¼¥Ð¡£ - * rindac.rb --- TupleSpace¤Îclient¤Ç¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Îclient - * rindas.rb --- TupleSpace¤Îclient¤Ç¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Îserver - -* observer¤Î»ÈÍÑÎã - cdbiff - ((<URI:http://namazu.org/~satoru/cdbiff/>)) - * dbiff.rb --- dcdbiff server - * dcdbiff.rb --- dcdbiff client - -* drbssl¤Î»ÈÍÑÎã - * drbssl_s.rb - * drbssl_c.rb - -* DRbProtocl¤ÎÄɲÃÎã - * http0.rb - * http0serv.rb - -* ring¤Î»ÈÍÑÎã - * ring_place.rb - * ring_echo.rb diff --git a/ruby_1_8_5/sample/drb/darray.rb b/ruby_1_8_5/sample/drb/darray.rb deleted file mode 100644 index 95ee01ff03..0000000000 --- a/ruby_1_8_5/sample/drb/darray.rb +++ /dev/null @@ -1,12 +0,0 @@ -=begin - distributed Ruby --- Array - Copyright (c) 1999-2001 Masatoshi SEKI -=end - -require 'drb/drb' - -here = ARGV.shift -DRb.start_service(here, [1, 2, "III", 4, "five", 6]) -puts DRb.uri -DRb.thread.join - diff --git a/ruby_1_8_5/sample/drb/darrayc.rb b/ruby_1_8_5/sample/drb/darrayc.rb deleted file mode 100644 index 6f5ff6bb5d..0000000000 --- a/ruby_1_8_5/sample/drb/darrayc.rb +++ /dev/null @@ -1,59 +0,0 @@ -=begin - distributed Ruby --- Array client - Copyright (c) 1999-2001 Masatoshi SEKI -=end - -require 'drb/drb' - -there = ARGV.shift || raise("usage: #{$0} <server_uri>") - -DRb.start_service(nil, nil) -ro = DRbObject.new(nil, there) -p ro.size - -puts "# collect" -a = ro.collect { |x| - x + x -} -p a - -puts "# find" -p ro.find { |x| x.kind_of? String } - -puts "# each, break" -ro.each do |x| - next if x == "five" - puts x -end - -puts "# each, break" -ro.each do |x| - break if x == "five" - puts x -end - -puts "# each, next" -ro.each do |x| - next if x == "five" - puts x -end - -puts "# each, redo" -count = 0 -ro.each do |x| - count += 1 - puts count - redo if count == 3 -end - -puts "# each, retry" -retried = false -ro.each do |x| - puts x - if x == 4 && !retried - puts 'retry' - retried = true - retry - end -end - diff --git a/ruby_1_8_5/sample/drb/dbiff.rb b/ruby_1_8_5/sample/drb/dbiff.rb deleted file mode 100644 index 8faef50b07..0000000000 --- a/ruby_1_8_5/sample/drb/dbiff.rb +++ /dev/null @@ -1,51 +0,0 @@ -# -# dbiff.rb - distributed cdbiff (server) -# * original: cdbiff by Satoru Takabayashi <http://namazu.org/~satoru/cdbiff> - -require 'drb/drb' -require 'drb/eq' -require 'drb/observer' - -class Biff - include DRb::DRbObservable - - def initialize(filename, interval) - super() - @filename = filename - @interval = interval - end - - def run - last = Time.now - while true - begin - sleep(@interval) - current = File::mtime(@filename) - if current > last - changed - begin - notify_observers(@filename, current) - rescue Error - end - last = current - end - rescue - next - end - end - end -end - -def main - filename = "/var/mail/#{ENV['USER']}" - interval = 15 - uri = 'druby://:19903' - - biff = Biff.new(filename, interval) - - DRb.start_service(uri, biff) - biff.run -end - -main - diff --git a/ruby_1_8_5/sample/drb/dcdbiff.rb b/ruby_1_8_5/sample/drb/dcdbiff.rb deleted file mode 100644 index 6a24680c33..0000000000 --- a/ruby_1_8_5/sample/drb/dcdbiff.rb +++ /dev/null @@ -1,43 +0,0 @@ -# -# dcdbiff.rb - distributed cdbiff (client) -# * original: cdbiff by Satoru Takabayashi <http://namazu.org/~satoru/cdbiff> - -require 'drb/drb' -require 'drb/eq' - -class Notify - include DRbUndumped - - def initialize(biff, command) - @biff = biff - @command = command - - @biff.add_observer(self) - end - - def update(filename, time) - p [filename, time] if $DEBUG - system(@command) - end - - def done - begin - @biff.delete_observer(self) - rescue - end - end -end - -def main - command = 'eject' - uri = 'druby://localhost:19903' - - DRb.start_service - biff = DRbObject.new(nil, uri) - notify = Notify.new(biff, command) - - trap("INT"){ notify.done } - DRb.thread.join -end - -main diff --git a/ruby_1_8_5/sample/drb/dchatc.rb b/ruby_1_8_5/sample/drb/dchatc.rb deleted file mode 100644 index b506f5bbba..0000000000 --- a/ruby_1_8_5/sample/drb/dchatc.rb +++ /dev/null @@ -1,41 +0,0 @@ -=begin - distributed Ruby --- chat client - Copyright (c) 1999-2000 Masatoshi SEKI -=end - -require 'drb/drb' - -class ChatClient - include DRbUndumped - - def initialize(name) - @name = name - @key = nil - end - attr_reader(:name) - attr_accessor(:key) - - def message(there, str) - raise 'invalid key' unless @key == there - puts str - end -end - -if __FILE__ == $0 - begin - there = ARGV.shift - name = ARGV.shift - raise "usage" unless (there and name) - rescue - $stderr.puts("usage: #{$0} <server_uri> <your_name>") - exit 1 - end - DRb.start_service - ro = DRbObject.new(nil, there) - - chat = ChatClient.new(name) - entry = ro.add_member(chat) - while gets - entry.say($_) - end -end diff --git a/ruby_1_8_5/sample/drb/dchats.rb b/ruby_1_8_5/sample/drb/dchats.rb deleted file mode 100644 index 012dfeeebe..0000000000 --- a/ruby_1_8_5/sample/drb/dchats.rb +++ /dev/null @@ -1,70 +0,0 @@ -=begin - distributed Ruby --- chat server - Copyright (c) 1999-2000 Masatoshi SEKI -=end -require 'thread' -require 'drb/drb' - -class ChatEntry - include DRbUndumped - - def initialize(server, there) - @server = server - @there = there - @name = there.name - @key = there.key = Time.now - end - attr :name, true - attr :there - - def say(str) - @server.distribute(@there, str) - end - - def listen(str) - @there.message(@key, str) - end -end - - -class ChatServer - def initialize - @mutex = Mutex.new - @members = {} - end - - def add_member(there) - client = ChatEntry.new(self, there) - @mutex.synchronize do - @members[there] = client - end - client - end - - def distribute(there, str) - name = @members[there].name - msg = "<#{name}> #{str}" - msg2 = ">#{name}< #{str}" - @mutex.synchronize do - for m in @members.keys - begin - if m == there - @members[m].listen(msg2) - else - @members[m].listen(msg) - end - rescue - p $! - @members.delete(m) - end - end - end - end -end - -if __FILE__ == $0 - here = ARGV.shift - DRb.start_service(here, ChatServer.new) - puts DRb.uri - DRb.thread.join -end diff --git a/ruby_1_8_5/sample/drb/dhasen.rb b/ruby_1_8_5/sample/drb/dhasen.rb deleted file mode 100644 index fb1724afa3..0000000000 --- a/ruby_1_8_5/sample/drb/dhasen.rb +++ /dev/null @@ -1,42 +0,0 @@ -=begin - distributed Ruby --- dRuby Sample Server --- chasen server - Copyright (c) 1999-2001 Masatoshi SEKI -=end - -=begin - How to play. - - Terminal 1 - | % ruby dhasen.rb - | druby://yourhost:7640 - - Terminal 2 - | % ruby dhasenc.rb druby://yourhost:7640 - -=end - -require 'drb/drb' -require 'chasen' -require 'thread' - -class Dhasen - include DRbUndumped - - def initialize - @mutex = Mutex.new - end - - def sparse(str, *arg) - @mutex.synchronize do - Chasen.getopt(*arg) - Chasen.sparse(str) - end - end -end - -if __FILE__ == $0 - DRb.start_service(nil, Dhasen.new) - puts DRb.uri - DRb.thread.join -end - diff --git a/ruby_1_8_5/sample/drb/dhasenc.rb b/ruby_1_8_5/sample/drb/dhasenc.rb deleted file mode 100644 index 8114e9228d..0000000000 --- a/ruby_1_8_5/sample/drb/dhasenc.rb +++ /dev/null @@ -1,13 +0,0 @@ -=begin - distributed Ruby --- dRuby Sample Client -- chasen client - Copyright (c) 1999-2001 Masatoshi SEKI -=end - -require 'drb/drb' - -there = ARGV.shift || raise("usage: #{$0} <server_uri>") -DRb.start_service -dhasen = DRbObject.new(nil, there) - -print dhasen.sparse("ËÜÆü¤Ï¡¢À²Å·¤Ê¤ê¡£", "-F", '(%BB %m %M)\n', "-j") -print dhasen.sparse("ËÜÆü¤Ï¡¢À²Å·¤Ê¤ê¡£", "-F", '(%m %M)\n') diff --git a/ruby_1_8_5/sample/drb/dlogc.rb b/ruby_1_8_5/sample/drb/dlogc.rb deleted file mode 100644 index c75bc7b520..0000000000 --- a/ruby_1_8_5/sample/drb/dlogc.rb +++ /dev/null @@ -1,16 +0,0 @@ -=begin - distributed Ruby --- Log test - Copyright (c) 1999-2001 Masatoshi SEKI -=end - -require 'drb/drb' - -there = ARGV.shift || raise("usage: #{$0} <server_uri>") - -DRb.start_service -ro = DRbObject.new(nil, there) -ro.log(123) -ro.log("hello") -sleep 2 -ro.log("wakeup") - diff --git a/ruby_1_8_5/sample/drb/dlogd.rb b/ruby_1_8_5/sample/drb/dlogd.rb deleted file mode 100644 index 9f9aa2fd56..0000000000 --- a/ruby_1_8_5/sample/drb/dlogd.rb +++ /dev/null @@ -1,39 +0,0 @@ -=begin - distributed Ruby --- Log server - Copyright (c) 1999-2000 Masatoshi SEKI -=end - -require 'drb/drb' -require 'thread' - -class Logger - def initialize(fname) - @fname = fname.to_s - @fp = File.open(@fname, "a+") - @queue = Queue.new - @th = Thread.new { self.flush } - end - - def log(str) - @queue.push("#{Time.now}\t" + str.to_s) - end - - def flush - begin - while(1) - @fp.puts(@queue.pop) - @fp.flush - end - ensure - @fp.close - end - end -end - -if __FILE__ == $0 - here = ARGV.shift - DRb.start_service(here, Logger.new('/usr/tmp/dlogd.log')) - puts DRb.uri - DRb.thread.join -end - diff --git a/ruby_1_8_5/sample/drb/dqin.rb b/ruby_1_8_5/sample/drb/dqin.rb deleted file mode 100644 index 3ba1caa80c..0000000000 --- a/ruby_1_8_5/sample/drb/dqin.rb +++ /dev/null @@ -1,13 +0,0 @@ -=begin - distributed Ruby --- store - Copyright (c) 1999-2000 Masatoshi SEKI -=end - -require 'drb/drb' -require 'dqlib' - -there = ARGV.shift || raise("usage: #{$0} <server_uri>") - -DRb.start_service -queue = DRbObject.new(nil, there) -queue.push(DQEntry.new(DRb.uri)) diff --git a/ruby_1_8_5/sample/drb/dqlib.rb b/ruby_1_8_5/sample/drb/dqlib.rb deleted file mode 100644 index 75f2e6115b..0000000000 --- a/ruby_1_8_5/sample/drb/dqlib.rb +++ /dev/null @@ -1,14 +0,0 @@ -class DQEntry - def initialize(name) - @name = name - end - - def greeting - "Hello, This is #{@name}." - end - alias to_s greeting -end - -if __FILE__ == $0 - puts DQEntry.new('DQEntry') -end diff --git a/ruby_1_8_5/sample/drb/dqout.rb b/ruby_1_8_5/sample/drb/dqout.rb deleted file mode 100644 index 4700e55cf7..0000000000 --- a/ruby_1_8_5/sample/drb/dqout.rb +++ /dev/null @@ -1,14 +0,0 @@ -=begin - distributed Ruby --- fetch - Copyright (c) 1999-2000 Masatoshi SEKI -=end - -require 'drb/drb' -require 'dqlib' - -there = ARGV.shift || raise("usage: #{$0} <server_uri>") - -DRb.start_service -queue = DRbObject.new(nil, there) -entry = queue.pop -puts entry.greeting diff --git a/ruby_1_8_5/sample/drb/dqueue.rb b/ruby_1_8_5/sample/drb/dqueue.rb deleted file mode 100644 index a5a43655fd..0000000000 --- a/ruby_1_8_5/sample/drb/dqueue.rb +++ /dev/null @@ -1,12 +0,0 @@ -=begin - distributed Ruby --- Queue - Copyright (c) 1999-2000 Masatoshi SEKI -=end - -require 'thread' -require 'drb/drb' - -DRb.start_service(nil, Queue.new) -puts DRb.uri -DRb.thread.join - diff --git a/ruby_1_8_5/sample/drb/drbc.rb b/ruby_1_8_5/sample/drb/drbc.rb deleted file mode 100644 index 00132b46c8..0000000000 --- a/ruby_1_8_5/sample/drb/drbc.rb +++ /dev/null @@ -1,45 +0,0 @@ -=begin - distributed Ruby --- dRuby Sample Client - Copyright (c) 1999-2000 Masatoshi SEKI -=end - -require 'drb/drb' - -class DRbEx2 - include DRbUndumped - - def initialize(n) - @n = n - end - - def to_i - @n.to_i - end -end - -if __FILE__ == $0 - there = ARGV.shift - unless there - $stderr.puts("usage: #{$0} <server_uri>") - exit 1 - end - - DRb.start_service() - ro = DRbObject.new_with_uri(there) - - puts ro - p ro.to_a - puts ro.hello - p ro.hello - puts ro.sample(DRbEx2.new(1), 2, 3) - puts ro.sample(1, ro.sample(DRbEx2.new(1), 2, 3), DRbEx2.new(3)) - - begin - ro.err - rescue DRb::DRbUnknownError - p $! - p $!.unknown - rescue RuntimeError - p $! - end -end diff --git a/ruby_1_8_5/sample/drb/drbch.rb b/ruby_1_8_5/sample/drb/drbch.rb deleted file mode 100644 index 495ff1c346..0000000000 --- a/ruby_1_8_5/sample/drb/drbch.rb +++ /dev/null @@ -1,48 +0,0 @@ -=begin - distributed Ruby --- dRuby Sample Client - Copyright (c) 1999-2000 Masatoshi SEKI -=end - -require 'drb/drb' -require 'drb/http' - -class DRbEx2 - include DRbUndumped - - def initialize(n) - @n = n - end - - def to_i - @n.to_i - end -end - -if __FILE__ == $0 - there = ARGV.shift - unless there - $stderr.puts("usage: #{$0} <server_uri>") - exit 1 - end - - DRb::DRbConn.proxy_map['x68k'] = 'http://x68k/~mas/http_cgi.rb' - - DRb.start_service() - ro = DRbObject.new(nil, there) - - puts ro - p ro.to_a - puts ro.hello - p ro.hello - puts ro.sample(DRbEx2.new(1), 2, 3) - puts ro.sample(1, ro.sample(DRbEx2.new(1), 2, 3), DRbEx2.new(3)) - - begin - ro.err - rescue DRb::DRbUnknownError - p $! - p $!.unknown - rescue RuntimeError - p $! - end -end diff --git a/ruby_1_8_5/sample/drb/drbm.rb b/ruby_1_8_5/sample/drb/drbm.rb deleted file mode 100644 index 74a15a4696..0000000000 --- a/ruby_1_8_5/sample/drb/drbm.rb +++ /dev/null @@ -1,60 +0,0 @@ -=begin - multiple DRbServer - Copyright (c) 1999-2002 Masatoshi SEKI -=end - -=begin - How to play. - - Terminal 1 - | % ruby drbm.rb - | druby://yourhost:7640 druby://yourhost:7641 - - Terminal 2 - | % ruby drbmc.rb druby://yourhost:7640 druby://yourhost:7641 - | [#<DRb::DRbObject .... @uri="druby://yourhost:7640">, "FOO"] - | [#<DRb::DRbObject .... @uri="druby://yourhost:7641">, "FOO"] - -=end - -require 'drb/drb' - -class Hoge - include DRbUndumped - def initialize(s) - @str = s - end - - def to_s - @str - end -end - -class Foo - def initialize(s='FOO') - @hoge = Hoge.new(s) - end - - def hello - @hoge - end -end - -class Bar < Foo - def initialize(foo) - @hoge = foo.hello - end -end - - -if __FILE__ == $0 - foo = Foo.new - s1 = DRb::DRbServer.new('druby://:7640', foo) - s2 = DRb::DRbServer.new('druby://:7641', Bar.new(foo)) - - puts "#{s1.uri} #{s2.uri}" - - s1.thread.join - s2.thread.join -end - diff --git a/ruby_1_8_5/sample/drb/drbmc.rb b/ruby_1_8_5/sample/drb/drbmc.rb deleted file mode 100644 index c654fcea05..0000000000 --- a/ruby_1_8_5/sample/drb/drbmc.rb +++ /dev/null @@ -1,22 +0,0 @@ -=begin - multiple DRbServer client - Copyright (c) 1999-2002 Masatoshi SEKI -=end - -require 'drb/drb' - -if __FILE__ == $0 - s1 = ARGV.shift - s2 = ARGV.shift - unless s1 && s2 - $stderr.puts("usage: #{$0} <server_uri1> <server_uri2>") - exit 1 - end - - DRb.start_service() - r1 = DRbObject.new(nil, s1) - r2 = DRbObject.new(nil, s2) - - p [r1.hello, r1.hello.to_s] - p [r2.hello, r2.hello.to_s] -end diff --git a/ruby_1_8_5/sample/drb/drbs-acl.rb b/ruby_1_8_5/sample/drb/drbs-acl.rb deleted file mode 100644 index 151dd945d8..0000000000 --- a/ruby_1_8_5/sample/drb/drbs-acl.rb +++ /dev/null @@ -1,51 +0,0 @@ -=begin - distributed Ruby --- dRuby Sample Server - Copyright (c) 1999-2000 Masatoshi SEKI -=end - -=begin - How to play. - - Terminal 1 - | % ruby drbs.rb - | druby://yourhost:7640 - - Terminal 2 - | % ruby drbc.rb druby://yourhost:7640 - | "hello" - | 6 - | 10 - -=end - -require 'drb/drb' -require 'acl' - -class DRbEx - def initialize - @hello = 'hello' - end - - def hello - info = Thread.current['DRb'] - p info['socket'].peeraddr if info - @hello - end - - def sample(a, b, c) - a.to_i + b.to_i + c.to_i - end -end - -if __FILE__ == $0 - acl = ACL.new(%w(deny all - allow 192.168.1.* - allow localhost)) - - DRb.install_acl(acl) - - DRb.start_service(nil, DRbEx.new) - puts DRb.uri - DRb.thread.join -end - diff --git a/ruby_1_8_5/sample/drb/drbs.rb b/ruby_1_8_5/sample/drb/drbs.rb deleted file mode 100644 index b76e283c80..0000000000 --- a/ruby_1_8_5/sample/drb/drbs.rb +++ /dev/null @@ -1,64 +0,0 @@ -=begin - distributed Ruby --- dRuby Sample Server - Copyright (c) 1999-2000,2002 Masatoshi SEKI -=end - -=begin - How to play. - - Terminal 1 - | % ruby drbs.rb - | druby://yourhost:7640 - - Terminal 2 - | % ruby drbc.rb druby://yourhost:7640 - | "hello" - | .... - -=end - -require 'drb/drb' - -class DRbEx - include DRbUndumped - - def initialize - @hello = 'hello' - end - - def hello - cntxt = Thread.current['DRb'] - if cntxt - p cntxt['server'].uri - p cntxt['client'].peeraddr - end - Foo::Unknown.new - end - - def err - raise FooError - end - - def sample(a, b, c) - a.to_i + b.to_i + c.to_i - end -end - -class Foo - class Unknown - end -end - -class FooError < RuntimeError -end - -if __FILE__ == $0 - DRb.start_service(ARGV.shift || 'druby://:7640', DRbEx.new) - puts DRb.uri - Thread.new do - sleep 10 - DRb.stop_service - end - DRb.thread.join -end - diff --git a/ruby_1_8_5/sample/drb/drbssl_c.rb b/ruby_1_8_5/sample/drb/drbssl_c.rb deleted file mode 100644 index 65112f6e78..0000000000 --- a/ruby_1_8_5/sample/drb/drbssl_c.rb +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env ruby - -require 'drb' -require 'drb/ssl' - -there = ARGV.shift || "drbssl://localhost:3456" - -config = Hash.new -config[:SSLVerifyMode] = OpenSSL::SSL::VERIFY_PEER -config[:SSLVerifyCallback] = lambda{|ok,x509_store| - p [ok, x509_store.error_string] - true -} - -DRb.start_service(nil,nil,config) -h = DRbObject.new(nil, there) -while line = gets - p h.hello(line.chomp) -end diff --git a/ruby_1_8_5/sample/drb/drbssl_s.rb b/ruby_1_8_5/sample/drb/drbssl_s.rb deleted file mode 100644 index 4d96f591d4..0000000000 --- a/ruby_1_8_5/sample/drb/drbssl_s.rb +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env ruby - -require 'drb' -require 'drb/ssl' - -here = ARGV.shift || "drbssl://localhost:3456" - -class HelloWorld - include DRbUndumped - - def hello(name) - "Hello, #{name}." - end -end - -config = Hash.new -config[:verbose] = true -begin - data = open("sample.key"){|io| io.read } - config[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(data) - data = open("sample.crt"){|io| io.read } - config[:SSLCertificate] = OpenSSL::X509::Certificate.new(data) -rescue - $stderr.puts "Switching to use self-signed certificate" - config[:SSLCertName] = - [ ["C","JP"], ["O","Foo.DRuby.Org"], ["CN", "Sample"] ] -end - -DRb.start_service(here, HelloWorld.new, config) -puts DRb.uri -DRb.thread.join diff --git a/ruby_1_8_5/sample/drb/extserv_test.rb b/ruby_1_8_5/sample/drb/extserv_test.rb deleted file mode 100644 index 83d871a6a2..0000000000 --- a/ruby_1_8_5/sample/drb/extserv_test.rb +++ /dev/null @@ -1,80 +0,0 @@ -=begin - dRuby sample - Copyright (c) 2000 Masatoshi SEKI - -= How to play - -* Terminal 1 - - % ruby -I. extserv_test.rb server - druby://yourhost:12345 - -* Terminal 2 - - % ruby -I. extserv_test.rb druby://yourhost:12345 - ... - -=end - -require 'drb/drb' - -def ARGV.shift - it = super() - raise "usage:\nserver: #{$0} server [<uri>]\nclient: #{$0} [quit] <uri>" unless it - it -end - -class Foo - include DRbUndumped - - def initialize(str) - @str = str - end - - def hello(it) - "#{it}: #{self}" - end - - def to_s - @str - end -end - -cmd = ARGV.shift -case cmd -when 'itest1', 'itest2' - require 'drb/extserv' - - front = Foo.new(cmd) - server = DRb::DRbServer.new(nil, front) - es = DRb::ExtServ.new(ARGV.shift, ARGV.shift, server) - server.thread.join - -when 'server' - require 'drb/extservm' - - DRb::ExtServManager.command['itest1'] = "ruby -I. #{$0} itest1" - DRb::ExtServManager.command['itest2'] = "ruby -I. #{$0} itest2" - - s = DRb::ExtServManager.new - DRb.start_service(ARGV.shift, s) - puts DRb.uri - DRb.thread.join - - -else - uri = (cmd == 'quit') ? ARGV.shift : cmd - - DRb.start_service - s = DRbObject.new(nil, uri) - t1 = s.service('itest1').front - puts t1 - t2 = s.service('itest2').front - puts t2 - puts t1.hello(t2) - if (cmd == 'quit') - s.service('itest1').stop_service - s.service('itest2').stop_service - end -end - diff --git a/ruby_1_8_5/sample/drb/gw_ct.rb b/ruby_1_8_5/sample/drb/gw_ct.rb deleted file mode 100644 index 0622784018..0000000000 --- a/ruby_1_8_5/sample/drb/gw_ct.rb +++ /dev/null @@ -1,29 +0,0 @@ -require 'drb/drb' - -class Foo - include DRbUndumped - - def foo(n) - n + n - end - - def bar(n) - yield(n) + yield(n) - end -end - -DRb.start_service(nil) -puts DRb.uri - -ro = DRbObject.new(nil, ARGV.shift) -ro[:tcp] = Foo.new -gets - -it = ro[:unix] -p [it, it.foo(1)] -gets - -p it.bar('2') {|n| n * 3} -gets - - diff --git a/ruby_1_8_5/sample/drb/gw_cu.rb b/ruby_1_8_5/sample/drb/gw_cu.rb deleted file mode 100644 index 0e5ed36b8f..0000000000 --- a/ruby_1_8_5/sample/drb/gw_cu.rb +++ /dev/null @@ -1,28 +0,0 @@ -require 'drb/drb' -require 'drb/unix' - -class Foo - include DRbUndumped - - def foo(n) - n + n - end - - def bar(n) - yield(n) + yield(n) - end -end - -DRb.start_service('drubyunix:', nil) -puts DRb.uri - -ro = DRbObject.new(nil, ARGV.shift) -ro[:unix] = Foo.new -gets - -it = ro[:tcp] -p [it, it.foo(1)] -gets - -p it.bar('2') {|n| n * 3} -gets diff --git a/ruby_1_8_5/sample/drb/gw_s.rb b/ruby_1_8_5/sample/drb/gw_s.rb deleted file mode 100644 index c2bea0baad..0000000000 --- a/ruby_1_8_5/sample/drb/gw_s.rb +++ /dev/null @@ -1,10 +0,0 @@ -require 'drb/drb' -require 'drb/unix' -require 'drb/gw' - -DRb.install_id_conv(DRb::GWIdConv.new) -gw = DRb::GW.new -s1 = DRb::DRbServer.new(ARGV.shift, gw) -s2 = DRb::DRbServer.new(ARGV.shift, gw) -s1.thread.join -s2.thread.join diff --git a/ruby_1_8_5/sample/drb/holderc.rb b/ruby_1_8_5/sample/drb/holderc.rb deleted file mode 100644 index 8dd72ebd11..0000000000 --- a/ruby_1_8_5/sample/drb/holderc.rb +++ /dev/null @@ -1,22 +0,0 @@ -require 'drb/drb' - -begin - there = ARGV.shift || raise -rescue - $stderr.puts("usage: #{$0} <server_uri>") - exit 1 -end - -DRb.start_service() -ro = DRbObject.new(nil, there) - -ary = [] -10.times do - ary.push(ro.gen) -end - -sleep 5 if $DEBUG - -ary.each do |e| - p e.sample([1]) -end diff --git a/ruby_1_8_5/sample/drb/holders.rb b/ruby_1_8_5/sample/drb/holders.rb deleted file mode 100644 index 2d9974f3fc..0000000000 --- a/ruby_1_8_5/sample/drb/holders.rb +++ /dev/null @@ -1,63 +0,0 @@ -=begin -= How to play. - -== with timeridconv: - % ruby -d holders.rb - druby://yourhost:1234 - - % ruby holderc.rb druby://yourhost:1234 - - -== without timeridconv: - % ruby holders.rb - druby://yourhost:1234 - - % ruby holderc.rb druby://yourhost:1234 -=end - - -require 'drb/drb' - -class DRbEx3 - include DRbUndumped - - def initialize(n) - @v = n - end - - def sample(list) - sum = 0 - list.each do |e| - sum += e.to_i - end - @v * sum - end -end - -class DRbEx4 - include DRbUndumped - - def initialize - @curr = 1 - end - - def gen - begin - @curr += 1 - DRbEx3.new(@curr) - ensure - GC.start - end - end -end - -if __FILE__ == $0 - if $DEBUG - require 'drb/timeridconv' - DRb.install_id_conv(DRb::TimerIdConv.new(2)) - end - - DRb.start_service(nil, DRbEx4.new) - puts DRb.uri - DRb.thread.join -end diff --git a/ruby_1_8_5/sample/drb/http0.rb b/ruby_1_8_5/sample/drb/http0.rb deleted file mode 100644 index 7649925282..0000000000 --- a/ruby_1_8_5/sample/drb/http0.rb +++ /dev/null @@ -1,77 +0,0 @@ -require 'drb/drb' -require 'net/http' -require 'uri' - -module DRb - module HTTP0 - class StrStream - def initialize(str='') - @buf = str - end - attr_reader :buf - - def read(n) - begin - return @buf[0,n] - ensure - @buf[0,n] = '' - end - end - - def write(s) - @buf.concat s - end - end - - def self.uri_option(uri, config) - return uri, nil - end - - def self.open(uri, config) - unless /^http:/ =~ uri - raise(DRbBadScheme, uri) unless uri =~ /^http:/ - raise(DRbBadURI, 'can\'t parse uri:' + uri) - end - ClientSide.new(uri, config) - end - - class ClientSide - def initialize(uri, config) - @uri = uri - @res = nil - @config = config - @msg = DRbMessage.new(config) - @proxy = ENV['HTTP_PROXY'] - end - - def close; end - def alive?; false; end - - def send_request(ref, msg_id, *arg, &b) - stream = StrStream.new - @msg.send_request(stream, ref, msg_id, *arg, &b) - @reply_stream = StrStream.new - post(@uri, stream.buf) - end - - def recv_reply - @msg.recv_reply(@reply_stream) - end - - def post(url, data) - it = URI.parse(url) - path = [(it.path=='' ? '/' : it.path), it.query].compact.join('?') - http = Net::HTTP.new(it.host, it.port) - sio = StrStream.new - http.post(path, data, {'Content-Type'=>'application/octetstream;'}) do |str| - sio.write(str) - if @config[:load_limit] < sio.buf.size - raise TypeError, 'too large packet' - end - end - @reply_stream = sio - end - end - end - DRbProtocol.add_protocol(HTTP0) -end diff --git a/ruby_1_8_5/sample/drb/http0serv.rb b/ruby_1_8_5/sample/drb/http0serv.rb deleted file mode 100644 index 100d126b8f..0000000000 --- a/ruby_1_8_5/sample/drb/http0serv.rb +++ /dev/null @@ -1,119 +0,0 @@ -require 'webrick' -require 'drb/drb' -require 'drb/http0' -require 'thread' - -module DRb - module HTTP0 - - def self.open_server(uri, config) - unless /^http:/ =~ uri - raise(DRbBadScheme, uri) unless uri =~ /^http:/ - raise(DRbBadURI, 'can\'t parse uri:' + uri) - end - Server.new(uri, config) - end - - class Callback < WEBrick::HTTPServlet::AbstractServlet - def initialize(config, drb) - @config = config - @drb = drb - @queue = Queue.new - end - - def do_POST(req, res) - @req = req - @res = res - @drb.push(self) - @res.body = @queue.pop - @res['content-type'] = 'application/octet-stream;' - end - - def req_body - @req.body - end - - def reply(body) - @queue.push(body) - end - - def close - @queue.push('') - end - end - - class Server - def initialize(uri, config) - @uri = uri - @config = config - @queue = Queue.new - setup_webrick(uri) - end - attr_reader :uri - - def close - @server.shutdown if @server - @server = nil - end - - def push(callback) - @queue.push(callback) - end - - def accept - client = @queue.pop - ServerSide.new(client, @config) - end - - def setup_webrick(uri) - logger = WEBrick::Log::new($stderr, WEBrick::Log::FATAL) - u = URI.parse(uri) - s = WEBrick::HTTPServer.new(:Port => u.port, - :AddressFamily => Socket::AF_INET, - :BindAddress => u.host, - :Logger => logger, - :ServerType => Thread) - s.mount(u.path, Callback, self) - @server = s - s.start - end - end - - class ServerSide - def initialize(callback, config) - @callback = callback - @config = config - @msg = DRbMessage.new(@config) - @req_stream = StrStream.new(@callback.req_body) - end - - def close - @callback.close if @callback - @callback = nil - end - - def alive?; false; end - - def recv_request - begin - @msg.recv_request(@req_stream) - rescue - close - raise $! - end - end - - def send_reply(succ, result) - begin - return unless @callback - stream = StrStream.new - @msg.send_reply(stream, succ, result) - @callback.reply(stream.buf) - rescue - close - raise $! - end - end - end - end -end diff --git a/ruby_1_8_5/sample/drb/name.rb b/ruby_1_8_5/sample/drb/name.rb deleted file mode 100644 index 86b478fbec..0000000000 --- a/ruby_1_8_5/sample/drb/name.rb +++ /dev/null @@ -1,117 +0,0 @@ -=begin - distributed Ruby --- NamedObject Sample - Copyright (c) 2000-2001 Masatoshi SEKI -=end - -=begin -How to play. - -* start server - Terminal 1 - | % ruby name.rb druby://yourhost:7640 - | druby://yourhost:7640 - | [return] to exit - -* start client - Terminal 2 - | % ruby namec.rb druby://yourhost:7640 - | #<DRb::DRbObject:0x40164174 @uri="druby://yourhost:7640", @ref="seq"> - | #<DRb::DRbObject:0x40163c9c @uri="druby://yourhost:7640", @ref="mutex"> - | 1 - | 2 - | [return] to continue - -* restart server - Terminal 1 - type [return] - | % ruby name.rb druby://yourhost:7640 - | druby://yourhost:7640 - | [return] to exit - -* continue client - Terminal 2 - type [return] - | 1 - | 2 -=end - -require 'thread.rb' -require 'drb/drb' - -module DRbNamedObject - DRbNAMEDICT = {} - attr_reader(:drb_name) - - def drb_name=(name) - @drb_name = name - Thread.exclusive do - raise(IndexError, name) if DRbNAMEDICT[name] - DRbNAMEDICT[name] = self - end - end -end - -class DRbNamedIdConv < DRb::DRbIdConv - def initialize - @dict = DRbNamedObject::DRbNAMEDICT - end - - def to_obj(ref) - @dict.fetch(ref) do super end - end - - def to_id(obj) - if obj.kind_of? DRbNamedObject - return obj.drb_name - else - return super - end - end -end - -class Seq - include DRbUndumped - include DRbNamedObject - - def initialize(v, name) - @counter = v - @mutex = Mutex.new - self.drb_name = name - end - - def next_value - @mutex.synchronize do - @counter += 1 - return @counter - end - end -end - -class Front - def initialize - seq = Seq.new(0, 'seq') - mutex = Mutex.new - mutex.extend(DRbUndumped) - mutex.extend(DRbNamedObject) - mutex.drb_name = 'mutex' - @name = {} - @name['seq'] = seq - @name['mutex'] = mutex - end - - def [](k) - @name[k] - end -end - -if __FILE__ == $0 - uri = ARGV.shift - - name_conv = DRbNamedIdConv.new - - DRb.install_id_conv(name_conv) - DRb.start_service(uri, Front.new) - puts DRb.uri - DRb.thread.join -end - diff --git a/ruby_1_8_5/sample/drb/namec.rb b/ruby_1_8_5/sample/drb/namec.rb deleted file mode 100644 index f6db6f3022..0000000000 --- a/ruby_1_8_5/sample/drb/namec.rb +++ /dev/null @@ -1,36 +0,0 @@ -=begin - distributed Ruby --- NamedObject Sample Client - Copyright (c) 2000-2001 Masatoshi SEKI -=end - -require 'drb/drb' - -begin - there = ARGV.shift || raise -rescue - puts "usage: #{$0} <server_uri>" - exit 1 -end - -DRb.start_service() -ro = DRbObject.new(nil, there) - -seq = ro["seq"] -mutex = ro["mutex"] - -p seq -p mutex - -mutex.synchronize do - p seq.next_value - p seq.next_value -end - -puts '[return] to continue' -gets - -mutex.synchronize do - p seq.next_value - p seq.next_value -end - diff --git a/ruby_1_8_5/sample/drb/old_tuplespace.rb b/ruby_1_8_5/sample/drb/old_tuplespace.rb deleted file mode 100644 index 3e13b92ee1..0000000000 --- a/ruby_1_8_5/sample/drb/old_tuplespace.rb +++ /dev/null @@ -1,214 +0,0 @@ -#!/usr/local/bin/ruby -# TupleSpace -# Copyright (c) 1999-2000 Masatoshi SEKI -# You can redistribute it and/or modify it under the same terms as Ruby. - -require 'thread' - -class TupleSpace - class Template - def initialize(list) - @list = list - @check_idx = [] - @list.each_with_index do |x, i| - @check_idx.push i if x - end - @size = @list.size - end - - attr :size - alias length size - - def match(tuple) - return nil if tuple.size != self.size - @check_idx.each do |i| - unless @list[i] === tuple[i] - return false - end - end - return true - end - end - - def initialize - @que = {} - @waiting = {} - @que.taint # enable tainted comunication - @waiting.taint - self.taint - end - - def wakeup_waiting(tuple) - sz = tuple.length - return nil unless @waiting[sz] - - x = nil - i = -1 - found = false - @waiting[sz] = @waiting[sz].find_all { |x| - if x[0].match(tuple) - begin - x[1].wakeup - rescue ThreadError - end - false - else - true - end - } - end - - def put_waiting(template, thread) - sz = template.length - @waiting[sz] = [] unless @waiting[sz] - @waiting[sz].push([Template.new(template), thread]) - end - private :wakeup_waiting - private :put_waiting - - def get_que(template) - sz = template.length - return nil unless @que[sz] - - template = Template.new(template) - - x = nil - i = -1 - found = false - @que[sz].each_with_index do |x, i| - if template.match(x) - found = true - break - end - end - return nil unless found - - @que[sz].delete_at(i) - - return x - end - - def put_que(tuple) - sz = tuple.length - @que[sz] = [] unless @que[sz] - @que[sz].push tuple - end - private :get_que - private :put_que - - def out(*tuples) - tuples.each do |tuple| - Thread.critical = true - put_que(tuple) - wakeup_waiting(tuple) - Thread.critical = false - end - end - alias put out - alias write out - - def in(template, non_block=false) - begin - loop do - Thread.critical = true - tuple = get_que(template) - unless tuple - if non_block - raise ThreadError, "queue empty" - end - put_waiting(template, Thread.current) - Thread.stop - else - return tuple - end - end - ensure - Thread.critical = false - end - end - alias get in - alias take in - - def rd(template, non_block=false) - tuple = self.in(template, non_block) - out(tuple) - tuple - end - alias read rd - - def mv(dest, template, non_block=false) - tuple = self.in(template, non_block) - begin - dest.out(tuple) - rescue - self.out(tuple) - end - end - alias move mv -end - -if __FILE__ == $0 - ts = TupleSpace.new - clients = [] - servers = [] - - def server(ts, id) - Thread.start { - loop do - req = ts.in(['req', nil, nil]) - ac = req[1] - num = req[2] - sleep id - ts.out([ac, id, num, num * num]) - end - } - end - - def client(ts, n) - Thread.start { - ac = Object.new - tuples = (1..10).collect { |i| - ['req', ac, i * 10 + n] - } - ts.out(*tuples) - ts.out(tuples[0]) - puts "out: #{n}" - 11.times do |i| - ans = ts.in([ac, nil, nil, nil]) - puts "client(#{n}) server(#{ans[1]}) #{ans[2]} #{ans[3]}" - end - } - end - - def watcher(ts) - Thread.start { - loop do - begin - sleep 1 - p ts.rd(['req', nil, nil], true) - rescue ThreadError - puts "'req' not found." - end - end - } - end - - (0..3).each do |n| - servers.push(server(ts, n)) - end - - (1..6).each do |n| - clients.push(client(ts, n)) - end - - (1..3).each do - watcher(ts) - end - - clients.each do |t| - t.join - end -end - - - diff --git a/ruby_1_8_5/sample/drb/rinda_ts.rb b/ruby_1_8_5/sample/drb/rinda_ts.rb deleted file mode 100644 index 6f2fae5c0f..0000000000 --- a/ruby_1_8_5/sample/drb/rinda_ts.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'drb/drb' -require 'rinda/tuplespace' - -uri = ARGV.shift -DRb.start_service(uri, Rinda::TupleSpace.new) -puts DRb.uri -DRb.thread.join diff --git a/ruby_1_8_5/sample/drb/rindac.rb b/ruby_1_8_5/sample/drb/rindac.rb deleted file mode 100644 index 72be09deaf..0000000000 --- a/ruby_1_8_5/sample/drb/rindac.rb +++ /dev/null @@ -1,17 +0,0 @@ -require 'drb/drb' -require 'rinda/rinda' - -uri = ARGV.shift || raise("usage: #{$0} <server_uri>") - -DRb.start_service -ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, uri)) - -(1..10).each do |n| - ts.write(['sum', DRb.uri, n]) -end - -(1..10).each do |n| - ans = ts.take(['ans', DRb.uri, n, nil]) - p [ans[2], ans[3]] -end - diff --git a/ruby_1_8_5/sample/drb/rindas.rb b/ruby_1_8_5/sample/drb/rindas.rb deleted file mode 100644 index 9fd9ada2d1..0000000000 --- a/ruby_1_8_5/sample/drb/rindas.rb +++ /dev/null @@ -1,18 +0,0 @@ -require 'drb/drb' -require 'rinda/rinda' - -def do_it(v) - puts "do_it(#{v})" - v + v -end - -uri = ARGV.shift || raise("usage: #{$0} <server_uri>") - -DRb.start_service -ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, uri)) - -while true - r = ts.take(['sum', nil, nil]) - v = do_it(r[2]) - ts.write(['ans', r[1], r[2], v]) -end diff --git a/ruby_1_8_5/sample/drb/ring_echo.rb b/ruby_1_8_5/sample/drb/ring_echo.rb deleted file mode 100644 index 0633aa839a..0000000000 --- a/ruby_1_8_5/sample/drb/ring_echo.rb +++ /dev/null @@ -1,30 +0,0 @@ -require 'drb/drb' -require 'drb/eq' -require 'rinda/ring' -require 'thread' - -class RingEcho - include DRbUndumped - def initialize(name) - @name = name - end - - def echo(str) - "#{@name}: #{str}" - end -end - -DRb.start_service - -renewer = Rinda::SimpleRenewer.new - -finder = Rinda::RingFinger.new -ts = finder.lookup_ring_any -ts.read_all([:name, :RingEcho, nil, nil]).each do |tuple| - p tuple[2] - puts tuple[2].echo('Hello, World') rescue nil -end -ts.write([:name, :RingEcho, RingEcho.new(DRb.uri), ''], renewer) - -DRb.thread.join - diff --git a/ruby_1_8_5/sample/drb/ring_inspect.rb b/ruby_1_8_5/sample/drb/ring_inspect.rb deleted file mode 100644 index c096cd7034..0000000000 --- a/ruby_1_8_5/sample/drb/ring_inspect.rb +++ /dev/null @@ -1,30 +0,0 @@ -require 'rinda/ring' -require 'drb/drb' - -class Inspector - def initialize - end - - def primary - Rinda::RingFinger.primary - end - - def list_place - Rinda::RingFinger.to_a - end - - def list(idx = -1) - if idx < 0 - ts = primary - else - ts = list_place[idx] - raise "RingNotFound" unless ts - end - ts.read_all([:name, nil, nil, nil]) - end -end - -def main - DRb.start_service - r = Inspector.new -end diff --git a/ruby_1_8_5/sample/drb/ring_place.rb b/ruby_1_8_5/sample/drb/ring_place.rb deleted file mode 100644 index 0ceef7c65a..0000000000 --- a/ruby_1_8_5/sample/drb/ring_place.rb +++ /dev/null @@ -1,25 +0,0 @@ -require 'drb/drb' -require 'rinda/ring' -require 'rinda/tuplespace' - -unless $DEBUG - # Run as a daemon... - exit!( 0 ) if fork - Process.setsid - exit!( 0 ) if fork -end - -DRb.start_service(ARGV.shift) - -ts = Rinda::TupleSpace.new -place = Rinda::RingServer.new(ts) - -if $DEBUG - puts DRb.uri - DRb.thread.join -else - STDIN.reopen('/dev/null') - STDOUT.reopen('/dev/null', 'w') - STDERR.reopen('/dev/null', 'w') - DRb.thread.join -end diff --git a/ruby_1_8_5/sample/drb/simpletuple.rb b/ruby_1_8_5/sample/drb/simpletuple.rb deleted file mode 100644 index 3ae9208c79..0000000000 --- a/ruby_1_8_5/sample/drb/simpletuple.rb +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/local/bin/ruby -# SimpleTupleSpace -# Copyright (c) 1999-2000 Masatoshi SEKI -# You can redistribute it and/or modify it under the same terms as Ruby. - -require 'thread' - -class SimpleTupleSpace - def initialize - @hash = {} - @waiting = {} - @hash.taint - @waiting.taint - self.taint - end - - def out(key, obj) - Thread.critical = true - @hash[key] ||= [] - @waiting[key] ||= [] - @hash[key].push obj - begin - t = @waiting[key].shift - @waiting.delete(key) if @waiting[key].length == 0 - t.wakeup if t - rescue ThreadError - retry - ensure - Thread.critical = false - end - end - - def in(key) - Thread.critical = true - @hash[key] ||= [] - @waiting[key] ||= [] - begin - loop do - if @hash[key].length == 0 - @waiting[key].push Thread.current - Thread.stop - else - return @hash[key].shift - end - end - ensure - @hash.delete(key) if @hash[key].length == 0 - Thread.critical = false - end - end -end - -if __FILE__ == $0 - ts = SimpleTupleSpace.new - clients = [] - servers = [] - - def server(ts) - Thread.start { - loop do - req = ts.in('req') - ac = req[0] - num = req[1] - ts.out(ac, num * num) - end - } - end - - def client(ts, n) - Thread.start { - ac = Object.new - ts.out('req', [ac, n]) - ans = ts.in(ac) - puts "#{n}: #{ans}" - } - end - - 3.times do - servers.push(server(ts)) - end - - (1..6).each do |n| - clients.push(client(ts, n)) - end - - clients.each do |t| - t.join - end -end - - diff --git a/ruby_1_8_5/sample/drb/speedc.rb b/ruby_1_8_5/sample/drb/speedc.rb deleted file mode 100644 index 14d526d48d..0000000000 --- a/ruby_1_8_5/sample/drb/speedc.rb +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/local/bin/ruby - -uri = ARGV.shift || raise("usage: #{$0} URI") -N = (ARGV.shift || 100).to_i - -case uri -when /^tcpromp:/, /^unixromp:/ - require 'romp' - - client = ROMP::Client.new(uri, false) - foo = client.resolve("foo") -when /^druby:/ - require 'drb/drb' - - DRb.start_service - foo = DRbObject.new(nil, uri) -end - -N.times do |n| - foo.foo(n) -end diff --git a/ruby_1_8_5/sample/drb/speeds.rb b/ruby_1_8_5/sample/drb/speeds.rb deleted file mode 100644 index 76b4b29dba..0000000000 --- a/ruby_1_8_5/sample/drb/speeds.rb +++ /dev/null @@ -1,31 +0,0 @@ -class Foo - attr_reader :i - def initialize - @i = 0 - end - - def foo(i) - @i = i - i + i - end -end - -# server = ROMP::Server.new('tcpromp://localhost:4242', nil, true) - -uri = ARGV.shift || raise("usage: #{$0} URI") -foo = Foo.new - -case uri -when /^tcpromp:/, /^unixromp:/ - require 'romp' - - server = ROMP::Server.new(uri, nil, true) - server.bind(foo, "foo") - -when /^druby:/ - require 'drb/drb' - - DRb.start_service(uri, Foo.new) -end - -DRb.thread.join diff --git a/ruby_1_8_5/sample/dualstack-fetch.rb b/ruby_1_8_5/sample/dualstack-fetch.rb deleted file mode 100644 index 1897a3d8e9..0000000000 --- a/ruby_1_8_5/sample/dualstack-fetch.rb +++ /dev/null @@ -1,48 +0,0 @@ -# simple webpage fetcher - -# The code demonstrates how a multi-protocol client should be written. -# TCPSocket is using getaddrinfo() internally, so there should be no problem. - -require "socket" - -if ARGV.size != 1 - STDERR.print "requires URL\n" - exit -end - -url = ARGV[0] -if url !~ /^http:\/\/([^\/]+)(\/.*)$/ - STDERR.print "only http with full hostname is supported\n" - exit -end - -# split URL into host, port and path -hostport = $1 -path = $2 -if (hostport =~ /^(.*):([0-9]+)$/) - host = $1 - port = $2 -else - host = hostport - port = 80 -end -if host =~ /^\[(.*)\]$/ - host = $1 -end - -#STDERR.print "url=<#{ARGV[0]}>\n" -#STDERR.print "host=<#{host}>\n" -#STDERR.print "port=<#{port}>\n" -#STDERR.print "path=<#{path}>\n" - -STDERR.print "conntecting to #{host} port #{port}\n" -c = TCPSocket.new(host, port) -dest = Socket.getnameinfo(c.getpeername, - Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV) -STDERR.print "conntected to #{dest[0]} port #{dest[1]}\n" -c.print "GET #{path} HTTP/1.0\n" -c.print "Host: #{host}\n" -c.print "\n" -while c.gets - print -end diff --git a/ruby_1_8_5/sample/dualstack-httpd.rb b/ruby_1_8_5/sample/dualstack-httpd.rb deleted file mode 100644 index 893b29feba..0000000000 --- a/ruby_1_8_5/sample/dualstack-httpd.rb +++ /dev/null @@ -1,55 +0,0 @@ -# simple httpd - -# The code demonstrates how a multi-protocol daemon should be written. - -require "socket" -require "thread" - -port = 8888 -res = Socket.getaddrinfo(nil, port, nil, Socket::SOCK_STREAM, nil, Socket::AI_PASSIVE) -sockpool = [] -names = [] -threads = [] - -res.each do |i| - s = TCPserver.new(i[3], i[1]) - n = Socket.getnameinfo(s.getsockname, Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV).join(" port ") - sockpool.push s - names.push n -end - -(0 .. sockpool.size - 1).each do |i| - mysock = sockpool[i] - myname = names[i] - STDERR.print "socket #{mysock} started, address #{myname}\n" - threads[i] = Thread.start do # Thread.start cannot be used here! - ls = mysock # copy to dynamic variable - t = Thread.current - STDERR.print "socket #{myname} listener started, pid #{$$} thread #{t}\n" - while TRUE - as = ls.accept - Thread.start do - STDERR.print "socket #{myname} accepted, thread ", Thread.current, "\n" - s = as # copy to dynamic variable - str = '' - while line = s.gets - break if line == "\r\n" or line == "\n" - str << line - end - STDERR.print "socket #{myname} got string\n" - s.write("HTTP/1.0 200 OK\n") - s.write("Content-type: text/plain\n\n") - s.write("this is test: my name is #{myname}, you sent:\n") - s.write("---start\n") - s.write(str) - s.write("---end\n") - s.close - STDERR.print "socket #{myname} processed, thread ", Thread.current, " terminating\n" - end - end - end -end - -for t in threads - t.join -end diff --git a/ruby_1_8_5/sample/eval.rb b/ruby_1_8_5/sample/eval.rb deleted file mode 100644 index 90b839e873..0000000000 --- a/ruby_1_8_5/sample/eval.rb +++ /dev/null @@ -1,41 +0,0 @@ -line = '' -indent = 0 -$stdout.sync = TRUE -print "ruby> " -loop do - l = gets - if l.nil? - break if line.empty? - else - line += l - if l =~ /,\s*$/ - print "ruby| " - next - end - if l =~ /^\s*(class|module|def|if|unless|case|while|until|for|begin)\b[^_]/ - indent += 1 - end - if l =~ /^\s*end\b[^_]/ - indent -= 1 - end - if l =~ /\{\s*(\|.*\|)?\s*$/ - indent += 1 - end - if l =~ /^\s*\}/ - indent -= 1 - end - if indent > 0 - print "ruby| " - next - end - end - begin - print eval(line).inspect, "\n" - rescue ScriptError, StandardError - printf "ERR: %s\n", $! || 'exception raised' - end - break if l.nil? - line = '' - print "ruby> " -end -print "\n" diff --git a/ruby_1_8_5/sample/export.rb b/ruby_1_8_5/sample/export.rb deleted file mode 100644 index 949e5b10bf..0000000000 --- a/ruby_1_8_5/sample/export.rb +++ /dev/null @@ -1,40 +0,0 @@ -# method access permission -# output: -# foobar -# Foo - -class Foo - public :printf - def baz - print "baz\n" - end - private :baz - - def quux - print "in QUUX " - baz() - end -end - -def foobar - print "foobar\n" -end - -f = Foo.new -#Foo.private :printf -class Foo # redefines foobar's scope - public :foobar -end -f.foobar -f.printf "%s\n", Foo - -f.quux - -class Bar<Foo - def quux - super - baz() - end -end - -Bar.new.quux diff --git a/ruby_1_8_5/sample/exyacc.rb b/ruby_1_8_5/sample/exyacc.rb deleted file mode 100644 index 5818825e25..0000000000 --- a/ruby_1_8_5/sample/exyacc.rb +++ /dev/null @@ -1,22 +0,0 @@ -#! /usr/local/bin/ruby -Kn -# usage: exyacc.rb [yaccfiles] -# this is coverted from exyacc.pl in the camel book - -$/ = nil - -while gets() - sbeg = $_.index("\n%%") + 1 - send = $_.rindex("\n%%") + 1 - $_ = $_[sbeg, send-sbeg] - sub!(/.*\n/, "") - gsub!(/'\{'/, "'\001'") - gsub!(/'\}'/, "'\002'") - gsub!(%r{\*/}, "\003\003") - gsub!(%r{/\*[^\003]*\003\003}, '') - while gsub!(/\{[^{}]*\}/, ''); end - gsub!(/'\001'/, "'{'") - gsub!(/'\002'/, "'}'") - while gsub!(/^[ \t]*\n(\s)/, '\1'); end - gsub!(/([:|])[ \t\n]+(\w)/, '\1 \2') - print $_ -end diff --git a/ruby_1_8_5/sample/fact.rb b/ruby_1_8_5/sample/fact.rb deleted file mode 100644 index d8147a40f1..0000000000 --- a/ruby_1_8_5/sample/fact.rb +++ /dev/null @@ -1,9 +0,0 @@ -def fact(n) - return 1 if n == 0 - f = 1 - n.downto(1) do |i| - f *= i - end - return f -end -print fact(ARGV[0].to_i), "\n" diff --git a/ruby_1_8_5/sample/fib.awk b/ruby_1_8_5/sample/fib.awk deleted file mode 100644 index 7ebe8930f5..0000000000 --- a/ruby_1_8_5/sample/fib.awk +++ /dev/null @@ -1,5 +0,0 @@ - function fib(n) { - if ( n<2 ) return n; else return fib(n-2) + fib(n-1) - } - - BEGIN { print fib(20); } diff --git a/ruby_1_8_5/sample/fib.pl b/ruby_1_8_5/sample/fib.pl deleted file mode 100644 index 945a4929a7..0000000000 --- a/ruby_1_8_5/sample/fib.pl +++ /dev/null @@ -1,11 +0,0 @@ -sub fib { - my($n)=@_; - if ($n<2) { - return $n; - } - else { - return fib($n-2)+fib($n-1); - } -} - -print fib(20), "\n"; diff --git a/ruby_1_8_5/sample/fib.py b/ruby_1_8_5/sample/fib.py deleted file mode 100644 index 8318021d24..0000000000 --- a/ruby_1_8_5/sample/fib.py +++ /dev/null @@ -1,10 +0,0 @@ -# calculate Fibonacci(20) -# for benchmark -def fib(n): - if n<2: - return n - else: - return fib(n-2)+fib(n-1) - -print fib(20) - diff --git a/ruby_1_8_5/sample/fib.rb b/ruby_1_8_5/sample/fib.rb deleted file mode 100644 index cde4fba082..0000000000 --- a/ruby_1_8_5/sample/fib.rb +++ /dev/null @@ -1,10 +0,0 @@ -# calculate Fibonacci(20) -# for benchmark -def fib(n) - if n<2 - n - else - fib(n-2)+fib(n-1) - end -end -print(fib(20), "\n"); diff --git a/ruby_1_8_5/sample/fib.scm b/ruby_1_8_5/sample/fib.scm deleted file mode 100644 index b246ca50ac..0000000000 --- a/ruby_1_8_5/sample/fib.scm +++ /dev/null @@ -1,8 +0,0 @@ -(define (fib n) - (if (< n 2) - n - (+ (fib (- n 2)) (fib (- n 1))))) - -(display (fib 20)) -(newline) -(quit) diff --git a/ruby_1_8_5/sample/freq.rb b/ruby_1_8_5/sample/freq.rb deleted file mode 100644 index 362753f71f..0000000000 --- a/ruby_1_8_5/sample/freq.rb +++ /dev/null @@ -1,12 +0,0 @@ -# word occurrence listing -# usege: ruby freq.rb file.. -freq = Hash.new(0) -while line = gets() - line.scan(/\w+/) do |word| - freq[word] += 1 - end -end - -for word in freq.keys.sort! - print word, " -- ", freq[word], "\n" -end diff --git a/ruby_1_8_5/sample/from.rb b/ruby_1_8_5/sample/from.rb deleted file mode 100644 index 59cc387792..0000000000 --- a/ruby_1_8_5/sample/from.rb +++ /dev/null @@ -1,98 +0,0 @@ -#! /usr/local/bin/ruby - -require "parsedate" -require "kconv" -require "mailread" - -include ParseDate -include Kconv - -class String - - def kconv(code = Kconv::EUC) - Kconv.kconv(self, code, Kconv::AUTO) - end - - def kjust(len) - len += 1 - me = self[0, len].ljust(len) - if me =~ /.$/ and $&.size == 2 - me[-2..-1] = ' ' - me[-2, 2] = ' ' - end - me.chop! - end - -end - -if ARGV[0] == '-w' - wait = TRUE - ARGV.shift -end - -if ARGV.length == 0 - file = ENV['MAIL'] - user = ENV['USER'] || ENV['USERNAME'] || ENV['LOGNAME'] -else - file = user = ARGV[0] - ARGV.clear -end - -if file == nil or !File.exist? file - [ENV['SPOOLDIR'], '/usr/spool', '/var/spool', '/usr', '/var'].each do |m| - if File.exist? f = "#{m}/mail/#{user}" - file = f - break - end - end -end - -$outcount = 0; -def fromout(date, from, subj) - return if !date - y, m, d = parsedate(date) if date - y ||= 0; m ||= 0; d ||= 0 - if from - from.gsub! /\n/, "" - else - from = "sombody@somewhere" - end - if subj - subj.gsub! /\n/, "" - else - subj = "(nil)" - end - if ENV['LANG'] =~ /sjis/i - lang = Kconv::SJIS - else - lang = Kconv::EUC - end - from = from.kconv(lang).kjust(28) - subj = subj.kconv(lang).kjust(40) - printf "%02d/%02d/%02d [%s] %s\n",y%100,m,d,from,subj - $outcount += 1 -end - -if File.exist?(file) - atime = File.atime(file) - mtime = File.mtime(file) - f = open(file, "r") - begin - until f.eof? - mail = Mail.new(f) - fromout mail.header['Date'],mail.header['From'],mail.header['Subject'] - end - ensure - f.close - File.utime(atime, mtime, file) - end -end - -if $outcount == 0 - print "You have no mail.\n" - sleep 2 if wait -elsif wait - system "stty cbreak -echo" - getc() - system "stty cooked echo" -end diff --git a/ruby_1_8_5/sample/fullpath.rb b/ruby_1_8_5/sample/fullpath.rb deleted file mode 100644 index 8472e5d8f4..0000000000 --- a/ruby_1_8_5/sample/fullpath.rb +++ /dev/null @@ -1,23 +0,0 @@ -#! /usr/local/bin/ruby -# convert ls-lR filename into fullpath. - -if ARGV[0] =~ /-p/ - ARGV.shift - path = ARGV.shift -end - -if path == nil - path = "" -elsif path !~ %r|/$| - path += "/" -end - -while line = gets() - case line - when /:$/ - path = line.chop.chop + "/" - when /^total/, /^d/ - when /^(.*\d )(.+)$/ - print($1, path, $2, "\n") - end -end diff --git a/ruby_1_8_5/sample/getopts.test b/ruby_1_8_5/sample/getopts.test deleted file mode 100644 index 2866bccea8..0000000000 --- a/ruby_1_8_5/sample/getopts.test +++ /dev/null @@ -1,36 +0,0 @@ -#! /usr/local/bin/ruby - -load("parsearg.rb") - -def usage() - printf "Usage:\n" - printf "%s -d [-x x] [-y y] [--geometry geom] [--version] [string ...]\n", $0 -end - -$USAGE = 'usage' -parseArgs(0, "d&(x|y)", "dfg", "x:", "y:", "geometry:800x600", "version") -if ($OPT_d) - if $OPT_version - printf "version 1.0\n" - end - if ($OPT_x) - printf("x = %d\n", $OPT_x.to_i) - end - if ($OPT_y) - printf("y = %d\n", $OPT_y.to_i) - end - if ($OPT_geometry) - printf("geometry = %s\n", $OPT_geometry) - end - if $OPT_f - printf "f = TRUE\n" - end - if $OPT_g - printf "g = TRUE\n" - end -end - -while (ARGV.length != 0) - print "other = ", ARGV[0], "\n" - ARGV.shift -end diff --git a/ruby_1_8_5/sample/goodfriday.rb b/ruby_1_8_5/sample/goodfriday.rb deleted file mode 100644 index a95cfe819f..0000000000 --- a/ruby_1_8_5/sample/goodfriday.rb +++ /dev/null @@ -1,48 +0,0 @@ -#! /usr/bin/env ruby - -# goodfriday.rb: Written by Tadayoshi Funaba 1998, 2000, 2002 -# $Id: goodfriday.rb,v 1.1 1998-03-08 18:44:44+09 tadf Exp $ - -require 'date' - -def easter(y) - g = (y % 19) + 1 - c = (y / 100) + 1 - x = (3 * c / 4) - 12 - z = ((8 * c + 5) / 25) - 5 - d = (5 * y / 4) - x - 10 - e = (11 * g + 20 + z - x) % 30 - e += 1 if e == 25 and g > 11 or e == 24 - n = 44 - e - n += 30 if n < 21 - n = n + 7 - ((d + n) % 7) - if n <= 31 then [y, 3, n] else [y, 4, n - 31] end -end - -es = Date.new(*easter(Time.now.year)) -[[-9*7, 'Septuagesima Sunday'], - [-8*7, 'Sexagesima Sunday'], - [-7*7, 'Quinquagesima Sunday (Shrove Sunday)'], - [-48, 'Shrove Monday'], - [-47, 'Shrove Tuesday'], - [-46, 'Ash Wednesday'], - [-6*7, 'Quadragesima Sunday'], - [-3*7, 'Mothering Sunday'], - [-2*7, 'Passion Sunday'], - [-7, 'Palm Sunday'], - [-3, 'Maunday Thursday'], - [-2, 'Good Friday'], - [-1, 'Easter Eve'], - [0, 'Easter Day'], - [1, 'Easter Monday'], - [7, 'Low Sunday'], - [5*7, 'Rogation Sunday'], - [39, 'Ascension Day (Holy Thursday)'], - [42, 'Sunday after Ascension Day'], - [7*7, 'Pentecost (Whitsunday)'], - [50, 'Whitmonday'], - [8*7, 'Trinity Sunday'], - [60, 'Corpus Christi (Thursday after Trinity)']]. -each do |xs| - puts((es + xs.shift).to_s + ' ' + xs.shift) -end diff --git a/ruby_1_8_5/sample/less.rb b/ruby_1_8_5/sample/less.rb deleted file mode 100644 index 8be359108f..0000000000 --- a/ruby_1_8_5/sample/less.rb +++ /dev/null @@ -1,17 +0,0 @@ -#! /usr/local/bin/ruby - -ZCAT = "/usr/local/bin/zcat" -LESS = "/usr/local/bin/less" - -FILE = ARGV.pop -OPTION = (if ARGV.length == 0; "" else ARGV.join(" "); end) - -if FILE =~ /\.(Z|gz)$/ - exec(format("%s %s | %s %s", ZCAT, FILE, LESS, OPTION)) -elsif FILE == nil - exec(format("%s %s", LESS, OPTION)) -else - print(format("%s %s %s", LESS, OPTION, FILE), "\n") - exec(format("%s %s %s", LESS, OPTION, FILE)) -end -exit() diff --git a/ruby_1_8_5/sample/list.rb b/ruby_1_8_5/sample/list.rb deleted file mode 100644 index 221f7edb16..0000000000 --- a/ruby_1_8_5/sample/list.rb +++ /dev/null @@ -1,80 +0,0 @@ -# Linked list example -class MyElem - # object initializer called from Class#new - def initialize(item) - # @variables are instance variable, no declaration needed - @data = item - @succ = nil - end - - def data - @data - end - - def succ - @succ - end - - # the method invoked by ``obj.data = val'' - def succ=(new) - @succ = new - end -end - -class MyList - def add_to_list(obj) - elt = MyElem.new(obj) - if @head - @tail.succ = elt - else - @head = elt - end - @tail = elt - end - - def each - elt = @head - while elt - yield elt - elt = elt.succ - end - end - - # the method to convert object into string. - # redefining this will affect print. - def to_s - str = "<MyList:\n"; - for elt in self - # short form of ``str = str + elt.data.to_s + "\n"'' - str += elt.data.to_s + "\n" - end - str += ">" - str - end -end - -class Point - def initialize(x, y) - @x = x; @y = y - self - end - - def to_s - sprintf("%d@%d", @x, @y) - end -end - -# global variable name starts with `$'. -$list1 = MyList.new -$list1.add_to_list(10) -$list1.add_to_list(20) -$list1.add_to_list(Point.new(2, 3)) -$list1.add_to_list(Point.new(4, 5)) -$list2 = MyList.new -$list2.add_to_list(20) -$list2.add_to_list(Point.new(4, 5)) -$list2.add_to_list($list1) - -# parenthesises around method arguments can be ommitted unless ambiguous. -print "list1:\n", $list1, "\n" -print "list2:\n", $list2, "\n" diff --git a/ruby_1_8_5/sample/list2.rb b/ruby_1_8_5/sample/list2.rb deleted file mode 100644 index 914cb8996e..0000000000 --- a/ruby_1_8_5/sample/list2.rb +++ /dev/null @@ -1,16 +0,0 @@ -# Linked list example -- short version -class Point - def initialize(x, y) - @x = x; @y = y - self - end - - def to_s - sprintf("%d@%d", @x, @y) - end -end - -list1 = [10, 20, Point.new(2, 3), Point.new(4, 5)] -list2 = [20, Point.new(4, 5), list1] -print("list1:\n", list1.join("\n"), "\n") -print("list2:\n", list2.join("\n"), "\n") diff --git a/ruby_1_8_5/sample/list3.rb b/ruby_1_8_5/sample/list3.rb deleted file mode 100644 index 1d756fdff0..0000000000 --- a/ruby_1_8_5/sample/list3.rb +++ /dev/null @@ -1,18 +0,0 @@ -# Linked list example -- short version -# using inspect - -class Point - def initialize(x, y) - @x = x; @y = y - self - end - - def to_s - sprintf("%d@%d", @x, @y) - end -end - -list1 = [10, 20, Point.new(2, 3), Point.new(4, 5)] -list2 = [20, Point.new(4, 5), list1] -print("list1: ", list1.inspect, "\n") -print("list2: ", list2.inspect, "\n") diff --git a/ruby_1_8_5/sample/logger/app.rb b/ruby_1_8_5/sample/logger/app.rb deleted file mode 100644 index 924bcba4b0..0000000000 --- a/ruby_1_8_5/sample/logger/app.rb +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env ruby - -require 'logger' - -class MyApp < Logger::Application - def initialize(a, b, c) - super('MyApp') - - # Set logDevice here. - logfile = 'app.log' - self.log = logfile - self.level = INFO - - # Initialize your application... - @a = a - @b = b - @c = c - end - - def run - @log.info { 'Started.' } - - @log.info { "This block isn't evaled because 'debug' is not severe here." } - @log.debug { "Result = " << foo(0) } - @log.info { "So nothing is dumped." } - - @log.info { "This block is evaled because 'info' is enough severe here." } - @log.info { "Result = " << foo(0) } - @log.info { "Above causes exception, so not reached here." } - - @log.info { 'Finished.' } - end - -private - - def foo(var) - 1 / var - end -end - -status = MyApp.new(1, 2, 3).start - -if status != 0 - puts 'Some error(s) occured.' - puts 'See "app.log".' -end diff --git a/ruby_1_8_5/sample/logger/log.rb b/ruby_1_8_5/sample/logger/log.rb deleted file mode 100644 index aab80e462e..0000000000 --- a/ruby_1_8_5/sample/logger/log.rb +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env ruby - -require 'logger' - -log = Logger.new(STDERR) - -def do_log(log) - log.debug('do_log1') { "debug" } - log.info('do_log2') { "info" } - log.warn('do_log3') { "warn" } - log.error('do_log4') { "error" } - log.fatal('do_log6') { "fatal" } - log.unknown('do_log7') { "unknown" } -end - -log.level = Logger::DEBUG # Default. -do_log(log) - -puts "Set severity threshold 'WARN'." - -log.level = Logger::WARN -do_log(log) - -puts "Change datetime format. Thanks to Daniel Berger." - -log.datetime_format = "%d-%b-%Y@%H:%M:%S" -do_log(log) diff --git a/ruby_1_8_5/sample/logger/shifting.rb b/ruby_1_8_5/sample/logger/shifting.rb deleted file mode 100644 index bd8852a4ae..0000000000 --- a/ruby_1_8_5/sample/logger/shifting.rb +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env ruby - -require 'logger' - -logfile = 'shifting.log' -# Max 3 age ... logShifting.log, logShifting.log.0, and logShifting.log.1 -shift_age = 3 -# Shift log file about for each 1024 bytes. -shift_size = 1024 - -log = Logger.new(logfile, shift_age, shift_size) - -def do_log(log) - log.debug('do_log1') { 'd' * rand(100) } - log.info('do_log2') { 'i' * rand(100) } - log.warn('do_log3') { 'w' * rand(100) } - log.error('do_log4') { 'e' * rand(100) } - log.fatal('do_log5') { 'f' * rand(100) } - log.unknown('do_log6') { 'u' * rand(100) } -end - -(1..10).each do - do_log(log) -end - -puts 'See shifting.log and shifting.log.[01].' diff --git a/ruby_1_8_5/sample/mine.rb b/ruby_1_8_5/sample/mine.rb deleted file mode 100644 index 8fc27e0c6d..0000000000 --- a/ruby_1_8_5/sample/mine.rb +++ /dev/null @@ -1,175 +0,0 @@ -#! /usr/bin/ruby -Ke - -class Board - def clr - print "\e[2J" - end - def pos(x,y) - printf "\e[%d;%dH", y+1, x*2+1 - end - def colorstr(id,s) - printf "\e[%dm%s\e[0m", id, s - end - def put(x, y, col, str) - pos(x,y); colorstr(43,str) - pos(0,@hi); print "»Ä¤ê:",@mc,"/",@total," " - pos(x,y) - end - private :clr, :pos, :colorstr, :put - CHR=["¡¦","£±","£²","£³","£´","£µ","£¶","£·","£¸","¡ú","¡ü","@@"] - COL=[46,43,45] # default,opened,over - def initialize(h,w,m) - # ¥²¡¼¥àÈפÎÀ¸À®(h:½Ä¡¤w:²£¡¤m:ÇúÃƤοô) - @hi=h; @wi=w; @m=m - reset - end - def reset - # ¥²¡¼¥àÈפò(ºÆ)½é´ü²½¤¹¤ë - srand() - @cx=0; @cy=0; @mc=@m - @over=false - @data=Array.new(@hi*@wi) - @state=Array.new(@hi*@wi) - @total=@hi*@wi - @total.times {|i| @data[i]=0} - @m.times do - loop do - j=rand(@total-1) - if @data[j] == 0 then - @data[j]=1 - break - end - end - end - clr; pos(0,0) - @hi.times{|y| pos(0,y); colorstr(COL[0],CHR[0]*@wi)} - pos(@cx,@cy) - end - def mark - # ¸½ºß¤Î¥«¡¼¥½¥ë°ÌÃ֤˥ޡ¼¥¯¤ò¤Ä¤±¤ë - if @state[@wi*@cy+@cx] != nil then return end - @state[@wi*@cy+@cx] = "MARK" - @mc=@mc-1; - @total=@total-1; - put(@cx, @cy, COL[1], CHR[9]) - end - def open(x=@cx,y=@cy) - # ¸½ºß¤Î¥«¡¼¥½¥ë°ÌÃÖ¤ò¥ª¡¼¥×¥ó¤Ë¤¹¤ë - # ÇúÃƤ¬¤¢¤ì¤Ð¥²¡¼¥à¥ª¡¼¥Ð¡¼ - if @state[@wi*y+x] =="OPEN" then return 0 end - if @state[@wi*y+x] == nil then @total=@total-1 end - if @state[@wi*y+x] =="MARK" then @mc=@mc+1 end - @state[@wi*y+x]="OPEN" - if fetch(x,y) == 1 then @over = 1; return end - c = count(x,y) - put(x, y, COL[1], CHR[c]) - return 0 if c != 0 - if x > 0 && y > 0 then open(x-1,y-1) end - if y > 0 then open(x, y-1) end - if x < @wi-1 && y > 0 then open(x+1,y-1) end - if x > 0 then open(x-1,y) end - if x < @wi-1 then open(x+1,y) end - if x > 0 && y < @hi-1 then open(x-1,y+1) end - if y < @hi -1 then open(x,y+1) end - if x < @wi-1 && y < @hi-1 then open(x+1,y+1) end - pos(@cx,@cy) - end - def fetch(x,y) - # (x,y)¤Î°ÌÃÖ¤ÎÇúÃƤοô(0 or 1)¤òÊÖ¤¹ - if x < 0 then 0 - elsif x >= @wi then 0 - elsif y < 0 then 0 - elsif y >= @hi then 0 - else - @data[y*@wi+x] - end - end - def count(x,y) - # (x,y)¤ËÎÙÀܤ¹¤ëÇúÃƤοô¤òÊÖ¤¹ - fetch(x-1,y-1)+fetch(x,y-1)+fetch(x+1,y-1)+ - fetch(x-1,y) + fetch(x+1,y)+ - fetch(x-1,y+1)+fetch(x,y+1)+fetch(x+1,y+1) - end - def over(win) - # ¥²¡¼¥à¤Î½ªÎ» - quit - unless win - pos(@cx,@cy); print CHR[11] - end - pos(0,@hi) - if win then print "*** YOU WIN !! ***" - else print "*** GAME OVER ***" - end - end - def over? - # ¥²¡¼¥à¤Î½ªÎ»¥Á¥§¥Ã¥¯ - # ½ªÎ»½èÍý¤â¸Æ¤Ó½Ð¤¹ - remain = (@mc+@total == 0) - if @over || remain - over(remain) - true - else - false - end - end - def quit - # ¥²¡¼¥à¤ÎÃæÃÇ(¤Þ¤¿¤Ï½ªÎ») - # È×Ì̤òÁ´¤Æ¸«¤»¤ë - @hi.times do|y| - pos(0,y) - @wi.times do|x| - colorstr(if @state[y*@wi+x] == "MARK" then COL[1] else COL[2] end, - if fetch(x,y)==1 then CHR[10] else CHR[count(x,y)] end) - end - end - end - def down - # ¥«¡¼¥½¥ë¤ò²¼¤Ë - if @cy < @hi-1 then @cy=@cy+1; pos(@cx, @cy) end - end - def up - # ¥«¡¼¥½¥ë¤ò¾å¤Ë - if @cy > 0 then @cy=@cy-1; pos(@cx, @cy) end - end - def left - # ¥«¡¼¥½¥ë¤òº¸¤Ë - if @cx > 0 then @cx=@cx-1; pos(@cx, @cy) end - end - def right - # ¥«¡¼¥½¥ë¤ò±¦¤Ë - if @cx < @wi-1 then @cx=@cx+1; pos(@cx, @cy) end - end -end - -bd=Board.new(10,10,10) -system("stty raw -echo") -begin - loop do - case STDIN.getc - when ?n # new game - bd.reset - when ?m # mark - bd.mark - when ?j - bd.down - when ?k - bd.up - when ?h - bd.left - when ?l - bd.right - when ?\s - bd.open - when ?q,?\C-c # quit game - bd.quit - break - end - if bd.over? - if STDIN.getc == ?q then break end - bd.reset - end - end -ensure - system("stty -raw echo") -end -print "\n" diff --git a/ruby_1_8_5/sample/mkproto.rb b/ruby_1_8_5/sample/mkproto.rb deleted file mode 100644 index 754ca2dff2..0000000000 --- a/ruby_1_8_5/sample/mkproto.rb +++ /dev/null @@ -1,27 +0,0 @@ -$/ = nil -while line = gets() - if /^((void|VALUE|int|char *\*|ID|struct [\w_]+ *\*|st_table *\*) *)?\n([\w\d_]+)\(.*\)\n\s*((.+;\n)*)\{/ =~ line - line = $' - printf "%s %s(", $2, $3 - args = [] - for arg in $4.split(/;\n\s*/) - arg.gsub!(/ +/, ' ') - if arg =~ /,/ - if arg =~ /(([^*]+) *\** *[\w\d_]+),/ - type = $2.strip - args.push $1.strip - arg = $' - else - type = "" - end - while arg.sub!(/(\** *[\w\d_]+)(,|$)/, "") && $~ - args.push type + " " + $1.strip - end - else - args.push arg.strip - end - end - printf "%s);\n", args.join(', ') - redo - end -end diff --git a/ruby_1_8_5/sample/mpart.rb b/ruby_1_8_5/sample/mpart.rb deleted file mode 100644 index a88eba0ef6..0000000000 --- a/ruby_1_8_5/sample/mpart.rb +++ /dev/null @@ -1,44 +0,0 @@ -#! ./ruby -# split into multi part -# usage: mpart.rb [-nnn] file.. - -lines = 1000 - -if (ARGV[0] =~ /^-(\d+)$/ ) - lines = $1.to_i; - ARGV.shift; -end - -basename = ARGV[0] -extname = "part" - -part = 1 -line = 0 - -fline = 0 -for i in ifp = open(basename) - fline = fline + 1 -end -ifp.close - -parts = fline / lines + 1 - -for i in ifp = open(basename) - if line == 0 - ofp = open(sprintf("%s.%s%02d", basename, extname, part), "w") - printf(ofp, "%s part%02d/%02d\n", basename, part, parts) - ofp.write("BEGIN--cut here--cut here\n") - end - ofp.write(i) - line = line + 1 - if line >= lines and !ifp.eof? - ofp.write("END--cut here--cut here\n") - ofp.close - part = part + 1 - line = 0 - end -end -ofp.write("END--cut here--cut here\n") -ofp.close - -ifp.close diff --git a/ruby_1_8_5/sample/mrshtest.rb b/ruby_1_8_5/sample/mrshtest.rb deleted file mode 100644 index 8d2dc9936b..0000000000 --- a/ruby_1_8_5/sample/mrshtest.rb +++ /dev/null @@ -1,13 +0,0 @@ -include Marshal -a = 25.6; -pt = Struct.new('Point', :x,:y); -x = pt.new(10, 10) -y = pt.new(20, 20) -rt = Struct.new('Rectangle', :origin,:corner); -z = rt.new(x, y) -c = Object.new -s = [a, x, z, c, c, "fff"]; -p s -d = dump(s); -p d -p load(d) diff --git a/ruby_1_8_5/sample/observ.rb b/ruby_1_8_5/sample/observ.rb deleted file mode 100644 index 72e5178b38..0000000000 --- a/ruby_1_8_5/sample/observ.rb +++ /dev/null @@ -1,32 +0,0 @@ -#! /usr/local/bin/ruby - -require "thread" -require "observer" - -class Tick - include Observable - def initialize - Thread.start do - loop do - sleep 0.999 - now = Time.now - changed - notify_observers(now.hour, now.min, now.sec) - end - end - end -end - -class Clock - def initialize(tick) - @tick = tick - @tick.add_observer(self) - end - def update(h, m, s) - printf "\e[8D%02d:%02d:%02d", h, m, s - STDOUT.flush - end -end - -clock = Clock.new(Tick.new) -sleep diff --git a/ruby_1_8_5/sample/occur.pl b/ruby_1_8_5/sample/occur.pl deleted file mode 100644 index 1f5fcf27a4..0000000000 --- a/ruby_1_8_5/sample/occur.pl +++ /dev/null @@ -1,9 +0,0 @@ -while (<>) { - for (split(/\W+/)) { - $freq{$_}++; - } -} - -for (sort keys %freq) { - print "$_ -- $freq{$_}\n"; -} diff --git a/ruby_1_8_5/sample/occur.rb b/ruby_1_8_5/sample/occur.rb deleted file mode 100644 index 8bb09e15ad..0000000000 --- a/ruby_1_8_5/sample/occur.rb +++ /dev/null @@ -1,12 +0,0 @@ -# word occurrence listing -# usege: ruby occur.rb file.. -freq = Hash.new(0) -while gets() - for word in split(/\W+/) - freq[word] += 1 - end -end - -for word in freq.keys.sort! - print word, " -- ", freq[word], "\n" -end diff --git a/ruby_1_8_5/sample/occur2.rb b/ruby_1_8_5/sample/occur2.rb deleted file mode 100644 index 53885c0ba7..0000000000 --- a/ruby_1_8_5/sample/occur2.rb +++ /dev/null @@ -1,16 +0,0 @@ -# word occurrence listing -# usege: ruby occur2.rb file.. -freq = {} -while gets() - for word in split(/\W+/) - begin - freq[word] += 1 - rescue NameError - freq[word] = 1 - end - end -end - -for word in freq.keys.sort - printf("%s -- %d\n", word, freq[word]) -end diff --git a/ruby_1_8_5/sample/openssl/c_rehash.rb b/ruby_1_8_5/sample/openssl/c_rehash.rb deleted file mode 100644 index 386eef5f24..0000000000 --- a/ruby_1_8_5/sample/openssl/c_rehash.rb +++ /dev/null @@ -1,174 +0,0 @@ -#!/usr/bin/env ruby - -require 'openssl' -require 'md5' - -class CHashDir - include Enumerable - - def initialize(dirpath) - @dirpath = dirpath - @fingerprint_cache = @cert_cache = @crl_cache = nil - end - - def hash_dir(silent = false) - # ToDo: Should lock the directory... - @silent = silent - @fingerprint_cache = Hash.new - @cert_cache = Hash.new - @crl_cache = Hash.new - do_hash_dir - end - - def get_certs(name = nil) - if name - @cert_cache[hash_name(name)] - else - @cert_cache.values.flatten - end - end - - def get_crls(name = nil) - if name - @crl_cache[hash_name(name)] - else - @crl_cache.values.flatten - end - end - - def delete_crl(crl) - File.unlink(crl_filename(crl)) - hash_dir(true) - end - - def add_crl(crl) - File.open(crl_filename(crl), "w") do |f| - f << crl.to_pem - end - hash_dir(true) - end - - def load_pem_file(filepath) - str = File.read(filepath) - begin - OpenSSL::X509::Certificate.new(str) - rescue - begin - OpenSSL::X509::CRL.new(str) - rescue - begin - OpenSSL::X509::Request.new(str) - rescue - nil - end - end - end - end - -private - - def crl_filename(crl) - path(hash_name(crl.issuer)) + '.pem' - end - - def do_hash_dir - Dir.chdir(@dirpath) do - delete_symlink - Dir.glob('*.pem') do |pemfile| - cert = load_pem_file(pemfile) - case cert - when OpenSSL::X509::Certificate - link_hash_cert(pemfile, cert) - when OpenSSL::X509::CRL - link_hash_crl(pemfile, cert) - else - STDERR.puts("WARNING: #{pemfile} does not contain a certificate or CRL: skipping") unless @silent - end - end - end - end - - def delete_symlink - Dir.entries(".").each do |entry| - next unless /^[\da-f]+\.r{0,1}\d+$/ =~ entry - File.unlink(entry) if FileTest.symlink?(entry) - end - end - - def link_hash_cert(org_filename, cert) - name_hash = hash_name(cert.subject) - fingerprint = fingerprint(cert.to_der) - filepath = link_hash(org_filename, name_hash, fingerprint) { |idx| - "#{name_hash}.#{idx}" - } - unless filepath - unless @silent - STDERR.puts("WARNING: Skipping duplicate certificate #{org_filename}") - end - else - (@cert_cache[name_hash] ||= []) << path(filepath) - end - end - - def link_hash_crl(org_filename, crl) - name_hash = hash_name(crl.issuer) - fingerprint = fingerprint(crl.to_der) - filepath = link_hash(org_filename, name_hash, fingerprint) { |idx| - "#{name_hash}.r#{idx}" - } - unless filepath - unless @silent - STDERR.puts("WARNING: Skipping duplicate CRL #{org_filename}") - end - else - (@crl_cache[name_hash] ||= []) << path(filepath) - end - end - - def link_hash(org_filename, name, fingerprint) - idx = 0 - filepath = nil - while true - filepath = yield(idx) - break unless FileTest.symlink?(filepath) or FileTest.exist?(filepath) - if @fingerprint_cache[filepath] == fingerprint - return false - end - idx += 1 - end - STDOUT.puts("#{org_filename} => #{filepath}") unless @silent - symlink(org_filename, filepath) - @fingerprint_cache[filepath] = fingerprint - filepath - end - - def symlink(from, to) - begin - File.symlink(from, to) - rescue - File.open(to, "w") do |f| - f << File.read(from) - end - end - end - - def path(filename) - File.join(@dirpath, filename) - end - - def hash_name(name) - sprintf("%x", name.hash) - end - - def fingerprint(der) - MD5.hexdigest(der).upcase - end -end - -if $0 == __FILE__ - dirlist = ARGV - dirlist << '/usr/ssl/certs' if dirlist.empty? - dirlist.each do |dir| - CHashDir.new(dir).hash_dir - end -end diff --git a/ruby_1_8_5/sample/openssl/cert2text.rb b/ruby_1_8_5/sample/openssl/cert2text.rb deleted file mode 100644 index 50da224e76..0000000000 --- a/ruby_1_8_5/sample/openssl/cert2text.rb +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env ruby - -require 'openssl' -include OpenSSL::X509 - -def cert2text(cert_str) - [Certificate, CRL, Request].each do |klass| - begin - puts klass.new(cert_str).to_text - return - rescue - end - end - raise ArgumentError.new('Unknown format.') -end - -if ARGV.empty? - cert2text(STDIN.read) -else - ARGV.each do |file| - cert2text(File.read(file)) - end -end diff --git a/ruby_1_8_5/sample/openssl/cert_store_view.rb b/ruby_1_8_5/sample/openssl/cert_store_view.rb deleted file mode 100644 index 26c4d527f7..0000000000 --- a/ruby_1_8_5/sample/openssl/cert_store_view.rb +++ /dev/null @@ -1,911 +0,0 @@ -#!/usr/bin/env ruby - -require 'fox' -require 'openssl' -require 'time' -require 'certstore' -require 'getopts' - -include Fox - -module CertDumpSupport - def cert_label(cert) - subject_alt_name = - cert.extensions.find { |ext| ext.oid == 'subjectAltName' } - if subject_alt_name - subject_alt_name.value.split(/\s*,\s/).each do |alt_name_pair| - alt_tag, alt_name = alt_name_pair.split(/:/) - return alt_name - end - end - name_label(cert.subject) - end - - def name_label(name) - ary = name.to_a - if (cn = ary.find { |rdn| rdn[0] == 'CN' }) - return cn[1] - end - if ary.last[0] == 'OU' - return ary.last[1] - end - name.to_s - end - - def name_text(name) - name.to_a.collect { |tag, value| - "#{tag} = #{value}" - }.reverse.join("\n") - end - - def bn_label(bn) - ("0" << sprintf("%X", bn)).scan(/../).join(" ") - end -end - -class CertDump - include CertDumpSupport - - def initialize(cert) - @cert = cert - end - - def get_dump(tag) - case tag - when 'Version' - version - when 'Serial' - serial - when 'Signature Algorithm' - signature_algorithm - when 'Issuer' - issuer - when 'Validity' - validity - when 'Not before' - not_before - when 'Not after' - not_after - when 'Subject' - subject - when 'Public key' - public_key - else - ext(tag) - end - end - - def get_dump_line(tag) - case tag - when 'Version' - version_line - when 'Serial' - serial_line - when 'Signature Algorithm' - signature_algorithm_line - when 'Subject' - subject_line - when 'Issuer' - issuer_line - when 'Validity' - validity_line - when 'Not before' - not_before_line - when 'Not after' - not_after_line - when 'Public key' - public_key_line - else - ext_line(tag) - end - end - -private - - def version - "Version: #{@cert.version + 1}" - end - - def version_line - version - end - - def serial - bn_label(@cert.serial) - end - - def serial_line - serial - end - - def signature_algorithm - @cert.signature_algorithm - end - - def signature_algorithm_line - signature_algorithm - end - - def subject - name_text(@cert.subject) - end - - def subject_line - @cert.subject.to_s - end - - def issuer - name_text(@cert.issuer) - end - - def issuer_line - @cert.issuer.to_s - end - - def validity - <<EOS -Not before: #{not_before} -Not after: #{not_after} -EOS - end - - def validity_line - "from #{@cert.not_before.iso8601} to #{@cert.not_after.iso8601}" - end - - def not_before - @cert.not_before.to_s - end - - def not_before_line - not_before - end - - def not_after - @cert.not_after.to_s - end - - def not_after_line - not_after - end - - def public_key - @cert.public_key.to_text - end - - def public_key_line - "#{@cert.public_key.class} -- " << public_key.scan(/\A[^\n]*/)[0] << '...' - end - - def ext(tag) - @cert.extensions.each do |ext| - if ext.oid == tag - return ext_detail(tag, ext.value) - end - end - "(unknown)" - end - - def ext_line(tag) - ext(tag).tr("\r\n", '') - end - - def ext_detail(tag, value) - value - end -end - -class CrlDump - include CertDumpSupport - - def initialize(crl) - @crl = crl - end - - def get_dump(tag) - case tag - when 'Version' - version - when 'Signature Algorithm' - signature_algorithm - when 'Issuer' - issuer - when 'Last update' - last_update - when 'Next update' - next_update - else - ext(tag) - end - end - - def get_dump_line(tag) - case tag - when 'Version' - version_line - when 'Signature Algorithm' - signature_algorithm_line - when 'Issuer' - issuer_line - when 'Last update' - last_update_line - when 'Next update' - next_update_line - else - ext_line(tag) - end - end - -private - - def version - "Version: #{@crl.version + 1}" - end - - def version_line - version - end - - def signature_algorithm - @crl.signature_algorithm - end - - def signature_algorithm_line - signature_algorithm - end - - def issuer - name_text(@crl.issuer) - end - - def issuer_line - @crl.issuer.to_s - end - - def last_update - @crl.last_update.to_s - end - - def last_update_line - last_update - end - - def next_update - @crl.next_update.to_s - end - - def next_update_line - next_update - end - - def ext(tag) - @crl.extensions.each do |ext| - if ext.oid == tag - return ext_detail(tag, ext.value) - end - end - "(unknown)" - end - - def ext_line(tag) - ext(tag).tr("\r\n", '') - end - - def ext_detail(tag, value) - value - end -end - -class RevokedDump - include CertDumpSupport - - def initialize(revoked) - @revoked = revoked - end - - def get_dump(tag) - case tag - when 'Serial' - serial - when 'Time' - time - else - ext(tag) - end - end - - def get_dump_line(tag) - case tag - when 'Serial' - serial_line - when 'Time' - time_line - else - ext_line(tag) - end - end - -private - - def serial - bn_label(@revoked.serial) - end - - def serial_line - serial - end - - def time - @revoked.time.to_s - end - - def time_line - time - end - - def ext(tag) - @revoked.extensions.each do |ext| - if ext.oid == tag - return ext_detail(tag, ext.value) - end - end - "(unknown)" - end - - def ext_line(tag) - ext(tag).tr("\r\n", '') - end - - def ext_detail(tag, value) - value - end -end - -class RequestDump - include CertDumpSupport - - def initialize(req) - @req = req - end - - def get_dump(tag) - case tag - when 'Version' - version - when 'Signature Algorithm' - signature_algorithm - when 'Subject' - subject - when 'Public key' - public_key - else - attributes(tag) - end - end - - def get_dump_line(tag) - case tag - when 'Version' - version_line - when 'Signature Algorithm' - signature_algorithm_line - when 'Subject' - subject_line - when 'Public key' - public_key_line - else - attributes_line(tag) - end - end - -private - - def version - "Version: #{@req.version + 1}" - end - - def version_line - version - end - - def signature_algorithm - @req.signature_algorithm - end - - def signature_algorithm_line - signature_algorithm - end - - def subject - name_text(@req.subject) - end - - def subject_line - @req.subject.to_s - end - - def public_key - @req.public_key.to_text - end - - def public_key_line - "#{@req.public_key.class} -- " << public_key.scan(/\A[^\n]*/)[0] << '...' - end - - def attributes(tag) - "(unknown)" - end - - def attributes_line(tag) - attributes(tag).tr("\r\n", '') - end -end - -class CertStoreView < FXMainWindow - class CertTree - include CertDumpSupport - - def initialize(observer, tree) - @observer = observer - @tree = tree - @tree.connect(SEL_COMMAND) do |sender, sel, item| - if item.data - @observer.getApp().beginWaitCursor do - @observer.show_item(item.data) - end - else - @observer.show_item(nil) - end - end - end - - def show(cert_store) - @tree.clearItems - @self_signed_ca_node = add_item_last(nil, "Trusted root CA") - @other_ca_node = add_item_last(nil, "Intermediate CA") - @ee_node = add_item_last(nil, "Personal") - @crl_node = add_item_last(nil, "CRL") - @request_node = add_item_last(nil, "Request") - @verify_path_node = add_item_last(nil, "Certification path") - show_certs(cert_store) - end - - def show_certs(cert_store) - remove_items(@self_signed_ca_node) - remove_items(@other_ca_node) - remove_items(@ee_node) - remove_items(@crl_node) - remove_items(@request_node) - import_certs(cert_store) - end - - def show_request(req) - node = add_item_last(@request_node, name_label(req.subject), req) - @tree.selectItem(node) - @observer.show_item(req) - end - - def show_verify_path(verify_path) - add_verify_path(verify_path) - end - - private - - def open_node(node) - node.expanded = node.opened = true - end - - def close_node(node) - node.expanded = node.opened = false - end - - def import_certs(cert_store) - cert_store.self_signed_ca.each do |cert| - add_item_last(@self_signed_ca_node, cert_label(cert), cert) - end - cert_store.other_ca.each do |cert| - add_item_last(@other_ca_node, cert_label(cert), cert) - end - cert_store.ee.each do |cert| - add_item_last(@ee_node, cert_label(cert), cert) - end - cert_store.crl.each do |crl| - node = add_item_last(@crl_node, name_label(crl.issuer), crl) - close_node(node) - crl.revoked.each do |revoked| - add_item_last(node, bn_label(revoked.serial), revoked) - end - end - cert_store.request.each do |req| - add_item_last(@requestnode, name_label(req.subject), req) - end - end - - def add_verify_path(verify_path) - node = @verify_path_node - last_cert = nil - verify_path.reverse_each do |ok, cert, crl_check, error_string| - warn = [] - if @observer.cert_store.is_ca?(cert) - warn << 'NO ARL' unless crl_check - else - warn << 'NO CRL' unless crl_check - end - warn_str = '(' << warn.join(", ") << ')' - warn_mark = warn.empty? ? '' : '!' - label = if ok - "OK#{warn_mark}..." + cert_label(cert) - else - "NG(#{error_string})..." + cert_label(cert) - end - label << warn_str unless warn.empty? - node = add_item_last(node, label, cert) - node.expanded = true - last_cert = cert - end - if last_cert - @tree.selectItem(node) - @observer.show_item(last_cert) - end - end - - def add_item_last(parent, label, obj = nil) - node = @tree.addItemLast(parent, FXTreeItem.new(label)) - node.data = obj if obj - open_node(node) - node - end - - def remove_items(node) - while node.getNumChildren > 0 - @tree.removeItem(node.getFirst) - end - end - end - - class CertInfo - def initialize(observer, table) - @observer = observer - @table = table - @table.leadingRows = 0 - @table.leadingCols = 0 - @table.trailingRows = 0 - @table.trailingCols = 0 - @table.showVertGrid(false) - @table.showHorzGrid(false) - @table.setTableSize(1, 2) - @table.setColumnWidth(0, 125) - @table.setColumnWidth(1, 350) - end - - def show(item) - @observer.show_detail(nil, nil) - if item.nil? - set_column_size(1) - return - end - case item - when OpenSSL::X509::Certificate - show_cert(item) - when OpenSSL::X509::CRL - show_crl(item) - when OpenSSL::X509::Revoked - show_revoked(item) - when OpenSSL::X509::Request - show_request(item) - else - raise NotImplementedError.new("Unknown item type #{item.class}.") - end - end - - private - - def show_cert(cert) - wrap = CertDump.new(cert) - items = [] - items << ['Version', wrap.get_dump_line('Version')] - items << ['Signature Algorithm', wrap.get_dump_line('Signature Algorithm')] - items << ['Issuer', wrap.get_dump_line('Issuer')] - items << ['Serial', wrap.get_dump_line('Serial')] - #items << ['Not before', wrap.get_dump_line('Not before')] - #items << ['Not after', wrap.get_dump_line('Not after')] - items << ['Subject', wrap.get_dump_line('Subject')] - items << ['Public key', wrap.get_dump_line('Public key')] - items << ['Validity', wrap.get_dump_line('Validity')] - (cert.extensions.sort { |a, b| a.oid <=> b.oid }).each do |ext| - items << [ext.oid, wrap.get_dump_line(ext.oid)] - end - show_items(cert, items) - end - - def show_crl(crl) - wrap = CrlDump.new(crl) - items = [] - items << ['Version', wrap.get_dump_line('Version')] - items << ['Signature Algorithm', wrap.get_dump_line('Signature Algorithm')] - items << ['Issuer', wrap.get_dump_line('Issuer')] - items << ['Last update', wrap.get_dump_line('Last update')] - items << ['Next update', wrap.get_dump_line('Next update')] - crl.extensions.each do |ext| - items << [ext.oid, wrap.get_dump_line(ext.oid)] - end - show_items(crl, items) - end - - def show_revoked(revoked) - wrap = RevokedDump.new(revoked) - items = [] - items << ['Serial', wrap.get_dump_line('Serial')] - items << ['Time', wrap.get_dump_line('Time')] - revoked.extensions.each do |ext| - items << [ext.oid, wrap.get_dump_line(ext.oid)] - end - show_items(revoked, items) - end - - def show_request(req) - wrap = RequestDump.new(req) - items = [] - items << ['Version', wrap.get_dump_line('Version')] - items << ['Signature Algorithm', wrap.get_dump_line('Signature Algorithm')] - items << ['Subject', wrap.get_dump_line('Subject')] - items << ['Public key', wrap.get_dump_line('Public key')] - req.attributes.each do |attr| - items << [attr.attr, wrap.get_dump_line(attr.oid)] - end - show_items(req, items) - end - - def show_items(obj, items) - set_column_size(items.size) - items.each_with_index do |ele, idx| - tag, value = ele - @table.setItemText(idx, 0, tag) - @table.getItem(idx, 0).data = tag - @table.setItemText(idx, 1, value.to_s) - @table.getItem(idx, 1).data = tag - end - @table.connect(SEL_COMMAND) do |sender, sel, loc| - item = @table.getItem(loc.row, loc.col) - @observer.show_detail(obj, item.data) - end - justify_table - end - - def set_column_size(size) - col0_width = @table.getColumnWidth(0) - col1_width = @table.getColumnWidth(1) - @table.setTableSize(size, 2) - @table.setColumnWidth(0, col0_width) - @table.setColumnWidth(1, col1_width) - end - - def justify_table - for col in 0..@table.numCols-1 - for row in 0..@table.numRows-1 - @table.getItem(row, col).justify = FXTableItem::LEFT - end - end - end - end - - class CertDetail - def initialize(observer, detail) - @observer = observer - @detail = detail - end - - def show(item, tag) - if item.nil? - @detail.text = '' - return - end - case item - when OpenSSL::X509::Certificate - show_cert(item, tag) - when OpenSSL::X509::CRL - show_crl(item, tag) - when OpenSSL::X509::Revoked - show_revoked(item, tag) - when OpenSSL::X509::Request - show_request(item, tag) - else - raise NotImplementedError.new("Unknown item type #{item.class}.") - end - end - - private - - def show_cert(cert, tag) - wrap = CertDump.new(cert) - @detail.text = wrap.get_dump(tag) - end - - def show_crl(crl, tag) - wrap = CrlDump.new(crl) - @detail.text = wrap.get_dump(tag) - end - - def show_revoked(revoked, tag) - wrap = RevokedDump.new(revoked) - @detail.text = wrap.get_dump(tag) - end - - def show_request(request, tag) - wrap = RequestDump.new(request) - @detail.text = wrap.get_dump(tag) - end - end - - attr_reader :cert_store - - def initialize(app, cert_store) - @cert_store = cert_store - @verify_filter = 0 - @verify_filename = nil - full_width = 800 - full_height = 500 - horz_pos = 300 - - super(app, "Certificate store", nil, nil, DECOR_ALL, 0, 0, full_width, - full_height) - - FXTooltip.new(self.getApp()) - - menubar = FXMenubar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X) - file_menu = FXMenuPane.new(self) - FXMenuTitle.new(menubar, "&File", nil, file_menu) - file_open_menu = FXMenuPane.new(self) - FXMenuCommand.new(file_open_menu, "&Directory\tCtl-O").connect(SEL_COMMAND, - method(:on_cmd_file_open_dir)) - FXMenuCascade.new(file_menu, "&Open\tCtl-O", nil, file_open_menu) - FXMenuCommand.new(file_menu, "&Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT) - - tool_menu = FXMenuPane.new(self) - FXMenuTitle.new(menubar, "&Tool", nil, tool_menu) - FXMenuCommand.new(tool_menu, "&Verify\tCtl-N").connect(SEL_COMMAND, - method(:on_cmd_tool_verify)) - FXMenuCommand.new(tool_menu, "&Show Request\tCtl-R").connect(SEL_COMMAND, - method(:on_cmd_tool_request)) - - base_frame = FXHorizontalFrame.new(self, LAYOUT_FILL_X | LAYOUT_FILL_Y) - splitter_horz = FXSplitter.new(base_frame, LAYOUT_SIDE_TOP | LAYOUT_FILL_X | - LAYOUT_FILL_Y | SPLITTER_TRACKING | SPLITTER_HORIZONTAL) - - # Cert tree - cert_tree_frame = FXHorizontalFrame.new(splitter_horz, LAYOUT_FILL_X | - LAYOUT_FILL_Y | FRAME_SUNKEN | FRAME_THICK) - cert_tree_frame.setWidth(horz_pos) - cert_tree = FXTreeList.new(cert_tree_frame, 0, nil, 0, - TREELIST_BROWSESELECT | TREELIST_SHOWS_LINES | TREELIST_SHOWS_BOXES | - TREELIST_ROOT_BOXES | LAYOUT_FILL_X | LAYOUT_FILL_Y) - @cert_tree = CertTree.new(self, cert_tree) - - # Cert info - splitter_vert = FXSplitter.new(splitter_horz, LAYOUT_SIDE_TOP | - LAYOUT_FILL_X | LAYOUT_FILL_Y | SPLITTER_TRACKING | SPLITTER_VERTICAL | - SPLITTER_REVERSED) - cert_list_base = FXVerticalFrame.new(splitter_vert, LAYOUT_FILL_X | - LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0) - cert_list_frame = FXHorizontalFrame.new(cert_list_base, FRAME_SUNKEN | - FRAME_THICK | LAYOUT_FILL_X | LAYOUT_FILL_Y) - cert_info = FXTable.new(cert_list_frame, 2, 10, nil, 0, FRAME_SUNKEN | - TABLE_COL_SIZABLE | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 2, 2, 2, 2) - @cert_info = CertInfo.new(self, cert_info) - - cert_detail_base = FXVerticalFrame.new(splitter_vert, LAYOUT_FILL_X | - LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0) - cert_detail_frame = FXHorizontalFrame.new(cert_detail_base, FRAME_SUNKEN | - FRAME_THICK | LAYOUT_FILL_X | LAYOUT_FILL_Y) - cert_detail = FXText.new(cert_detail_frame, nil, 0, TEXT_READONLY | - LAYOUT_FILL_X | LAYOUT_FILL_Y) - @cert_detail = CertDetail.new(self, cert_detail) - - show_init - end - - def create - super - show(PLACEMENT_SCREEN) - end - - def show_init - @cert_tree.show(@cert_store) - show_item(nil) - end - - def show_certs - @cert_tree.show_certs(@cert_store) - end - - def show_request(req) - @cert_tree.show_request(req) - end - - def show_verify_path(verify_path) - @cert_tree.show_verify_path(verify_path) - end - - def show_item(item) - @cert_info.show(item) if @cert_info - end - - def show_detail(item, tag) - @cert_detail.show(item, tag) if @cert_detail - end - - def verify(certfile) - path = verify_certfile(certfile) - show_certs # CRL could be change. - show_verify_path(path) - end - -private - - def on_cmd_file_open_dir(sender, sel, ptr) - dir = FXFileDialog.getOpenDirectory(self, "Open certificate directory", ".") - unless dir.empty? - begin - @cert_store = CertStore.new(dir) - rescue - show_error($!) - end - show_init - end - 1 - end - - def on_cmd_tool_verify(sender, sel, ptr) - dialog = FXFileDialog.new(self, "Verify certificate") - dialog.filename = '' - dialog.patternList = ["All Files (*)", "PEM formatted certificate (*.pem)"] - dialog.currentPattern = @verify_filter - if dialog.execute != 0 - @verify_filename = dialog.filename - verify(@verify_filename) - end - @verify_filter = dialog.currentPattern - 1 - end - - def on_cmd_tool_request(sender, sel, ptr) - dialog = FXFileDialog.new(self, "Show request") - dialog.filename = '' - dialog.patternList = ["All Files (*)", "PEM formatted certificate (*.pem)"] - if dialog.execute != 0 - req = @cert_store.generate_cert(dialog.filename) - show_request(req) - end - 1 - end - - def verify_certfile(filename) - begin - cert = @cert_store.generate_cert(filename) - result = @cert_store.verify(cert) - @cert_store.scan_certs - result - rescue - show_error($!) - [] - end - end - - def show_error(e) - msg = e.inspect + "\n" + e.backtrace.join("\n") - FXMessageBox.error(self, MBOX_OK, "Error", msg) - end -end - -getopts nil, "cert:" - -certs_dir = ARGV.shift or raise "#{$0} cert_dir" -certfile = $OPT_cert -app = FXApp.new("CertStore", "FoxTest") -cert_store = CertStore.new(certs_dir) -w = CertStoreView.new(app, cert_store) -app.create -if certfile - w.verify(certfile) -end -app.run diff --git a/ruby_1_8_5/sample/openssl/certstore.rb b/ruby_1_8_5/sample/openssl/certstore.rb deleted file mode 100644 index bbc637f668..0000000000 --- a/ruby_1_8_5/sample/openssl/certstore.rb +++ /dev/null @@ -1,161 +0,0 @@ -require 'c_rehash' -require 'crlstore' - - -class CertStore - include OpenSSL - include X509 - - attr_reader :self_signed_ca - attr_reader :other_ca - attr_reader :ee - attr_reader :crl - attr_reader :request - - def initialize(certs_dir) - @certs_dir = certs_dir - @c_store = CHashDir.new(@certs_dir) - @c_store.hash_dir(true) - @crl_store = CrlStore.new(@c_store) - @x509store = Store.new - @self_signed_ca = @other_ca = @ee = @crl = nil - - # Uncomment this line to let OpenSSL to check CRL for each certs. - # @x509store.flags = V_FLAG_CRL_CHECK | V_FLAG_CRL_CHECK_ALL - - add_path - scan_certs - end - - def generate_cert(filename) - @c_store.load_pem_file(filename) - end - - def verify(cert) - error, crl_map = do_verify(cert) - if error - [[false, cert, crl_map[cert.subject], error]] - else - @x509store.chain.collect { |c| [true, c, crl_map[c.subject], nil] } - end - end - - def match_cert(cert1, cert2) - (cert1.issuer.cmp(cert2.issuer) == 0) and cert1.serial == cert2.serial - end - - def is_ca?(cert) - case guess_cert_type(cert) - when CERT_TYPE_SELF_SIGNED - true - when CERT_TYPE_OTHER - true - else - false - end - end - - def scan_certs - @self_signed_ca = [] - @other_ca = [] - @ee = [] - @crl = [] - @request = [] - load_certs - end - -private - - def add_path - @x509store.add_path(@certs_dir) - end - - def do_verify(cert) - error_map = {} - crl_map = {} - result = @x509store.verify(cert) do |ok, ctx| - cert = ctx.current_cert - if ctx.current_crl - crl_map[cert.subject] = true - end - if ok - if !ctx.current_crl - if crl = @crl_store.find_crl(cert) - crl_map[cert.subject] = true - if crl.revoked.find { |revoked| revoked.serial == cert.serial } - ok = false - error_string = 'certification revoked' - end - end - end - end - error_map[cert.subject] = error_string if error_string - ok - end - error = if result - nil - else - error_map[cert.subject] || @x509store.error_string - end - return error, crl_map - end - - def load_certs - @c_store.get_certs.each do |certfile| - cert = generate_cert(certfile) - case guess_cert_type(cert) - when CERT_TYPE_SELF_SIGNED - @self_signed_ca << cert - when CERT_TYPE_OTHER - @other_ca << cert - when CERT_TYPE_EE - @ee << cert - else - raise "Unknown cert type." - end - end - @c_store.get_crls.each do |crlfile| - @crl << generate_cert(crlfile) - end - end - - CERT_TYPE_SELF_SIGNED = 0 - CERT_TYPE_OTHER = 1 - CERT_TYPE_EE = 2 - def guess_cert_type(cert) - ca = self_signed = is_cert_self_signed(cert) - cert.extensions.each do |ext| - # Ignores criticality of extensions. It's 'guess'ing. - case ext.oid - when 'basicConstraints' - /CA:(TRUE|FALSE), pathlen:(\d+)/ =~ ext.value - ca = ($1 == 'TRUE') unless ca - when 'keyUsage' - usage = ext.value.split(/\s*,\s*/) - ca = usage.include?('Certificate Sign') unless ca - when 'nsCertType' - usage = ext.value.split(/\s*,\s*/) - ca = usage.include?('SSL CA') unless ca - end - end - if ca - if self_signed - CERT_TYPE_SELF_SIGNED - else - CERT_TYPE_OTHER - end - else - CERT_TYPE_EE - end - end - - def is_cert_self_signed(cert) - # cert.subject.cmp(cert.issuer) == 0 - cert.subject.to_s == cert.issuer.to_s - end -end - - -if $0 == __FILE__ - c = CertStore.new("trust_certs") -end diff --git a/ruby_1_8_5/sample/openssl/cipher.rb b/ruby_1_8_5/sample/openssl/cipher.rb deleted file mode 100644 index 6e8cdb9427..0000000000 --- a/ruby_1_8_5/sample/openssl/cipher.rb +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env ruby -require 'openssl' - -text = "abcdefghijklmnopqrstuvwxyz" -pass = "secret password" -salt = "8 octets" # or nil -alg = "DES-EDE3-CBC" -#alg = "AES-128-CBC" - -puts "--Setup--" -puts %(clear text: "#{text}") -puts %(password: "#{pass}") -puts %(salt: "#{salt}") -puts %(cipher alg: "#{alg}") -puts - -puts "--Encrypting--" -des = OpenSSL::Cipher::Cipher.new(alg) -des.pkcs5_keyivgen(pass, salt) -des.encrypt -cipher = des.update(text) -cipher << des.final -puts %(encrypted text: #{cipher.inspect}) -puts - -puts "--Decrypting--" -des = OpenSSL::Cipher::Cipher.new(alg) -des.pkcs5_keyivgen(pass, salt) -des.decrypt -out = des.update(cipher) -out << des.final -puts %(decrypted text: "#{out}") -puts diff --git a/ruby_1_8_5/sample/openssl/crlstore.rb b/ruby_1_8_5/sample/openssl/crlstore.rb deleted file mode 100644 index b305913eb0..0000000000 --- a/ruby_1_8_5/sample/openssl/crlstore.rb +++ /dev/null @@ -1,122 +0,0 @@ -begin - require 'http-access2' -rescue LoadError - STDERR.puts("Cannot load http-access2. CRL might not be fetched.") -end -require 'c_rehash' - - -class CrlStore - def initialize(c_store) - @c_store = c_store - @c_store.hash_dir(true) - end - - def find_crl(cert) - do_find_crl(cert) - end - -private - - def do_find_crl(cert) - unless ca = find_ca(cert) - return nil - end - unless crlfiles = @c_store.get_crls(ca.subject) - if crl = renew_crl(cert, ca) - @c_store.add_crl(crl) - return crl - end - return nil - end - crlfiles.each do |crlfile| - next unless crl = load_crl(crlfile) - if crl.next_update < Time.now - if new_crl = renew_crl(cert, ca) - @c_store.delete_crl(crl) - @c_store.add_crl(new_crl) - crl = new_crl - end - end - if check_valid(crl, ca) - return crl - end - end - nil - end - - def find_ca(cert) - @c_store.get_certs(cert.issuer).each do |cafile| - ca = load_cert(cafile) - if cert.verify(ca.public_key) - return ca - end - end - nil - end - - def fetch(location) - if /\AURI:(.*)\z/ =~ location - begin - c = HTTPAccess2::Client.new(ENV['http_proxy'] || ENV['HTTP_PROXY']) - c.get_content($1) - rescue NameError, StandardError - nil - end - else - nil - end - end - - def load_cert(certfile) - load_cert_str(File.read(certfile)) - end - - def load_crl(crlfile) - load_crl_str(File.read(crlfile)) - end - - def load_cert_str(cert_str) - OpenSSL::X509::Certificate.new(cert_str) - end - - def load_crl_str(crl_str) - OpenSSL::X509::CRL.new(crl_str) - end - - def check_valid(crl, ca) - unless crl.verify(ca.public_key) - return false - end - crl.last_update <= Time.now - end - - RE_CDP = /\AcrlDistributionPoints\z/ - def get_cdp(cert) - if cdp_ext = cert.extensions.find { |ext| RE_CDP =~ ext.oid } - cdp_ext.value.chomp - else - false - end - end - - def renew_crl(cert, ca) - if cdp = get_cdp(cert) - if new_crl_str = fetch(cdp) - new_crl = load_crl_str(new_crl_str) - if check_valid(new_crl, ca) - return new_crl - end - end - end - false - end -end - -if $0 == __FILE__ - dir = "trust_certs" - c_store = CHashDir.new(dir) - s = CrlStore.new(c_store) - c = OpenSSL::X509::Certificate.new(File.read("cert_store/google_codesign.pem")) - p s.find_crl(c) -end diff --git a/ruby_1_8_5/sample/openssl/echo_cli.rb b/ruby_1_8_5/sample/openssl/echo_cli.rb deleted file mode 100644 index 29b356a7ad..0000000000 --- a/ruby_1_8_5/sample/openssl/echo_cli.rb +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env ruby - -require 'socket' -require 'openssl' -require 'getopts' - -getopts nil, "p:2000", "c:", "k:", "C:" - -host = ARGV[0] || "localhost" -port = $OPT_p -cert_file = $OPT_c -key_file = $OPT_k -ca_path = $OPT_C - -ctx = OpenSSL::SSL::SSLContext.new() -if cert_file && key_file - ctx.cert = OpenSSL::X509::Certificate.new(File::read(cert_file)) - ctx.key = OpenSSL::PKey::RSA.new(File::read(key_file)) -end -if ca_path - ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER - ctx.ca_path = ca_path -else - $stderr.puts "!!! WARNING: PEER CERTIFICATE WON'T BE VERIFIED !!!" -end - -s = TCPSocket.new(host, port) -ssl = OpenSSL::SSL::SSLSocket.new(s, ctx) -ssl.connect # start SSL session -ssl.sync_close = true # if true the underlying socket will be - # closed in SSLSocket#close. (default: false) -while line = $stdin.gets - ssl.write line - print ssl.gets -end - -ssl.close diff --git a/ruby_1_8_5/sample/openssl/echo_svr.rb b/ruby_1_8_5/sample/openssl/echo_svr.rb deleted file mode 100644 index be8e10fa26..0000000000 --- a/ruby_1_8_5/sample/openssl/echo_svr.rb +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env ruby - -require 'socket' -require 'openssl' -require 'getopts' - -getopts nil, "p:2000", "c:", "k:", "C:" - -port = $OPT_p -cert_file = $OPT_c -key_file = $OPT_k -ca_path = $OPT_C - -if cert_file && key_file - cert = OpenSSL::X509::Certificate.new(File::read(cert_file)) - key = OpenSSL::PKey::RSA.new(File::read(key_file)) -else - key = OpenSSL::PKey::RSA.new(512){ print "." } - puts - cert = OpenSSL::X509::Certificate.new - cert.version = 2 - cert.serial = 0 - name = OpenSSL::X509::Name.new([["C","JP"],["O","TEST"],["CN","localhost"]]) - cert.subject = name - cert.issuer = name - cert.not_before = Time.now - cert.not_after = Time.now + 3600 - cert.public_key = key.public_key - ef = OpenSSL::X509::ExtensionFactory.new(nil,cert) - cert.extensions = [ - ef.create_extension("basicConstraints","CA:FALSE"), - ef.create_extension("subjectKeyIdentifier","hash"), - ef.create_extension("extendedKeyUsage","serverAuth"), - ef.create_extension("keyUsage", - "keyEncipherment,dataEncipherment,digitalSignature") - ] - ef.issuer_certificate = cert - cert.add_extension ef.create_extension("authorityKeyIdentifier", - "keyid:always,issuer:always") - cert.sign(key, OpenSSL::Digest::SHA1.new) -end - -ctx = OpenSSL::SSL::SSLContext.new() -ctx.key = key -ctx.cert = cert -if ca_path - ctx.verify_mode = - OpenSSL::SSL::VERIFY_PEER|OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT - ctx.ca_path = ca_path -else - $stderr.puts "!!! WARNING: PEER CERTIFICATE WON'T BE VERIFIED !!!" -end - -tcps = TCPServer.new(port) -ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx) -loop do - ns = ssls.accept - while line = ns.gets - ns.write line - end - ns.close -end diff --git a/ruby_1_8_5/sample/openssl/gen_csr.rb b/ruby_1_8_5/sample/openssl/gen_csr.rb deleted file mode 100644 index 5858acd9f2..0000000000 --- a/ruby_1_8_5/sample/openssl/gen_csr.rb +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env ruby - -require 'getopts' -require 'openssl' - -include OpenSSL - -def usage - myname = File::basename($0) - $stderr.puts <<EOS -Usage: #{myname} [--key keypair_file] name - name ... ex. /C=JP/O=RRR/OU=CA/CN=NaHi/emailAddress=nahi@example.org -EOS - exit -end - -getopts nil, "key:", "csrout:", "keyout:" -keypair_file = $OPT_key -csrout = $OPT_csrout || "csr.pem" -keyout = $OPT_keyout || "keypair.pem" - -$stdout.sync = true -name_str = ARGV.shift or usage() -p name_str -name = X509::Name.parse(name_str) - -keypair = nil -if keypair_file - keypair = PKey::RSA.new(File.open(keypair_file).read) -else - keypair = PKey::RSA.new(1024) { putc "." } - puts - puts "Writing #{keyout}..." - File.open(keyout, "w", 0400) do |f| - f << keypair.to_pem - end -end - -puts "Generating CSR for #{name_str}" - -req = X509::Request.new -req.version = 0 -req.subject = name -req.public_key = keypair.public_key -req.sign(keypair, Digest::MD5.new) - -puts "Writing #{csrout}..." -File.open(csrout, "w") do |f| - f << req.to_pem -end diff --git a/ruby_1_8_5/sample/openssl/smime_read.rb b/ruby_1_8_5/sample/openssl/smime_read.rb deleted file mode 100644 index 0f08f54f7e..0000000000 --- a/ruby_1_8_5/sample/openssl/smime_read.rb +++ /dev/null @@ -1,23 +0,0 @@ -require 'getopts' -require 'openssl' -include OpenSSL - -getopts nil, "c:", "k:", "C:" - -cert_file = $OPT_c -key_file = $OPT_k -ca_path = $OPT_C - -data = $stdin.read - -cert = X509::Certificate.new(File::read(cert_file)) -key = PKey::RSA.new(File::read(key_file)) -p7enc = PKCS7::read_smime(data) -data = p7enc.decrypt(key, cert) - -store = X509::Store.new -store.add_path(ca_path) -p7sig = PKCS7::read_smime(data) -if p7sig.verify([], store) - puts p7sig.data -end diff --git a/ruby_1_8_5/sample/openssl/smime_write.rb b/ruby_1_8_5/sample/openssl/smime_write.rb deleted file mode 100644 index ce32cd8146..0000000000 --- a/ruby_1_8_5/sample/openssl/smime_write.rb +++ /dev/null @@ -1,23 +0,0 @@ -require 'openssl' -require 'getopts' -include OpenSSL - -getopts nil, "c:", "k:", "r:" - -cert_file = $OPT_c -key_file = $OPT_k -rcpt_file = $OPT_r - -cert = X509::Certificate.new(File::read(cert_file)) -key = PKey::RSA.new(File::read(key_file)) - -data = "Content-Type: text/plain\r\n" -data << "\r\n" -data << "This is a clear-signed message.\r\n" - -p7sig = PKCS7::sign(cert, key, data, [], PKCS7::DETACHED) -smime0 = PKCS7::write_smime(p7sig) - -rcpt = X509::Certificate.new(File::read(rcpt_file)) -p7enc = PKCS7::encrypt([rcpt], smime0) -print PKCS7::write_smime(p7enc) diff --git a/ruby_1_8_5/sample/openssl/wget.rb b/ruby_1_8_5/sample/openssl/wget.rb deleted file mode 100644 index 0362ab980d..0000000000 --- a/ruby_1_8_5/sample/openssl/wget.rb +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env ruby - -require 'net/https' -require 'getopts' - -getopts nil, 'C:' - -ca_path = $OPT_C - -uri = URI.parse(ARGV[0]) -if proxy = ENV['HTTP_PROXY'] - prx_uri = URI.parse(proxy) - prx_host = prx_uri.host - prx_port = prx_uri.port -end - -h = Net::HTTP.new(uri.host, uri.port, prx_host, prx_port) -h.set_debug_output($stderr) if $DEBUG -if uri.scheme == "https" - h.use_ssl = true - if ca_path - h.verify_mode = OpenSSL::SSL::VERIFY_PEER - h.ca_path = ca_path - else - $stderr.puts "!!! WARNING: PEER CERTIFICATE WON'T BE VERIFIED !!!" - end -end - -path = uri.path.empty? ? "/" : uri.path -h.get2(path){|resp| - STDERR.puts h.peer_cert.inspect if h.peer_cert - print resp.body -} diff --git a/ruby_1_8_5/sample/optparse/opttest.rb b/ruby_1_8_5/sample/optparse/opttest.rb deleted file mode 100644 index 61b157bce5..0000000000 --- a/ruby_1_8_5/sample/optparse/opttest.rb +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/ruby -I. - -require 'optparse' -require 'optparse/time' -require 'pp' - -# keywords -CODES = %w[iso-2022-jp shift_jis euc-jp utf8 binary] -CODE_ALIASES = {"jis" => "iso-2022-jp", "sjis" => "shift_jis"} -POSSIBLE_CODES = "(#{(CODES+CODE_ALIASES.keys).join(',')})" - -ARGV.options do - |opts| - opts.banner << " argv..." - - # separater - opts.on_tail - opts.on_tail("common options:") - - # no argument, shows at tail - opts.on_tail("--help", "show this message") {puts opts; exit} - - # mandatory argument - opts.on("-r", "--require=LIBRARY", String, - "require the LIBRARY, before", - "executing your script") {|@library|} - - # optional argument - opts.on("-i", "--inplace=[EXTENSION]", - "edit ARGV files in place", # multiline description - "(make backup if EXTENSION supplied)") {|@inplace| @inplace ||= ''} - - opts.on("-N=[NUM]", Integer) {|@number|} - - # additional class - opts.on("-t", "--[no-]time[=TIME]", Time, "it's the time") {|@time|} - - # limit argument syntax - opts.on("-[0-7]", "-F", "--irs=[OCTAL]", OptionParser::OctalInteger, - "specify record separator", "(\\0, if no argument)") {|@irs|} - - # boolean switch(default true) - @exec = true - opts.on("-n", "--no-exec[=FLAG]", TrueClass, "not really execute") {|@exec|} - - # array - opts.on("-a", "--list[=LIST,LIST]", Array, "list") {|@list|} - - # fixed size array - opts.on("--pair[=car,cdr]", Array, "pair") {|@x, @y|} - - # keyword completion - opts.on("--code=CODE", CODES, CODE_ALIASES, "select coding system", - "("+CODES.join(",")+",", " "+CODE_ALIASES.keys.join(",")+")") {|@code|} - - # optional argument with keyword completion - opts.on("--type[=TYPE]", [:text, :binary], "select type(text, binary)") {|@type|} - - # boolean switch with optional argument(default false) - opts.on("-v", "--[no-]verbose=[FLAG]", "run verbosely") {|@verbose|} - - # easy way, set local variable - opts.on("-q", "--quit", "quit when ARGV is empty") {|@quit|} - - # adding on the fly - opts.on("--add=SWITCH=[ARG]", "add option on the fly", /\A(\w+)(?:=.+)?\Z/) do - |opt, var| - opts.on("--#{opt}", "added in runtime", &eval("proc {|@#{var}|}")) - end - - opts.on_head("specific options:") - - # no argument - opts.on_tail("--version", "show version") do - puts OptionParser::Version.join('.') - exit - end - opts.parse! -end - -pp self -(print ARGV.options; exit) if @quit -ARGV.options = nil # no more parse -puts "ARGV = #{ARGV.join(' ')}" if !ARGV.empty? -#opts.variable.each {|sym| puts "#{sym} = #{opts.send(sym).inspect}"} diff --git a/ruby_1_8_5/sample/optparse/subcommand.rb b/ruby_1_8_5/sample/optparse/subcommand.rb deleted file mode 100755 index 21c42dd60a..0000000000 --- a/ruby_1_8_5/sample/optparse/subcommand.rb +++ /dev/null @@ -1,19 +0,0 @@ -#! /usr/bin/ruby -# contributed by Minero Aoki. - -require 'optparse' - -parser = OptionParser.new -parser.on('-i') { puts "-i" } -parser.on('-o') { puts '-o' } - -subparsers = Hash.new {|h,k| - $stderr.puts "no such subcommand: #{k}" - exit 1 -} -subparsers['add'] = OptionParser.new.on('-i') { puts "add -i" } -subparsers['del'] = OptionParser.new.on('-i') { puts "del -i" } -subparsers['list'] = OptionParser.new.on('-i') { puts "list -i" } - -parser.order!(ARGV) -subparsers[ARGV.shift].parse!(ARGV) unless ARGV.empty? diff --git a/ruby_1_8_5/sample/philos.rb b/ruby_1_8_5/sample/philos.rb deleted file mode 100644 index 119e7c36b9..0000000000 --- a/ruby_1_8_5/sample/philos.rb +++ /dev/null @@ -1,54 +0,0 @@ -# -# The Dining Philosophers - thread example -# -require "thread" - -srand -#srand -N=9 # number of philosophers -$forks = [] -for i in 0..N-1 - $forks[i] = Mutex.new -end -$state = "-o"*N - -def wait - sleep rand(20)/10.0 -end - -def think(n) - wait -end - -def eat(n) - wait -end - -def philosopher(n) - while TRUE - think n - $forks[n].lock - if not $forks[(n+1)%N].try_lock - $forks[n].unlock # avoid deadlock - next - end - $state[n*2] = ?|; - $state[(n+1)%N*2] = ?|; - $state[n*2+1] = ?*; - print $state, "\n" - eat(n) - $state[n*2] = ?-; - $state[(n+1)%N*2] = ?-; - $state[n*2+1] = ?o; - print $state, "\n" - $forks[n].unlock - $forks[(n+1)%N].unlock - end -end - -for n in 0..N-1 - Thread.start(n){|i| philosopher(i)} - sleep 0.1 -end - -sleep diff --git a/ruby_1_8_5/sample/pi.rb b/ruby_1_8_5/sample/pi.rb deleted file mode 100644 index 63be974285..0000000000 --- a/ruby_1_8_5/sample/pi.rb +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/local/bin/ruby - -k, a, b, a1, b1 = 2, 4, 1, 12, 4 - -loop do - # Next approximation - p, q, k = k*k, 2*k+1, k+1 - a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1 - # Print common digits - d = a / b - d1 = a1 / b1 - while d == d1 - print d - $stdout.flush - a, a1 = 10*(a%b), 10*(a1%b1) - d, d1 = a/b, a1/b1 - end -end diff --git a/ruby_1_8_5/sample/rcs.awk b/ruby_1_8_5/sample/rcs.awk deleted file mode 100644 index 08979285c9..0000000000 --- a/ruby_1_8_5/sample/rcs.awk +++ /dev/null @@ -1,33 +0,0 @@ -BEGIN { - sw = 40.0; - dw = 78.0; - hdw = dw / 2.0; - w = 20.0; - h =1.0; - d = 0.2; - ss="abcdefghijklmnopqrstuvwxyz0123456789!#$%^&*()-=\\[];'`,./"; - rnd = srand(); -} - -{ - xr = -hdw; y = h * 1.0; maxxl = -999; - s = ""; - while (xr < hdw) { - x = xr * (1 + y) - y * w / 2; - i = (x / (1 + h) + sw /2); - c = (0 < i && i < length($0)) ? substr($0, i, 1) : "0"; - y = h - d * c; - xl = xr - w * y / (1 + y); - if (xl < -hdw || xl >= hdw || xl <= maxxl) { - t = rand() * length(ss); - c = substr(ss, t, 1); - } - else { - c = substr(s, xl + hdw, 1); - maxxl = xl; - } - s = s c; - xr = xr + 1; - } - print s; -} diff --git a/ruby_1_8_5/sample/rcs.dat b/ruby_1_8_5/sample/rcs.dat deleted file mode 100644 index 61c88bff89..0000000000 --- a/ruby_1_8_5/sample/rcs.dat +++ /dev/null @@ -1,17 +0,0 @@ -0000000000000000220000000000000000 -0000000000000111221110000000000000 -0000000000111112222111110000000000 -0000000111111112222111111110000000 -0000111111111122222211111111110000 -0111111111111222222221111111111110 -2222222222222222222222222222222222 -1122222222222222222222222222222211 -0111122222222222222222222222211110 -0011111122222222222222222211111100 -0001111111222222222222221111111000 -0000111112222222222222222111110000 -0000011122222222112222222211100000 -0000001122222221111222222211000000 -0000000122221111111111222210000000 -0000000221111111111111111220000000 -0000000000000000000000000000000000 diff --git a/ruby_1_8_5/sample/rcs.rb b/ruby_1_8_5/sample/rcs.rb deleted file mode 100644 index 0bdf81c45d..0000000000 --- a/ruby_1_8_5/sample/rcs.rb +++ /dev/null @@ -1,39 +0,0 @@ -# random dot steraogram -# usage: rcs.rb rcs.dat - -sw = 40.0 # width of original pattern -dw = 78.0 # width of generating Random Character Streogram -hdw = dw / 2.0 -w = 20.0 # distance between eyes -h =1.0 # distance from screen and base plane -d = 0.2 # z value unit -ss="abcdefghijklmnopqrstuvwxyz0123456789#!$%^&*()-=\\[];'`,./" -rnd = srand() # You don't actually need this in ruby - srand() is called - # on the first call of rand(). - -while gets() -# print($_) - xr = -hdw; y = h * 1.0; maxxl = -999 - s = "" - while xr < hdw - x = xr * (1 + y) - y * w / 2 - i = (x / (1 + h) + sw / 2) - if (1 < i && i < $_.length) - c = $_[i, 1].to_i - else - c = 0 - end - y = h - d * c - xl = xr - w * y / (1 + y) - if xl < -hdw || xl >= hdw || xl <= maxxl - tt = rand(ss.length) - c = ss[tt, 1] - else - c = s[xl + hdw, 1] - maxxl = xl - end - s += c - xr += 1 - end - print(s, "\n") -end diff --git a/ruby_1_8_5/sample/regx.rb b/ruby_1_8_5/sample/regx.rb deleted file mode 100644 index aaf4b5f1ee..0000000000 --- a/ruby_1_8_5/sample/regx.rb +++ /dev/null @@ -1,23 +0,0 @@ -st = "\033[7m" -en = "\033[m" -#st = "<<" -#en = ">>" - -while TRUE - print "str> " - STDOUT.flush - input = gets - break if not input - if input != "" - str = input - str.chop! - end - print "pat> " - STDOUT.flush - re = gets - break if not re - re.chop! - str.gsub! re, "#{st}\\&#{en}" - print str, "\n" -end -print "\n" diff --git a/ruby_1_8_5/sample/rss/blend.rb b/ruby_1_8_5/sample/rss/blend.rb deleted file mode 100755 index 2fbd6efed6..0000000000 --- a/ruby_1_8_5/sample/rss/blend.rb +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env ruby - -require "rss" - -feeds = [] -verbose = false -encoding = "UTF-8" - -def error(exception) - mark = "=" * 20 - mark = "#{mark} error #{mark}" - STDERR.puts mark - STDERR.puts exception.class - STDERR.puts exception.message - STDERR.puts exception.backtrace - STDERR.puts mark -end - -before_time = Time.now -ARGV.each do |fname| - if fname == '-v' - verbose = true - next - end - rss = nil - f = File.new(fname).read - begin - ## do validate parse - rss = RSS::Parser.parse(f) - rescue RSS::InvalidRSSError - error($!) if verbose - ## do non validate parse for invalid RSS 1.0 - begin - rss = RSS::Parser.parse(f, false) - rescue RSS::Error - ## invalid RSS. - error($!) if verbose - end - rescue RSS::Error - error($!) if verbose - end - if rss.nil? - STDERR.puts "#{fname} does not include RSS 1.0 or 0.9x/2.0" - else - begin - rss.output_encoding = encoding - rescue RSS::UnknownConversionMethodError - error($!) if verbose - end - feeds << rss - end -end -processing_time = Time.now - before_time - -rss = RSS::Maker.make("1.0") do |maker| - maker.encoding = encoding - maker.channel.about = "http://example.com/blend.rdf" - maker.channel.title = "blended feeds" - maker.channel.link = "http://example.com/" - maker.channel.description = "blended feeds generated by RSS Parser" - - feeds.each do |feed| - feed.items.each do |item| - item.setup_maker(maker.items) - end - end - maker.items.do_sort = true - maker.items.max_size = 15 -end -puts rss - -STDERR.puts "Used XML parser: #{RSS::Parser.default_parser}" -STDERR.puts "Processing time: #{processing_time}s" diff --git a/ruby_1_8_5/sample/rss/convert.rb b/ruby_1_8_5/sample/rss/convert.rb deleted file mode 100755 index 394b13e8eb..0000000000 --- a/ruby_1_8_5/sample/rss/convert.rb +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env ruby - -require "rss" - -feeds = [] -verbose = false -encoding = "UTF-8" -to_version = "1.0" - -def error(exception) - mark = "=" * 20 - mark = "#{mark} error #{mark}" - STDERR.puts mark - STDERR.puts exception.class - STDERR.puts exception.message - STDERR.puts exception.backtrace - STDERR.puts mark -end - -before_time = Time.now -ARGV.each do |fname| - case fname - when '-v' - verbose = true - next - when /^-t(0\.91|1\.0|2\.0)$/ - to_version = $1 - next - end - rss = nil - f = File.read(fname) - begin - ## do validate parse - rss = RSS::Parser.parse(f) - rescue RSS::InvalidRSSError - error($!) if verbose - ## do non validate parse for invalid RSS 1.0 - begin - rss = RSS::Parser.parse(f, false) - rescue RSS::Error - ## invalid RSS. - error($!) if verbose - end - rescue RSS::Error - error($!) if verbose - end - if rss.nil? - STDERR.puts "#{fname} does not include RSS 1.0 or 0.9x/2.0" - else - begin - rss.output_encoding = encoding - rescue RSS::UnknownConversionMethodError - error($!) if verbose - end - feeds << [fname, rss] - end -end -processing_time = Time.now - before_time - -feeds.each do |fname, rss| - converted_rss = rss.to_xml(to_version) - output_name = fname.sub(/(\.[^\.]+)$/, "-#{to_version}\\1") - File.open(output_name, "w") do |output| - output.print(converted_rss) - end -end - -STDERR.puts "Used XML parser: #{RSS::Parser.default_parser}" -STDERR.puts "Processing time: #{processing_time}s" diff --git a/ruby_1_8_5/sample/rss/list_description.rb b/ruby_1_8_5/sample/rss/list_description.rb deleted file mode 100644 index bb1f9636e2..0000000000 --- a/ruby_1_8_5/sample/rss/list_description.rb +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env ruby - -require "nkf" -class String - # From tdiary.rb - def shorten( len = 120 ) - lines = NKF::nkf( "-e -m0 -f#{len}", self.gsub( /\n/, ' ' ) ).split( /\n/ ) - lines[0].concat( '...' ) if lines[0] and lines[1] - lines[0] - end -end - -require "rss" - -channels = {} -verbose = false - -def error(exception) - mark = "=" * 20 - mark = "#{mark} error #{mark}" - puts mark - puts exception.class - puts exception.message - puts exception.backtrace - puts mark -end - -before_time = Time.now -ARGV.each do |fname| - if fname == '-v' - verbose = true - next - end - rss = nil - f = File.new(fname).read - begin - ## do validate parse - rss = RSS::Parser.parse(f) - rescue RSS::InvalidRSSError - error($!) if verbose - ## do non validate parse for invalid RSS 1.0 - begin - rss = RSS::Parser.parse(f, false) - rescue RSS::Error - ## invalid RSS. - error($!) if verbose - end - rescue RSS::Error - error($!) if verbose - end - if rss.nil? - puts "#{fname} does not include RSS 1.0 or 0.9x/2.0" - else - begin - rss.output_encoding = "euc-jp" - rescue RSS::UnknownConversionMethodError - error($!) if verbose - end - rss.channel.title ||= "Unknown" - rss.items.each do |item| - item.title ||= "Unknown" - channels[rss.channel.title] ||= [] - channels[rss.channel.title] << item if item.description - end - end -end -processing_time = Time.now - before_time - -channels.sort do |x, y| - x[0] <=> y[0] -end[0..20].each do |title, items| - puts "Channel: #{title}" unless items.empty? - items.sort do |x, y| - x.title <=> y.title - end[0..10].each do |item| - puts " Item: #{item.title.shorten(50)}" - puts " Description: #{item.description.shorten(50)}" - end -end - -puts "Used XML parser: #{RSS::Parser.default_parser}" -puts "Processing time: #{processing_time}s" diff --git a/ruby_1_8_5/sample/rss/re_read.rb b/ruby_1_8_5/sample/rss/re_read.rb deleted file mode 100755 index c19a5099bb..0000000000 --- a/ruby_1_8_5/sample/rss/re_read.rb +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env ruby - -require "rss" - -def error(exception) - mark = "=" * 20 - mark = "#{mark} error #{mark}" - puts mark - puts exception.class - puts exception.message - puts exception.backtrace - puts mark -end - -verbose = false -before_time = Time.now - -ARGV.each do |fname| - if fname == '-v' - verbose = true - next - end - source = nil - File.open(fname) do |f| - source = f.read - end - - rss = nil - read = false - begin - rss = RSS::Parser.parse(source) - puts "Re-read valid RSS: #{fname}" - RSS::Parser.parse(rss.to_s) - read = true - rescue RSS::InvalidRSSError - error($!) if verbose - ## do non validate parse for invalid RSS 1.0 - begin - rss = RSS::Parser.parse(source, false) - rescue RSS::Error - ## invalid RSS. - error($!) if verbose - end - rescue RSS::Error - error($!) if verbose - end - - if rss.nil? - puts "Invalid RSS: #{fname}" - elsif !read - puts "Re-read invalid RSS: #{fname}" - begin - RSS::Parser.parse(rss.to_s) - rescue RSS::Error - puts " Error occurred: #{fname}" - error($!) if verbose - end - end -end - -processing_time = Time.now - before_time - -puts "Used XML parser: #{RSS::Parser.default_parser}" -puts "Processing time: #{processing_time}s" diff --git a/ruby_1_8_5/sample/rss/rss_recent.rb b/ruby_1_8_5/sample/rss/rss_recent.rb deleted file mode 100644 index 7821df5c7b..0000000000 --- a/ruby_1_8_5/sample/rss/rss_recent.rb +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env ruby - -require "nkf" -class String - # From tdiary.rb - def shorten( len = 120 ) - lines = NKF::nkf( "-e -m0 -f#{len}", self.gsub( /\n/, ' ' ) ).split( /\n/ ) - lines[0].concat( '...' ) if lines[0] and lines[1] - lines[0] - end -end - -require "rss" - -items = [] -verbose = false - -def error(exception) - mark = "=" * 20 - mark = "#{mark} error #{mark}" - puts mark - puts exception.class - puts exception.message - puts exception.backtrace - puts mark -end -before_time = Time.now -ARGV.each do |fname| - if fname == '-v' - verbose = true - next - end - rss = nil - f = File.new(fname).read - begin - ## do validate parse - rss = RSS::Parser.parse(f) - rescue RSS::InvalidRSSError - error($!) if verbose - ## do non validate parse for invalid RSS 1.0 - begin - rss = RSS::Parser.parse(f, false) - rescue RSS::Error - ## invalid RSS. - error($!) if verbose - end - rescue RSS::Error - error($!) if verbose - end - if rss.nil? - puts "#{fname} does not include RSS 1.0 or 0.9x/2.0" - else - begin - rss.output_encoding = "euc-jp" - rescue RSS::UnknownConversionMethodError - error($!) if verbose - end - rss.items.each do |item| - if item.respond_to?(:pubDate) and item.pubDate - class << item - alias_method(:dc_date, :pubDate) - end - end - if item.respond_to?(:dc_date) and item.dc_date - items << [rss.channel, item] - end - end - end -end -processing_time = Time.now - before_time - -items.sort do |x, y| - y[1].dc_date <=> x[1].dc_date -end[0..20].each do |channel, item| - puts "#{item.dc_date.localtime.iso8601}: " << - "#{channel.title}: #{item.title}" - puts " Description: #{item.description.shorten(50)}" if item.description -end - -puts "Used XML parser: #{RSS::Parser.default_parser}" -puts "Processing time: #{processing_time}s" diff --git a/ruby_1_8_5/sample/sieve.rb b/ruby_1_8_5/sample/sieve.rb deleted file mode 100644 index e0bb21d640..0000000000 --- a/ruby_1_8_5/sample/sieve.rb +++ /dev/null @@ -1,14 +0,0 @@ -# sieve of Eratosthenes -max = Integer(ARGV.shift || 100) -sieve = [] -for i in 2 .. max - sieve[i] = i -end - -for i in 2 .. Math.sqrt(max) - next unless sieve[i] - (i*i).step(max, i) do |j| - sieve[j] = nil - end -end -puts sieve.compact.join(", ") diff --git a/ruby_1_8_5/sample/svr.rb b/ruby_1_8_5/sample/svr.rb deleted file mode 100644 index 11cfc5fbfe..0000000000 --- a/ruby_1_8_5/sample/svr.rb +++ /dev/null @@ -1,34 +0,0 @@ -# socket example - server side -# usage: ruby svr.rb - -# this server might be blocked by an ill-behaved client. -# see tsvr.rb which is safe from client blocking. - -require "socket" - -gs = TCPserver.open(0) -addr = gs.addr -addr.shift -printf("server is on %s\n", addr.join(":")) -socks = [gs] - -loop do - nsock = select(socks); - next if nsock == nil - for s in nsock[0] - if s == gs - ns = s.accept - socks.push(ns) - print(s, " is accepted\n") - else - if s.eof? - print(s, " is gone\n") - s.close - socks.delete(s) - # single thread gets may block whole service - elsif str = s.gets - s.write(str) - end - end - end -end diff --git a/ruby_1_8_5/sample/test.rb b/ruby_1_8_5/sample/test.rb deleted file mode 100644 index e7f2d251b7..0000000000 --- a/ruby_1_8_5/sample/test.rb +++ /dev/null @@ -1,2036 +0,0 @@ -#! /usr/bin/env ruby - -$KCODE = "none" -$testnum=0 -$ntest=0 -$failed = 0 - -def test_check(what) - printf "%s\n", what - $what = what - $testnum = 0 -end - -def test_ok(cond,n=1) - $testnum+=1 - $ntest+=1 - if cond - printf "ok %d\n", $testnum - else - where = caller(n)[0] - printf "not ok %s %d -- %s\n", $what, $testnum, where - $failed+=1 - end -end - -# make sure conditional operators work - -test_check "assignment" - -a=[]; a[0] ||= "bar"; -test_ok(a[0] == "bar") -h={}; h["foo"] ||= "bar"; -test_ok(h["foo"] == "bar") - -aa = 5 -aa ||= 25 -test_ok(aa == 5) -bb ||= 25 -test_ok(bb == 25) -cc &&=33 -test_ok(cc == nil) -cc = 5 -cc &&=44 -test_ok(cc == 44) - -a = nil; test_ok(a == nil) -a = 1; test_ok(a == 1) -a = []; test_ok(a == []) -a = [1]; test_ok(a == [1]) -a = [nil]; test_ok(a == [nil]) -a = [[]]; test_ok(a == [[]]) -a = [1,2]; test_ok(a == [1,2]) -a = [*[]]; test_ok(a == []) -a = [*[1]]; test_ok(a == [1]) -a = [*[1,2]]; test_ok(a == [1,2]) - -a = *nil; test_ok(a == nil) -a = *1; test_ok(a == 1) -a = *[]; test_ok(a == nil) -a = *[1]; test_ok(a == 1) -a = *[nil]; test_ok(a == nil) -a = *[[]]; test_ok(a == []) -a = *[1,2]; test_ok(a == [1,2]) -a = *[*[]]; test_ok(a == nil) -a = *[*[1]]; test_ok(a == 1) -a = *[*[1,2]]; test_ok(a == [1,2]) - -*a = nil; test_ok(a == [nil]) -*a = 1; test_ok(a == [1]) -*a = []; test_ok(a == [[]]) -*a = [1]; test_ok(a == [[1]]) -*a = [nil]; test_ok(a == [[nil]]) -*a = [[]]; test_ok(a == [[[]]]) -*a = [1,2]; test_ok(a == [[1,2]]) -*a = [*[]]; test_ok(a == [[]]) -*a = [*[1]]; test_ok(a == [[1]]) -*a = [*[1,2]]; test_ok(a == [[1,2]]) - -*a = *nil; test_ok(a == [nil]) -*a = *1; test_ok(a == [1]) -*a = *[]; test_ok(a == []) -*a = *[1]; test_ok(a == [1]) -*a = *[nil]; test_ok(a == [nil]) -*a = *[[]]; test_ok(a == [[]]) -*a = *[1,2]; test_ok(a == [1,2]) -*a = *[*[]]; test_ok(a == []) -*a = *[*[1]]; test_ok(a == [1]) -*a = *[*[1,2]]; test_ok(a == [1,2]) - -a,b,*c = nil; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = 1; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = []; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = [1]; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = [nil]; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = [[]]; test_ok([a,b,c] == [[],nil,[]]) -a,b,*c = [1,2]; test_ok([a,b,c] == [1,2,[]]) -a,b,*c = [*[]]; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = [*[1]]; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = [*[1,2]]; test_ok([a,b,c] == [1,2,[]]) - -a,b,*c = *nil; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = *1; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = *[]; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = *[1]; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = *[nil]; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = *[[]]; test_ok([a,b,c] == [[],nil,[]]) -a,b,*c = *[1,2]; test_ok([a,b,c] == [1,2,[]]) -a,b,*c = *[*[]]; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = *[*[1]]; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = *[*[1,2]]; test_ok([a,b,c] == [1,2,[]]) - -def f; yield nil; end; f {|a| test_ok(a == nil)} -def f; yield 1; end; f {|a| test_ok(a == 1)} -def f; yield []; end; f {|a| test_ok(a == [])} -def f; yield [1]; end; f {|a| test_ok(a == [1])} -def f; yield [nil]; end; f {|a| test_ok(a == [nil])} -def f; yield [[]]; end; f {|a| test_ok(a == [[]])} -def f; yield [*[]]; end; f {|a| test_ok(a == [])} -def f; yield [*[1]]; end; f {|a| test_ok(a == [1])} -def f; yield [*[1,2]]; end; f {|a| test_ok(a == [1,2])} - -def f; yield *nil; end; f {|a| test_ok(a == nil)} -def f; yield *1; end; f {|a| test_ok(a == 1)} -def f; yield *[1]; end; f {|a| test_ok(a == 1)} -def f; yield *[nil]; end; f {|a| test_ok(a == nil)} -def f; yield *[[]]; end; f {|a| test_ok(a == [])} -def f; yield *[*[1]]; end; f {|a| test_ok(a == 1)} - -def f; yield; end; f {|*a| test_ok(a == [])} -def f; yield nil; end; f {|*a| test_ok(a == [nil])} -def f; yield 1; end; f {|*a| test_ok(a == [1])} -def f; yield []; end; f {|*a| test_ok(a == [[]])} -def f; yield [1]; end; f {|*a| test_ok(a == [[1]])} -def f; yield [nil]; end; f {|*a| test_ok(a == [[nil]])} -def f; yield [[]]; end; f {|*a| test_ok(a == [[[]]])} -def f; yield [1,2]; end; f {|*a| test_ok(a == [[1,2]])} -def f; yield [*[]]; end; f {|*a| test_ok(a == [[]])} -def f; yield [*[1]]; end; f {|*a| test_ok(a == [[1]])} -def f; yield [*[1,2]]; end; f {|*a| test_ok(a == [[1,2]])} - -def f; yield *nil; end; f {|*a| test_ok(a == [nil])} -def f; yield *1; end; f {|*a| test_ok(a == [1])} -def f; yield *[]; end; f {|*a| test_ok(a == [])} -def f; yield *[1]; end; f {|*a| test_ok(a == [1])} -def f; yield *[nil]; end; f {|*a| test_ok(a == [nil])} -def f; yield *[[]]; end; f {|*a| test_ok(a == [[]])} -def f; yield *[*[]]; end; f {|*a| test_ok(a == [])} -def f; yield *[*[1]]; end; f {|*a| test_ok(a == [1])} -def f; yield *[*[1,2]]; end; f {|*a| test_ok(a == [1,2])} - -def f; yield; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])} -def f; yield nil; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])} -def f; yield 1; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])} -def f; yield []; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])} -def f; yield [1]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])} -def f; yield [nil]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])} -def f; yield [[]]; end; f {|a,b,*c| test_ok([a,b,c] == [[],nil,[]])} -def f; yield [*[]]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])} -def f; yield [*[1]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])} -def f; yield [*[1,2]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,2,[]])} - -def f; yield *nil; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])} -def f; yield *1; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])} -def f; yield *[]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])} -def f; yield *[1]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])} -def f; yield *[nil]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])} -def f; yield *[[]]; end; f {|a,b,*c| test_ok([a,b,c] == [[],nil,[]])} -def f; yield *[*[]]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])} -def f; yield *[*[1]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])} -def f; yield *[*[1,2]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,2,[]])} - -def r; return; end; a = r(); test_ok(a == nil) -def r; return nil; end; a = r(); test_ok(a == nil) -def r; return 1; end; a = r(); test_ok(a == 1) -def r; return []; end; a = r(); test_ok(a == []) -def r; return [1]; end; a = r(); test_ok(a == [1]) -def r; return [nil]; end; a = r(); test_ok(a == [nil]) -def r; return [[]]; end; a = r(); test_ok(a == [[]]) -def r; return [*[]]; end; a = r(); test_ok(a == []) -def r; return [*[1]]; end; a = r(); test_ok(a == [1]) -def r; return [*[1,2]]; end; a = r(); test_ok(a == [1,2]) - -def r; return *nil; end; a = r(); test_ok(a == nil) -def r; return *1; end; a = r(); test_ok(a == 1) -def r; return *[]; end; a = r(); test_ok(a == nil) -def r; return *[1]; end; a = r(); test_ok(a == 1) -def r; return *[nil]; end; a = r(); test_ok(a == nil) -def r; return *[[]]; end; a = r(); test_ok(a == []) -def r; return *[*[]]; end; a = r(); test_ok(a == nil) -def r; return *[*[1]]; end; a = r(); test_ok(a == 1) -def r; return *[*[1,2]]; end; a = r(); test_ok(a == [1,2]) - -def r; return *nil; end; a = *r(); test_ok(a == nil) -def r; return *1; end; a = *r(); test_ok(a == 1) -def r; return *[]; end; a = *r(); test_ok(a == nil) -def r; return *[1]; end; a = *r(); test_ok(a == 1) -def r; return *[nil]; end; a = *r(); test_ok(a == nil) -def r; return *[[]]; end; a = *r(); test_ok(a == nil) -def r; return *[*[]]; end; a = *r(); test_ok(a == nil) -def r; return *[*[1]]; end; a = *r(); test_ok(a == 1) -def r; return *[*[1,2]]; end; a = *r(); test_ok(a == [1,2]) - -def r; return; end; *a = r(); test_ok(a == [nil]) -def r; return nil; end; *a = r(); test_ok(a == [nil]) -def r; return 1; end; *a = r(); test_ok(a == [1]) -def r; return []; end; *a = r(); test_ok(a == [[]]) -def r; return [1]; end; *a = r(); test_ok(a == [[1]]) -def r; return [nil]; end; *a = r(); test_ok(a == [[nil]]) -def r; return [[]]; end; *a = r(); test_ok(a == [[[]]]) -def r; return [1,2]; end; *a = r(); test_ok(a == [[1,2]]) -def r; return [*[]]; end; *a = r(); test_ok(a == [[]]) -def r; return [*[1]]; end; *a = r(); test_ok(a == [[1]]) -def r; return [*[1,2]]; end; *a = r(); test_ok(a == [[1,2]]) - -def r; return *nil; end; *a = r(); test_ok(a == [nil]) -def r; return *1; end; *a = r(); test_ok(a == [1]) -def r; return *[]; end; *a = r(); test_ok(a == [nil]) -def r; return *[1]; end; *a = r(); test_ok(a == [1]) -def r; return *[nil]; end; *a = r(); test_ok(a == [nil]) -def r; return *[[]]; end; *a = r(); test_ok(a == [[]]) -def r; return *[1,2]; end; *a = r(); test_ok(a == [[1,2]]) -def r; return *[*[]]; end; *a = r(); test_ok(a == [nil]) -def r; return *[*[1]]; end; *a = r(); test_ok(a == [1]) -def r; return *[*[1,2]]; end; *a = r(); test_ok(a == [[1,2]]) - -def r; return *nil; end; *a = *r(); test_ok(a == [nil]) -def r; return *1; end; *a = *r(); test_ok(a == [1]) -def r; return *[]; end; *a = *r(); test_ok(a == [nil]) -def r; return *[1]; end; *a = *r(); test_ok(a == [1]) -def r; return *[nil]; end; *a = *r(); test_ok(a == [nil]) -def r; return *[[]]; end; *a = *r(); test_ok(a == []) -def r; return *[1,2]; end; *a = *r(); test_ok(a == [1,2]) -def r; return *[*[]]; end; *a = *r(); test_ok(a == [nil]) -def r; return *[*[1]]; end; *a = *r(); test_ok(a == [1]) -def r; return *[*[1,2]]; end; *a = *r(); test_ok(a == [1,2]) - -def r; return; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]]) -def r; return nil; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]]) -def r; return 1; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]]) -def r; return []; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]]) -def r; return [1]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]]) -def r; return [nil]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]]) -def r; return [[]]; end; a,b,*c = r(); test_ok([a,b,c] == [[],nil,[]]) -def r; return [1,2]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]]) -def r; return [*[]]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]]) -def r; return [*[1]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]]) -def r; return [*[1,2]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]]) - -def r; return *nil; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]]) -def r; return *1; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]]) -def r; return *[]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]]) -def r; return *[1]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]]) -def r; return *[nil]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]]) -def r; return *[[]]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]]) -def r; return *[1,2]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]]) -def r; return *[*[]]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]]) -def r; return *[*[1]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]]) -def r; return *[*[1,2]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]]) - -f = lambda {|r,| test_ok([] == r)} -f.call([], *[]) - -f = lambda {|r,*l| test_ok([] == r); test_ok([1] == l)} -f.call([], *[1]) - -f = lambda{|x| x} -test_ok(f.call(42) == 42) -test_ok(f.call([42]) == [42]) -test_ok(f.call([[42]]) == [[42]]) -test_ok(f.call([42,55]) == [42,55]) - -f = lambda{|x,| x} -test_ok(f.call(42) == 42) -test_ok(f.call([42]) == [42]) -test_ok(f.call([[42]]) == [[42]]) -test_ok(f.call([42,55]) == [42,55]) - -f = lambda{|*x| x} -test_ok(f.call(42) == [42]) -test_ok(f.call([42]) == [[42]]) -test_ok(f.call([[42]]) == [[[42]]]) -test_ok(f.call([42,55]) == [[42,55]]) -test_ok(f.call(42,55) == [42,55]) - -a,=*[1] -test_ok(a == 1) -a,=*[[1]] -test_ok(a == [1]) -a,=*[[[1]]] -test_ok(a == [[1]]) - -x, (y, z) = 1, 2, 3 -test_ok([1,2,nil] == [x,y,z]) -x, (y, z) = 1, [2,3] -test_ok([1,2,3] == [x,y,z]) -x, (y, z) = 1, [2] -test_ok([1,2,nil] == [x,y,z]) - -a = loop do break; end; test_ok(a == nil) -a = loop do break nil; end; test_ok(a == nil) -a = loop do break 1; end; test_ok(a == 1) -a = loop do break []; end; test_ok(a == []) -a = loop do break [1]; end; test_ok(a == [1]) -a = loop do break [nil]; end; test_ok(a == [nil]) -a = loop do break [[]]; end; test_ok(a == [[]]) -a = loop do break [*[]]; end; test_ok(a == []) -a = loop do break [*[1]]; end; test_ok(a == [1]) -a = loop do break [*[1,2]]; end; test_ok(a == [1,2]) - -a = loop do break *nil; end; test_ok(a == nil) -a = loop do break *1; end; test_ok(a == 1) -a = loop do break *[]; end; test_ok(a == nil) -a = loop do break *[1]; end; test_ok(a == 1) -a = loop do break *[nil]; end; test_ok(a == nil) -a = loop do break *[[]]; end; test_ok(a == []) -a = loop do break *[*[]]; end; test_ok(a == nil) -a = loop do break *[*[1]]; end; test_ok(a == 1) -a = loop do break *[*[1,2]]; end; test_ok(a == [1,2]) - -*a = loop do break; end; test_ok(a == [nil]) -*a = loop do break nil; end; test_ok(a == [nil]) -*a = loop do break 1; end; test_ok(a == [1]) -*a = loop do break []; end; test_ok(a == [[]]) -*a = loop do break [1]; end; test_ok(a == [[1]]) -*a = loop do break [nil]; end; test_ok(a == [[nil]]) -*a = loop do break [[]]; end; test_ok(a == [[[]]]) -*a = loop do break [1,2]; end; test_ok(a == [[1,2]]) -*a = loop do break [*[]]; end; test_ok(a == [[]]) -*a = loop do break [*[1]]; end; test_ok(a == [[1]]) -*a = loop do break [*[1,2]]; end; test_ok(a == [[1,2]]) - -*a = loop do break *nil; end; test_ok(a == [nil]) -*a = loop do break *1; end; test_ok(a == [1]) -*a = loop do break *[]; end; test_ok(a == [nil]) -*a = loop do break *[1]; end; test_ok(a == [1]) -*a = loop do break *[nil]; end; test_ok(a == [nil]) -*a = loop do break *[[]]; end; test_ok(a == [[]]) -*a = loop do break *[1,2]; end; test_ok(a == [[1,2]]) -*a = loop do break *[*[]]; end; test_ok(a == [nil]) -*a = loop do break *[*[1]]; end; test_ok(a == [1]) -*a = loop do break *[*[1,2]]; end; test_ok(a == [[1,2]]) - -*a = *loop do break *nil; end; test_ok(a == [nil]) -*a = *loop do break *1; end; test_ok(a == [1]) -*a = *loop do break *[]; end; test_ok(a == [nil]) -*a = *loop do break *[1]; end; test_ok(a == [1]) -*a = *loop do break *[nil]; end; test_ok(a == [nil]) -*a = *loop do break *[[]]; end; test_ok(a == []) -*a = *loop do break *[1,2]; end; test_ok(a == [1,2]) -*a = *loop do break *[*[]]; end; test_ok(a == [nil]) -*a = *loop do break *[*[1]]; end; test_ok(a == [1]) -*a = *loop do break *[*[1,2]]; end; test_ok(a == [1,2]) - -a,b,*c = loop do break; end; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = loop do break nil; end; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = loop do break 1; end; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = loop do break []; end; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = loop do break [1]; end; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = loop do break [nil]; end; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = loop do break [[]]; end; test_ok([a,b,c] == [[],nil,[]]) -a,b,*c = loop do break [1,2]; end; test_ok([a,b,c] == [1,2,[]]) -a,b,*c = loop do break [*[]]; end; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = loop do break [*[1]]; end; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = loop do break [*[1,2]]; end; test_ok([a,b,c] == [1,2,[]]) - -a,b,*c = loop do break *nil; end; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = loop do break *1; end; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = loop do break *[]; end; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = loop do break *[1]; end; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = loop do break *[nil]; end; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = loop do break *[[]]; end; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = loop do break *[1,2]; end; test_ok([a,b,c] == [1,2,[]]) -a,b,*c = loop do break *[*[]]; end; test_ok([a,b,c] == [nil,nil,[]]) -a,b,*c = loop do break *[*[1]]; end; test_ok([a,b,c] == [1,nil,[]]) -a,b,*c = loop do break *[*[1,2]]; end; test_ok([a,b,c] == [1,2,[]]) - -def r(val); a = yield(); test_ok(a == val, 2); end -r(nil){next} -r(nil){next nil} -r(1){next 1} -r([]){next []} -r([1]){next [1]} -r([nil]){next [nil]} -r([[]]){next [[]]} -r([]){next [*[]]} -r([1]){next [*[1]]} -r([1,2]){next [*[1,2]]} - -r(nil){next *nil} -r(1){next *1} -r(nil){next *[]} -r(1){next *[1]} -r(nil){next *[nil]} -r([]){next *[[]]} -r(nil){next *[*[]]} -r(1){next *[*[1]]} -r([1,2]){next *[*[1,2]]} - -def r(val); *a = yield(); test_ok(a == val, 2); end -r([nil]){next} -r([nil]){next nil} -r([1]){next 1} -r([[]]){next []} -r([[1]]){next [1]} -r([[nil]]){next [nil]} -r([[[]]]){next [[]]} -r([[1,2]]){next [1,2]} -r([[]]){next [*[]]} -r([[1]]){next [*[1]]} -r([[1,2]]){next [*[1,2]]} - -def r(val); *a = *yield(); test_ok(a == val, 2); end -r([nil]){next *nil} -r([1]){next *1} -r([nil]){next *[]} -r([1]){next *[1]} -r([nil]){next *[nil]} -r([]){next *[[]]} -r([1,2]){next *[1,2]} -r([nil]){next *[*[]]} -r([1]){next *[*[1]]} -r([1,2]){next *[*[1,2]]} - -def r(val); a,b,*c = yield(); test_ok([a,b,c] == val, 2); end -r([nil,nil,[]]){next} -r([nil,nil,[]]){next nil} -r([1,nil,[]]){next 1} -r([nil,nil,[]]){next []} -r([1,nil,[]]){next [1]} -r([nil,nil,[]]){next [nil]} -r([[],nil,[]]){next [[]]} -r([1,2,[]]){next [1,2]} -r([nil,nil,[]]){next [*[]]} -r([1,nil,[]]){next [*[1]]} -r([1,2,[]]){next [*[1,2]]} - -def r(val); a,b,*c = *yield(); test_ok([a,b,c] == val, 2); end -r([nil,nil,[]]){next *nil} -r([1,nil,[]]){next *1} -r([nil,nil,[]]){next *[]} -r([1,nil,[]]){next *[1]} -r([nil,nil,[]]){next *[nil]} -r([nil,nil,[]]){next *[[]]} -r([1,2,[]]){next *[1,2]} -r([nil,nil,[]]){next *[*[]]} -r([1,nil,[]]){next *[*[1]]} -r([1,2,[]]){next *[*[1,2]]} - -test_check "condition" - -$x = '0'; - -$x == $x && test_ok(true) -$x != $x && test_ok(false) -$x == $x || test_ok(false) -$x != $x || test_ok(true) - -# first test to see if we can run the tests. - -test_check "if/unless"; - -$x = 'test'; -test_ok(if $x == $x then true else false end) -$bad = false -unless $x == $x - $bad = true -end -test_ok(!$bad) -test_ok(unless $x != $x then true else false end) - -test_check "case" - -case 5 -when 1, 2, 3, 4, 6, 7, 8 - test_ok(false) -when 5 - test_ok(true) -end - -case 5 -when 5 - test_ok(true) -when 1..10 - test_ok(false) -end - -case 5 -when 1..10 - test_ok(true) -else - test_ok(false) -end - -case 5 -when 5 - test_ok(true) -else - test_ok(false) -end - -case "foobar" -when /^f.*r$/ - test_ok(true) -else - test_ok(false) -end - -test_check "while/until"; - -tmp = open("while_tmp", "w") -tmp.print "tvi925\n"; -tmp.print "tvi920\n"; -tmp.print "vt100\n"; -tmp.print "Amiga\n"; -tmp.print "paper\n"; -tmp.close - -# test break - -tmp = open("while_tmp", "r") -test_ok(tmp.kind_of?(File)) - -while line = tmp.gets() - break if /vt100/ =~ line -end - -test_ok(!tmp.eof? && /vt100/ =~ line) -tmp.close - -# test next -$bad = false -tmp = open("while_tmp", "r") -while line = tmp.gets() - next if /vt100/ =~ line - $bad = 1 if /vt100/ =~ line -end -test_ok(!(!tmp.eof? || /vt100/ =~ line || $bad)) -tmp.close - -# test redo -$bad = false -tmp = open("while_tmp", "r") -while tmp.gets() - line = $_ - gsub(/vt100/, 'VT100') - if $_ != line - $_.gsub!('VT100', 'Vt100') - redo - end - $bad = 1 if /vt100/ =~ $_ - $bad = 1 if /VT100/ =~ $_ -end -test_ok(tmp.eof? && !$bad) -tmp.close - -sum=0 -for i in 1..10 - sum += i - i -= 1 - if i > 0 - redo - end -end -test_ok(sum == 220) - -# test interval -$bad = false -tmp = open("while_tmp", "r") -while line = tmp.gets() - break if 3 - case line - when /vt100/, /Amiga/, /paper/ - $bad = true - end -end -test_ok(!$bad) -tmp.close - -File.unlink "while_tmp" or `/bin/rm -f "while_tmp"` -test_ok(!File.exist?("while_tmp")) - -i = 0 -until i>4 - i+=1 -end -test_ok(i>4) - - -# exception handling -test_check "exception"; - -begin - raise "this must be handled" - test_ok(false) -rescue - test_ok(true) -end - -$bad = true -begin - raise "this must be handled no.2" -rescue - if $bad - $bad = false - retry - test_ok(false) - end -end -test_ok(true) - -# exception in rescue clause -$string = "this must be handled no.3" -begin - begin - raise "exception in rescue clause" - rescue - raise $string - end - test_ok(false) -rescue - test_ok(true) if $! == $string -end - -# exception in ensure clause -begin - begin - raise "this must be handled no.4" - ensure - raise "exception in ensure clause" - end - test_ok(false) -rescue - test_ok(true) -end - -$bad = true -begin - begin - raise "this must be handled no.5" - ensure - $bad = false - end -rescue -end -test_ok(!$bad) - -$bad = true -begin - begin - raise "this must be handled no.6" - ensure - $bad = false - end -rescue -end -test_ok(!$bad) - -$bad = true -while true - begin - break - ensure - $bad = false - end -end -test_ok(!$bad) - -test_ok(catch(:foo) { - loop do - loop do - throw :foo, true - break - end - break - test_ok(false) # should no reach here - end - false - }) - -test_check "array" -test_ok([1, 2] + [3, 4] == [1, 2, 3, 4]) -test_ok([1, 2] * 2 == [1, 2, 1, 2]) -test_ok([1, 2] * ":" == "1:2") - -test_ok([1, 2].hash == [1, 2].hash) - -test_ok([1,2,3] & [2,3,4] == [2,3]) -test_ok([1,2,3] | [2,3,4] == [1,2,3,4]) -test_ok([1,2,3] - [2,3] == [1]) - -$x = [0, 1, 2, 3, 4, 5] -test_ok($x[2] == 2) -test_ok($x[1..3] == [1, 2, 3]) -test_ok($x[1,3] == [1, 2, 3]) - -$x[0, 2] = 10 -test_ok($x[0] == 10 && $x[1] == 2) - -$x[0, 0] = -1 -test_ok($x[0] == -1 && $x[1] == 10) - -$x[-1, 1] = 20 -test_ok($x[-1] == 20 && $x.pop == 20) - -# array and/or -test_ok(([1,2,3]&[2,4,6]) == [2]) -test_ok(([1,2,3]|[2,4,6]) == [1,2,3,4,6]) - -# compact -$x = [nil, 1, nil, nil, 5, nil, nil] -$x.compact! -test_ok($x == [1, 5]) - -# uniq -$x = [1, 1, 4, 2, 5, 4, 5, 1, 2] -$x.uniq! -test_ok($x == [1, 4, 2, 5]) - -# empty? -test_ok(!$x.empty?) -$x = [] -test_ok($x.empty?) - -# sort -$x = ["it", "came", "to", "pass", "that", "..."] -$x = $x.sort.join(" ") -test_ok($x == "... came it pass that to") -$x = [2,5,3,1,7] -$x.sort!{|a,b| a<=>b} # sort with condition -test_ok($x == [1,2,3,5,7]) -$x.sort!{|a,b| b-a} # reverse sort -test_ok($x == [7,5,3,2,1]) - -# split test -$x = "The Book of Mormon" -test_ok($x.split(//).reverse!.join == $x.reverse) -test_ok($x.reverse == $x.reverse!) -test_ok("1 byte string".split(//).reverse.join(":") == "g:n:i:r:t:s: :e:t:y:b: :1") -$x = "a b c d" -test_ok($x.split == ['a', 'b', 'c', 'd']) -test_ok($x.split(' ') == ['a', 'b', 'c', 'd']) -test_ok(defined? "a".chomp) -test_ok("abc".scan(/./) == ["a", "b", "c"]) -test_ok("1a2b3c".scan(/(\d.)/) == [["1a"], ["2b"], ["3c"]]) -# non-greedy match -test_ok("a=12;b=22".scan(/(.*?)=(\d*);?/) == [["a", "12"], ["b", "22"]]) - -$x = [1] -test_ok(($x * 5).join(":") == '1:1:1:1:1') -test_ok(($x * 1).join(":") == '1') -test_ok(($x * 0).join(":") == '') - -*$x = *(1..7).to_a -test_ok($x.size == 7) -test_ok($x == [1, 2, 3, 4, 5, 6, 7]) - -$x = [1,2,3] -$x[1,0] = $x -test_ok($x == [1,1,2,3,2,3]) - -$x = [1,2,3] -$x[-1,0] = $x -test_ok($x == [1,2,1,2,3,3]) - -$x = [1,2,3] -$x.concat($x) -test_ok($x == [1,2,3,1,2,3]) - -test_check "hash" -$x = {1=>2, 2=>4, 3=>6} -$y = {1, 2, 2, 4, 3, 6} - -test_ok($x[1] == 2) - -test_ok(begin - for k,v in $y - raise if k*2 != v - end - true - rescue - false - end) - -test_ok($x.length == 3) -test_ok($x.has_key?(1)) -test_ok($x.has_value?(4)) -test_ok($x.values_at(2,3) == [4,6]) -test_ok($x == {1=>2, 2=>4, 3=>6}) - -$z = $y.keys.sort.join(":") -test_ok($z == "1:2:3") - -$z = $y.values.sort.join(":") -test_ok($z == "2:4:6") -test_ok($x == $y) - -$y.shift -test_ok($y.length == 2) - -$z = [1,2] -$y[$z] = 256 -test_ok($y[$z] == 256) - -$x = Hash.new(0) -$x[1] = 1 -test_ok($x[1] == 1) -test_ok($x[2] == 0) - -$x = Hash.new([]) -test_ok($x[22] == []) -test_ok($x[22].equal?($x[22])) - -$x = Hash.new{[]} -test_ok($x[22] == []) -test_ok(!$x[22].equal?($x[22])) - -$x = Hash.new{|h,k| $z = k; h[k] = k*2} -$z = 0 -test_ok($x[22] == 44) -test_ok($z == 22) -$z = 0 -test_ok($x[22] == 44) -test_ok($z == 0) -$x.default = 5 -test_ok($x[23] == 5) - -$x = Hash.new -def $x.default(k) - $z = k - self[k] = k*2 -end -$z = 0 -test_ok($x[22] == 44) -test_ok($z == 22) -$z = 0 -test_ok($x[22] == 44) -test_ok($z == 0) - -test_check "iterator" - -test_ok(!iterator?) - -def ttt - test_ok(iterator?) -end -ttt{} - -# yield at top level -test_ok(!defined?(yield)) - -$x = [1, 2, 3, 4] -$y = [] - -# iterator over array -for i in $x - $y.push i -end -test_ok($x == $y) - -# nested iterator -def tt - 1.upto(10) {|i| - yield i - } -end - -tt{|i| break if i == 5} -test_ok(i == 5) - -def tt2(dummy) - yield 1 -end - -def tt3(&block) - tt2(raise(ArgumentError,""),&block) -end - -$x = false -begin - tt3{} -rescue ArgumentError - $x = true -rescue Exception -end -test_ok($x) - -def tt4 &block - tt2(raise(ArgumentError,""),&block) -end -$x = false -begin - tt4{} -rescue ArgumentError - $x = true -rescue Exception -end -test_ok($x) - -# iterator break/redo/next/retry -done = true -loop{ - break - done = false # should not reach here -} -test_ok(done) - -done = false -$bad = false -loop { - break if done - done = true - next - $bad = true # should not reach here -} -test_ok(!$bad) - -done = false -$bad = false -loop { - break if done - done = true - redo - $bad = true # should not reach here -} -test_ok(!$bad) - -$x = [] -for i in 1 .. 7 - $x.push i -end -test_ok($x.size == 7) -test_ok($x == [1, 2, 3, 4, 5, 6, 7]) - -$done = false -$x = [] -for i in 1 .. 7 # see how retry works in iterator loop - if i == 4 and not $done - $done = true - retry - end - $x.push(i) -end -test_ok($x.size == 10) -test_ok($x == [1, 2, 3, 1, 2, 3, 4, 5, 6, 7]) - -# append method to built-in class -class Array - def iter_test1 - collect{|e| [e, yield(e)]}.sort{|a,b|a[1]<=>b[1]} - end - def iter_test2 - a = collect{|e| [e, yield(e)]} - a.sort{|a,b|a[1]<=>b[1]} - end -end -$x = [[1,2],[3,4],[5,6]] -test_ok($x.iter_test1{|x|x} == $x.iter_test2{|x|x}) - -class IterTest - def initialize(e); @body = e; end - - def each0(&block); @body.each(&block); end - def each1(&block); @body.each {|*x| block.call(*x) } end - def each2(&block); @body.each {|*x| block.call(x) } end - def each3(&block); @body.each {|x| block.call(*x) } end - def each4(&block); @body.each {|x| block.call(x) } end - def each5; @body.each {|*x| yield(*x) } end - def each6; @body.each {|*x| yield(x) } end - def each7; @body.each {|x| yield(*x) } end - def each8; @body.each {|x| yield(x) } end - - def f(a) - a - end -end -test_ok(IterTest.new(nil).method(:f).to_proc.call([1]) == [1]) -m = /\w+/.match("abc") -test_ok(IterTest.new(nil).method(:f).to_proc.call([m]) == [m]) - -IterTest.new([0]).each0 {|x| test_ok(x == 0)} -IterTest.new([1]).each1 {|x| test_ok(x == 1)} -IterTest.new([2]).each2 {|x| test_ok(x == [2])} -IterTest.new([3]).each3 {|x| test_ok(x == 3)} -IterTest.new([4]).each4 {|x| test_ok(x == 4)} -IterTest.new([5]).each5 {|x| test_ok(x == 5)} -IterTest.new([6]).each6 {|x| test_ok(x == [6])} -IterTest.new([7]).each7 {|x| test_ok(x == 7)} -IterTest.new([8]).each8 {|x| test_ok(x == 8)} - -IterTest.new([[0]]).each0 {|x| test_ok(x == [0])} -IterTest.new([[1]]).each1 {|x| test_ok(x == [1])} -IterTest.new([[2]]).each2 {|x| test_ok(x == [[2]])} -IterTest.new([[3]]).each3 {|x| test_ok(x == 3)} -IterTest.new([[4]]).each4 {|x| test_ok(x == [4])} -IterTest.new([[5]]).each5 {|x| test_ok(x == [5])} -IterTest.new([[6]]).each6 {|x| test_ok(x == [[6]])} -IterTest.new([[7]]).each7 {|x| test_ok(x == 7)} -IterTest.new([[8]]).each8 {|x| test_ok(x == [8])} - -IterTest.new([[0,0]]).each0 {|x| test_ok(x == [0,0])} -IterTest.new([[8,8]]).each8 {|x| test_ok(x == [8,8])} - -def m - test_ok(block_given?) -end -m{p 'test'} - -def m - test_ok(block_given?,&proc{}) -end -m{p 'test'} - -class C - include Enumerable - def initialize - @a = [1,2,3] - end - def each(&block) - @a.each(&block) - end -end - -test_ok(C.new.collect{|n| n} == [1,2,3]) - -test_ok(Proc == lambda{}.class) -test_ok(Proc == Proc.new{}.class) -lambda{|a|test_ok(a==1)}.call(1) -def block_test(klass, &block) - test_ok(klass === block) -end - -block_test(NilClass) -block_test(Proc){} - -def argument_test(state, proc, *args) - x = state - begin - proc.call(*args) - rescue ArgumentError - x = !x - end - test_ok(x,2) -end - -argument_test(true, lambda{||}) -argument_test(false, lambda{||}, 1) -argument_test(true, lambda{|a,|}, 1) -argument_test(false, lambda{|a,|}) -argument_test(false, lambda{|a,|}, 1,2) - -def get_block(&block) - block -end - -test_ok(Proc == get_block{}.class) -argument_test(true, get_block{||}) -argument_test(true, get_block{||}, 1) -argument_test(true, get_block{|a,|}, 1) -argument_test(true, get_block{|a,|}) -argument_test(true, get_block{|a,|}, 1,2) - -argument_test(true, get_block(&lambda{||})) -argument_test(false, get_block(&lambda{||}),1) -argument_test(true, get_block(&lambda{|a,|}),1) -argument_test(false, get_block(&lambda{|a,|}),1,2) - -block = get_block{11} -test_ok(block.class == Proc) -test_ok(block.to_proc.class == Proc) -test_ok(block.clone.call == 11) -test_ok(get_block(&block).class == Proc) - -lambda = lambda{44} -test_ok(lambda.class == Proc) -test_ok(lambda.to_proc.class == Proc) -test_ok(lambda.clone.call == 44) -test_ok(get_block(&lambda).class == Proc) - -test_ok(Proc.new{|a,| a}.call(1,2,3) == 1) -argument_test(true, Proc.new{|a,|}, 1,2) - -def test_return1 - Proc.new { - return 55 - }.call + 5 -end -test_ok(test_return1() == 55) -def test_return2 - lambda { - return 55 - }.call + 5 -end -test_ok(test_return2() == 60) - -def proc_call(&b) - b.call -end -def proc_yield() - yield -end -def proc_return1 - proc_call{return 42}+1 -end -test_ok(proc_return1() == 42) -def proc_return2 - proc_yield{return 42}+1 -end -test_ok(proc_return2() == 42) - -def ljump_test(state, proc, *args) - x = state - begin - proc.call(*args) - rescue LocalJumpError - x = !x - end - test_ok(x,2) -end - -ljump_test(false, get_block{break}) -ljump_test(true, lambda{break}) - -test_ok(block.arity == -1) -test_ok(lambda.arity == -1) -test_ok(lambda{||}.arity == 0) -test_ok(lambda{|a|}.arity == 1) -test_ok(lambda{|a,|}.arity == 1) -test_ok(lambda{|a,b|}.arity == 2) - -def marity_test(m) - method = method(m) - test_ok(method.arity == method.to_proc.arity) -end -marity_test(:test_ok) -marity_test(:marity_test) -marity_test(:p) - -lambda(&method(:test_ok)).call(true) -lambda(&get_block{|a,n| test_ok(a,n)}).call(true, 2) - -class ITER_TEST1 - def a - block_given? - end -end - -class ITER_TEST2 < ITER_TEST1 - def a - test_ok(super) - super - end -end -test_ok(ITER_TEST2.new.a {}) - -class ITER_TEST3 - def foo x - return yield if block_given? - x - end -end - -class ITER_TEST4 < ITER_TEST3 - def foo x - test_ok(super == yield) - test_ok(super(x, &nil) == x) - end -end - -ITER_TEST4.new.foo(44){55} - -test_check "float" -test_ok(2.6.floor == 2) -test_ok((-2.6).floor == -3) -test_ok(2.6.ceil == 3) -test_ok((-2.6).ceil == -2) -test_ok(2.6.truncate == 2) -test_ok((-2.6).truncate == -2) -test_ok(2.6.round == 3) -test_ok((-2.4).truncate == -2) -test_ok((13.4 % 1 - 0.4).abs < 0.0001) -nan = 0.0/0 -def nan_test(x,y) - test_ok(x != y) - test_ok((x < y) == false) - test_ok((x > y) == false) - test_ok((x <= y) == false) - test_ok((x >= y) == false) -end -nan_test(nan, nan) -nan_test(nan, 0) -nan_test(nan, 1) -nan_test(nan, -1) -nan_test(nan, 1000) -nan_test(nan, -1000) -nan_test(nan, 1_000_000_000_000) -nan_test(nan, -1_000_000_000_000) -nan_test(nan, 100.0); -nan_test(nan, -100.0); -nan_test(nan, 0.001); -nan_test(nan, -0.001); -nan_test(nan, 1.0/0); -nan_test(nan, -1.0/0); - -#s = "3.7517675036461267e+17" -#test_ok(s == sprintf("%.16e", s.to_f)) -f = 3.7517675036461267e+17 -test_ok(f == sprintf("%.16e", f).to_f) - - -test_check "bignum" -def fact(n) - return 1 if n == 0 - f = 1 - while n>0 - f *= n - n -= 1 - end - return f -end -$x = fact(40) -test_ok($x == $x) -test_ok($x == fact(40)) -test_ok($x < $x+2) -test_ok($x > $x-2) -test_ok($x == 815915283247897734345611269596115894272000000000) -test_ok($x != 815915283247897734345611269596115894272000000001) -test_ok($x+1 == 815915283247897734345611269596115894272000000001) -test_ok($x/fact(20) == 335367096786357081410764800000) -$x = -$x -test_ok($x == -815915283247897734345611269596115894272000000000) -test_ok(2-(2**32) == -(2**32-2)) -test_ok(2**32 - 5 == (2**32-3)-2) - -$good = true; -for i in 1000..1014 - $good = false if ((1 << i) != (2**i)) -end -test_ok($good) - -$good = true; -n1= 1 << 1000 -for i in 1000..1014 - $good = false if ((1 << i) != n1) - n1 *= 2 -end -test_ok($good) - -$good = true; -n2=n1 -for i in 1..10 - n1 = n1 / 2 - n2 = n2 >> 1 - $good = false if (n1 != n2) -end -test_ok($good) - -$good = true; -for i in 4000..4096 - n1 = 1 << i; - if (n1**2-1) / (n1+1) != (n1-1) - p i - $good = false - end -end -test_ok($good) - -b = 10**80 -a = b * 9 + 7 -test_ok(7 == a.modulo(b)) -test_ok(-b + 7 == a.modulo(-b)) -test_ok(b + -7 == (-a).modulo(b)) -test_ok(-7 == (-a).modulo(-b)) -test_ok(7 == a.remainder(b)) -test_ok(7 == a.remainder(-b)) -test_ok(-7 == (-a).remainder(b)) -test_ok(-7 == (-a).remainder(-b)) - -test_ok(10**40+10**20 == 10000000000000000000100000000000000000000) -test_ok(10**40/10**20 == 100000000000000000000) - -a = 677330545177305025495135714080 -b = 14269972710765292560 -test_ok(a % b == 0) -test_ok(-a % b == 0) - -def shift_test(a) - b = a / (2 ** 32) - c = a >> 32 - test_ok(b == c) - - b = a * (2 ** 32) - c = a << 32 - test_ok(b == c) -end - -shift_test(-4518325415524767873) -shift_test(-0xfffffffffffffffff) - -test_check "string & char" - -test_ok("abcd" == "abcd") -test_ok("abcd" =~ /abcd/) -test_ok("abcd" === "abcd") -# compile time string concatenation -test_ok("ab" "cd" == "abcd") -test_ok("#{22}aa" "cd#{44}" == "22aacd44") -test_ok("#{22}aa" "cd#{44}" "55" "#{66}" == "22aacd445566") -test_ok("abc" !~ /^$/) -test_ok("abc\n" !~ /^$/) -test_ok("abc" !~ /^d*$/) -test_ok(("abc" =~ /d*$/) == 3) -test_ok("" =~ /^$/) -test_ok("\n" =~ /^$/) -test_ok("a\n\n" =~ /^$/) -test_ok("abcabc" =~ /.*a/ && $& == "abca") -test_ok("abcabc" =~ /.*c/ && $& == "abcabc") -test_ok("abcabc" =~ /.*?a/ && $& == "a") -test_ok("abcabc" =~ /.*?c/ && $& == "abc") -test_ok(/(.|\n)*?\n(b|\n)/ =~ "a\nb\n\n" && $& == "a\nb") - -test_ok(/^(ab+)+b/ =~ "ababb" && $& == "ababb") -test_ok(/^(?:ab+)+b/ =~ "ababb" && $& == "ababb") -test_ok(/^(ab+)+/ =~ "ababb" && $& == "ababb") -test_ok(/^(?:ab+)+/ =~ "ababb" && $& == "ababb") - -test_ok(/(\s+\d+){2}/ =~ " 1 2" && $& == " 1 2") -test_ok(/(?:\s+\d+){2}/ =~ " 1 2" && $& == " 1 2") - -$x = <<END; -ABCD -ABCD -END -$x.gsub!(/((.|\n)*?)B((.|\n)*?)D/){$1+$3} -test_ok($x == "AC\nAC\n") - -test_ok("foobar" =~ /foo(?=(bar)|(baz))/) -test_ok("foobaz" =~ /foo(?=(bar)|(baz))/) - -$foo = "abc" -test_ok("#$foo = abc" == "abc = abc") -test_ok("#{$foo} = abc" == "abc = abc") - -foo = "abc" -test_ok("#{foo} = abc" == "abc = abc") - -test_ok('-' * 5 == '-----') -test_ok('-' * 1 == '-') -test_ok('-' * 0 == '') - -foo = '-' -test_ok(foo * 5 == '-----') -test_ok(foo * 1 == '-') -test_ok(foo * 0 == '') - -$x = "a.gif" -test_ok($x.sub(/.*\.([^\.]+)$/, '\1') == "gif") -test_ok($x.sub(/.*\.([^\.]+)$/, 'b.\1') == "b.gif") -test_ok($x.sub(/.*\.([^\.]+)$/, '\2') == "") -test_ok($x.sub(/.*\.([^\.]+)$/, 'a\2b') == "ab") -test_ok($x.sub(/.*\.([^\.]+)$/, '<\&>') == "<a.gif>") - -# character constants(assumes ASCII) -test_ok("a"[0] == ?a) -test_ok(?a == ?a) -test_ok(?\C-a == 1) -test_ok(?\M-a == 225) -test_ok(?\M-\C-a == 129) -test_ok("a".upcase![0] == ?A) -test_ok("A".downcase![0] == ?a) -test_ok("abc".tr!("a-z", "A-Z") == "ABC") -test_ok("aabbcccc".tr_s!("a-z", "A-Z") == "ABC") -test_ok("abcc".squeeze!("a-z") == "abc") -test_ok("abcd".delete!("bc") == "ad") - -$x = "abcdef" -$y = [ ?a, ?b, ?c, ?d, ?e, ?f ] -$bad = false -$x.each_byte {|i| - if i != $y.shift - $bad = true - break - end -} -test_ok(!$bad) - -s = "a string" -s[0..s.size]="another string" -test_ok(s == "another string") - -s = <<EOS -#{ -[1,2,3].join(",") -} -EOS -test_ok(s == "1,2,3\n") -test_ok("Just".to_i(36) == 926381) -test_ok("-another".to_i(36) == -23200231779) -test_ok(1299022.to_s(36) == "ruby") -test_ok(-1045307475.to_s(36) == "-hacker") -test_ok("Just_another_Ruby_hacker".to_i(36) == 265419172580680477752431643787347) -test_ok(-265419172580680477752431643787347.to_s(36) == "-justanotherrubyhacker") - -a = [] -(0..255).each {|n| - ch = [n].pack("C") - a.push ch if /a#{Regexp.quote ch}b/x =~ "ab" -} -test_ok(a.size == 0) - -test_check "assignment" -a = nil -test_ok(defined?(a)) -test_ok(a == nil) - -# multiple asignment -a, b = 1, 2 -test_ok(a == 1 && b == 2) - -a, b = b, a -test_ok(a == 2 && b == 1) - -a, = 1,2 -test_ok(a == 1) - -a, *b = 1, 2, 3 -test_ok(a == 1 && b == [2, 3]) - -a, (b, c), d = 1, [2, 3], 4 -test_ok(a == 1 && b == 2 && c == 3 && d == 4) - -*a = 1, 2, 3 -test_ok(a == [1, 2, 3]) - -*a = 4 -test_ok(a == [4]) - -*a = nil -test_ok(a == [nil]) - -test_check "call" -def aaa(a, b=100, *rest) - res = [a, b] - res += rest if rest - return res -end - -# not enough argument -begin - aaa() # need at least 1 arg - test_ok(false) -rescue - test_ok(true) -end - -begin - aaa # no arg given (exception raised) - test_ok(false) -rescue - test_ok(true) -end - -test_ok(aaa(1) == [1, 100]) -test_ok(aaa(1, 2) == [1, 2]) -test_ok(aaa(1, 2, 3, 4) == [1, 2, 3, 4]) -test_ok(aaa(1, *[2, 3, 4]) == [1, 2, 3, 4]) - -test_check "proc" -$proc = proc{|i| i} -test_ok($proc.call(2) == 2) -test_ok($proc.call(3) == 3) - -$proc = proc{|i| i*2} -test_ok($proc.call(2) == 4) -test_ok($proc.call(3) == 6) - -proc{ - iii=5 # nested local variable - $proc = proc{|i| - iii = i - } - $proc2 = proc { - $x = iii # nested variables shared by procs - } - # scope of nested variables - test_ok(defined?(iii)) -}.call -test_ok(!defined?(iii)) # out of scope - -loop{iii=5; test_ok(eval("defined? iii")); break} -loop { - iii = 10 - def dyna_var_check - loop { - test_ok(!defined?(iii)) - break - } - end - dyna_var_check - break -} -$x=0 -$proc.call(5) -$proc2.call -test_ok($x == 5) - -if defined? Process.kill - test_check "signal" - - $x = 0 - trap "SIGINT", proc{|sig| $x = 2} - Process.kill "SIGINT", $$ - sleep 0.1 - test_ok($x == 2) - - trap "SIGINT", proc{raise "Interrupt"} - - x = false - begin - Process.kill "SIGINT", $$ - sleep 0.1 - rescue - x = $! - end - test_ok(x && /Interrupt/ =~ x.message) -end - -test_check "eval" -test_ok(eval("") == nil) -$bad=false -eval 'while false; $bad = true; print "foo\n" end' -test_ok(!$bad) - -test_ok(eval('TRUE')) -test_ok(eval('true')) -test_ok(!eval('NIL')) -test_ok(!eval('nil')) -test_ok(!eval('FALSE')) -test_ok(!eval('false')) - -$foo = 'test_ok(true)' -begin - eval $foo -rescue - test_ok(false) -end - -test_ok(eval("$foo") == 'test_ok(true)') -test_ok(eval("true") == true) -i = 5 -test_ok(eval("i == 5")) -test_ok(eval("i") == 5) -test_ok(eval("defined? i")) - -# eval with binding -def test_ev - local1 = "local1" - lambda { - local2 = "local2" - return binding - }.call -end - -$x = test_ev -test_ok(eval("local1", $x) == "local1") # normal local var -test_ok(eval("local2", $x) == "local2") # nested local var -$bad = true -begin - p eval("local1") -rescue NameError # must raise error - $bad = false -end -test_ok(!$bad) - -module EvTest - EVTEST1 = 25 - evtest2 = 125 - $x = binding -end -test_ok(eval("EVTEST1", $x) == 25) # constant in module -test_ok(eval("evtest2", $x) == 125) # local var in module -$bad = true -begin - eval("EVTEST1") -rescue NameError # must raise error - $bad = false -end -test_ok(!$bad) - -x = proc{} -eval "i4 = 1", x -test_ok(eval("i4", x) == 1) -x = proc{proc{}}.call -eval "i4 = 22", x -test_ok(eval("i4", x) == 22) -$x = [] -x = proc{proc{}}.call -eval "(0..9).each{|i5| $x[i5] = proc{i5*2}}", x -test_ok($x[4].call == 8) - -x = binding -eval "i = 1", x -test_ok(eval("i", x) == 1) -x = proc{binding}.call -eval "i = 22", x -test_ok(eval("i", x) == 22) -$x = [] -x = proc{binding}.call -eval "(0..9).each{|i5| $x[i5] = proc{i5*2}}", x -test_ok($x[4].call == 8) -x = proc{binding}.call -eval "for i6 in 1..1; j6=i6; end", x -test_ok(eval("defined? i6", x)) -test_ok(eval("defined? j6", x)) - -proc { - p = binding - eval "foo11 = 1", p - foo22 = 5 - proc{foo11=22}.call - proc{foo22=55}.call - test_ok(eval("foo11", p) == eval("foo11")) - test_ok(eval("foo11") == 1) - test_ok(eval("foo22", p) == eval("foo22")) - test_ok(eval("foo22") == 55) -}.call - -p1 = proc{i7 = 0; proc{i7}}.call -test_ok(p1.call == 0) -eval "i7=5", p1 -test_ok(p1.call == 5) -test_ok(!defined?(i7)) - -p1 = proc{i7 = 0; proc{i7}}.call -i7 = nil -test_ok(p1.call == 0) -eval "i7=1", p1 -test_ok(p1.call == 1) -eval "i7=5", p1 -test_ok(p1.call == 5) -test_ok(i7 == nil) - -test_check "system" -test_ok(`echo foobar` == "foobar\n") -test_ok(`./miniruby -e 'print "foobar"'` == 'foobar') - -tmp = open("script_tmp", "w") -tmp.print "print $zzz\n"; -tmp.close - -test_ok(`./miniruby -s script_tmp -zzz` == 'true') -test_ok(`./miniruby -s script_tmp -zzz=555` == '555') - -tmp = open("script_tmp", "w") -tmp.print "#! /usr/local/bin/ruby -s\n"; -tmp.print "print $zzz\n"; -tmp.close - -test_ok(`./miniruby script_tmp -zzz=678` == '678') - -tmp = open("script_tmp", "w") -tmp.print "this is a leading junk\n"; -tmp.print "#! /usr/local/bin/ruby -s\n"; -tmp.print "print $zzz\n"; -tmp.print "__END__\n"; -tmp.print "this is a trailing junk\n"; -tmp.close - -test_ok(`./miniruby -x script_tmp` == 'nil') -test_ok(`./miniruby -x script_tmp -zzz=555` == '555') - -tmp = open("script_tmp", "w") -for i in 1..5 - tmp.print i, "\n" -end -tmp.close - -`./miniruby -i.bak -pe 'sub(/^[0-9]+$/){$&.to_i * 5}' script_tmp` -done = true -tmp = open("script_tmp", "r") -while tmp.gets - if $_.to_i % 5 != 0 - done = false - break - end -end -tmp.close -test_ok(done) - -File.unlink "script_tmp" or `/bin/rm -f "script_tmp"` -File.unlink "script_tmp.bak" or `/bin/rm -f "script_tmp.bak"` - -$bad = false -if (dir = File.dirname(File.dirname($0))) == '.' - dir = "" -else - dir << "/" -end - -def valid_syntax?(code, fname) - eval("BEGIN {return true}\n#{code}", nil, fname, 0) -rescue Exception - puts $!.message - false -end - -for script in Dir["#{dir}{lib,sample,ext}/**/*.rb"] - unless valid_syntax? IO::read(script), script - $bad = true - end -end -test_ok(!$bad) - -test_check "const" -TEST1 = 1 -TEST2 = 2 - -module Const - TEST3 = 3 - TEST4 = 4 -end - -module Const2 - TEST3 = 6 - TEST4 = 8 -end - -include Const - -test_ok([TEST1,TEST2,TEST3,TEST4] == [1,2,3,4]) - -include Const2 -STDERR.print "intentionally redefines TEST3, TEST4\n" if $VERBOSE -test_ok([TEST1,TEST2,TEST3,TEST4] == [1,2,6,8]) - - -test_ok((String <=> Object) == -1) -test_ok((Object <=> String) == 1) -test_ok((Array <=> String) == nil) - -test_check "clone" -foo = Object.new -def foo.test - "test" -end -bar = foo.clone -def bar.test2 - "test2" -end - -test_ok(bar.test2 == "test2") -test_ok(bar.test == "test") -test_ok(foo.test == "test") - -begin - foo.test2 - test_ok false -rescue NoMethodError - test_ok true -end - -module M001; end -module M002; end -module M003; include M002; end -module M002; include M001; end -module M003; include M002; end - -test_ok(M003.ancestors == [M003, M002, M001]) - -test_check "marshal" -$x = [1,2,3,[4,5,"foo"],{1=>"bar"},2.5,fact(30)] -$y = Marshal.dump($x) -test_ok($x == Marshal.load($y)) - -StrClone=String.clone; -test_ok(Marshal.load(Marshal.dump(StrClone.new("abc"))).class == StrClone) - -[[1,2,3,4], [81, 2, 118, 3146]].each { |w,x,y,z| - a = (x.to_f + y.to_f / z.to_f) * Math.exp(w.to_f / (x.to_f + y.to_f / z.to_f)) - ma = Marshal.dump(a) - b = Marshal.load(ma) - test_ok(a == b) -} - -test_check "pack" - -$format = "c2x5CCxsdils_l_a6"; -# Need the expression in here to force ary[5] to be numeric. This avoids -# test2 failing because ary2 goes str->numeric->str and ary does not. -ary = [1,-100,127,128,32767,987.654321098 / 100.0,12345,123456,-32767,-123456,"abcdef"] -$x = ary.pack($format) -ary2 = $x.unpack($format) - -test_ok(ary.length == ary2.length) -test_ok(ary.join(':') == ary2.join(':')) -test_ok($x =~ /def/) - -$x = [-1073741825] -test_ok($x.pack("q").unpack("q") == $x) - -test_check "math" -test_ok(Math.sqrt(4) == 2) - -include Math -test_ok(sqrt(4) == 2) - -test_check "struct" -struct_test = Struct.new("Test", :foo, :bar) -test_ok(struct_test == Struct::Test) - -test = struct_test.new(1, 2) -test_ok(test.foo == 1 && test.bar == 2) -test_ok(test[0] == 1 && test[1] == 2) - -a, b = test.to_a -test_ok(a == 1 && b == 2) - -test[0] = 22 -test_ok(test.foo == 22) - -test.bar = 47 -test_ok(test.bar == 47) - -test_check "variable" -test_ok($$.instance_of?(Fixnum)) - -# read-only variable -begin - $$ = 5 - test_ok false -rescue NameError - test_ok true -end - -foobar = "foobar" -$_ = foobar -test_ok($_ == foobar) - -class Gods - @@rule = "Uranus" - def ruler0 - @@rule - end - - def self.ruler1 # <= per method definition style - @@rule - end - class << self # <= multiple method definition style - def ruler2 - @@rule - end - end -end - -module Olympians - @@rule ="Zeus" - def ruler3 - @@rule - end -end - -class Titans < Gods - @@rule = "Cronus" - include Olympians # OK to cause warning (intentional) -end - -test_ok(Gods.new.ruler0 == "Cronus") -test_ok(Gods.ruler1 == "Cronus") -test_ok(Gods.ruler2 == "Cronus") -test_ok(Titans.ruler1 == "Cronus") -test_ok(Titans.ruler2 == "Cronus") -atlas = Titans.new -test_ok(atlas.ruler0 == "Cronus") -test_ok(atlas.ruler3 == "Zeus") - -test_check "trace" -$x = 1234 -$y = 0 -trace_var :$x, proc{$y = $x} -$x = 40414 -test_ok($y == $x) - -untrace_var :$x -$x = 19660208 -test_ok($y != $x) - -trace_var :$x, proc{$x *= 2} -$x = 5 -test_ok($x == 10) - -untrace_var :$x - -test_check "defined?" - -test_ok(defined?($x)) # global variable -test_ok(defined?($x) == 'global-variable')# returns description - -foo=5 -test_ok(defined?(foo)) # local variable - -test_ok(defined?(Array)) # constant -test_ok(defined?(Object.new)) # method -test_ok(!defined?(Object.print))# private method -test_ok(defined?(1 == 2)) # operator expression - -class Foo - def foo - p :foo - end - protected :foo - def bar(f) - test_ok(defined?(self.foo)) - test_ok(defined?(f.foo)) - end -end -f = Foo.new -test_ok(defined?(f.foo) == nil) -f.bar(f) - -def defined_test - return !defined?(yield) -end - -test_ok(defined_test) # not iterator -test_ok(!defined_test{}) # called as iterator - -test_check "alias" -class Alias0 - def foo; "foo" end -end -class Alias1<Alias0 - alias bar foo - def foo; "foo+" + super end -end -class Alias2<Alias1 - alias baz foo - undef foo -end - -x = Alias2.new -test_ok(x.bar == "foo") -test_ok(x.baz == "foo+foo") - -# test_check for cache -test_ok(x.baz == "foo+foo") - -class Alias3<Alias2 - def foo - defined? super - end - def bar - defined? super - end - def quux - defined? super - end -end -x = Alias3.new -test_ok(!x.foo) -test_ok(x.bar) -test_ok(!x.quux) - -test_check "path" -test_ok(File.basename("a") == "a") -test_ok(File.basename("a/b") == "b") -test_ok(File.basename("a/b/") == "b") -test_ok(File.basename("/") == "/") -test_ok(File.basename("//") == "/") -test_ok(File.basename("///") == "/") -test_ok(File.basename("a/b////") == "b") -test_ok(File.basename("a.rb", ".rb") == "a") -test_ok(File.basename("a.rb///", ".rb") == "a") -test_ok(File.basename("a.rb///", ".*") == "a") -test_ok(File.basename("a.rb///", ".c") == "a.rb") -test_ok(File.dirname("a") == ".") -test_ok(File.dirname("/") == "/") -test_ok(File.dirname("/a") == "/") -test_ok(File.dirname("a/b") == "a") -test_ok(File.dirname("a/b/c") == "a/b") -test_ok(File.dirname("/a/b/c") == "/a/b") -test_ok(File.dirname("/a/b/") == "/a") -test_ok(File.dirname("/a/b///") == "/a") -case Dir.pwd -when %r'\A\w:' - test_ok(/\A\w:\/\z/ =~ File.expand_path(".", "/")) - test_ok(/\A\w:\/a\z/ =~ File.expand_path("a", "/")) - dosish = true -when %r'\A//' - test_ok(%r'\A//[^/]+/[^/]+\z' =~ File.expand_path(".", "/")) - test_ok(%r'\A//[^/]+/[^/]+/a\z' =~ File.expand_path(".", "/")) - dosish = true -else - test_ok(File.expand_path(".", "/") == "/") - test_ok(File.expand_path("sub", "/") == "/sub") -end -if dosish - test_ok(File.expand_path("/", "//machine/share/sub") == "//machine/share") - test_ok(File.expand_path("/dir", "//machine/share/sub") == "//machine/share/dir") - test_ok(File.expand_path("/", "z:/sub") == "z:/") - test_ok(File.expand_path("/dir", "z:/sub") == "z:/dir") -end -test_ok(File.expand_path(".", "//") == "//") -test_ok(File.expand_path("sub", "//") == "//sub") - -test_check "gc" -begin - 1.upto(10000) { - tmp = [0,1,2,3,4,5,6,7,8,9] - } - tmp = nil - test_ok true -rescue - test_ok false -end -class S - def initialize(a) - @a = a - end -end -l=nil -100000.times { - l = S.new(l) -} -GC.start -test_ok true # reach here or dumps core -l = [] -100000.times { - l.push([l]) -} -GC.start -test_ok true # reach here or dumps core - -if $failed > 0 - printf "test: %d failed %d\n", $ntest, $failed -else - printf "end of test(test: %d)\n", $ntest -end diff --git a/ruby_1_8_5/sample/testunit/adder.rb b/ruby_1_8_5/sample/testunit/adder.rb deleted file mode 100644 index aa5c88cc7b..0000000000 --- a/ruby_1_8_5/sample/testunit/adder.rb +++ /dev/null @@ -1,13 +0,0 @@ -# Author:: Nathaniel Talbott. -# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. -# License:: Ruby license. - -class Adder - def initialize(number) - @number = number - end - def add(number) - return @number + number - end -end - diff --git a/ruby_1_8_5/sample/testunit/subtracter.rb b/ruby_1_8_5/sample/testunit/subtracter.rb deleted file mode 100644 index 2c08247805..0000000000 --- a/ruby_1_8_5/sample/testunit/subtracter.rb +++ /dev/null @@ -1,12 +0,0 @@ -# Author:: Nathaniel Talbott. -# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. -# License:: Ruby license. - -class Subtracter - def initialize(number) - @number = number - end - def subtract(number) - return @number - number - end -end diff --git a/ruby_1_8_5/sample/testunit/tc_adder.rb b/ruby_1_8_5/sample/testunit/tc_adder.rb deleted file mode 100644 index 8453beb20a..0000000000 --- a/ruby_1_8_5/sample/testunit/tc_adder.rb +++ /dev/null @@ -1,18 +0,0 @@ -# Author:: Nathaniel Talbott. -# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. -# License:: Ruby license. - -require 'test/unit' -require 'adder' - -class TC_Adder < Test::Unit::TestCase - def setup - @adder = Adder.new(5) - end - def test_add - assert_equal(7, @adder.add(2), "Should have added correctly") - end - def teardown - @adder = nil - end -end diff --git a/ruby_1_8_5/sample/testunit/tc_subtracter.rb b/ruby_1_8_5/sample/testunit/tc_subtracter.rb deleted file mode 100644 index d2c8313350..0000000000 --- a/ruby_1_8_5/sample/testunit/tc_subtracter.rb +++ /dev/null @@ -1,18 +0,0 @@ -# Author:: Nathaniel Talbott. -# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. -# License:: Ruby license. - -require 'test/unit' -require 'subtracter' - -class TC_Subtracter < Test::Unit::TestCase - def setup - @subtracter = Subtracter.new(5) - end - def test_subtract - assert_equal(3, @subtracter.subtract(2), "Should have subtracted correctly") - end - def teardown - @subtracter = nil - end -end diff --git a/ruby_1_8_5/sample/testunit/ts_examples.rb b/ruby_1_8_5/sample/testunit/ts_examples.rb deleted file mode 100644 index 3d24dd6522..0000000000 --- a/ruby_1_8_5/sample/testunit/ts_examples.rb +++ /dev/null @@ -1,7 +0,0 @@ -# Author:: Nathaniel Talbott. -# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. -# License:: Ruby license. - -require 'test/unit' -require 'tc_adder' -require 'tc_subtracter' diff --git a/ruby_1_8_5/sample/time.rb b/ruby_1_8_5/sample/time.rb deleted file mode 100644 index 84fa9e1a8d..0000000000 --- a/ruby_1_8_5/sample/time.rb +++ /dev/null @@ -1,8 +0,0 @@ -#! /usr/local/bin/ruby -cmd = ARGV.join(" ") -b = Time.now -system(cmd) -e = Time.now -ut, st, cut, cst = Time.times.to_a -total = (e - b).to_f -STDERR.printf "%11.1f real %11.1f user %11.1f sys\n", total, cut, cst diff --git a/ruby_1_8_5/sample/trojan.rb b/ruby_1_8_5/sample/trojan.rb deleted file mode 100644 index 3a35ac21c2..0000000000 --- a/ruby_1_8_5/sample/trojan.rb +++ /dev/null @@ -1,15 +0,0 @@ -#! /usr/local/bin/ruby - -path = ENV['PATH'].split(File::PATH_SEPARATOR) - -for dir in path - if File.directory?(dir) - for f in d = Dir.open(dir) - fpath = File.join(dir, f) - if File.file?(fpath) && (File.stat(fpath).mode & 022) != 0 - printf("file %s is writable from other users\n", fpath) - end - end - d.close - end -end diff --git a/ruby_1_8_5/sample/tsvr.rb b/ruby_1_8_5/sample/tsvr.rb deleted file mode 100644 index 52cdd32dce..0000000000 --- a/ruby_1_8_5/sample/tsvr.rb +++ /dev/null @@ -1,20 +0,0 @@ -# socket example - server side using thread -# usage: ruby tsvr.rb - -require "socket" - -gs = TCPserver.open(0) -addr = gs.addr -addr.shift -printf("server is on %s\n", addr.join(":")) - -loop do - Thread.start(gs.accept) do |s| - print(s, " is accepted\n") - while line = s.gets - s.write(line) - end - print(s, " is gone\n") - s.close - end -end diff --git a/ruby_1_8_5/sample/uumerge.rb b/ruby_1_8_5/sample/uumerge.rb deleted file mode 100644 index 2576bcb864..0000000000 --- a/ruby_1_8_5/sample/uumerge.rb +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env ruby - -if ARGV[0] == "-c" - out_stdout = 1 - ARGV.shift -end - -$sawbegin = 0 -$sawend = 0 - -while line = gets() - if /^begin\s*(\d*)\s*(\S*)/ =~ line - $mode, $file = $1, $2 - $sawbegin+=1 - if out_stdout - out = STDOUT - else - out = open($file, "w") if $file != "" - end - out.binmode - break - end -end - -raise "missing begin" unless $sawbegin - -out.binmode -while line = gets() - if /^end/ =~ line - $sawend+=1 - out.close unless out_stdout - File.chmod $mode.oct, $file unless out_stdout - next - end - line.sub!(/[a-z]+$/, "") # handle stupid trailing lowercase letters - next if /[a-z]/ =~ line - next if !(((($_[0] - 32) & 077) + 2) / 3 == $_.length / 4) - out << $_.unpack("u") if $sawbegin > $sawend -end - -raise "missing end" if $sawbegin > $sawend -raise "missing begin" if ! $sawbegin -exit 0 diff --git a/ruby_1_8_5/sample/webrick/demo-app.rb b/ruby_1_8_5/sample/webrick/demo-app.rb deleted file mode 100644 index c7a2a0a6a4..0000000000 --- a/ruby_1_8_5/sample/webrick/demo-app.rb +++ /dev/null @@ -1,66 +0,0 @@ -require "pp" - -module DemoApplication - def initialize(config, enctype) - super - @enctype = enctype - end - - def do_GET(req, res) - if req.path_info != "/" - res.set_redirect(WEBrick::HTTPStatus::Found, req.script_name + "/") - end - res.body =<<-_end_of_html_ - <HTML> - <FORM method="POST" enctype=#{@enctype}> - text: <INPUT type="text" name="text"><BR> - file: <INPUT type="file" name="file"><BR> - check: - <INPUT type="checkbox" name="check" value="a">a, - <INPUT type="checkbox" name="check" value="b">b, - <INPUT type="checkbox" name="check" value="c">c, - <BR> - <INPUT type="submit"> - </FORM> - </HTML> - _end_of_html_ - res['content-type'] = 'text/html; charset=iso-8859-1' - end - - def do_POST(req, res) - if req["content-length"].to_i > 1024*10 - raise WEBrick::HTTPStatus::Forbidden, "file size too large" - end - res.body =<<-_end_of_html_ - <HTML> - <H2>Query Parameters</H2> - #{display_query(req.query)} - <A href="#{req.path}">return</A> - <H2>Request</H2> - <PRE>#{WEBrick::HTMLUtils::escape(PP::pp(req, "", 80))}</PRE> - <H2>Response</H2> - <PRE>#{WEBrick::HTMLUtils::escape(PP::pp(res, "", 80))}</PRE> - </HTML> - _end_of_html_ - res['content-type'] = 'text/html; charset=iso-8859-1' - end - - private - - def display_query(q) - ret = "" - q.each{|key, val| - ret << "<H3>#{WEBrick::HTMLUtils::escape(key)}</H3>" - ret << "<TABLE border=1>" - ret << make_tr("val", val.inspect) - ret << make_tr("val.to_a", val.to_a.inspect) - ret << make_tr("val.to_ary", val.to_ary.inspect) - ret << "</TABLE>" - } - ret - end - - def make_tr(arg0, arg1) - "<TR><TD>#{arg0}</TD><TD>#{WEBrick::HTMLUtils::escape(arg1)}</TD></TR>" - end -end diff --git a/ruby_1_8_5/sample/webrick/demo-multipart.cgi b/ruby_1_8_5/sample/webrick/demo-multipart.cgi deleted file mode 100644 index 0893fadadf..0000000000 --- a/ruby_1_8_5/sample/webrick/demo-multipart.cgi +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env ruby -require "webrick/cgi" -require "webrick/https" # should load if it runs on HTTPS server -require "./demo-app" - -class DemoCGI < WEBrick::CGI - include DemoApplication -end - -config = { :NPH => false } -cgi = DemoCGI.new(config, "multipart/form-data") -cgi.start diff --git a/ruby_1_8_5/sample/webrick/demo-servlet.rb b/ruby_1_8_5/sample/webrick/demo-servlet.rb deleted file mode 100644 index 9c18cc65d1..0000000000 --- a/ruby_1_8_5/sample/webrick/demo-servlet.rb +++ /dev/null @@ -1,6 +0,0 @@ -require "webrick" -require "./demo-app" - -class DemoServlet < WEBrick::HTTPServlet::AbstractServlet - include DemoApplication -end diff --git a/ruby_1_8_5/sample/webrick/demo-urlencoded.cgi b/ruby_1_8_5/sample/webrick/demo-urlencoded.cgi deleted file mode 100644 index e4706f8b59..0000000000 --- a/ruby_1_8_5/sample/webrick/demo-urlencoded.cgi +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env ruby -require "webrick/cgi" -require "webrick/https" # should load if it runs on HTTPS server -require "./demo-app" - -class DemoCGI < WEBrick::CGI - include DemoApplication -end - -config = { :NPH => false } -cgi = DemoCGI.new(config, "application/x-www-form-urlencoded") -cgi.start diff --git a/ruby_1_8_5/sample/webrick/hello.cgi b/ruby_1_8_5/sample/webrick/hello.cgi deleted file mode 100644 index 35d2240df0..0000000000 --- a/ruby_1_8_5/sample/webrick/hello.cgi +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env ruby -require "webrick/cgi" - -class HelloCGI < WEBrick::CGI - def do_GET(req, res) - res["content-type"] = "text/plain" - res.body = "Hello, world.\n" - end -end - -HelloCGI.new.start diff --git a/ruby_1_8_5/sample/webrick/hello.rb b/ruby_1_8_5/sample/webrick/hello.rb deleted file mode 100644 index 4d02676818..0000000000 --- a/ruby_1_8_5/sample/webrick/hello.rb +++ /dev/null @@ -1,8 +0,0 @@ -require "webrick" - -class HelloServlet < WEBrick::HTTPServlet::AbstractServlet - def do_GET(req, res) - res["content-type"] = "text/plain" - res.body = "Hello, world.\n" - end -end diff --git a/ruby_1_8_5/sample/webrick/httpd.rb b/ruby_1_8_5/sample/webrick/httpd.rb deleted file mode 100644 index b0edf47582..0000000000 --- a/ruby_1_8_5/sample/webrick/httpd.rb +++ /dev/null @@ -1,23 +0,0 @@ -require "webrick" - -httpd = WEBrick::HTTPServer.new( - :DocumentRoot => File::dirname(__FILE__), - :Port => 10080, - :Logger => WEBrick::Log.new($stderr, WEBrick::Log::DEBUG), - :AccessLog => [ - [ $stderr, WEBrick::AccessLog::COMMON_LOG_FORMAT ], - [ $stderr, WEBrick::AccessLog::REFERER_LOG_FORMAT ], - [ $stderr, WEBrick::AccessLog::AGENT_LOG_FORMAT ], - ], - :CGIPathEnv => ENV["PATH"] # PATH environment variable for CGI. -) - -require "./hello" -httpd.mount("/hello", HelloServlet) - -require "./demo-servlet" -httpd.mount("/urlencoded", DemoServlet, "application/x-www-form-urlencoded") -httpd.mount("/multipart", DemoServlet, "multipart/form-data") - -trap(:INT){ httpd.shutdown } -httpd.start diff --git a/ruby_1_8_5/sample/webrick/httpproxy.rb b/ruby_1_8_5/sample/webrick/httpproxy.rb deleted file mode 100644 index bca0cc4626..0000000000 --- a/ruby_1_8_5/sample/webrick/httpproxy.rb +++ /dev/null @@ -1,26 +0,0 @@ -require "webrick" -require "webrick/httpproxy" - -# :ProxyContentHandler will be invoked before sending -# response to User-Agenge. You can inspect the pair of -# request and response messages (or can edit the response -# message if necessary). - -pch = Proc.new{|req, res| - p [ req.request_line, res.status_line ] -} - -def upstream_proxy - if prx = ENV["http_proxy"] - return URI.parse(prx) - end - return nil -end - -httpd = WEBrick::HTTPProxyServer.new( - :Port => 10080, - :ProxyContentHandler => pch, - :ProxyURI => upstream_proxy -) -Signal.trap(:INT){ httpd.shutdown } -httpd.start diff --git a/ruby_1_8_5/sample/webrick/httpsd.rb b/ruby_1_8_5/sample/webrick/httpsd.rb deleted file mode 100644 index a120782c3c..0000000000 --- a/ruby_1_8_5/sample/webrick/httpsd.rb +++ /dev/null @@ -1,33 +0,0 @@ -require "webrick" -require "webrick/https" - -hostname = WEBrick::Utils::getservername -subject = [["O", "ruby-lang.org"], ["OU", "sample"], ["CN", hostname]] -comment = "Comment for self-signed certificate" - -httpd = WEBrick::HTTPServer.new( - :DocumentRoot => File::dirname(__FILE__), - :Port => 10443, - :SSLEnable => true, - - # Specify key pair and server certificate. - # :SSLPrivateKey => OpenSSL::PKey::RSA.new(File.read("server.key")), - # :SSLCertificate => OpenSSL::X509::Certificate.new(File.read("server.crt")), - - # specify the following SSL options if you want to use auto - # generated self-signed certificate. - :SSLCertName => subject, - :SSLComment => comment, - - :CGIPathEnv => ENV["PATH"] # PATH environment variable for CGI. -) - -require "./hello" -httpd.mount("/hello", HelloServlet) - -require "./demo-servlet" -httpd.mount("/urlencoded", DemoServlet, "application/x-www-form-urlencoded") -httpd.mount("/multipart", DemoServlet, "multipart/form-data") - -trap(:INT){ httpd.shutdown } -httpd.start |