Sha256: bd8f3edb412b103a1b129d019d7512f9bfbdee2a004b2e5afcef5fe90790dadf
Contents?: true
Size: 1.94 KB
Versions: 1
Compression:
Stored size: 1.94 KB
Contents
require 'active_support/core_ext/string/inflections.rb' module VersionCake class ExtractionStrategy def extract(request) version = execute(request) if version.is_a?(Fixnum) version elsif version.is_a?(String) && /[0-9]+/.match(version) version.to_i elsif version.nil? # no version was found nil else raise Exception, "Invalid format for version number." end end def version_key VersionCake.config.version_key end # Execute should return a number or a numeric string if it successfully finds a version. # If no version is found, nil should be returned. Any other results returned will raise # an exception. def execute(request) raise Exception, "ExtractionStrategy requires execute to be implemented" end def self.list(*strategies) strategies.map do |strategy| lookup(strategy) end end def self.lookup(strategy) case strategy when String, Symbol strategy_name = "#{strategy}_strategy".camelize begin VersionCake.const_get(strategy_name).new rescue raise Exception, "Unknown VersionCake extraction strategy #{strategy_name}" end when Proc if strategy.arity == 1 VersionCake::CustomStrategy.new(strategy) else raise Exception, "Custom proc extraction strategy requires a single parameter" end when Object if !strategy.methods.include?(:execute) raise Exception, "Custom extraction strategy requires an execute method" elsif strategy.method(:execute).arity != 1 raise Exception, "Custom extraction strategy requires an execute method with a single parameter" else VersionCake::CustomStrategy.new(strategy) end else raise Exception, "Invalid extration strategy" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
versioncake-3.1.0 | lib/versioncake/strategies/extraction_strategy.rb |