diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-07-26 13:37:13 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-07-26 13:37:13 +0000 |
commit | 6d9a4f510c6ad2eb5e9f50acfc600cfad7915586 (patch) | |
tree | 6ca306ff6b2b1cbbf3b904e106cfdb263d7d8214 /range.c | |
parent | d13499173031809a316f1e5d25d9bb3e825e146c (diff) | |
download | ruby-6d9a4f510c6ad2eb5e9f50acfc600cfad7915586.tar.gz |
* range.c (range_eqq): call_super() in === does not work well
since Enumerable#=== has different behavior. [ruby-dev:31296]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'range.c')
-rw-r--r-- | range.c | 23 |
1 files changed, 20 insertions, 3 deletions
@@ -629,8 +629,6 @@ range_inspect(VALUE range) /* * call-seq: * rng === obj => true or false - * rng.member?(val) => true or false - * rng.include?(val) => true or false * * Returns <code>true</code> if <i>obj</i> is an element of * <i>rng</i>, <code>false</code> otherwise. Conveniently, @@ -649,6 +647,25 @@ range_inspect(VALUE range) */ static VALUE +range_eqq(VALUE range, VALUE val) +{ + return rb_funcall(range, rb_intern("include?"), 1, val); +} + + +/* + * call-seq: + * rng.member?(val) => true or false + * rng.include?(val) => true or false + * + * Returns <code>true</code> if <i>obj</i> is an element of + * <i>rng</i>, <code>false</code> otherwise. + * + * ("a".."z").include?("g") # => true + * ("a".."z").include?("A") # => false + */ + +static VALUE range_include(VALUE range, VALUE val) { VALUE beg = rb_ivar_get(range, id_beg); @@ -769,7 +786,7 @@ Init_Range(void) rb_include_module(rb_cRange, rb_mEnumerable); rb_define_method(rb_cRange, "initialize", range_initialize, -1); rb_define_method(rb_cRange, "==", range_eq, 1); - rb_define_method(rb_cRange, "===", range_include, 1); + rb_define_method(rb_cRange, "===", range_eqq, 1); rb_define_method(rb_cRange, "eql?", range_eql, 1); rb_define_method(rb_cRange, "hash", range_hash, 0); rb_define_method(rb_cRange, "each", range_each, 0); |