summaryrefslogtreecommitdiffhomepage
path: root/src/range.c
diff options
context:
space:
mode:
authorMasamitsu MURASE <[email protected]>2013-01-13 18:25:14 +0900
committerMasamitsu MURASE <[email protected]>2013-01-13 22:04:53 +0900
commit4bf76a67f1d4ddae04f30a2e03f743e9d62f428d (patch)
tree6e64d592bc196883e1fa6fb52a994e1b75080fe0 /src/range.c
parentf9b836a677574f381bacfb80c50842a6ef9ef72f (diff)
downloadmruby-4bf76a67f1d4ddae04f30a2e03f743e9d62f428d.tar.gz
mruby-4bf76a67f1d4ddae04f30a2e03f743e9d62f428d.zip
Modify `Range#initialize` to accept optional `exclusive` argument.
Diffstat (limited to 'src/range.c')
-rw-r--r--src/range.c12
1 files changed, 8 insertions, 4 deletions
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 */