From 4bf76a67f1d4ddae04f30a2e03f743e9d62f428d Mon Sep 17 00:00:00 2001 From: Masamitsu MURASE Date: Sun, 13 Jan 2013 18:25:14 +0900 Subject: Modify `Range#initialize` to accept optional `exclusive` argument. --- src/range.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/range.c b/src/range.c index 8f12b802b..ef92ed822 100644 --- a/src/range.c +++ b/src/range.c @@ -125,11 +125,15 @@ mrb_value mrb_range_initialize(mrb_state *mrb, mrb_value range) { mrb_value beg, end; - mrb_value flags; + int exclusive; + int n; - mrb_get_args(mrb, "ooo", &beg, &end, &flags); + n = mrb_get_args(mrb, "oo|b", &beg, &end, &exclusive); + if (n != 3) { + exclusive = 0; + } /* Ranges are immutable, so that they should be initialized only once. */ - range_init(mrb, range, beg, end, mrb_test(flags)); + range_init(mrb, range, beg, end, exclusive); return range; } /* @@ -444,7 +448,7 @@ mrb_init_range(mrb_state *mrb) mrb_define_method(mrb, r, "exclude_end?", mrb_range_excl, ARGS_NONE()); /* 15.2.14.4.6 */ mrb_define_method(mrb, r, "first", mrb_range_beg, ARGS_NONE()); /* 15.2.14.4.7 */ mrb_define_method(mrb, r, "include?", mrb_range_include, ARGS_REQ(1)); /* 15.2.14.4.8 */ - mrb_define_method(mrb, r, "initialize", mrb_range_initialize, ARGS_REQ(4)); /* 15.2.14.4.9 */ + mrb_define_method(mrb, r, "initialize", mrb_range_initialize, ARGS_ANY()); /* 15.2.14.4.9 */ mrb_define_method(mrb, r, "last", mrb_range_end, ARGS_NONE()); /* 15.2.14.4.10 */ mrb_define_method(mrb, r, "member?", mrb_range_include, ARGS_REQ(1)); /* 15.2.14.4.11 */ -- cgit v1.2.3