mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-io: provide Kernel#p in this gem
To prevent ordering instability when output from mruby-io and Kernel#p mixed.
This commit is contained in:
@@ -13,6 +13,17 @@ module Kernel
|
||||
end
|
||||
end
|
||||
|
||||
private def p(*a)
|
||||
for e in a
|
||||
$stdout.write e.inspect
|
||||
$stdout.write "\n"
|
||||
end
|
||||
len = a.size
|
||||
return nil if len == 0
|
||||
return a[0] if len == 1
|
||||
a
|
||||
end
|
||||
|
||||
private def print(...)
|
||||
$stdout.print(...)
|
||||
end
|
||||
|
||||
+3
-1
@@ -551,6 +551,7 @@ mrb_obj_ceqq(mrb_state *mrb, mrb_value self)
|
||||
// ISO 15.3.1.3.35 Kernel#print
|
||||
mrb_value mrb_print_m(mrb_state *mrb, mrb_value self);
|
||||
|
||||
#ifndef HAVE_MRUBY_IO_GEM
|
||||
// ISO 15.3.1.2.9 Kernel.p
|
||||
// ISO 15.3.1.3.34 Kernel#p
|
||||
//
|
||||
@@ -570,6 +571,7 @@ mrb_p_m(mrb_state *mrb, mrb_value self)
|
||||
if (argc == 1) return argv[0];
|
||||
return mrb_ary_new_from_values(mrb, argc, argv);
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
mrb_init_kernel(mrb_state *mrb)
|
||||
@@ -603,8 +605,8 @@ mrb_init_kernel(mrb_state *mrb)
|
||||
mrb_define_method_id(mrb, krn, MRB_SYM_Q(kind_of), mrb_obj_is_kind_of_m, MRB_ARGS_REQ(1)); /* 15.3.1.3.26 */
|
||||
mrb_define_method_id(mrb, krn, MRB_SYM_Q(nil), mrb_false, MRB_ARGS_NONE()); /* 15.3.1.3.32 */
|
||||
mrb_define_method_id(mrb, krn, MRB_SYM(object_id), mrb_obj_id_m, MRB_ARGS_NONE()); /* 15.3.1.3.33 */
|
||||
mrb_define_private_method_id(mrb, krn, MRB_SYM(p), mrb_p_m, MRB_ARGS_ANY()); /* 15.3.1.3.34 */
|
||||
#ifndef HAVE_MRUBY_IO_GEM
|
||||
mrb_define_private_method_id(mrb, krn, MRB_SYM(p), mrb_p_m, MRB_ARGS_ANY()); /* 15.3.1.3.34 */
|
||||
mrb_define_private_method_id(mrb, krn, MRB_SYM(print), mrb_print_m, MRB_ARGS_ANY()); /* 15.3.1.3.35 */
|
||||
#endif
|
||||
mrb_define_private_method_id(mrb, krn, MRB_SYM(raise), mrb_f_raise, MRB_ARGS_OPT(2)); /* 15.3.1.3.40 */
|
||||
|
||||
Reference in New Issue
Block a user