Sha256: ca7c3979090202c44cf03223c22789f7a2f2b8ea7c72d9e644fb24352e639e26

Contents?: true

Size: 964 Bytes

Versions: 2

Compression:

Stored size: 964 Bytes

Contents

require 'active_support/core_ext/string/inflections.rb'

module VersionCake
  class ExtractionStrategy

    def extract(request)
      version = execute(request)
      return version.to_i if version && /[0-9]+/.match(version)
    end

    def version_key
      VersionCake::Railtie.config.versioncake.version_key
    end

    def execute(request)
      raise Exception, "ExtractionStrategy requires execute to be implemented"
    end

    def self.lookup(strategy)
      if strategy.class == Proc
        if strategy.arity == 1
          VersionCake::CustomStrategy.new(strategy)
        else
          raise Exception, "Custom extraction strategy requires a single parameter"
        end
      else
        strategy_name = "#{strategy}_strategy".camelize
        begin
          VersionCake.const_get(strategy_name).new
        rescue
          raise Exception, "Unknown VersionCake extraction strategy #{strategy_name}"
        end
      end

    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
versioncake-2.1.0 lib/versioncake/strategies/extraction_strategy.rb
versioncake-2.0.0 lib/versioncake/strategies/extraction_strategy.rb