diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-06-30 14:22:36 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-06-30 14:22:36 -0700 |
| commit | 6faab73979d75ccd2211b829984873d912d22823 (patch) | |
| tree | 888f390c4696fb426f6b403190f7e2e331c63a6d /src | |
| parent | 6852680d36f51579830e5878a52f9a4c2a6af85b (diff) | |
| parent | 57b629a988be7a39140744cd2dfc0da0e7a6a257 (diff) | |
| download | mruby-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')
| -rw-r--r-- | src/range.c | 37 |
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) */ |
