Sha256: 6d2aff1b84fd9d231ced469d29380c7998afe4d834ee9e6d9de31dce48cb079e

Contents?: true

Size: 872 Bytes

Versions: 3

Compression:

Stored size: 872 Bytes

Contents

module Wolfe
  class TimespanFromConfiguration
    SUPPORTED_TIME_UNITS = %w(hours days months years).freeze

    def initialize(config)
      config = split_duration_and_unit(config)

      @duration = Integer(config['duration'])
      @unit = config['unit']
      @unit = (@unit.to_s << 's').to_sym unless @unit.to_s.end_with? 's'

      raise ArgumentError.new("Invalid time unit #{config['unit'].inspect}, expected one of #{SUPPORTED_TIME_UNITS.join(', ')}") unless supported_time_unit?
    end

    def timespan
      @duration.send(@unit)
    end

    def keep_one_backup?
      @duration.to_i != 0
    end

    private

      def supported_time_unit?
        SUPPORTED_TIME_UNITS.include?(@unit.to_s)
      end

      def split_duration_and_unit(config)
        { 'duration' => config.split('.')[0].to_i, 'unit' => config.split('.')[1].to_sym }
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
wolfe-1.3.1 lib/wolfe/timespan_from_configuration.rb
wolfe-1.3.0 lib/wolfe/timespan_from_configuration.rb
wolfe-1.2.0 lib/wolfe/timespan_from_configuration.rb