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',
}
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of FieldsContainer.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/pipl/containers.rb', line 30
def initialize(params={})
@names = []
@addresses = []
@phones = []
@emails = []
@jobs = []
@educations = []
@images = []
@usernames = []
@user_ids = []
@urls = []
@ethnicities = []
@languages = []
@origin_countries = []
@relationships = []
@tags = []
@dob = nil
@gender = nil
add_fields params[:fields] if params.key? :fields
end
|
Instance Attribute Details
#addresses ⇒ Object
Returns the value of attribute addresses.
27
28
29
|
# File 'lib/pipl/containers.rb', line 27
def addresses
@addresses
end
|
#dob ⇒ Object
Returns the value of attribute dob.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def dob
@dob
end
|
#educations ⇒ Object
Returns the value of attribute educations.
27
28
29
|
# File 'lib/pipl/containers.rb', line 27
def educations
@educations
end
|
#emails ⇒ Object
Returns the value of attribute emails.
27
28
29
|
# File 'lib/pipl/containers.rb', line 27
def emails
@emails
end
|
#ethnicities ⇒ Object
Returns the value of attribute ethnicities.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def ethnicities
@ethnicities
end
|
#gender ⇒ Object
Returns the value of attribute gender.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def gender
@gender
end
|
#images ⇒ Object
Returns the value of attribute images.
27
28
29
|
# File 'lib/pipl/containers.rb', line 27
def images
@images
end
|
#jobs ⇒ Object
Returns the value of attribute jobs.
27
28
29
|
# File 'lib/pipl/containers.rb', line 27
def jobs
@jobs
end
|
#languages ⇒ Object
Returns the value of attribute languages.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def languages
@languages
end
|
#names ⇒ Object
Returns the value of attribute names.
27
28
29
|
# File 'lib/pipl/containers.rb', line 27
def names
@names
end
|
#origin_countries ⇒ Object
Returns the value of attribute origin_countries.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def origin_countries
@origin_countries
end
|
#phones ⇒ Object
Returns the value of attribute phones.
27
28
29
|
# File 'lib/pipl/containers.rb', line 27
def phones
@phones
end
|
#relationships ⇒ Object
Returns the value of attribute relationships.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def relationships
@relationships
end
|
Returns the value of attribute tags.
28
29
30
|
# File 'lib/pipl/containers.rb', line 28
def tags
@tags
end
|
#urls ⇒ Object
Returns the value of attribute urls.
27
28
29
|
# File 'lib/pipl/containers.rb', line 27
def urls
@urls
end
|
#user_ids ⇒ Object
Returns the value of attribute user_ids.
27
28
29
|
# File 'lib/pipl/containers.rb', line 27
def user_ids
@user_ids
end
|
#usernames ⇒ Object
Returns the value of attribute usernames.
27
28
29
|
# File 'lib/pipl/containers.rb', line 27
def usernames
@usernames
end
|
Class Method Details
.fields_from_hash(h) ⇒ Object
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/pipl/containers.rb', line 56
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
52
53
54
|
# File 'lib/pipl/containers.rb', line 52
def self.from_hash(h)
raise AbstractMethodInvoked.new
end
|
Instance Method Details
#add_field(field) ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/pipl/containers.rb', line 82
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
78
79
80
|
# File 'lib/pipl/containers.rb', line 78
def add_fields(fields)
fields.each { |f| add_field f }
end
|
#address ⇒ Object
108
109
110
|
# File 'lib/pipl/containers.rb', line 108
def address
@addresses.first unless @addresses.empty?
end
|
#all_fields ⇒ Object
96
97
98
99
100
101
102
|
# File 'lib/pipl/containers.rb', line 96
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
112
113
114
|
# File 'lib/pipl/containers.rb', line 112
def education
@educations.first unless @educations.empty?
end
|
#email ⇒ Object
132
133
134
|
# File 'lib/pipl/containers.rb', line 132
def email
@emails.first unless @emails.empty?
end
|
#ethnicity ⇒ Object
120
121
122
|
# File 'lib/pipl/containers.rb', line 120
def ethnicity
@ethnicities.first unless @ethnicities.empty?
end
|
#fields_to_hash ⇒ Object
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/pipl/containers.rb', line 67
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? or (value.kind_of?(Array) and value.empty?) }
end
|
#image ⇒ Object
140
141
142
|
# File 'lib/pipl/containers.rb', line 140
def image
@images.first unless @images.empty?
end
|
#job ⇒ Object
104
105
106
|
# File 'lib/pipl/containers.rb', line 104
def job
@jobs.first unless @jobs.empty?
end
|
#language ⇒ Object
116
117
118
|
# File 'lib/pipl/containers.rb', line 116
def language
@languages.first unless @languages.empty?
end
|
#name ⇒ Object
136
137
138
|
# File 'lib/pipl/containers.rb', line 136
def name
@names.first unless @names.empty?
end
|
#origin_country ⇒ Object
124
125
126
|
# File 'lib/pipl/containers.rb', line 124
def origin_country
@origin_countries.first unless @origin_countries.empty?
end
|
#phone ⇒ Object
128
129
130
|
# File 'lib/pipl/containers.rb', line 128
def phone
@phones.first unless @phones.empty?
end
|
#relationship ⇒ Object
156
157
158
|
# File 'lib/pipl/containers.rb', line 156
def relationship
@relationships.first unless @relationships.empty?
end
|
#url ⇒ Object
144
145
146
|
# File 'lib/pipl/containers.rb', line 144
def url
@urls.first unless @urls.empty?
end
|
#user_id ⇒ Object
152
153
154
|
# File 'lib/pipl/containers.rb', line 152
def user_id
@user_ids.first unless @user_ids.empty?
end
|
#username ⇒ Object
148
149
150
|
# File 'lib/pipl/containers.rb', line 148
def username
@usernames.first unless @usernames.empty?
end
|