Sha256: 4088524960b327d117a294503e4a7c6860a57d4ea5c8e7cbbd1415e35cdbd248

Contents?: true

Size: 485 Bytes

Versions: 8

Compression:

Stored size: 485 Bytes

Contents

# frozen_string_literal: true

module Attractor
  # converts a duration string into an amount of days
  class DurationParser
    TOKENS = {
      'd' => 1,
      'w' => 7,
      'm' => 30,
      'y' => 365
    }.freeze

    attr_reader :duration

    def initialize(input)
      @input = input
      @duration = 0
      parse
    end

    def parse
      @input.scan(/(\d+)(\w)/).each do |amount, measure|
        @duration += amount.to_i * TOKENS[measure]
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
attractor-2.0.5 lib/attractor/duration_parser.rb
attractor-2.0.4 lib/attractor/duration_parser.rb
attractor-2.0.3 lib/attractor/duration_parser.rb
attractor-2.0.2 lib/attractor/duration_parser.rb
attractor-2.0.1 lib/attractor/duration_parser.rb
attractor-2.0.0 lib/attractor/duration_parser.rb
attractor-1.2.0 lib/attractor/duration_parser.rb
attractor-1.1.1 lib/attractor/duration_parser.rb