diff options
author | Yukihiro Matsumoto <matz@ruby-lang.org> | 1995-03-15 14:59:18 +0900 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2019-08-17 22:09:31 +0900 |
commit | d349889e770a2078c247d9d28070e86a54b856f4 (patch) | |
tree | 8bdbf87f3ff78ef237c4ff8efa061fbb8dc5a226 /sample | |
parent | 881c5a9c320c637ee0f6526b40cf70c1379ab656 (diff) |
version 0.69v0_69
https://cache.ruby-lang.org/pub/ruby/1.0/ruby-0.69.tar.gz
Wed Mar 15 14:59:18 1995 Yukihiro Matsumoto (matz@ix-02)
* version 0.69
* eval.c(method_missing): unknownから名称変更.
* eval.c(single_method_added): 特異メソッドが定義された時に呼ばれ
るメソッド.hookとして使える.実際に定義される直前に呼ばれる.
Tue Mar 14 14:46:44 1995 Yukihiro Matsumoto (matz@ix-02)
* ruby.c(proc_options): 引数の解析を自分でやることにより引数指定の
方法がperlに近付いた.getopt_longはもう使わない.
* dir.c(glob): `{}'のネストを許すようにした.
Mon Mar 13 17:56:25 1995 Yukihiro Matsumoto (matz@ix-02)
* glob.c: Glob(ワイルドカードオブジェクト)はなくなった.ワイルドカー
ドの展開はDir.glob(文字列)を使う.ワイルドカードのマッチは正規表
現で代用.
Fri Mar 10 18:35:46 1995 Yukihiro Matsumoto (matz@ix-02)
* eval.c: Mathのようなモジュールは自分自身でextendする.
* eval.c: クラスやモジュールを定義した既に同名のものがあれば追加定
義となるように.ただし.superクラスの違いなどはチェックする.
* regex.c: debug.
* math.c: 定数PIとEを定義.
Thu Mar 9 21:35:12 1995 Yukihiro Matsumoto (matz@ix-02)
* regex.c: EUC,SJISモードでは0x80以上の8進,16進リテラルを禁止.
* regex.c: クラス内でも数値リテラル・文字クラスが使えるようした.
Wed Mar 8 17:39:05 1995 Yukihiro Matsumoto (matz@ix-02)
* regex.c: \200など括弧の数以上の表現は8進リテラルと解釈する.ただ
し,\1から\9までは例外.
* regex.c: \9以上のリファレンスも有効にした.
Tue Mar 7 14:26:01 1995 Yukihiro Matsumoto (matz@ix-02)
* eval.c(public/private): スコープ制御メソッドの名称変更.静的なア
クセスも出来るようにしてみたが,不採用.
Mon Mar 6 19:34:32 1995 Yukihiro Matsumoto (matz@ix-02)
* eval.c(inlcude): メソッド化.動的にモジュールをインクルードでき
るように.さらに任意のオブジェクトにもモジュールをインクルードで
きるメソッド `extend'も用意した.
* parse.y: 文法からincludeを削除.メソッド化.
Tue Feb 28 15:35:10 1995 Yukihiro Matsumoto (matz@ix-02)
* parse.y: 配列,連想配列の最後に`,'をおけるように.
Diffstat (limited to 'sample')
-rw-r--r-- | sample/Artistic | 0 | ||||
-rw-r--r-- | sample/evaldef.rb | 4 | ||||
-rw-r--r-- | sample/export.rb | 32 | ||||
-rw-r--r-- | sample/exyacc.rb | 2 | ||||
-rw-r--r-- | sample/from.rb | 4 | ||||
-rw-r--r-- | sample/opt_x.rb | 0 | ||||
-rw-r--r-- | sample/ruby-mode.el | 120 | ||||
-rwxr-xr-x | sample/uumerge.rb | 20 |
8 files changed, 162 insertions, 20 deletions
diff --git a/sample/Artistic b/sample/Artistic deleted file mode 100644 index e69de29bb2..0000000000 --- a/sample/Artistic +++ /dev/null diff --git a/sample/evaldef.rb b/sample/evaldef.rb index a705300a94..2cedd54999 100644 --- a/sample/evaldef.rb +++ b/sample/evaldef.rb @@ -18,8 +18,8 @@ class Bar : Foo end end -f = foo.new -b = bar.new +f = Foo.new +b = Bar.new b.foo b.bar diff --git a/sample/export.rb b/sample/export.rb index a6dfa8e40e..2d05d8afd7 100644 --- a/sample/export.rb +++ b/sample/export.rb @@ -1,18 +1,38 @@ # method access permission # output: # foobar -# foo +# Foo class Foo - export :printf + 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.unexport :printf -foo.export :foobar +f = Foo.new +#Foo.private :printf +Foo.public :foobar f.foobar -f.printf "%s\n", foo +f.printf "%s\n", Foo + +f.quux + +class Bar : Foo + def quux + super + baz() + end +end + +Bar.new.quux diff --git a/sample/exyacc.rb b/sample/exyacc.rb index ad6191c03d..cd1170feb4 100644 --- a/sample/exyacc.rb +++ b/sample/exyacc.rb @@ -1,4 +1,4 @@ -#! /usr/local/bin/ruby -Cn +#! /usr/local/bin/ruby -Kn # usage: exyacc.rb [yaccfiles] # this is coverted from exyacc.pl in the camel book diff --git a/sample/from.rb b/sample/from.rb index f6602943af..a8baf4f375 100644 --- a/sample/from.rb +++ b/sample/from.rb @@ -17,8 +17,8 @@ module ParseDate if date.sub(/\s+(\d+:\d+(:\d+)?)/, ' ') time = $1 end - if date =~ /19\d\d/ - year = $& + if date =~ /19(\d\d)/ + year = $1 end if date.sub(/\s*(\d+)\s+(#{MONTHPAT})\S*\s+/, ' ') dayofmonth = $1 diff --git a/sample/opt_x.rb b/sample/opt_x.rb deleted file mode 100644 index e69de29bb2..0000000000 --- a/sample/opt_x.rb +++ /dev/null diff --git a/sample/ruby-mode.el b/sample/ruby-mode.el index aa91be330d..fd44dc661b 100644 --- a/sample/ruby-mode.el +++ b/sample/ruby-mode.el @@ -18,7 +18,7 @@ (defconst ruby-block-end-re "end") (defconst ruby-delimiter - (concat "[$/<(){}#\"'`]\\|\\[\\|\\]\\|\\b\\(" + (concat "[$/(){}#\"'`]\\|\\[\\|\\]\\|\\b\\(" ruby-block-beg-re "\\|" ruby-block-end-re "\\)\\b") ) @@ -178,9 +178,7 @@ The variable ruby-indent-level controls the amount of indentation. (t (goto-char indent-point) (setq in-string t)))) - ((or (string= "/" w) - (string= "<" w)) - (if (string= "<" w) (setq w ">")) + ((string= "/" w) (let (c) (save-excursion (goto-char pnt) @@ -263,6 +261,120 @@ The variable ruby-indent-level controls the amount of indentation. (error (format "bad string %s" w))))))) (list in-string in-paren (car nest) depth))) +(defun ruby-parse-region (start end) + (let ((indent-point end) + (indent 0) + (in-string nil) + (in-paren nil) + (depth 0) + (nest nil)) + (save-excursion + (if start + (goto-char start) + (ruby-beginning-of-defun)) + (while (and (> indent-point (point)) + (re-search-forward ruby-delimiter indent-point t)) + (let ((w (buffer-substring (match-beginning 0) (match-end 0))) + (pnt (match-beginning 0))) + (cond + ((or (string= "\"" w) ;skip string + (string= "'" w) + (string= "`" w)) + (cond + ((string= w (char-to-string (char-after (point)))) + (forward-char 1)) + ((re-search-forward (format "[^\\]%s" w) indent-point t) + nil) + (t + (goto-char indent-point) + (setq in-string t)))) + ((or (string= "/" w) + (string= "<" w)) + (if (string= "<" w) (setq w ">")) + (let (c) + (save-excursion + (goto-char pnt) + (skip-chars-backward " \t") + (setq c (char-after (1- (point)))) + (if c (setq c (char-syntax c)))) + (if (or (eq c ?.) + (and (eq c ?w) + (save-excursion + (forward-word -1) + (or + (looking-at ruby-block-beg-re) + (looking-at ruby-block-mid-re))))) + (cond + ((string= w (char-to-string (char-after (point)))) + (forward-char 1)) + ((re-search-forward (format "[^\\]%s" w) indent-point t) + nil) + (t + (goto-char indent-point) + (setq in-string t)))))) + ((string= "$" w) ;skip $char + (forward-char 1)) + ((string= "#" w) ;skip comment + (forward-line 1)) + ((string= "(" w) ;skip to matching paren + (let ((orig depth)) + (setq nest (cons (point) nest)) + (setq depth (1+ depth)) + (while (and (/= depth orig) + (re-search-forward "[()]" indent-point t)) + (cond + ((= (char-after (match-beginning 0)) ?\( ) + (setq nest (cons (point) nest)) + (setq depth (1+ depth))) + (t + (setq nest (cdr nest)) + (setq depth (1- depth))))) + (if (> depth orig) (setq in-paren ?\()))) + ((string= "[" w) ;skip to matching paren + (let ((orig depth)) + (setq nest (cons (point) nest)) + (setq depth (1+ depth)) + (while (and (/= depth orig) + (re-search-forward "\\[\\|\\]" indent-point t)) + (cond + ((= (char-after (match-beginning 0)) ?\[ ) + (setq nest (cons (point) nest)) + (setq depth (1+ depth))) + (t + (setq nest (cdr nest)) + (setq depth (1- depth))))) + (if (> depth orig) (setq in-paren ?\[)))) + ((string= "{" w) ;skip to matching paren + (let ((orig depth)) + (setq nest (cons (point) nest)) + (setq depth (1+ depth)) + (while (and (/= depth orig) + (re-search-forward "[{}]" indent-point t)) + (cond + ((= (char-after (match-beginning 0)) ?{ ) + (setq nest (cons (point) nest)) + (setq depth (1+ depth))) + (t + (setq nest (cdr nest)) + (setq depth (1- depth))))) + (if (> depth orig) (setq in-paren ?{)))) + ((string-match ruby-block-end-re w) + (setq nest (cdr nest)) + (setq depth (1- depth))) + ((string-match ruby-block-beg-re w) + (let (c) + (save-excursion + (goto-char pnt) + (skip-chars-backward " \t") + (setq c (char-after (1- (point))))) + (if (or (null c) (= c ?\n) (= c ?\;)) + (progn + (setq nest (cons (point) nest)) + (setq depth (1+ depth)))))) + (t + (error (format "bad string %s" w))))))) + (list in-string in-paren (car nest) depth))) + (defun ruby-calculate-indent (&optional parse-start) (save-excursion (beginning-of-line) diff --git a/sample/uumerge.rb b/sample/uumerge.rb index d0bd016036..ac6e1c6849 100755 --- a/sample/uumerge.rb +++ b/sample/uumerge.rb @@ -1,5 +1,10 @@ #!/usr/local/bin/ruby +if $ARGV[0] == "-c" + out_stdout = 1; + $ARGV.shift +end + while gets() if /^begin\s*(\d*)\s*(\S*)/ $mode, $file = $1, $2 @@ -8,8 +13,13 @@ while gets() end end -fail "missing begin" if !$sawbegin; -OUT = open($file, "w") if $file != ""; +fail "missing begin" if ! $sawbegin; + +if out_stdout + out = STDOUT +else + out = open($file, "w") if $file != ""; +end while gets() if /^end/ @@ -19,9 +29,9 @@ while gets() sub(/[a-z]+$/, ""); # handle stupid trailing lowercase letters continue if /[a-z]/ continue if !(((($_[0] - 32) & 077) + 2) / 3 == $_.length / 4) - OUT << $_.unpack("u"); + out << $_.unpack("u"); end -fail "missing end" if ! $sawend; -File.chmod $mode.oct, $file; +fail "missing end" if !$sawend; +File.chmod $mode.oct, $file if ! out_stdout exit 0; |