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