Class: ActsAsScd::Period::DateValue

Inherits:
Object
  • Object
show all
Includes:
ModalSupport::BracketConstructor
Defined in:
lib/acts_as_scd/period.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(d) ⇒ DateValue

Returns a new instance of DateValue.



6
7
8
9
10
11
12
13
# 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

Instance Attribute Details

#valueObject (readonly)

Returns the value of attribute value.



15
16
17
# File 'lib/acts_as_scd/period.rb', line 15

def value
  @value
end

Instance Method Details

#parseObject



30
31
32
33
34
35
36
# 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_dateObject



17
18
19
20
21
22
23
24
25
26
27
28
# 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_sObject



38
39
40
41
42
43
44
45
46
47
# 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