Sha256: 650ff3d377424b1fd6aaac3b3240afc211583dd03ac1bc6f9cdc5ea35bec35a4

Contents?: true

Size: 663 Bytes

Versions: 32

Compression:

Stored size: 663 Bytes

Contents

# frozen_string_literal: true

module UmbrellioUtils
  module Cards
    extend self

    InvalidExpiryDateString = Class.new(StandardError)

    def parse_expiry_date!(string, **options)
      result = parse_expiry_date(string, **options)

      unless result
        raise InvalidExpiryDateString, "Failed to parse expiry date: #{string.inspect}"
      end

      result
    end

    def parse_expiry_date(string)
      month, year = string.split("/", 2).map(&:to_i)
      return unless month && year
      year += 2000 if year < 100
      time = suppress(ArgumentError) { Time.zone.local(year, month) }
      time + 1.month - 1.second if time
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
umbrellio-utils-1.6.0 lib/umbrellio_utils/cards.rb
umbrellio-utils-1.5.5 lib/umbrellio_utils/cards.rb
umbrellio-utils-1.5.4 lib/umbrellio_utils/cards.rb
umbrellio-utils-1.5.3 lib/umbrellio_utils/cards.rb
umbrellio-utils-1.5.2 lib/umbrellio_utils/cards.rb
umbrellio-utils-1.5.1 lib/umbrellio_utils/cards.rb
umbrellio-utils-1.5.0 lib/umbrellio_utils/cards.rb
umbrellio-utils-1.4.0 lib/umbrellio_utils/cards.rb
umbrellio-utils-1.3.0 lib/umbrellio_utils/cards.rb
umbrellio-utils-1.1.0 lib/umbrellio_utils/cards.rb
umbrellio-utils-1.0.0 lib/umbrellio_utils/cards.rb
umbrellio-utils-0.7.5 lib/umbrellio_utils/cards.rb
umbrellio-utils-0.7.4 lib/umbrellio_utils/cards.rb
umbrellio-utils-0.7.3 lib/umbrellio_utils/cards.rb
umbrellio-utils-0.7.2 lib/umbrellio_utils/cards.rb
umbrellio-utils-0.7.1 lib/umbrellio_utils/cards.rb
umbrellio-utils-0.7.0 lib/umbrellio_utils/cards.rb
umbrellio-utils-0.6.2 lib/umbrellio_utils/cards.rb
umbrellio-utils-0.6.1 lib/umbrellio_utils/cards.rb
umbrellio-utils-0.6.0 lib/umbrellio_utils/cards.rb