class PeriodsValidator::Periods
Constants
- MONTHS_QUARTERLY
- MONTHS_SEMESTERLY
- PERIODS
- QUARTERLY
- SEMESTERLY
- YEARLY
Attributes
error[R]
Public Class Methods
new(args={})
click to toggle source
# File lib/periods_validator/periods.rb, line 12 def initialize(args={}) @start_range = args.fetch(:start_range) @end_range = args.fetch(:end_range) @periods = args.fetch(:periods, []) @error = nil @months = 0 end
Public Instance Methods
valid?()
click to toggle source
# File lib/periods_validator/periods.rb, line 20 def valid? if @periods.empty? || !(@periods - PERIODS).empty? @error = :invalid_define_period return false end if @start_range.nil? || @end_range.nil? @error = :invalid_period return false end @months = (@end_range.year * 12 + @end_range.month) - (@start_range.year * 12 + @start_range.month) @periods.each do |period| return true if send("period_#{period}") end @error = :invalid_period false end
Also aliased as: validate
Protected Instance Methods
limits_date()
click to toggle source
# File lib/periods_validator/periods.rb, line 46 def limits_date @start_range == @start_range.beginning_of_month && @end_range == @end_range.at_end_of_month end
period_monthly()
click to toggle source
# File lib/periods_validator/periods.rb, line 50 def period_monthly (@end_range - @start_range).to_i == @start_range.at_end_of_month.day - 1 end
period_quarterly()
click to toggle source
# File lib/periods_validator/periods.rb, line 54 def period_quarterly limits_date && @months == QUARTERLY && MONTHS_QUARTERLY.include?(@end_range.month) end
period_semesterly()
click to toggle source
# File lib/periods_validator/periods.rb, line 58 def period_semesterly limits_date && @months == SEMESTERLY && MONTHS_SEMESTERLY.include?(@end_range.month) end
period_yearly()
click to toggle source
# File lib/periods_validator/periods.rb, line 62 def period_yearly limits_date && @months == YEARLY && @start_range.month == 1 && @end_range.month == 12 end