diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-05-04 01:21:31 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-05-04 01:21:31 +0900 |
| commit | 4e16491f068d34bf31dce7b5e7e0730b7b6a6ae0 (patch) | |
| tree | d774709f8d58de93d14a467942fb0c69d5288597 | |
| parent | c304887b503a5b2c961eeb9a468eb6c660b94fd8 (diff) | |
| download | mruby-4e16491f068d34bf31dce7b5e7e0730b7b6a6ae0.tar.gz mruby-4e16491f068d34bf31dce7b5e7e0730b7b6a6ae0.zip | |
avoid subclassing Array not to inherit too much methods
| -rw-r--r-- | tasks/mrbgem_spec.rake | 21 |
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 |
