class ActsAsScd::Period::DateValue

Attributes

value[R]

Public Class Methods

new(d) click to toggle source
# File lib/acts_as_scd/period.rb, line 6
def initialize(d)

  d = d.strftime('%Y%m%d') if d.respond_to?(:strftime)
  if String===d && d =~ /\A(\d\d\d\d)-(\d\d)-(\d\d)\Z/
    d = $1.to_i*10000 + $2.to_i*100 + $3.to_i
  end
  @value = d && d.to_i
end

Public Instance Methods

parse() click to toggle source
# File lib/acts_as_scd/period.rb, line 30
def parse
  y = @value/10000
  v = @value%10000
  m = v/100
  d = v%100
  [y,m,d]
end
to_date() click to toggle source
# File lib/acts_as_scd/period.rb, line 17
def to_date
  case @value
  when START_OF_TIME, END_OF_TIME
    nil
  else
    begin
      Date.new *parse
    rescue
      raise parse.inspect
    end
  end
end
to_s() click to toggle source
# File lib/acts_as_scd/period.rb, line 38
def to_s
  if @value==START_OF_TIME
    ''
  elsif @value==END_OF_TIME
    ''
  else
    y,m,d = parse
    I18n.l Date.new(y, m, d)
  end
end