summaryrefslogtreecommitdiff
path: root/sample
diff options
context:
space:
mode:
authorYukihiro Matsumoto <matz@ruby-lang.org>1995-03-15 14:59:18 +0900
committerTakashi Kokubun <takashikkbn@gmail.com>2019-08-17 22:09:31 +0900
commitd349889e770a2078c247d9d28070e86a54b856f4 (patch)
tree8bdbf87f3ff78ef237c4ff8efa061fbb8dc5a226 /sample
parent881c5a9c320c637ee0f6526b40cf70c1379ab656 (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/Artistic0
-rw-r--r--sample/evaldef.rb4
-rw-r--r--sample/export.rb32
-rw-r--r--sample/exyacc.rb2
-rw-r--r--sample/from.rb4
-rw-r--r--sample/opt_x.rb0
-rw-r--r--sample/ruby-mode.el120
-rwxr-xr-xsample/uumerge.rb20
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;