summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-enum-ext
diff options
context:
space:
mode:
authorskandhas <[email protected]>2013-03-19 11:16:33 +0800
committerskandhas <[email protected]>2013-03-19 11:16:33 +0800
commitab79941c513b9244a055f0e4338ba0bc78dce261 (patch)
tree1e63d3c2c82ab53bbb72556c0d24350b35b34d9f /mrbgems/mruby-enum-ext
parent4454576cc9a5f0b86a57d786e5f24ded7254bda4 (diff)
downloadmruby-ab79941c513b9244a055f0e4338ba0bc78dce261.tar.gz
mruby-ab79941c513b9244a055f0e4338ba0bc78dce261.zip
add Enumerable#drop
Diffstat (limited to 'mrbgems/mruby-enum-ext')
-rw-r--r--mrbgems/mruby-enum-ext/mrblib/enum.rb21
-rw-r--r--mrbgems/mruby-enum-ext/test/enum.rb10
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
+