Sha256: 0447bb368ee45f83b9f01d5405ff428f16fec03cb6fcec703d27551325998d5d

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 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
      else
        nil
      end
    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

1 entries across 1 versions & 1 rubygems

Version Path
versioncake-2.2.0 lib/versioncake/strategies/extraction_strategy.rb