Sha256: b804b97b0088413cb2ceaa056b738d6253d3be115634b8b61f6d38c86a61fba7

Contents?: true

Size: 1.71 KB

Versions: 1

Compression:

Stored size: 1.71 KB

Contents

require 'date'
require 'time'

def require_file file_name
  RUBY_VERSION < '1.9' ? require(file_name) : require_relative(file_name)
end

require_file 'modules/day'
require_file 'modules/month'
require_file 'modules/week'
require_file 'modules/year'

class Date
  include WeekOfMonth::Day
  include WeekOfMonth::Month
  include WeekOfMonth::Week
  include WeekOfMonth::Year
end

[Time, Date].each do |klass|

  klass.class_eval do

    unless method_defined?(:to_date)
      def to_date
        ::Date.new(year, month, day)
      end
    end

    unless method_defined?(:sunday?)
      def sunday?    ; self.wday == 0; end
      def monday?    ; self.wday == 1; end
      def tuesday?   ; self.wday == 2; end
      def wednesday? ; self.wday == 3; end
      def thursday?  ; self.wday == 4; end
      def friday?    ; self.wday == 5; end
      def saturday?  ; self.wday == 6; end
    end

  end

end

class Time
  include WeekOfMonth::Day
  include WeekOfMonth::Month
  include WeekOfMonth::Week
  include WeekOfMonth::Year
  
  def leap?
    self.to_date.leap?
  end

  if RUBY_VERSION < '1.9'
    def self.new(year=Time.now.year, month=Time.now.month, day=Time.now.day, hour=Time.now.hour, min=Time.now.min, sec=Time.now.sec, millisecond=(Time.now.to_f * 1000.0).to_i)
      Time.local(year, month, day, hour, min, sec, millisecond)
    end
  end
end

class Hash
  unless method_defined?(:key)
    def key(value)
      result = nil
      self.each do |k,v| result = k if v == value && result == nil; end if self.values.include?(value)
      result
    end
  end
end

module WeekOfMonth

  def self.first_day=val
    @first_day = DAYS_IN_SEQUENCE[val]
  end

  def self.first_day
    @first_day ||= 0
  end

  def self.configure
     yield
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
week_of_month-1.2.3.2 lib/week_of_month.rb