aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/dependencies.rb
diff options
context:
space:
mode:
authorMarkus Reiter2017-06-26 07:30:28 +0200
committerMarkus Reiter2017-06-28 09:25:31 +0200
commit3b4ee58c491f164c2751c1c0f941568c35fb0ac6 (patch)
treeeb6690a2d0e872c3f7e317d5aeadb0eb03697195 /Library/Homebrew/dependencies.rb
parent4fb60d89886758884fae29566fc04de66837f0c6 (diff)
downloadbrew-3b4ee58c491f164c2751c1c0f941568c35fb0ac6.tar.bz2
Refactor using `Forwardable` and `DelegateClass`.
Diffstat (limited to 'Library/Homebrew/dependencies.rb')
-rw-r--r--Library/Homebrew/dependencies.rb59
1 files changed, 15 insertions, 44 deletions
diff --git a/Library/Homebrew/dependencies.rb b/Library/Homebrew/dependencies.rb
index 951db078d..0ed0502d8 100644
--- a/Library/Homebrew/dependencies.rb
+++ b/Library/Homebrew/dependencies.rb
@@ -1,28 +1,11 @@
-class Dependencies
- include Enumerable
+require "delegate"
- def initialize
- @deps = []
+class Dependencies < DelegateClass(Array)
+ def initialize(*args)
+ super(args)
end
- def each(*args, &block)
- @deps.each(*args, &block)
- end
-
- def <<(o)
- @deps << o
- self
- end
-
- def empty?
- @deps.empty?
- end
-
- def *(arg)
- @deps * arg
- end
-
- alias to_ary to_a
+ alias eql? ==
def optional
select(&:optional?)
@@ -44,40 +27,28 @@ class Dependencies
build + required + recommended
end
- attr_reader :deps
- protected :deps
-
- def ==(other)
- deps == other.deps
- end
- alias eql? ==
-
def inspect
- "#<#{self.class.name}: #{to_a.inspect}>"
+ "#<#{self.class.name}: #{to_a}>"
end
end
-class Requirements
- include Enumerable
-
- def initialize
- @reqs = Set.new
- end
-
- def each(*args, &block)
- @reqs.each(*args, &block)
+class Requirements < DelegateClass(Set)
+ def initialize(*args)
+ super(Set.new(args))
end
def <<(other)
if other.is_a?(Comparable)
- @reqs.grep(other.class) do |req|
+ grep(other.class) do |req|
return self if req > other
- @reqs.delete(req)
+ delete(req)
end
end
- @reqs << other
+ super
self
end
- alias to_ary to_a
+ def inspect
+ "#<#{self.class.name}: {#{to_a.join(", ")}}>"
+ end
end