get-your-rep 1.3.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/get-your-rep.rb +14 -14
- data/lib/get-your-rep/delegation.rb +49 -30
- data/lib/get-your-rep/patches.rb +10 -0
- data/lib/get-your-rep/representative.rb +189 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 377a9223f6574e5f8585202648f52afcb1ee7e0b
|
4
|
+
data.tar.gz: 0220d9f4d752434531457534dc0fff1614f10283
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebbd293551727d531aa44a6ca1bf23033f058d9731e4c877b2f7c276e4e6281c3cf0d2bcc7b65f5810182cf22b066a0fe80c7fc039c530f827ccc1f3a1ed5324
|
7
|
+
data.tar.gz: aa05f88a2ead6bc986c9476179ffc327e8776a08236b3975e007c215d02e59b46cfdd06df36558c2647bf8354041446335f105d627a2e72d6e09ffa5bd92c848
|
data/lib/get-your-rep.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
require 'httparty'
|
3
3
|
require_relative 'get-your-rep/delegation.rb'
|
4
4
|
require_relative 'get-your-rep/patches.rb'
|
5
|
+
require_relative 'get-your-rep/representative.rb'
|
5
6
|
|
6
7
|
# The GetYourRep class has a collection of class methods that retrieve your elected representatives
|
7
8
|
# from the Google Civic Information API, parse it from JSON, and assemble it into a usable
|
@@ -79,22 +80,21 @@ class GetYourRep
|
|
79
80
|
@officials = @response['officials']
|
80
81
|
|
81
82
|
i = 0
|
83
|
+
|
82
84
|
@officials.each do |official|
|
83
|
-
@delegation[i] =
|
85
|
+
@delegation[i] = Representative[
|
86
|
+
:name, official['name'],
|
87
|
+
:office, @response['offices'].first['name'],
|
88
|
+
:party, official['party'],
|
89
|
+
:phone, official['phones'].first,
|
90
|
+
:address_1, official['address'].first['line1'],
|
91
|
+
:address_2, official['address'].first['line2'],
|
92
|
+
:address_3, "#{official['address'].first['city'].capitalize}, #{official['address'].first['state']} #{official['address'].first['zip']}",
|
93
|
+
:email, official['emails'],
|
94
|
+
:url, official['urls'].first,
|
95
|
+
:photo, official['photoUrl']
|
96
|
+
]
|
84
97
|
|
85
|
-
@delegation[i][:name] = official['name']
|
86
|
-
@delegation[i][:office] = @response['offices'].first['name']
|
87
|
-
@delegation[i][:party] = official['party']
|
88
|
-
@delegation[i][:phone] = official['phones'].first
|
89
|
-
@delegation[i][:address_1] = official['address'].first['line1']
|
90
|
-
@delegation[i][:address_2] = official['address'].first['line2']
|
91
|
-
@delegation[i][:address_3] = official['address'].first['line3']
|
92
|
-
@delegation[i][:address_city] = official['address'].first['city'].capitalize
|
93
|
-
@delegation[i][:address_state] = official['address'].first['state']
|
94
|
-
@delegation[i][:address_zip] = official['address'].first['zip']
|
95
|
-
@delegation[i][:email] = official['emails'] if official['emails']
|
96
|
-
@delegation[i][:url] = official['urls'].first
|
97
|
-
@delegation[i][:photo] = official['photoUrl']
|
98
98
|
i += 1
|
99
99
|
end
|
100
100
|
end
|
@@ -21,42 +21,61 @@ class Delegation < Array
|
|
21
21
|
|
22
22
|
# Collects the first names of every rep in the Delegation.
|
23
23
|
def first_names
|
24
|
-
self.map
|
25
|
-
if (rep[:name].split.count > 3) || (rep[:name].split[-2].downcase == rep[:name].split[-2])
|
26
|
-
rep[:name].split[0..-3].join(' ')
|
27
|
-
else
|
28
|
-
rep[:name].split[0..-2].join(' ')
|
29
|
-
end
|
30
|
-
end
|
24
|
+
self.map { |rep| rep.first_name }
|
31
25
|
end
|
32
26
|
|
33
27
|
# Collects the last names of every rep in the Delegation.
|
34
28
|
def last_names
|
35
|
-
self.map
|
36
|
-
if (rep[:name].split.count > 3) || (rep[:name].split[-2].downcase == rep[:name].split[-2])
|
37
|
-
rep[:name].split[-2..-1].join(' ')
|
38
|
-
else
|
39
|
-
rep[:name].split.last
|
40
|
-
end
|
41
|
-
end
|
29
|
+
self.map { |rep| rep.last_name }
|
42
30
|
end
|
43
31
|
|
44
|
-
# Maps
|
32
|
+
# Maps all rep business cards.
|
45
33
|
def business_cards
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
34
|
+
self.map { |rep| rep.business_card }
|
35
|
+
end
|
36
|
+
|
37
|
+
# Get the [1] index.
|
38
|
+
def second
|
39
|
+
self[1]
|
40
|
+
end
|
41
|
+
|
42
|
+
# Get the [2] index.
|
43
|
+
def third
|
44
|
+
self[2]
|
45
|
+
end
|
46
|
+
|
47
|
+
# Get the [3] index.
|
48
|
+
def fourth
|
49
|
+
self[3]
|
50
|
+
end
|
51
|
+
|
52
|
+
# Get the [4] index.
|
53
|
+
def fifth
|
54
|
+
self[4]
|
55
|
+
end
|
56
|
+
|
57
|
+
# Get the [5] index.
|
58
|
+
def sixth
|
59
|
+
self[5]
|
60
|
+
end
|
61
|
+
|
62
|
+
# Get the [6] index.
|
63
|
+
def seventh
|
64
|
+
self[6]
|
65
|
+
end
|
66
|
+
|
67
|
+
# Get the [7] index.
|
68
|
+
def eigth
|
69
|
+
self[7]
|
70
|
+
end
|
71
|
+
|
72
|
+
# Get the [8] index.
|
73
|
+
def ninth
|
74
|
+
self[8]
|
75
|
+
end
|
76
|
+
|
77
|
+
# Get the [9] index.
|
78
|
+
def tenth
|
79
|
+
self[9]
|
61
80
|
end
|
62
81
|
end
|
data/lib/get-your-rep/patches.rb
CHANGED
@@ -4,6 +4,11 @@ class Array
|
|
4
4
|
def to_del
|
5
5
|
Delegation.new(self)
|
6
6
|
end
|
7
|
+
|
8
|
+
# Converts an Array to a Representative
|
9
|
+
def to_rep
|
10
|
+
Representative[to_h]
|
11
|
+
end
|
7
12
|
end
|
8
13
|
|
9
14
|
# :nodoc
|
@@ -13,4 +18,9 @@ class Hash
|
|
13
18
|
del = Delegation.new
|
14
19
|
del << self
|
15
20
|
end
|
21
|
+
|
22
|
+
# Converts a Hash to a Representative
|
23
|
+
def to_rep
|
24
|
+
Representative[self]
|
25
|
+
end
|
16
26
|
end
|
@@ -0,0 +1,189 @@
|
|
1
|
+
# Stores rep info in key/value pairs, and makes values accessible by instance method.
|
2
|
+
class Representative < Hash
|
3
|
+
|
4
|
+
# Strips the first name out of the full name.
|
5
|
+
def first_name
|
6
|
+
if (name.split.count > 3) || (name.split[-2].downcase == name.split[-2])
|
7
|
+
name.split[0..-3].join(' ')
|
8
|
+
else
|
9
|
+
name.split[0..-2].join(' ')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# Strips the surname out of the full name.
|
14
|
+
def last_name
|
15
|
+
if (name.split.count > 3) || (name.split[-2].downcase == name.split[-2])
|
16
|
+
name.split[-2..-1].join(' ')
|
17
|
+
else
|
18
|
+
name.split.last
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Maps attributes to a simple array for easy printing, iteration, and display. It uses #each rather than #map so it can skip over nil values without mapping them.
|
23
|
+
def business_card
|
24
|
+
card = []
|
25
|
+
self.each do |key, value|
|
26
|
+
next if value.nil?
|
27
|
+
if key == :facebook || key == :twitter || key == :youtube || key == :googleplus
|
28
|
+
card << "#{key.to_s.capitalize}: #{value}"
|
29
|
+
else
|
30
|
+
card << "#{value}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
card
|
34
|
+
end
|
35
|
+
|
36
|
+
# Get the :name value.
|
37
|
+
def name
|
38
|
+
@name = self[:name]
|
39
|
+
end
|
40
|
+
|
41
|
+
# Set the :name value.
|
42
|
+
def name=(value)
|
43
|
+
@name = value
|
44
|
+
self[:name] = @name
|
45
|
+
end
|
46
|
+
|
47
|
+
# Get the :office value.
|
48
|
+
def office
|
49
|
+
@office = self[:office]
|
50
|
+
end
|
51
|
+
|
52
|
+
# Set the :office value.
|
53
|
+
def office=(value)
|
54
|
+
@office = value
|
55
|
+
self[:office] = @office
|
56
|
+
end
|
57
|
+
|
58
|
+
# Get the :party value.
|
59
|
+
def party
|
60
|
+
@party = self[:party]
|
61
|
+
end
|
62
|
+
|
63
|
+
# Set the :party value.
|
64
|
+
def party=(value)
|
65
|
+
@party = value
|
66
|
+
self[:party] = @party
|
67
|
+
end
|
68
|
+
|
69
|
+
# Get the :phone value.
|
70
|
+
def phone
|
71
|
+
@phone = self[:phone]
|
72
|
+
end
|
73
|
+
|
74
|
+
# Set the :phone value.
|
75
|
+
def phone=(value)
|
76
|
+
@phone = value
|
77
|
+
self[:phone] = @phone
|
78
|
+
end
|
79
|
+
|
80
|
+
# Get the :address_1 value.
|
81
|
+
def address_1
|
82
|
+
@address_1 = self[:address_1]
|
83
|
+
end
|
84
|
+
|
85
|
+
# Set the :address_1 value.
|
86
|
+
def address_1=(value)
|
87
|
+
@address_1 = value
|
88
|
+
self[:address_1] = @address_1
|
89
|
+
end
|
90
|
+
|
91
|
+
# Get the :address_2 value.
|
92
|
+
def address_2
|
93
|
+
@address_2 = self[:address_2]
|
94
|
+
end
|
95
|
+
|
96
|
+
# Set the :address_2 value.
|
97
|
+
def address_2=(value)
|
98
|
+
@address_2 = value
|
99
|
+
self[:address_2] = @address_2
|
100
|
+
end
|
101
|
+
|
102
|
+
# Get the :address_3 value.
|
103
|
+
def address_3
|
104
|
+
@address_3 = self[:address_3]
|
105
|
+
end
|
106
|
+
|
107
|
+
# Set the :address_3 value.
|
108
|
+
def address_3=(value)
|
109
|
+
@address_3 = value
|
110
|
+
self[:address_3] = @address_3
|
111
|
+
end
|
112
|
+
|
113
|
+
# Get the :email value.
|
114
|
+
def email
|
115
|
+
@email = self[:email]
|
116
|
+
end
|
117
|
+
|
118
|
+
# Set the :email value.
|
119
|
+
def email=(value)
|
120
|
+
@email = value
|
121
|
+
self[:email] = @email
|
122
|
+
end
|
123
|
+
|
124
|
+
# Get the :url value.
|
125
|
+
def url
|
126
|
+
@url = self[:url]
|
127
|
+
end
|
128
|
+
|
129
|
+
# Set the :url value.
|
130
|
+
def url=(value)
|
131
|
+
@url = value
|
132
|
+
self[:url] = @url
|
133
|
+
end
|
134
|
+
|
135
|
+
# Get the :photo value.
|
136
|
+
def photo
|
137
|
+
@photo = self[:photo]
|
138
|
+
end
|
139
|
+
|
140
|
+
# Set the :photo value.
|
141
|
+
def photo=(value)
|
142
|
+
@photo = value
|
143
|
+
self[:photo] = @photo
|
144
|
+
end
|
145
|
+
|
146
|
+
# Get the :twitter value.
|
147
|
+
def twitter
|
148
|
+
@twitter = self[:twitter]
|
149
|
+
end
|
150
|
+
|
151
|
+
# Set the :twitter value.
|
152
|
+
def twitter=(value)
|
153
|
+
@twitter = value
|
154
|
+
self[:twitter] = @twitter
|
155
|
+
end
|
156
|
+
|
157
|
+
# Get the :facebook value.
|
158
|
+
def facebook
|
159
|
+
@facebook = self[:facebook]
|
160
|
+
end
|
161
|
+
|
162
|
+
# Set the :facebook value.
|
163
|
+
def facebook=(value)
|
164
|
+
@facebook = value
|
165
|
+
self[:facebook] = @facebook
|
166
|
+
end
|
167
|
+
|
168
|
+
# Get the :youtube value.
|
169
|
+
def youtube
|
170
|
+
@youtube = self[:youtube]
|
171
|
+
end
|
172
|
+
|
173
|
+
# Set the :youtube value.
|
174
|
+
def youtube=(value)
|
175
|
+
@youtube = value
|
176
|
+
self[:youtube] = @youtube
|
177
|
+
end
|
178
|
+
|
179
|
+
# Get the :googleplus value.
|
180
|
+
def googleplus
|
181
|
+
@googleplus = self[:googleplus]
|
182
|
+
end
|
183
|
+
|
184
|
+
# Set the :googleplus value.
|
185
|
+
def googleplus=(value)
|
186
|
+
@googleplus = value
|
187
|
+
self[:googleplus] = @googleplus
|
188
|
+
end
|
189
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: get-your-rep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- msimonborg
|
@@ -93,8 +93,9 @@ dependencies:
|
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: '10'
|
95
95
|
description: Get your rep with Google's Civic Information API using your address and
|
96
|
-
API key. Check the documentation and README for new
|
97
|
-
|
96
|
+
API key. Check the documentation and README for new features added in this release.
|
97
|
+
There is slight backwards incompatibility with version 1.x in the data structure
|
98
|
+
of a rep.
|
98
99
|
email: msimonborg@gmail.com
|
99
100
|
executables: []
|
100
101
|
extensions: []
|
@@ -103,6 +104,7 @@ files:
|
|
103
104
|
- lib/get-your-rep.rb
|
104
105
|
- lib/get-your-rep/delegation.rb
|
105
106
|
- lib/get-your-rep/patches.rb
|
107
|
+
- lib/get-your-rep/representative.rb
|
106
108
|
homepage: https://github.com/msimonborg/get-your-rep
|
107
109
|
licenses:
|
108
110
|
- MIT
|