Sha256: 2c9b6747d99aa607783677b40be10112002703f27d847b45ca923af13e56ee26

Contents?: true

Size: 1.63 KB

Versions: 16

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

class Code
  class Object
    class Date < Object
      def initialize(*args, **_kargs, &_block)
        raw = args.map(&:to_s).join("-").presence || ::Date.current.to_s
        @raw = ::Date.parse(raw)
      rescue ::Date::Error
        raise Error, "#{raw.inspect} is an invalid date"
      end

      def self.call(**args)
        operator = args.fetch(:operator, nil)

        case operator.to_s
        when "tomorrow"
          sig(args)
          code_tomorrow
        when "yesterday"
          sig(args)
          code_yesterday
        when "today"
          sig(args)
          code_today
        when "now"
          sig(args)
          code_now
        when "hour"
          sig(args)
          code_hour
        else
          super
        end
      end

      def self.code_hour
        code_today.code_hour
      end

      def self.code_now
        ::Time.zone ||= Time::DEFAULT_ZONE
        new(::Time.zone.now.beginning_of_day)
      end

      def self.code_today
        ::Time.zone ||= Time::DEFAULT_ZONE
        new(::Time.zone.now.beginning_of_day)
      end

      def self.code_tomorrow
        ::Time.zone ||= Time::DEFAULT_ZONE
        new(::Time.zone.tomorrow.beginning_of_day)
      end

      def self.code_yesterday
        ::Time.zone ||= Time::DEFAULT_ZONE
        new(::Time.zone.yesterday.beginning_of_day)
      end

      def call(**args)
        operator = args.fetch(:operator, nil)

        case operator.to_s
        when "hour"
          sig(args)
          code_hour
        else
          super
        end
      end

      def code_hour
        Integer.new(0)
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
code-ruby-1.0.0 lib/code/object/date.rb
code-ruby-0.15.16 lib/code/object/date.rb
code-ruby-0.15.15 lib/code/object/date.rb
code-ruby-0.15.14 lib/code/object/date.rb
code-ruby-0.15.13 lib/code/object/date.rb
code-ruby-0.15.12 lib/code/object/date.rb
code-ruby-0.15.11 lib/code/object/date.rb
code-ruby-0.15.10 lib/code/object/date.rb
code-ruby-0.15.9 lib/code/object/date.rb
code-ruby-0.15.8 lib/code/object/date.rb
code-ruby-0.15.7 lib/code/object/date.rb
code-ruby-0.15.6 lib/code/object/date.rb
code-ruby-0.15.5 lib/code/object/date.rb
code-ruby-0.15.4 lib/code/object/date.rb
code-ruby-0.15.3 lib/code/object/date.rb
code-ruby-0.15.2 lib/code/object/date.rb