From 74b60a561c5502f2d1a6864681302fbda3da0589 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Fri, 28 Jun 2013 21:17:12 -0500 Subject: [PATCH] Simplify custom version scheme handling --- Library/Homebrew/formula_support.rb | 12 +++++------- 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 e7e2231fd9..f5936ea653 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 7cc347a03e..066852b8e7 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