Sha256: dba4c77c3d45027dd7a4f310b6f894a22622f1fb0110b3ceb31ca73a28ee1ac5

Contents?: true

Size: 790 Bytes

Versions: 2

Compression:

Stored size: 790 Bytes

Contents

module SmsAero::Types
  # Describes a user's birthday in year-month-date format
  # Accepts dates, times, datetimes, and strings parceable to dates
  #
  # @example
  #   SmsAero::Types::Birthday["1901-12-9"]                   # => "1901-12-09"
  #   SmsAero::Types::Birthday[Time.new(1901, 12, 9, 10, 12)] # => "1901-12-09"
  #
  Birthday = Strict::String
             .constrained(format: /\A\d{4}-\d{2}-\d{2}\z/)
             .constructor do |value|
               begin
                 date = value.to_date if value.respond_to? :to_date
                 date ||= ::Date.parse(value.to_s)
                 date.strftime "%Y-%m-%d"
               rescue StandardError
                 raise TypeError, "#{value.inspect} cannot be coerced to date"
               end
             end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sms_aero-0.0.11 lib/sms_aero/types/birthday.rb
sms_aero-0.0.10 lib/sms_aero/types/birthday.rb