summaryrefslogtreecommitdiffhomepage
path: root/src/range.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-06-30 14:22:36 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2013-06-30 14:22:36 -0700
commit6faab73979d75ccd2211b829984873d912d22823 (patch)
tree888f390c4696fb426f6b403190f7e2e331c63a6d /src/range.c
parent6852680d36f51579830e5878a52f9a4c2a6af85b (diff)
parent57b629a988be7a39140744cd2dfc0da0e7a6a257 (diff)
downloadmruby-6faab73979d75ccd2211b829984873d912d22823.tar.gz
mruby-6faab73979d75ccd2211b829984873d912d22823.zip
Merge pull request #1322 from suzukaze/refactor-range-c
Refactor range_eql() func in rangec.c and add Range#eql? method test.
Diffstat (limited to 'src/range.c')
-rw-r--r--src/range.c37
1 files changed, 13 insertions, 24 deletions
diff --git a/src/range.c b/src/range.c
index 43de0e799..73d532d94 100644
--- a/src/range.c
+++ b/src/range.c
@@ -377,34 +377,23 @@ range_eql(mrb_state *mrb, mrb_value range)
{
mrb_value obj;
struct RRange *r, *o;
- mrb_bool eql_p;
mrb_get_args(mrb, "o", &obj);
- if (mrb_obj_equal(mrb, range, obj)) {
- eql_p = 1;
- }
- else if (!mrb_obj_is_kind_of(mrb, obj, RANGE_CLASS)) {
- eql_p = 0;
- }
- else {
- r = mrb_range_ptr(range);
- if (mrb_type(obj) != MRB_TT_RANGE) {
- eql_p = 0;
- }
- else {
- o = mrb_range_ptr(obj);
- if (!mrb_eql(mrb, r->edges->beg, o->edges->beg) ||
- !mrb_eql(mrb, r->edges->end, o->edges->end) ||
- (r->excl != o->excl)) {
- eql_p = 0;
- }
- else {
- eql_p = 1;
- }
- }
+
+ if (mrb_obj_equal(mrb, range, obj)) return mrb_true_value();
+ if (!mrb_obj_is_kind_of(mrb, obj, RANGE_CLASS)) {
+ return mrb_false_value();
}
+ if (mrb_type(obj) != MRB_TT_RANGE) return mrb_false_value();
- return mrb_bool_value(eql_p);
+ r = mrb_range_ptr(range);
+ o = mrb_range_ptr(obj);
+ if (!mrb_eql(mrb, r->edges->beg, o->edges->beg) ||
+ !mrb_eql(mrb, r->edges->end, o->edges->end) ||
+ (r->excl != o->excl)) {
+ return mrb_false_value();
+ }
+ return mrb_true_value();
}
/* 15.2.14.4.15(x) */