class Pipl::DOB

Attributes

date_range[RW]
display[RW]

Public Class Methods

from_age(age) click to toggle source
# File lib/pipl/fields.rb, line 466
def self.from_age(age)
  self.from_age_range(age, age)
end
from_age_range(start_age, end_age) click to toggle source
# File lib/pipl/fields.rb, line 470
def self.from_age_range(start_age, end_age)
  raise ArgumentError.new('start_age and end_age can\'t be negative') if start_age < 0 or end_age < 0

  if start_age > end_age
    start_age, end_age = end_age, start_age
  end

  today = Date.today
  start_date = today << end_age * 12
  start_date = start_date - 1
  end_date = today << start_age * 12
  self.new({date_range: Pipl::DateRange.new(start_date, end_date)})
end
from_birth_date(birth_date) click to toggle source
# File lib/pipl/fields.rb, line 461
def self.from_birth_date(birth_date)
  raise ArgumentError.new('birth_date can\'t be in the future') unless birth_date <= Date.today
  self.new({date_range: DateRange.new(birth_date, birth_date)})
end
from_birth_year(birth_year) click to toggle source
# File lib/pipl/fields.rb, line 456
def self.from_birth_year(birth_year)
  raise ArgumentError.new('birth_year must be positive') unless birth_year > 0
  self.new({date_range: DateRange.from_years_range(birth_year, birth_year)})
end
new(params={}) click to toggle source
Calls superclass method Pipl::Field::new
# File lib/pipl/fields.rb, line 450
def initialize(params={})
  super params
  @date_range = params[:date_range]
  @display = params[:display]
end

Public Instance Methods

age() click to toggle source
# File lib/pipl/fields.rb, line 488
def age
  unless @date_range.nil?
    dob = @date_range.middle
    today = Date.today
    diff = today.year - dob.year
    diff = diff - 1 if dob.month > today.month or (dob.month >= today.month and dob.day > today.day)
    diff
  end
end
age_range() click to toggle source
# File lib/pipl/fields.rb, line 498
def age_range
  if @date_range
    return [self.age, self.age] unless @date_range.start and @date_range.end
    start_age = DOB.new({date_range: Pipl::DateRange.new(@date_range.start, @date_range.start)}).age
    end_age = DOB.new({date_range: Pipl::DateRange.new(@date_range.end, @date_range.end)}).age
    return end_age, start_age
  else
    return nil, nil
  end
end
is_searchable?() click to toggle source
# File lib/pipl/fields.rb, line 513
def is_searchable?
  not @date_range.nil?
end
to_hash() click to toggle source
# File lib/pipl/fields.rb, line 509
def to_hash
  {date_range: @date_range.to_hash} if @date_range
end
to_s() click to toggle source
# File lib/pipl/fields.rb, line 484
def to_s
  @display or Pipl::Utils.to_utf8(age.to_s)
end