From 231a1d68b061d80ac2ccdb7dd2e9637adb22692b Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 12 Sep 2019 21:22:59 +0900 Subject: Remove `$/` from mruby implementation. 1. `$/` and other Perl-ish global variables are not defined in ISO. 2. The current Ruby policy do not encourage those variables. 3. Those variables has global effect and can cause troubles. --- mrbgems/mruby-io/mrblib/io.rb | 6 +++--- mrbgems/mruby-io/src/io.c | 3 --- src/string.c | 5 ++--- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/mrbgems/mruby-io/mrblib/io.rb b/mrbgems/mruby-io/mrblib/io.rb index f3c4de6fd..a6e3ef3de 100644 --- a/mrbgems/mruby-io/mrblib/io.rb +++ b/mrbgems/mruby-io/mrblib/io.rb @@ -226,12 +226,12 @@ class IO end end - def readline(arg = $/, limit = nil) + def readline(arg = "\n", limit = nil) case arg when String rs = arg when Fixnum - rs = $/ + rs = "\n" limit = arg else raise ArgumentError @@ -242,7 +242,7 @@ class IO end if rs == "" - rs = $/ + $/ + rs = "\n\n" end array = [] diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index eb9c4097b..784cdaf49 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -1328,7 +1328,4 @@ mrb_init_io(mrb_state *mrb) mrb_define_method(mrb, io, "closed?", mrb_io_closed, MRB_ARGS_NONE()); /* 15.2.20.5.2 */ mrb_define_method(mrb, io, "pid", mrb_io_pid, MRB_ARGS_NONE()); /* 15.2.20.5.2 */ mrb_define_method(mrb, io, "fileno", mrb_io_fileno, MRB_ARGS_NONE()); - - - mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$/"), mrb_str_new_cstr(mrb, "\n")); } diff --git a/src/string.c b/src/string.c index c1c28ee8b..35c7f8e7c 100644 --- a/src/string.c +++ b/src/string.c @@ -1529,9 +1529,8 @@ mrb_str_chomp_bang(mrb_state *mrb, mrb_value str) * str.chomp(separator="\n") => new_str * * Returns a new String with the given record separator removed - * from the end of str (if present). If $/ has not been - * changed from the default Ruby record separator, then chomp also - * removes carriage return characters (that is it will remove \n, + * from the end of str (if present). chomp also removes + * carriage return characters (that is it will remove \n, * \r, and \r\n). * * "hello".chomp #=> "hello" -- cgit v1.2.3