Simplify DependencyCollector#add

This commit is contained in:
Camillo Lugaresi 2012-06-07 22:29:44 +02:00 committed by Jack Nagel
parent 243b14a090
commit 1847595168

View File

@ -25,30 +25,27 @@ class DependencyCollector
end
def add spec
case spec
when :x11 then @external_deps << X11Dependency.new
when String then @deps << Dependency.new(spec)
when Formula then @deps << Dependency.new(spec.name)
when Dependency then @deps << spec
when Requirement then @external_deps << spec
when Hash
key, value = spec.shift
if key == :x11
@external_deps << X11Dependency.new(value)
tag = nil
spec, tag = spec.shift if spec.is_a? Hash
dep = case spec
when :x11
X11Dependency.new(tag)
when String
if LANGUAGE_MODULES.include? tag
LanguageModuleDependency.new(tag, spec)
else
case value
when Array
@deps << Dependency.new(key, value)
when *LANGUAGE_MODULES
@external_deps << LanguageModuleDependency.new(value, key)
else
# :optional, :recommended, :build, :universal and "32bit" are predefined
@deps << Dependency.new(key, [value])
end
Dependency.new(spec, tag)
end
when Formula
Dependency.new(spec.name, tag)
when Dependency, Requirement
spec
else
raise "Unsupported type #{spec.class} for #{spec}"
end
(dep.is_a?(Requirement) ? @external_deps : @deps) << dep
end
end
@ -68,8 +65,11 @@ class Dependency
def initialize name, tags=nil
@name = name
tags = [] if tags == nil
@tags = tags.each {|s| s.to_s}
@tags = case tags
when Array then tags.each {|s| s.to_s}
when nil then []
else [tags.to_s]
end
end
def to_s