aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Nagel2013-06-28 21:17:12 -0500
committerJack Nagel2013-06-28 21:17:12 -0500
commit74b60a561c5502f2d1a6864681302fbda3da0589 (patch)
tree74128d3c6391500b9e28ccd0fe68e078846eb192
parentedbc0fadd13ccfe4c4791cc6077d93ea58930ff7 (diff)
downloadbrew-74b60a561c5502f2d1a6864681302fbda3da0589.tar.bz2
Simplify custom version scheme handling
-rw-r--r--Library/Homebrew/formula_support.rb12
-rw-r--r--Library/Homebrew/version.rb29
2 files changed, 13 insertions, 28 deletions
diff --git a/Library/Homebrew/formula_support.rb b/Library/Homebrew/formula_support.rb
index e7e2231fd..f5936ea65 100644
--- a/Library/Homebrew/formula_support.rb
+++ b/Library/Homebrew/formula_support.rb
@@ -52,13 +52,11 @@ class SoftwareSpec
end
def version val=nil
- @version ||= case val
- when nil then Version.parse(@url)
- when Hash
- key, value = val.shift
- scheme = VersionSchemeDetector.new(value).detect
- scheme.new(key)
- else Version.new(val)
+ @version ||=
+ case val
+ when nil then Version.parse(@url)
+ when Hash then Version.new_with_scheme(*val.shift)
+ else Version.new(val)
end
end
diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb
index 7cc347a03..066852b8e 100644
--- a/Library/Homebrew/version.rb
+++ b/Library/Homebrew/version.rb
@@ -146,6 +146,14 @@ class Version
end
end
+ def self.new_with_scheme(value, scheme)
+ if Class === scheme && scheme.ancestors.include?(Version)
+ scheme.new(value)
+ else
+ raise TypeError, "Unknown version scheme #{scheme.inspect}"
+ end
+ end
+
def initialize(val, detected=false)
@version = val.to_s
@detected_from_url = detected
@@ -295,24 +303,3 @@ class Version
return m.captures.first unless m.nil?
end
end
-
-class VersionSchemeDetector
- def initialize scheme
- @scheme = scheme
- end
-
- def detect
- if @scheme.is_a? Class and @scheme.ancestors.include? Version
- @scheme
- elsif @scheme.is_a? Symbol then detect_from_symbol
- else
- raise "Unknown version scheme #{@scheme} was requested."
- end
- end
-
- private
-
- def detect_from_symbol
- raise "Unknown version scheme #{@scheme} was requested."
- end
-end