Sha256: 4fd003d2ec530b42091f03a429d2e92b1558919325dbb34d57a4f3368e813d05

Contents?: true

Size: 911 Bytes

Versions: 2

Compression:

Stored size: 911 Bytes

Contents

module EDTF
  
  module Seasons
    
    attr_reader :season
    
    def season?; !!@season; end
    
    def season=(new_season)
      case new_season
      when 1, 2, 3, 4
        @season = new_season + 20
      when 21, 22, 23, 24
        @season = new_season
      else
        raise ArgumentError, "bad season format (21, 22, 23 or 24 expected; was #{new_season.inspect})"
      end
    end
    
    [:first, :second, :third, :fourth].zip((21..24).to_a).each do |quarter, code|
      define_method("#{quarter}?") { @season == code }
      define_method("#{quarter}!") { @season = code }
    end
    
    [:spring, :summer, :autumn, :winter].zip([:first, :second, :third, :fourth]).each do |season, quarter|
      alias_method("#{season}?", "#{quarter}?")
      alias_method("#{season}!", "#{quarter}!")
    end
    
    attr_accessor :qualifier
    
    def qualified?; !!@qualifier; end
    
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
edtf-0.0.3 lib/edtf/seasons.rb
edtf-0.0.2 lib/edtf/seasons.rb