Class: Pipl::DOB
Instance Attribute Summary collapse
Attributes inherited from Field
#current, #inferred, #last_seen, #valid_since
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Field
base_params_from_hash, extra_metadata, from_hash
Methods included from Utils
alnum_chars, alpha_chars, date_to_str, extract_rate_limits, is_valid_url?, str_to_date, titleize, to_utf8
Constructor Details
permalink
#initialize(params = {}) ⇒ DOB
Returns a new instance of DOB.
[View source]
451
452
453
454
455
|
# File 'lib/pipl/fields.rb', line 451
def initialize(params={})
super params
@date_range = params[:date_range]
@display = params[:display]
end
|
Instance Attribute Details
permalink
#date_range ⇒ Object
Returns the value of attribute date_range.
449
450
451
|
# File 'lib/pipl/fields.rb', line 449
def date_range
@date_range
end
|
Returns the value of attribute display.
449
450
451
|
# File 'lib/pipl/fields.rb', line 449
def display
@display
end
|
Class Method Details
permalink
.from_age(age) ⇒ Object
[View source]
467
468
469
|
# File 'lib/pipl/fields.rb', line 467
def self.from_age(age)
self.from_age_range(age, age)
end
|
permalink
.from_age_range(start_age, end_age) ⇒ Object
[View source]
471
472
473
474
475
476
477
478
479
480
481
482
483
|
# File 'lib/pipl/fields.rb', line 471
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 || 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
|
permalink
.from_birth_date(birth_date) ⇒ Object
[View source]
462
463
464
465
|
# File 'lib/pipl/fields.rb', line 462
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
|
permalink
.from_birth_year(birth_year) ⇒ Object
[View source]
457
458
459
460
|
# File 'lib/pipl/fields.rb', line 457
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
|
Instance Method Details
[View source]
489
490
491
492
493
494
495
496
497
|
# File 'lib/pipl/fields.rb', line 489
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 || (dob.month >= today.month && dob.day > today.day)
diff
end
end
|
permalink
#age_range ⇒ Object
[View source]
499
500
501
502
503
504
505
506
507
508
|
# File 'lib/pipl/fields.rb', line 499
def age_range
if @date_range
return [self.age, self.age] unless @date_range.start && @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
|
permalink
#is_searchable? ⇒ Boolean
[View source]
514
515
516
|
# File 'lib/pipl/fields.rb', line 514
def is_searchable?
! @date_range.nil?
end
|
[View source]
510
511
512
|
# File 'lib/pipl/fields.rb', line 510
def to_hash
{date_range: @date_range.to_hash} if @date_range
end
|