Class: Pipl::FieldsContainer
- Inherits:
-
Object
- Object
- Pipl::FieldsContainer
show all
- Defined in:
- lib/pipl/containers.rb
Constant Summary
collapse
- CLASS_CONTAINER =
{
Name: 'names',
Address: 'addresses',
Phone: 'phones',
Email: 'emails',
Job: 'jobs',
Education: 'educations',
Image: 'images',
Username: 'usernames',
UserID: 'user_ids',
Url: 'urls',
Ethnicity: 'ethnicities',
Language: 'languages',
OriginCountry: 'origin_countries',
Relationship: 'relationships',
Tag: 'tags',
Vehicle: 'vehicles',
}
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of FieldsContainer.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/pipl/containers.rb', line 31
def initialize(params={})
@names = []
@addresses = []
@phones = []
@emails = []
@jobs = []
@educations = []
@images = []
@usernames = []
@user_ids = []
@urls = []
@ethnicities = []
@languages = []
@origin_countries = []
@relationships = []
@tags = []
@dob = nil
@gender = nil
@vehicles = []
add_fields params[:fields] if params.key? :fields
end
|
Instance Attribute Details
#addresses ⇒ Object
Returns the value of attribute addresses.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def addresses
@addresses
end
|
#dob ⇒ Object
Returns the value of attribute dob.
29
30
31
|
# File 'lib/pipl/containers.rb', line 29
def dob
@dob
end
|
#educations ⇒ Object
Returns the value of attribute educations.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def educations
@educations
end
|
#emails ⇒ Object
Returns the value of attribute emails.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def emails
@emails
end
|
#ethnicities ⇒ Object
Returns the value of attribute ethnicities.
29
30
31
|
# File 'lib/pipl/containers.rb', line 29
def ethnicities
@ethnicities
end
|
#gender ⇒ Object
Returns the value of attribute gender.
29
30
31
|
# File 'lib/pipl/containers.rb', line 29
def gender
@gender
end
|
#images ⇒ Object
Returns the value of attribute images.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def images
@images
end
|
#jobs ⇒ Object
Returns the value of attribute jobs.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def jobs
@jobs
end
|
#languages ⇒ Object
Returns the value of attribute languages.
29
30
31
|
# File 'lib/pipl/containers.rb', line 29
def languages
@languages
end
|
#names ⇒ Object
Returns the value of attribute names.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def names
@names
end
|
#origin_countries ⇒ Object
Returns the value of attribute origin_countries.
29
30
31
|
# File 'lib/pipl/containers.rb', line 29
def origin_countries
@origin_countries
end
|
#phones ⇒ Object
Returns the value of attribute phones.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def phones
@phones
end
|
#relationships ⇒ Object
Returns the value of attribute relationships.
29
30
31
|
# File 'lib/pipl/containers.rb', line 29
def relationships
@relationships
end
|
Returns the value of attribute tags.
29
30
31
|
# File 'lib/pipl/containers.rb', line 29
def tags
@tags
end
|
#urls ⇒ Object
Returns the value of attribute urls.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def urls
@urls
end
|
#user_ids ⇒ Object
Returns the value of attribute user_ids.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def user_ids
@user_ids
end
|
#usernames ⇒ Object
Returns the value of attribute usernames.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def usernames
@usernames
end
|
#vehicles ⇒ Object
Returns the value of attribute vehicles.
29
30
31
|
# File 'lib/pipl/containers.rb', line 29
def vehicles
@vehicles
end
|
Class Method Details
.fields_from_hash(h) ⇒ Object
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/pipl/containers.rb', line 58
def self.fields_from_hash(h)
fields = self::CLASS_CONTAINER.map do |cls_name, container|
cls = Pipl.const_get cls_name
h[container.to_sym].map { |x| cls.from_hash(x) } if h.key? container.to_sym
end
.flatten.compact
fields << DOB.from_hash(h[:dob]) if h.key? :dob
fields << Gender.from_hash(h[:gender]) if h.key? :gender
fields
end
|
.from_hash(h) ⇒ Object
54
55
56
|
# File 'lib/pipl/containers.rb', line 54
def self.from_hash(h)
raise AbstractMethodInvoked.new
end
|
Instance Method Details
#add_field(field) ⇒ Object
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/pipl/containers.rb', line 84
def add_field(field)
cls_sym = field.class.name.split('::').last.to_sym
container = self.class::CLASS_CONTAINER[cls_sym]
if container
instance_variable_get("@#{container}") << field
elsif cls_sym == :DOB
@dob = field
elsif cls_sym == :Gender
@gender = field
else
raise ArgumentError.new("Object of type #{field.class} is an invalid field")
end
end
|
#add_fields(fields) ⇒ Object
80
81
82
|
# File 'lib/pipl/containers.rb', line 80
def add_fields(fields)
fields.each { |f| add_field f }
end
|
#address ⇒ Object
110
111
112
|
# File 'lib/pipl/containers.rb', line 110
def address
@addresses.first unless @addresses.empty?
end
|
#all_fields ⇒ Object
98
99
100
101
102
103
104
|
# File 'lib/pipl/containers.rb', line 98
def all_fields
fields = self.class::CLASS_CONTAINER.values.map { |container| instance_variable_get("@#{container}") }
.flatten.compact
fields << @dob if @dob
fields << @gender if @gender
fields
end
|
#education ⇒ Object
114
115
116
|
# File 'lib/pipl/containers.rb', line 114
def education
@educations.first unless @educations.empty?
end
|
#email ⇒ Object
134
135
136
|
# File 'lib/pipl/containers.rb', line 134
def email
@emails.first unless @emails.empty?
end
|
#ethnicity ⇒ Object
122
123
124
|
# File 'lib/pipl/containers.rb', line 122
def ethnicity
@ethnicities.first unless @ethnicities.empty?
end
|
#fields_to_hash ⇒ Object
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/pipl/containers.rb', line 69
def fields_to_hash
h = {}
h[:dob] = @dob.to_hash if @dob
h[:gender] = @gender.to_hash if @gender
self.class::CLASS_CONTAINER.values.each do |container|
fields = instance_variable_get("@#{container}")
h[container.to_sym] = fields.map { |field| field.to_hash }.compact unless fields.empty?
end
h.reject { |_, value| value.nil? || (value.kind_of?(Array) && value.empty?) }
end
|
#image ⇒ Object
142
143
144
|
# File 'lib/pipl/containers.rb', line 142
def image
@images.first unless @images.empty?
end
|
#job ⇒ Object
106
107
108
|
# File 'lib/pipl/containers.rb', line 106
def job
@jobs.first unless @jobs.empty?
end
|
#language ⇒ Object
118
119
120
|
# File 'lib/pipl/containers.rb', line 118
def language
@languages.first unless @languages.empty?
end
|
#name ⇒ Object
138
139
140
|
# File 'lib/pipl/containers.rb', line 138
def name
@names.first unless @names.empty?
end
|
#origin_country ⇒ Object
126
127
128
|
# File 'lib/pipl/containers.rb', line 126
def origin_country
@origin_countries.first unless @origin_countries.empty?
end
|
#phone ⇒ Object
130
131
132
|
# File 'lib/pipl/containers.rb', line 130
def phone
@phones.first unless @phones.empty?
end
|
#relationship ⇒ Object
158
159
160
|
# File 'lib/pipl/containers.rb', line 158
def relationship
@relationships.first unless @relationships.empty?
end
|
#url ⇒ Object
146
147
148
|
# File 'lib/pipl/containers.rb', line 146
def url
@urls.first unless @urls.empty?
end
|
#user_id ⇒ Object
154
155
156
|
# File 'lib/pipl/containers.rb', line 154
def user_id
@user_ids.first unless @user_ids.empty?
end
|
#username ⇒ Object
150
151
152
|
# File 'lib/pipl/containers.rb', line 150
def username
@usernames.first unless @usernames.empty?
end
|
#vehicle ⇒ Object
162
163
164
|
# File 'lib/pipl/containers.rb', line 162
def vehicle
@vehicles.first unless @vehicles.empty?
end
|