mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Added MRB_API function to get block arguments info.
- ` mrb_block_given_p()` -- The name comes from CRuby's `rb_block_given_p ()` At the same time, it applies to `f_instance_eval()` and `f_class_eval()` of `mruby-eval`.
This commit is contained in:
committed by
Yukihiro "Matz" Matsumoto
parent
43eddfd4d5
commit
c40802865a
@@ -195,12 +195,7 @@ f_eval(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
f_instance_eval(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value b;
|
||||
mrb_int argc; const mrb_value *argv;
|
||||
|
||||
mrb_get_args(mrb, "*!&", &argv, &argc, &b);
|
||||
|
||||
if (mrb_nil_p(b)) {
|
||||
if (!mrb_block_given_p(mrb)) {
|
||||
const char *s;
|
||||
mrb_int len;
|
||||
const char *file = NULL;
|
||||
@@ -217,7 +212,7 @@ f_instance_eval(mrb_state *mrb, mrb_value self)
|
||||
return exec_irep(mrb, self, proc, NULL);
|
||||
}
|
||||
else {
|
||||
mrb_get_args(mrb, "&", &b);
|
||||
mrb_get_args(mrb, "");
|
||||
return mrb_obj_instance_eval(mrb, self);
|
||||
}
|
||||
}
|
||||
@@ -225,12 +220,7 @@ f_instance_eval(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
f_class_eval(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value b;
|
||||
mrb_int argc; const mrb_value *argv;
|
||||
|
||||
mrb_get_args(mrb, "*!&", &argv, &argc, &b);
|
||||
|
||||
if (mrb_nil_p(b)) {
|
||||
if (!mrb_block_given_p(mrb)) {
|
||||
const char *s;
|
||||
mrb_int len;
|
||||
const char *file = NULL;
|
||||
@@ -245,7 +235,7 @@ f_class_eval(mrb_state *mrb, mrb_value self)
|
||||
return exec_irep(mrb, self, proc, NULL);
|
||||
}
|
||||
else {
|
||||
mrb_get_args(mrb, "&", &b);
|
||||
mrb_get_args(mrb, "");
|
||||
return mrb_mod_module_eval(mrb, self);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user