diff options
| author | skandhas <[email protected]> | 2013-03-19 11:16:33 +0800 |
|---|---|---|
| committer | skandhas <[email protected]> | 2013-03-19 11:16:33 +0800 |
| commit | ab79941c513b9244a055f0e4338ba0bc78dce261 (patch) | |
| tree | 1e63d3c2c82ab53bbb72556c0d24350b35b34d9f | |
| parent | 4454576cc9a5f0b86a57d786e5f24ded7254bda4 (diff) | |
| download | mruby-ab79941c513b9244a055f0e4338ba0bc78dce261.tar.gz mruby-ab79941c513b9244a055f0e4338ba0bc78dce261.zip | |
add Enumerable#drop
| -rw-r--r-- | mrbgems/mruby-enum-ext/mrblib/enum.rb | 21 | ||||
| -rw-r--r-- | mrbgems/mruby-enum-ext/test/enum.rb | 10 |
2 files changed, 31 insertions, 0 deletions
diff --git a/mrbgems/mruby-enum-ext/mrblib/enum.rb b/mrbgems/mruby-enum-ext/mrblib/enum.rb index af0b5bd10..9c77577ca 100644 --- a/mrbgems/mruby-enum-ext/mrblib/enum.rb +++ b/mrbgems/mruby-enum-ext/mrblib/enum.rb @@ -1,3 +1,24 @@ +## +# Enumerable +# module Enumerable + ## + # call-seq: + # enum.drop(n) -> array + # + # Drops first n elements from <i>enum</i>, and returns rest elements + # in an array. + # + # a = [1, 2, 3, 4, 5, 0] + # a.drop(3) #=> [4, 5, 0] + + def drop(n) + raise TypeError, "expected Integer for 1st argument" unless n.kind_of? Integer + raise ArgumentError, "attempt to drop negative size" if n < 0 + + ary = [] + self.each {|e| n == 0 ? ary << e : n -= 1 } + ary + end end diff --git a/mrbgems/mruby-enum-ext/test/enum.rb b/mrbgems/mruby-enum-ext/test/enum.rb index e69de29bb..76ab08f37 100644 --- a/mrbgems/mruby-enum-ext/test/enum.rb +++ b/mrbgems/mruby-enum-ext/test/enum.rb @@ -0,0 +1,10 @@ +## +# Enumerable(Ext) Test + +assert("Enumrable#drop") do + a = [1, 2, 3, 4, 5, 0] + + assert_equal a.drop(3), [4, 5, 0] + assert_equal a.drop(6), [] +end + |
