summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-05-04 01:21:31 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2013-05-04 01:21:31 +0900
commit4e16491f068d34bf31dce7b5e7e0730b7b6a6ae0 (patch)
treed774709f8d58de93d14a467942fb0c69d5288597
parentc304887b503a5b2c961eeb9a468eb6c660b94fd8 (diff)
downloadmruby-4e16491f068d34bf31dce7b5e7e0730b7b6a6ae0.tar.gz
mruby-4e16491f068d34bf31dce7b5e7e0730b7b6a6ae0.zip
avoid subclassing Array not to inherit too much methods
-rw-r--r--tasks/mrbgem_spec.rake21
1 files changed, 15 insertions, 6 deletions
diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake
index 2d61d5908..f6d759b23 100644
--- a/tasks/mrbgem_spec.rake
+++ b/tasks/mrbgem_spec.rake
@@ -170,19 +170,28 @@ module MRuby
end # Specification
- class List < Array
+ class List
+ include Enumerable
+
+ def initialize
+ @ary = []
+ end
+
+ def each(&b)
+ @ary.each(&b)
+ end
+
def <<(gem)
fail ArgumentError.new("Don't find directory for this GEM") unless gem.respond_to? :dir
- unless include?(gem)
- super(gem)
+ unless @ary.detect {|g| g.dir == gem.dir }
+ @ary << gem
else
# GEM was already added to this list
end
end
- # we assume that a gem with the same directory is equal
- def include?(gem)
- detect {|g| g.dir == gem.dir }
+ def empty?
+ @ary.empty?
end
end # List
end # Gem