get-your-rep 1.3.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|