Sha256: b4b15d3e7cca6f56c1620d4eb43a193ff285fbde3e7c43cab0c6b1069ba42352

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 KB

Contents

module Timeliness
  module Helpers

    def full_hour(hour, meridian)
      hour = hour.to_i
      return hour if meridian.nil?
      if meridian.delete('.').downcase == 'am'
        raise(ArgumentError) if hour == 0 || hour > 12
        hour == 12 ? 0 : hour
      else
        hour == 12 ? hour : hour + 12
      end
    end

    def unambiguous_year(year)
      if year.length <= 2
        century = Time.now.year.to_s[0..1].to_i
        century -= 1 if year.to_i >= Timeliness.configuration.ambiguous_year_threshold
        year = "#{century}#{year.rjust(2,'0')}"
      end
      year.to_i
    end
    
    def month_index(month)
      return month.to_i if month.to_i > 0 || /0+/ =~ month
      (month.length > 3 ? month_names : abbr_month_names).index { |str| month.casecmp?(str) }
    end

    def month_names
      i18n_loaded? ? I18n.t('date.month_names') : Date::MONTHNAMES
    end

    def abbr_month_names
      i18n_loaded? ? I18n.t('date.abbr_month_names') : Date::ABBR_MONTHNAMES
    end

    def microseconds(usec)
      (".#{usec}".to_f * 1_000_000).to_i
    end

    def offset_in_seconds(offset)
      sign = offset =~ /^-/ ? -1 : 1
      parts = offset.scan(/\d\d/).map {|p| p.to_f }
      parts[1] = parts[1].to_f / 60
      (parts[0] + parts[1]) * sign * 3600
    end

    def i18n_loaded?
      defined?(I18n)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
timeliness-0.5.0 lib/timeliness/helpers.rb
timeliness-0.4.5 lib/timeliness/helpers.rb