diff options
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/formula_support.rb | 12 | ||||
| -rw-r--r-- | Library/Homebrew/version.rb | 29 |
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 |
