module TradingDayJp

Constants

VERSION

Public Class Methods

beginning_of_month(date) click to toggle source
# File lib/trading_day_jp.rb, line 67
def beginning_of_month(date)
  date = Date.new(date.year, date.month)

  loop do
    return date if date.trading_day_jp?

    date = date + 1
  end
end
beginning_of_month?(date) click to toggle source
# File lib/trading_day_jp.rb, line 87
def beginning_of_month?(date)
  date == beginning_of_month(date)
end
beginning_of_quarter(date) click to toggle source
# File lib/trading_day_jp.rb, line 95
def beginning_of_quarter(date)
  if date.month <= 3
    beginning_of_month Date.new(date.year, 1)
  elsif date.month <= 6
    beginning_of_month Date.new(date.year, 4)
  elsif date.month <= 9
    beginning_of_month Date.new(date.year, 7)
  else
    beginning_of_month Date.new(date.year, 10)
  end
end
beginning_of_quarter?(date) click to toggle source
# File lib/trading_day_jp.rb, line 119
def beginning_of_quarter?(date)
  date == beginning_of_quarter(date)
end
beginning_of_week(date) click to toggle source
# File lib/trading_day_jp.rb, line 35
def beginning_of_week(date)
  date = date - @@day_minus[date.cwday]
  cweek = date.cweek

  loop do
    if date.trading_day_jp?
      return date
    elsif date.cweek != cweek
      return
    end

    cweek = date.cweek
    date = date + 1
  end
end
beginning_of_year(date) click to toggle source
# File lib/trading_day_jp.rb, line 127
def beginning_of_year(date)
  self.next(Date.new date.year)
end
beginning_of_year?(date) click to toggle source
# File lib/trading_day_jp.rb, line 135
def beginning_of_year?(date)
  date == beginning_of_year(date)
end
between(start, last) click to toggle source
# File lib/trading_day_jp.rb, line 29
def between(start, last)
  (start..last).select do |date|
    date.trading_day_jp?
  end
end
end_of_month(date) click to toggle source
# File lib/trading_day_jp.rb, line 77
def end_of_month(date)
  date = Date.new(date.year, date.month).next_month - 1

  loop do
    return date if date.trading_day_jp?

    date = date - 1
  end
end
end_of_month?(date) click to toggle source
# File lib/trading_day_jp.rb, line 91
def end_of_month?(date)
  date == end_of_month(date)
end
end_of_quarter(date) click to toggle source
# File lib/trading_day_jp.rb, line 107
def end_of_quarter(date)
  if date.month <= 3
    end_of_month Date.new(date.year, 3)
  elsif date.month <= 6
    end_of_month Date.new(date.year, 6)
  elsif date.month <= 9
    end_of_month Date.new(date.year, 9)
  else
    end_of_month Date.new(date.year, 12)
  end
end
end_of_quarter?(date) click to toggle source
# File lib/trading_day_jp.rb, line 123
def end_of_quarter?(date)
  date == end_of_quarter(date)
end
end_of_week(date) click to toggle source
# File lib/trading_day_jp.rb, line 51
def end_of_week(date)
  date = date + @@day_add[date.cwday]
  cweek = date.cweek

  loop do
    if date.trading_day_jp?
      return date
    elsif date.cweek != cweek
      return
    end

    cweek = date.cweek
    date = date - 1
  end
end
end_of_year(date) click to toggle source
# File lib/trading_day_jp.rb, line 131
def end_of_year(date)
  prev beginning_of_year(Date.new(date.year + 1))
end
end_of_year?(date) click to toggle source
# File lib/trading_day_jp.rb, line 139
def end_of_year?(date)
  date == end_of_year(date)
end
next(date) click to toggle source
# File lib/trading_day_jp.rb, line 13
def next(date)
  loop do
    date = date + 1

    return date if date.trading_day_jp?
  end
end
open?(date) click to toggle source
# File lib/trading_day_jp.rb, line 9
def open?(date)
  date.trading_day_jp?
end
prev(date) click to toggle source
# File lib/trading_day_jp.rb, line 21
def prev(date)
  loop do
    date = date - 1

    return date if date.trading_day_jp?
  end
end