Sha256: c13af5f71730f15937457b8c3f456f37e86f5dc55acf07c7b3d8b39f91fe143e

Contents?: true

Size: 1004 Bytes

Versions: 2

Compression:

Stored size: 1004 Bytes

Contents

require 'warekky'

module Warekky
  class Era
    attr_reader :key, :sign, :first, :last, :options
    def initialize(key, sign, first, last, options = {})
      @key, @sign = key.to_sym, sign.to_s.freeze
      @first, @last = to_date(first), to_date(last)
      @options = (options || {}).freeze
    end

    def name
      key.to_s
    end

    def match?(d)
      d = to_date(d)
      (@first ? @first <= d : true) && (@last ? @last >= d : true)
    end

    def [](option_key)
      @options[option_key]
    end

    def to_ad_year(era_year)
      era_year = era_year.to_i
      @first.year - 1 + era_year
    end

    def to_era_year(ad_year)
      ad_year = ad_year.to_i
      ad_year - @first.year + 1
    end

    private
    def to_date(obj)
      return nil unless obj
      return obj if obj.is_a?(Date)
      return Date.new(obj.year, obj.month, obj.day) if obj.is_a?(Time)
      return obj.to_date if respond_to?(:to_date)
      Warekky.try_without(Date, :parse, obj.to_s)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
warekky-0.1.1 lib/warekky/era.rb
warekky-0.1.0 lib/warekky/era.rb