[#6219] Ruby連載 第4話 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

32 messages 1998/02/04
[#6221] Re: Ruby連載 第4話 — Shin-ichiro HARA <sinara@...> 1998/02/04

原です。

[#6224] Re: Ruby連載 第4話 — Yasunari Momoi <conan@...> 1998/02/04

ももちゃん@あるもにこすです.

[#6225] Re: Ruby連載 第4話 — matz@... (Yukihiro Matsumoto) 1998/02/04

まつもと ゆきひろです

[#6249] Re: i++ — 助田 雅紀 <masaki.suketa@...>

助田です。

33 messages 1998/02/04
[#6252] Re: i++ — gotoken@... (GOTO Kentaro) 1998/02/05

ことけんです

[#6255] Re: i++ — matz@... (Yukihiro Matsumoto) 1998/02/05

まつもと ゆきひろです

[#6260] Re: i++ — Yuji Shigehiro <sigehiro@...> 1998/02/05

しげひろです.

[#6314] RE: ruby's design policy (Re: I'd like to subscr ibe this ML) — 助田 雅紀 <masaki.suketa@...>

オブジェクト指向周辺をぶらぶらしている助田です。

11 messages 1998/02/06

[#6333] ruby 流に添削して下さい — nkon@...2.3web.ne.jp

13 messages 1998/02/07
[#6335] Re: ruby 流に添削して下さい — OZAWA Sakuro <crouton@...> 1998/02/07

さくです.

[#6372] ruby 1.1b7 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

24 messages 1998/02/10
[#6402] parsedate (Re: ruby 1.1b7 released) — WATANABE Hirofumi <watanabe@...> 1998/02/13

わたなべです.

[#6405] Re: parsedate (Re: ruby 1.1b7 released) — Tadayoshi Funaba <tadf@...> 1998/02/13

ふなばです。

[#6407] Re: parsedate (Re: ruby 1.1b7 released) — matz@... (Yukihiro Matsumoto) 1998/02/13

まつもと ゆきひろです

[#6373] call for scripts — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

133 messages 1998/02/10
[#6414] Re: call for scripts — Terutuoshi Kaneshiro <k-teru@...06.odn.ne.jp> 1998/02/14

金城です.

[#6428] Re: call for scripts — matz@... (Yukihiro Matsumoto) 1998/02/16

まつもと ゆきひろです

[#6448] Re: call for scripts — Terutuoshi Kaneshiro <k-teru@...06.odn.ne.jp> 1998/02/16

金城です.

[#6452] Re: call for scripts — matz@... (Yukihiro Matsumoto) 1998/02/17

まつもと ゆきひろです

[#6481] Re: call for scripts — Kikutani Makoto <kikutani@...> 1998/02/17

きくたに@ぷ〜たろ〜です。

[#6483] Re: call for scripts — OZAWA Sakuro <crouton@...> 1998/02/17

さくです.

[#6495] Re: call for scripts — WATANABE Hirofumi <watanabe@...> 1998/02/18

わたなべです.

[#6416] Re: call for scripts — shugo@... (Shugo Maeda) 1998/02/14

前田です。

[#6417] rgrep (Re: call for scripts) — shugo@... (Shugo Maeda) 1998/02/15

前田です。

[#6423] Re: rgrep (Re: call for scripts) — matz@... (Yukihiro Matsumoto) 1998/02/16

まつもと ゆきひろです

[#6612] Re: call for scripts — Tadayoshi Funaba <tadf@...> 1998/02/21

ふなばです。

[#6582] File::Separator on cygwin — OZAWA Sakuro <ozawa@...>

小澤さくです。

19 messages 1998/02/20
[#6583] Re: File::Separator on cygwin — WATANABE Hirofumi <watanabe@...> 1998/02/20

わたなべです.

[#6586] Re: File::Separator on cygwin — OZAWA Sakuro <ozawa@...> 1998/02/20

小澤さくです。

[#6591] ruby 1.1b8 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

32 messages 1998/02/20
[#6620] rbc.rb and binding — shugo@... (Shugo Maeda) 1998/02/22

前田です。

[#6629] Re: rbc.rb and binding — keiju@... (石塚圭樹 ) 1998/02/23

けいじゅ@日本ラショナルソフトウェアです.

[#6643] Re: rbc.rb and binding — shugo@... (Shugo Maeda) 1998/02/23

前田です。

[#6649] Re: rbc.rb and binding — keiju@... (石塚圭樹 ) 1998/02/23

けいじゅ@日本ラショナルソフトウェアです.

[#6650] Re: rbc.rb and binding — matz@... (Yukihiro Matsumoto) 1998/02/23

まつもと ゆきひろです

[#6667] JRI 0.5 worked (was Re: rbc.rb and binding) — OZAWA Sakuro <crouton@...> 1998/02/23

さくです.

[#6687] Re: JRI 0.5 worked (was Re: rbc.rb and binding) — shugo@... (Shugo Maeda) 1998/02/24

前田です。

[#6712] JRI and JDBC — OZAWA Sakuro <ozawa@...> 1998/02/24

小澤さくです。

[#6635] hello — WATANABE Tetsuya <tetsu@...>

渡辺哲也と申します。

15 messages 1998/02/23

[#6706] Re: Counter class — toyofuku@...

豊福@パパイヤです。

12 messages 1998/02/24

[#6735] Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda)

前田です。

27 messages 1998/02/24
[#6746] Re: Mutex/ConditionVariable/Queue — keiju@... (石塚圭樹 ) 1998/02/25

けいじゅ@日本ラショナルソフトウェアです.

[#6747] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/25

前田です。

[#6752] Re: Mutex/ConditionVariable/Queue — senda@... 1998/02/25

From: shugo@po.aianet.ne.jp (Shugo Maeda)

[#6754] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/25

前田です。

[#6756] Re: Mutex/ConditionVariable/Queue — senda@... 1998/02/25

From: shugo@po.aianet.ne.jp (Shugo Maeda)

[#6786] Re: Mutex/ConditionVariable/Queue — senda@...

From: shugo@po.aianet.ne.jp (Shugo Maeda)

33 messages 1998/02/26
[#6791] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/26

前田です。

[#6794] Re: Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda) 1998/02/26

前田です。

[#6796] Re: Mutex/ConditionVariable/Queue — keiju@... (石塚圭樹 ) 1998/02/26

けいじゅ@日本ラショナルソフトウェアです.

[ruby-list:6673] tree.rb

From: WATANABE Tetsuya <tetsu@...>
Date: 1998-02-23 23:56:21 UTC
List: ruby-list #6673
>>>>> "matz" == Yukihiro Matsumoto <matz@netlab.co.jp> writes:
>         「第1回!夏に出版予定Ruby本に採用されて著者サイン本
>         をゲットしよう」大会

ということで、参加表明です。うまくゲットできるかな?

この後、hex dump と簡単なサンプルにちょうどいいかもしれな
い head(1) もどきがいきます。一度に書き過ぎかな?

ruby スクリプトはこれが最初なので、「らしい」書き方ができ
ていないと思うので、気がつくところがあればどんどん教えて
ください。

# 小澤さんにはすでにはすでに助言いただいて、修正させていた
# だきました。感謝。

このスクリプトを書いていていいなと思ったのは、変数のスコー
プが分かりやすいことでした。宣言せずに「ローカル」という
のはとてもいいです。また、グローバル変数が明示的なのも気
に入りました。

なれるとよさそうなので、ちょっとした UNIX のツールを ruby 
でインプリメントして勉強しようと思っています(私の新しい言
語の覚え方)。

■ Ruby で tree

ディレクトリの構造を表示する tree というコマンドがありま
す。これの Ruby version です。

■ 使い方

オプションを指定しない場合、カレントディレクトリの表示し
ます。

------------------------------
$ ruby tree.rb
|-+ .
  |-- t1.rb
  |-- tree.rb
  |-- tree.rb,v
  |-- tree.rb~

4 files
------------------------------

ディレクトリのみ表示、引数に -d と表示を行いたいディレク
トリを指定します。

------------------------------
$ ruby ~/src/ruby/tree.rb -d
|-+ .
  |-+ ext
  | |-+ Win32API
  | |-+ curses
  | |-+ dbm
  | |-+ etc
  | |-+ fcntl
  | |-+ kconv
  | |-+ md5
  | |-+ socket
  | |-+ tcltklib
  | | |-+ demo
  | | |-+ lib
  | | |-+ sample
  | |-+ tkutil
  |-+ lib
  |-+ missing
  |-+ sample
  |-+ win32
  |-+ x68

19 directores
------------------------------

ディレクトリの深さを -level=「数字」で指定します。

------------------------------
$ ruby tree.rb -d -l=3 /home/tetsu
------------------------------

■ ソースコード

------------------------------
#! /usr/local/bin/ruby
# /home/tetsu/src/ruby/tree.rb
# Created: February 21,1998 Saturday 03:12:14
# Author: tetsu(WATANABE Tetsuya)
# $Id: tree.rb,v 1.4 1998/02/23 14:40:45 tetsu Exp $
# usage: tree.rb [-adf] [-l=number] [dir_name]

def tree(dir, level)
  return if $opt_l and level >= Integer($opt_l)

  dirp = Dir.open(dir)
  files = []
  for f in dirp
    next if  (f == '.' or f == '..')
    next unless $opt_a or f !~ /^\./
    full = dir + File::Separator + f
    next if $opt_d and not test(?d, full)
    files.push(full)
  end
  dirp.close

  files = files.sort unless $opt_f

  prefix = '  ' + $prefix.join('')
  $prefix.push('| ')

  cnt = 1;

  for f in files
    if files.length == cnt
      $prefix[level] = '  '
    end
    cnt += 1

    if test(?d, f)
      print prefix, '|-+ ', File.basename(f),
	if test(?l, f); ' -> ' + File.readlink(f) else '' end,
	"\n"
      $cnt_dir += 1
      tree(f, level + 1) unless test(?l, f)
    else
      print prefix, '|-- ', File.basename(f),
	if test(?l, f); ' -> ' + File.readlink(f) else '' end,
	"\n"
      $cnt_file += 1
    end
  end
  $prefix.pop
end

def pr_cnt
  print "\n";
  if ($cnt_dir)
    print $cnt_dir, ' director', if $cnt_dir > 1; 'es' else 'y' end 
  end
  if ($cnt_file)
    print ' ' if $cnt_dir
    print $cnt_file, ' file', if $cnt_file > 1; 's' else '' end
  end
  print "\n"
end

def usage
  STDERR.print <<E
usage: #$0 [-adf] [-level=number] [directory_name]
 -a     all files(include .file)
 -f     no sort
 -d     directory only
 -l=num depth of directores
E
  exit 1
end

while $_ = ARGV[0] and /^-/
  ARGV.shift
  if /[adf]/
    $opt_a = 1 if /a/
    $opt_d = 1 if /d/
    $opt_f = 1 if /f/
  elsif /^-(l|level)=(\d+)/;
    $opt_l = $2;
  else
    usage
  end
end

$prefix = []
dir = ARGV.shift || '.'
print '|-+ ', dir, "\n"
tree(dir, 0)
pr_cnt

exit
------------------------------

--
WATANABE Tetsuya HP Japan PSO
e-mail  tetsu@jpn.hp.com

In This Thread