diff options
| author | Daniel Bovensiepen <[email protected]> | 2012-11-01 16:12:57 +0800 |
|---|---|---|
| committer | Daniel Bovensiepen <[email protected]> | 2012-11-01 16:12:57 +0800 |
| commit | cdb72a05a294eb8521dd40c011160228496312cb (patch) | |
| tree | 283586ad23f2dc6dfd1fd1aaa354f18c23d8c0d6 /mrblib | |
| parent | 88dfaf19aa0808f78d13133d61ea433d043923f9 (diff) | |
| parent | 57910ca5353e1feba1fb069a876b84a52f33d39f (diff) | |
| download | mruby-cdb72a05a294eb8521dd40c011160228496312cb.tar.gz mruby-cdb72a05a294eb8521dd40c011160228496312cb.zip | |
Merge remote-tracking branch 'upstream/master' into mrbgems
Diffstat (limited to 'mrblib')
| -rw-r--r-- | mrblib/enum.rb | 19 | ||||
| -rw-r--r-- | mrblib/init_mrblib.c | 1 | ||||
| -rw-r--r-- | mrblib/print.rb | 1 | ||||
| -rw-r--r-- | mrblib/string.rb | 2 |
4 files changed, 17 insertions, 6 deletions
diff --git a/mrblib/enum.rb b/mrblib/enum.rb index 2699a18af..2774bc856 100644 --- a/mrblib/enum.rb +++ b/mrblib/enum.rb @@ -200,19 +200,30 @@ 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 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 + 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 } result end + alias reduce inject ## # Alias for collect 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)); } 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 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]) |
