From cd58b12d847ad14e2471dbcf38bec7341a2d9da2 Mon Sep 17 00:00:00 2001 From: Masaki Muranaka Date: Sat, 29 Sep 2012 17:02:36 +0900 Subject: Remove extern mrb_top_self. It is declared in mruby.h. --- mrblib/init_mrblib.c | 1 - 1 file changed, 1 deletion(-) (limited to 'mrblib') diff --git a/mrblib/init_mrblib.c b/mrblib/init_mrblib.c index a845489f5..72355e3eb 100644 --- a/mrblib/init_mrblib.c +++ b/mrblib/init_mrblib.c @@ -11,7 +11,6 @@ mrb_init_mrblib(mrb_state *mrb) { int n = mrb_read_irep(mrb, mrblib_irep); - extern mrb_value mrb_top_self(mrb_state *mrb); mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb)); } -- cgit v1.2.3 From fd949663d2229419a1e53e69351205cd27157653 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Fri, 19 Oct 2012 21:09:34 +0900 Subject: Enumerable#inject should handle empty enumerable; http://www.tbn.co.jp/blog/?p=813 --- mrblib/enum.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'mrblib') diff --git a/mrblib/enum.rb b/mrblib/enum.rb index 2699a18af..666ada294 100644 --- a/mrblib/enum.rb +++ b/mrblib/enum.rb @@ -200,13 +200,18 @@ module Enumerable # ISO 15.3.2.2.11 def inject(*args, &block) raise ArgumentError, "too many arguments" if args.size > 2 - flag = true # 1st element? - result = nil + if args.empty? + flag = true # no initial argument + result = nil + else + flag = false + result = args[0] + end self.each{|val| if flag - # 1st element - result = (args.empty?)? val: block.call(args[0], val) + # push first element as initial flag = false + result = val else result = block.call(result, val) end -- cgit v1.2.3 From 17278e8ca69d79f4d37e65830c95cc6004c2d8f5 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Fri, 19 Oct 2012 21:16:18 +0900 Subject: add symbol style to Enumerable#inject --- mrblib/enum.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'mrblib') diff --git a/mrblib/enum.rb b/mrblib/enum.rb index 666ada294..29422716c 100644 --- a/mrblib/enum.rb +++ b/mrblib/enum.rb @@ -199,7 +199,12 @@ module Enumerable # # ISO 15.3.2.2.11 def inject(*args, &block) - raise ArgumentError, "too many arguments" if args.size > 2 + raise ArgumentError, "too many arguments" if args.size > 3 + if Symbol === args[-1] + sym = args[-1] + block = ->(x,y){x.send(sym,y)} + args.pop + end if args.empty? flag = true # no initial argument result = nil @@ -218,6 +223,7 @@ module Enumerable } result end + alias reduce inject ## # Alias for collect -- cgit v1.2.3 From 3efbea3fab1fedf1f6b783204fd226653e908f6e Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Fri, 19 Oct 2012 21:44:58 +0900 Subject: wrong check of argument numbers --- mrblib/enum.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mrblib') diff --git a/mrblib/enum.rb b/mrblib/enum.rb index 29422716c..2774bc856 100644 --- a/mrblib/enum.rb +++ b/mrblib/enum.rb @@ -199,7 +199,7 @@ module Enumerable # # ISO 15.3.2.2.11 def inject(*args, &block) - raise ArgumentError, "too many arguments" if args.size > 3 + raise ArgumentError, "too many arguments" if args.size > 2 if Symbol === args[-1] sym = args[-1] block = ->(x,y){x.send(sym,y)} -- cgit v1.2.3 From 83a31f71854dafb02127096e3910d4b08c1e83e8 Mon Sep 17 00:00:00 2001 From: Tomoyuki Sahara Date: Mon, 29 Oct 2012 11:08:02 +0900 Subject: IO.printf returns nil on CRuby --- mrblib/print.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'mrblib') diff --git a/mrblib/print.rb b/mrblib/print.rb index 9183f6bb2..68c7837f3 100644 --- a/mrblib/print.rb +++ b/mrblib/print.rb @@ -74,6 +74,7 @@ module Kernel def printf(*args) __printstr__(sprintf(*args)) + nil end end end -- cgit v1.2.3 From 57910ca5353e1feba1fb069a876b84a52f33d39f Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Thu, 1 Nov 2012 06:13:02 +0900 Subject: String#each_byte to use String#bytes; close #508 --- mrblib/string.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mrblib') diff --git a/mrblib/string.rb b/mrblib/string.rb index d09b787da..0b995f9ca 100644 --- a/mrblib/string.rb +++ b/mrblib/string.rb @@ -118,7 +118,7 @@ class String ## # Call the given block for each byte of +self+. def each_byte(&block) - bytes = self.unpack("C*") + bytes = self.bytes pos = 0 while(pos < bytes.size) block.call(bytes[pos]) -- cgit v1.2.3