Sha256: 1cc1deeff9acffd9ee83dfc4dce5af4d937338f7a45e7a39140672f40fcfd5d2

Contents?: true

Size: 1.39 KB

Versions: 13

Compression:

Stored size: 1.39 KB

Contents

using AIXM::Refinements

module AIXM
  module Schedule

    # Datetimes suitable for schedules
    #
    # This class combines +AIXM::Schedule::Date+ and +AIXM::Schedule::Time+:
    #
    # @example
    #   datetime = AIXM.datetime('2022-04-20', '20:00')   # => 2022-04-20 20:00
    #   datetime.date         # => 2022-04-20
    #   datetime.date.class   # => AIXM::Schedule::Date
    #   datetime.time         # => 20:00
    #   datetime.time.class   # => AIXM::Schedule::Time
    class DateTime

      # Date part
      #
      # @return [AIXM::Schedule::Date]
      attr_reader :date

      # Time part
      #
      # @return [AIXM::Schedule::Time]
      attr_reader :time

      # Parse the given representation of date and time.
      #
      # @param date [AIXM::Schedule::Date]
      # @param time [AIXM::Schedule::Time]
      def initialize(date, time)
        fail(ArgumentError, 'invalid date') unless date.instance_of? AIXM::Schedule::Date
        fail(ArgumentError, 'invalid time') unless time.instance_of? AIXM::Schedule::Time
        @date, @time = date, time
      end

      # Human readable representation such as "2002-05-19 20:00"
      #
      # @return [String]
      def to_s
        [@date.to_s, @time.to_s].join(' ')
      end

      def inspect
        %Q(#<#{self.class} #{to_s}>)
      end

      # @see Object#hash
      def hash
         [@date.hash, @time.hash].hash
      end
    end

  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
aixm-1.5.4 lib/aixm/schedule/date_time.rb
aixm-1.5.3 lib/aixm/schedule/date_time.rb
aixm-1.5.2 lib/aixm/schedule/date_time.rb
aixm-1.5.1 lib/aixm/schedule/date_time.rb
aixm-1.5.0 lib/aixm/schedule/date_time.rb
aixm-1.4.3 lib/aixm/schedule/date_time.rb
aixm-1.4.2 lib/aixm/schedule/date_time.rb
aixm-1.4.1 lib/aixm/schedule/date_time.rb
aixm-1.4.0 lib/aixm/schedule/date_time.rb
aixm-1.3.4 lib/aixm/schedule/date_time.rb
aixm-1.3.3 lib/aixm/schedule/date_time.rb
aixm-1.3.2 lib/aixm/schedule/date_time.rb
aixm-1.3.1 lib/aixm/schedule/date_time.rb