From 4e16491f068d34bf31dce7b5e7e0730b7b6a6ae0 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 4 May 2013 01:21:31 +0900 Subject: avoid subclassing Array not to inherit too much methods --- tasks/mrbgem_spec.rake | 21 +++++++++++++++------ 1 file 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 -- cgit v1.2.3