2013-01-07 14:06:34 -06:00
|
|
|
class Dependencies
|
|
|
|
include Enumerable
|
|
|
|
|
2014-11-21 16:09:41 -06:00
|
|
|
def initialize
|
|
|
|
@deps = []
|
2013-01-07 14:06:34 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
def each(*args, &block)
|
|
|
|
@deps.each(*args, &block)
|
|
|
|
end
|
2012-02-28 19:56:29 -08:00
|
|
|
|
2012-10-24 18:17:43 -05:00
|
|
|
def <<(o)
|
2014-11-21 16:08:37 -06:00
|
|
|
@deps << o
|
2013-01-07 14:06:34 -06:00
|
|
|
self
|
|
|
|
end
|
|
|
|
|
|
|
|
def empty?
|
|
|
|
@deps.empty?
|
|
|
|
end
|
|
|
|
|
|
|
|
def *(arg)
|
|
|
|
@deps * arg
|
2012-10-24 18:17:43 -05:00
|
|
|
end
|
2013-01-07 18:16:11 -06:00
|
|
|
|
2016-09-23 18:13:48 +02:00
|
|
|
alias to_ary to_a
|
2013-05-10 23:45:06 -05:00
|
|
|
|
|
|
|
def optional
|
|
|
|
select(&:optional?)
|
|
|
|
end
|
|
|
|
|
|
|
|
def recommended
|
|
|
|
select(&:recommended?)
|
|
|
|
end
|
|
|
|
|
|
|
|
def build
|
|
|
|
select(&:build?)
|
|
|
|
end
|
|
|
|
|
|
|
|
def required
|
|
|
|
select(&:required?)
|
|
|
|
end
|
|
|
|
|
|
|
|
def default
|
|
|
|
build + required + recommended
|
|
|
|
end
|
2014-02-13 16:31:12 -05:00
|
|
|
|
|
|
|
attr_reader :deps
|
|
|
|
protected :deps
|
|
|
|
|
|
|
|
def ==(other)
|
|
|
|
deps == other.deps
|
|
|
|
end
|
2016-09-23 18:13:48 +02:00
|
|
|
alias eql? ==
|
2014-11-20 22:29:23 -06:00
|
|
|
|
|
|
|
def inspect
|
|
|
|
"#<#{self.class.name}: #{to_a.inspect}>"
|
|
|
|
end
|
2012-10-24 18:17:43 -05:00
|
|
|
end
|
2014-07-03 14:50:57 -05:00
|
|
|
|
|
|
|
class Requirements
|
|
|
|
include Enumerable
|
|
|
|
|
2014-11-21 16:09:41 -06:00
|
|
|
def initialize
|
|
|
|
@reqs = Set.new
|
2014-07-03 14:50:57 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def each(*args, &block)
|
|
|
|
@reqs.each(*args, &block)
|
|
|
|
end
|
|
|
|
|
|
|
|
def <<(other)
|
2016-09-20 22:03:08 +02:00
|
|
|
if other.is_a?(Comparable)
|
2014-07-03 14:50:57 -05:00
|
|
|
@reqs.grep(other.class) do |req|
|
|
|
|
return self if req > other
|
|
|
|
@reqs.delete(req)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
@reqs << other
|
|
|
|
self
|
|
|
|
end
|
|
|
|
|
2016-09-23 18:13:48 +02:00
|
|
|
alias to_ary to_a
|
2014-07-03 14:50:57 -05:00
|
|
|
end
|