parliament-ruby 0.5.19 → 0.6.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/.rubocop.yml +1 -3
- data/.travis.yml +0 -1
- data/Gemfile +2 -0
- data/Makefile +9 -4
- data/README.md +185 -11
- data/Rakefile +1 -1
- data/lib/parliament/client_error.rb +21 -0
- data/lib/parliament/decorator/constituency_area.rb +27 -0
- data/lib/parliament/{decorators → decorator}/constituency_group.rb +29 -1
- data/lib/parliament/decorator/contact_point.rb +48 -0
- data/lib/parliament/decorator/gender.rb +13 -0
- data/lib/parliament/decorator/gender_identity.rb +13 -0
- data/lib/parliament/decorator/house.rb +41 -0
- data/lib/parliament/decorator/house_incumbency.rb +50 -0
- data/lib/parliament/decorator/house_seat.rb +27 -0
- data/lib/parliament/decorator/incumbency.rb +57 -0
- data/lib/parliament/decorator/party.rb +27 -0
- data/lib/parliament/decorator/party_membership.rb +36 -0
- data/lib/parliament/decorator/person.rb +224 -0
- data/lib/parliament/{decorators → decorator}/postal_address.rb +5 -1
- data/lib/parliament/decorator/seat_incumbency.rb +64 -0
- data/lib/parliament/decorator.rb +7 -0
- data/lib/parliament/network_error.rb +13 -0
- data/lib/parliament/no_content_response_error.rb +19 -0
- data/lib/parliament/request.rb +112 -33
- data/lib/parliament/response.rb +76 -9
- data/lib/parliament/server_error.rb +21 -0
- data/lib/parliament/utils.rb +113 -13
- data/lib/parliament/version.rb +1 -1
- data/lib/parliament.rb +8 -4
- data/parliament-ruby.gemspec +6 -6
- metadata +32 -28
- data/lib/parliament/decorators/constituency_area.rb +0 -17
- data/lib/parliament/decorators/contact_point.rb +0 -29
- data/lib/parliament/decorators/gender.rb +0 -9
- data/lib/parliament/decorators/gender_identity.rb +0 -9
- data/lib/parliament/decorators/house.rb +0 -28
- data/lib/parliament/decorators/house_incumbency.rb +0 -31
- data/lib/parliament/decorators/house_seat.rb +0 -17
- data/lib/parliament/decorators/incumbency.rb +0 -35
- data/lib/parliament/decorators/party.rb +0 -17
- data/lib/parliament/decorators/party_membership.rb +0 -23
- data/lib/parliament/decorators/person.rb +0 -152
- data/lib/parliament/decorators/seat_incumbency.rb +0 -39
- data/lib/parliament/no_content_error.rb +0 -9
@@ -0,0 +1,13 @@
|
|
1
|
+
module Parliament
|
2
|
+
module Decorator
|
3
|
+
# Decorator namespace for Grom::Node instances with type: http://id.ukpds.org/schema/Gender
|
4
|
+
module Gender
|
5
|
+
# Alias genderName with fallback.
|
6
|
+
#
|
7
|
+
# @return [String, String] the gender name of the Grom::Node or an empty string.
|
8
|
+
def name
|
9
|
+
respond_to?(:genderName) ? genderName : ''
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Parliament
|
2
|
+
module Decorator
|
3
|
+
# Decorator namespace for Grom::Node instances with type: http://id.ukpds.org/schema/GenderIdentity
|
4
|
+
module GenderIdentity
|
5
|
+
# Alias genderIdentityHasGender with fallback.
|
6
|
+
#
|
7
|
+
# @return [Grom::Node, nil] a Grom::Node with type http://id.ukpds.org/schema/Gender or nil.
|
8
|
+
def gender
|
9
|
+
respond_to?(:genderIdentityHasGender) ? genderIdentityHasGender.first : nil
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Parliament
|
2
|
+
module Decorator
|
3
|
+
# Decorator namespace for Grom::Node instances with type: http://id.ukpds.org/schema/House
|
4
|
+
module House
|
5
|
+
# Alias houseName with fallback.
|
6
|
+
#
|
7
|
+
# @return [String, String] the name of the Grom::Node or an empty string.
|
8
|
+
def name
|
9
|
+
respond_to?(:houseName) ? houseName : ''
|
10
|
+
end
|
11
|
+
|
12
|
+
# Alias houseSeatHasSeatIncumbency with fallback.
|
13
|
+
#
|
14
|
+
# @return [Array, Array] the seat incumbencies of the Grom::Node or an empty array.
|
15
|
+
def seat_incumbencies
|
16
|
+
return @seat_incumbencies unless @seat_incumbencies.nil?
|
17
|
+
|
18
|
+
seat_incumbencies = []
|
19
|
+
seats.each do |seat|
|
20
|
+
seat_incumbencies << seat.seat_incumbencies
|
21
|
+
end
|
22
|
+
|
23
|
+
@seat_incumbencies = seat_incumbencies.flatten.uniq
|
24
|
+
end
|
25
|
+
|
26
|
+
# Alias houseHasHouseSeat with fallback.
|
27
|
+
#
|
28
|
+
# @return [Array, Array] the house seats of the Grom::Node or an empty array.
|
29
|
+
def seats
|
30
|
+
respond_to?(:houseHasHouseSeat) ? houseHasHouseSeat : []
|
31
|
+
end
|
32
|
+
|
33
|
+
# Alias houseHasHouseIncumbency with fallback.
|
34
|
+
#
|
35
|
+
# @return [Array, Array] the house incumbencies of the Grom::Node or an empty array.
|
36
|
+
def house_incumbencies
|
37
|
+
respond_to?(:houseHasHouseIncumbency) ? houseHasHouseIncumbency : []
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Parliament
|
2
|
+
module Decorator
|
3
|
+
# Decorator namespace for Grom::Node instances with type: http://id.ukpds.org/schema/HouseIncumbency
|
4
|
+
module HouseIncumbency
|
5
|
+
# Alias incumbencyStartDate with fallback.
|
6
|
+
#
|
7
|
+
# @return [DateTime, nil] the start date of the Grom::Node or nil.
|
8
|
+
def start_date
|
9
|
+
respond_to?(:incumbencyStartDate) ? DateTime.parse(incumbencyStartDate) : nil
|
10
|
+
end
|
11
|
+
|
12
|
+
# Alias incumbencyEndDate with fallback.
|
13
|
+
#
|
14
|
+
# @return [DateTime, nil] the end date of the Grom::Node or nil.
|
15
|
+
def end_date
|
16
|
+
respond_to?(:incumbencyEndDate) ? DateTime.parse(incumbencyEndDate) : nil
|
17
|
+
end
|
18
|
+
|
19
|
+
# Checks if Grom::Node has an end date.
|
20
|
+
#
|
21
|
+
# @return [Boolean] a boolean depending on whether or not the Grom::Node has an end date.
|
22
|
+
def current?
|
23
|
+
has_end_date = respond_to?(:incumbencyEndDate)
|
24
|
+
|
25
|
+
!has_end_date
|
26
|
+
end
|
27
|
+
|
28
|
+
# Alias houseIncumbencyHasHouse with fallback.
|
29
|
+
#
|
30
|
+
# @return [Grom::Node, nil] the house of the Grom::Node or nil.
|
31
|
+
def house
|
32
|
+
respond_to?(:houseIncumbencyHasHouse) ? houseIncumbencyHasHouse.first : nil
|
33
|
+
end
|
34
|
+
|
35
|
+
# Alias incumbencyHasMember with fallback.
|
36
|
+
#
|
37
|
+
# @return [Grom::Node, nil] the member connected to the Grom::Node or nil.
|
38
|
+
def member
|
39
|
+
respond_to?(:incumbencyHasMember) ? incumbencyHasMember.first : nil
|
40
|
+
end
|
41
|
+
|
42
|
+
# Alias incumbencyHasContactPoint with fallback.
|
43
|
+
#
|
44
|
+
# @return [Array, Array] the contact points of the Grom::Node or an empty array.
|
45
|
+
def contact_points
|
46
|
+
respond_to?(:incumbencyHasContactPoint) ? incumbencyHasContactPoint : []
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Parliament
|
2
|
+
module Decorator
|
3
|
+
# Decorator namespace for Grom::Node instances with type: http://id.ukpds.org/schema/HouseSeat
|
4
|
+
module HouseSeat
|
5
|
+
# Alias houseSeatHasHouse with fallback.
|
6
|
+
#
|
7
|
+
# @return [Grom::Node, nil] the house of the Grom::Node or nil.
|
8
|
+
def house
|
9
|
+
respond_to?(:houseSeatHasHouse) ? houseSeatHasHouse.first : nil
|
10
|
+
end
|
11
|
+
|
12
|
+
# Alias houseSeatHasConstituencyGroup with fallback.
|
13
|
+
#
|
14
|
+
# @return [Grom::Node, nil] the constituency group of the Grom::Node or nil.
|
15
|
+
def constituency
|
16
|
+
respond_to?(:houseSeatHasConstituencyGroup) ? houseSeatHasConstituencyGroup.first : nil
|
17
|
+
end
|
18
|
+
|
19
|
+
# Alias houseSeatHasSeatIncumbency with fallback.
|
20
|
+
#
|
21
|
+
# @return [Array, Array] the seat incumbencies of the Grom::Node or an empty.
|
22
|
+
def seat_incumbencies
|
23
|
+
respond_to?(:houseSeatHasSeatIncumbency) ? houseSeatHasSeatIncumbency : []
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Parliament
|
2
|
+
module Decorator
|
3
|
+
# Decorator namespace for Grom::Node instances with type: http://id.ukpds.org/schema/Incumbency
|
4
|
+
module Incumbency
|
5
|
+
# Alias incumbencyStartDate with fallback.
|
6
|
+
#
|
7
|
+
# @return [DateTime, nil] the start date of the Grom::Node or nil.
|
8
|
+
def start_date
|
9
|
+
respond_to?(:incumbencyStartDate) ? DateTime.parse(incumbencyStartDate) : nil
|
10
|
+
end
|
11
|
+
|
12
|
+
# Alias incumbencyEndDate with fallback.
|
13
|
+
#
|
14
|
+
# @return [DateTime, nil] the end date of the Grom::Node or nil.
|
15
|
+
def end_date
|
16
|
+
respond_to?(:incumbencyEndDate) ? DateTime.parse(incumbencyEndDate) : nil
|
17
|
+
end
|
18
|
+
|
19
|
+
# Checks if Grom::Node has an end date.
|
20
|
+
#
|
21
|
+
# @return [Boolean] a boolean depending on whether or not the Grom::Node has an end date.
|
22
|
+
def current?
|
23
|
+
has_end_date = respond_to?(:incumbencyEndDate)
|
24
|
+
|
25
|
+
!has_end_date
|
26
|
+
end
|
27
|
+
|
28
|
+
# Alias incumbencyHasMember with fallback.
|
29
|
+
#
|
30
|
+
# @return [Grom::Node, nil] the member connected to the Grom::Node or nil.
|
31
|
+
def member
|
32
|
+
respond_to?(:incumbencyHasMember) ? incumbencyHasMember.first : nil
|
33
|
+
end
|
34
|
+
|
35
|
+
# Alias incumbencyHasContactPoint with fallback.
|
36
|
+
#
|
37
|
+
# @return [Array, Array] the contact points of the Grom::Node or an empty array.
|
38
|
+
def contact_points
|
39
|
+
respond_to?(:incumbencyHasContactPoint) ? incumbencyHasContactPoint : []
|
40
|
+
end
|
41
|
+
|
42
|
+
# Alias seatIncumbencyHasHouseSeat with fallback.
|
43
|
+
#
|
44
|
+
# @return [Grom::Node, nil] the seat of the Grom::Node or nil.
|
45
|
+
def seat
|
46
|
+
respond_to?(:seatIncumbencyHasHouseSeat) ? seatIncumbencyHasHouseSeat.first : nil
|
47
|
+
end
|
48
|
+
|
49
|
+
# Alias houseIncumbencyHasHouse with fallback.
|
50
|
+
#
|
51
|
+
# @return [Grom::Node, nil] the house of the Grom::Node or nil.
|
52
|
+
def house
|
53
|
+
respond_to?(:houseIncumbencyHasHouse) ? houseIncumbencyHasHouse.first : nil
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Parliament
|
2
|
+
module Decorator
|
3
|
+
# Decorator namespace for Grom::Node instances with type: http://id.ukpds.org/schema/Party
|
4
|
+
module Party
|
5
|
+
# Alias partyName with fallback.
|
6
|
+
#
|
7
|
+
# @return [String, String] the party name of the Grom::Node or an empty string.
|
8
|
+
def name
|
9
|
+
respond_to?(:partyName) ? partyName : ''
|
10
|
+
end
|
11
|
+
|
12
|
+
# Alias partyHasPartyMembership with fallback.
|
13
|
+
#
|
14
|
+
# @return [Array, Array] the party memberships of the Grom::Node or an empty array.
|
15
|
+
def party_memberships
|
16
|
+
respond_to?(:partyHasPartyMembership) ? partyHasPartyMembership : []
|
17
|
+
end
|
18
|
+
|
19
|
+
# Alias count with fallback.
|
20
|
+
#
|
21
|
+
# @return [Integer, nil] the count of members of the Grom::Node or nil.
|
22
|
+
def member_count
|
23
|
+
respond_to?(:count) ? count.to_i : nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Parliament
|
2
|
+
module Decorator
|
3
|
+
# Decorator namespace for Grom::Node instances with type: http://id.ukpds.org/schema/PartyMembership
|
4
|
+
module PartyMembership
|
5
|
+
# Alias partyMembershipHasParty with fallback.
|
6
|
+
#
|
7
|
+
# @return [Grom::Node, nil] the party of the Grom::Node or nil.
|
8
|
+
def party
|
9
|
+
respond_to?(:partyMembershipHasParty) ? partyMembershipHasParty.first : nil
|
10
|
+
end
|
11
|
+
|
12
|
+
# Alias partyMembershipStartDate with fallback.
|
13
|
+
#
|
14
|
+
# @return [DateTime, nil] the start date of the Grom::Node or nil.
|
15
|
+
def start_date
|
16
|
+
respond_to?(:partyMembershipStartDate) ? DateTime.parse(partyMembershipStartDate) : nil
|
17
|
+
end
|
18
|
+
|
19
|
+
# Alias partyMembershipEndDate with fallback.
|
20
|
+
#
|
21
|
+
# @return [DateTime, nil] the end date of the Grom::Node or nil.
|
22
|
+
def end_date
|
23
|
+
respond_to?(:partyMembershipEndDate) ? DateTime.parse(partyMembershipEndDate) : nil
|
24
|
+
end
|
25
|
+
|
26
|
+
# Checks if Grom::Node has an end date.
|
27
|
+
#
|
28
|
+
# @return [Boolean] a boolean depending on whether or not the Grom::Node has an end date.
|
29
|
+
def current?
|
30
|
+
has_end_date = respond_to?(:partyMembershipEndDate)
|
31
|
+
|
32
|
+
!has_end_date
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,224 @@
|
|
1
|
+
module Parliament
|
2
|
+
module Decorator
|
3
|
+
# Decorator namespace for Grom::Node instances with type: http://id.ukpds.org/schema/Person.
|
4
|
+
# rubocop:disable ModuleLength
|
5
|
+
module Person
|
6
|
+
# Alias personGivenName with fallback.
|
7
|
+
#
|
8
|
+
# @return [String, String] the given name of the Grom::Node or an empty string.
|
9
|
+
def given_name
|
10
|
+
respond_to?(:personGivenName) ? personGivenName : ''
|
11
|
+
end
|
12
|
+
|
13
|
+
# Alias personFamilyName with fallback.
|
14
|
+
#
|
15
|
+
# @return [String, String] the family name of the Grom::Node or an empty string.
|
16
|
+
def family_name
|
17
|
+
respond_to?(:personFamilyName) ? personFamilyName : ''
|
18
|
+
end
|
19
|
+
|
20
|
+
# Alias personOtherNames with fallback.
|
21
|
+
#
|
22
|
+
# @return [String, String] the other names of the Grom::Node or an empty string.
|
23
|
+
def other_name
|
24
|
+
respond_to?(:personOtherNames) ? personOtherNames : ''
|
25
|
+
end
|
26
|
+
|
27
|
+
# Alias personDateOfBirth with fallback.
|
28
|
+
#
|
29
|
+
# @return [DateTime, nil] the date of birth of the Grom::Node or nil.
|
30
|
+
def date_of_birth
|
31
|
+
respond_to?(:personDateOfBirth) ? DateTime.parse(personDateOfBirth) : nil
|
32
|
+
end
|
33
|
+
|
34
|
+
# Builds a full name using personGivenName and personFamilyName.
|
35
|
+
#
|
36
|
+
# @return [String, String] the full name of the Grom::Node or an empty string.
|
37
|
+
def full_name
|
38
|
+
full_name = ''
|
39
|
+
full_name += respond_to?(:personGivenName) ? personGivenName + ' ' : ''
|
40
|
+
full_name += respond_to?(:personFamilyName) ? personFamilyName : ''
|
41
|
+
full_name.rstrip
|
42
|
+
end
|
43
|
+
|
44
|
+
# Alias memberHasIncumbency with fallback.
|
45
|
+
#
|
46
|
+
# @return [Array, Array] all the incumbencies of the Grom::Node or an empty array.
|
47
|
+
def incumbencies
|
48
|
+
respond_to?(:memberHasIncumbency) ? memberHasIncumbency : []
|
49
|
+
end
|
50
|
+
|
51
|
+
# Alias memberHasIncumbency with fallback.
|
52
|
+
#
|
53
|
+
# @return [Array, Array] the seat incumbencies of the Grom::Node or an empty array.
|
54
|
+
def seat_incumbencies
|
55
|
+
if respond_to?(:memberHasIncumbency)
|
56
|
+
memberHasIncumbency.select { |inc| inc.type == 'http://id.ukpds.org/schema/SeatIncumbency' }
|
57
|
+
else
|
58
|
+
[]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# Alias memberHasIncumbency with fallback.
|
63
|
+
#
|
64
|
+
# @return [Array, Array] the house incumbencies of the Grom::Node or an empty array.
|
65
|
+
def house_incumbencies
|
66
|
+
if respond_to?(:memberHasIncumbency)
|
67
|
+
memberHasIncumbency.select { |inc| inc.type == 'http://id.ukpds.org/schema/HouseIncumbency' }
|
68
|
+
else
|
69
|
+
[]
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# Alias seatIncumbencyHasHouseSeat with fallback.
|
74
|
+
#
|
75
|
+
# @return [Array, Array] the seats of the Grom::Node or an empty array.
|
76
|
+
def seats
|
77
|
+
return @seats unless @seats.nil?
|
78
|
+
|
79
|
+
seats = []
|
80
|
+
seat_incumbencies.each do |incumbency|
|
81
|
+
seats << incumbency.seat if incumbency.respond_to?(:seat)
|
82
|
+
end
|
83
|
+
|
84
|
+
@seats = seats.flatten.uniq
|
85
|
+
end
|
86
|
+
|
87
|
+
# Alias houseSeatHasHouse with fallback.
|
88
|
+
#
|
89
|
+
# @return [Array, Array] the houses of the Grom::Node or an empty array.
|
90
|
+
def houses
|
91
|
+
return @houses unless @houses.nil?
|
92
|
+
|
93
|
+
houses = []
|
94
|
+
seats.each do |seat|
|
95
|
+
houses << seat.house
|
96
|
+
end
|
97
|
+
|
98
|
+
house_incumbencies.each do |inc|
|
99
|
+
houses << inc.house
|
100
|
+
end
|
101
|
+
|
102
|
+
@houses = houses.flatten.uniq
|
103
|
+
end
|
104
|
+
|
105
|
+
# Alias houseSeatHasConstituencyGroup with fallback.
|
106
|
+
#
|
107
|
+
# @return [Array, Array] the constituencies of the Grom::Node or an empty array.
|
108
|
+
def constituencies
|
109
|
+
return @constituencies unless @constituencies.nil?
|
110
|
+
|
111
|
+
constituencies = []
|
112
|
+
seats.each do |seat|
|
113
|
+
constituencies << seat.constituency
|
114
|
+
end
|
115
|
+
|
116
|
+
@constituencies = constituencies.flatten.uniq
|
117
|
+
end
|
118
|
+
|
119
|
+
# Alias partyMemberHasPartyMembership with fallback.
|
120
|
+
#
|
121
|
+
# @return [Array, Array] the party memberships of the Grom::Node or an empty array.
|
122
|
+
def party_memberships
|
123
|
+
respond_to?(:partyMemberHasPartyMembership) ? partyMemberHasPartyMembership : []
|
124
|
+
end
|
125
|
+
|
126
|
+
# Alias partyMembershipHasParty with fallback.
|
127
|
+
#
|
128
|
+
# @return [Array, Array] the parties of the Grom::Node or an empty array.
|
129
|
+
def parties
|
130
|
+
return @parties unless @parties.nil?
|
131
|
+
|
132
|
+
parties = []
|
133
|
+
party_memberships.each do |party_membership|
|
134
|
+
parties << party_membership.party
|
135
|
+
end
|
136
|
+
|
137
|
+
@parties = parties.flatten.uniq.compact
|
138
|
+
end
|
139
|
+
|
140
|
+
# Alias personHasContactPoint with fallback.
|
141
|
+
#
|
142
|
+
# @return [Array, Array] the contact points of the Grom::Node or an empty array.
|
143
|
+
def contact_points
|
144
|
+
respond_to?(:personHasContactPoint) ? personHasContactPoint : []
|
145
|
+
end
|
146
|
+
|
147
|
+
# Alias personHasGenderIdentity with fallback.
|
148
|
+
#
|
149
|
+
# @return [Array, Array] the gender identities of the Grom::Node or an empty array.
|
150
|
+
def gender_identities
|
151
|
+
respond_to?(:personHasGenderIdentity) ? personHasGenderIdentity : []
|
152
|
+
end
|
153
|
+
|
154
|
+
# Alias genderIdentityHasGender with fallback.
|
155
|
+
#
|
156
|
+
# @return [Array, Array] the gender of the Grom::Node or nil.
|
157
|
+
def gender
|
158
|
+
gender_identities.empty? ? nil : gender_identities.first.gender
|
159
|
+
end
|
160
|
+
|
161
|
+
# Checks the statuses of the Grom::Node.
|
162
|
+
#
|
163
|
+
# @return [Hash, Hash] the statuses of the Grom::Node or an empty hash.
|
164
|
+
def statuses
|
165
|
+
return @statuses unless @statuses.nil?
|
166
|
+
|
167
|
+
statuses = {}
|
168
|
+
statuses[:house_membership_status] = house_membership_status
|
169
|
+
statuses[:general_membership_status] = general_membership_status
|
170
|
+
|
171
|
+
@statuses = statuses
|
172
|
+
end
|
173
|
+
|
174
|
+
# Alias D79B0BAC513C4A9A87C9D5AFF1FC632F with fallback.
|
175
|
+
#
|
176
|
+
# @return [String, String] the full title of the Grom::Node or an empty string.
|
177
|
+
def full_title
|
178
|
+
respond_to?(:D79B0BAC513C4A9A87C9D5AFF1FC632F) ? self.D79B0BAC513C4A9A87C9D5AFF1FC632F : ''
|
179
|
+
end
|
180
|
+
|
181
|
+
# Alias F31CBD81AD8343898B49DC65743F0BDF with fallback.
|
182
|
+
#
|
183
|
+
# @return [String, String] the display name of the Grom::Node or the full name.
|
184
|
+
def display_name
|
185
|
+
respond_to?(:F31CBD81AD8343898B49DC65743F0BDF) ? self.F31CBD81AD8343898B49DC65743F0BDF : full_name
|
186
|
+
end
|
187
|
+
|
188
|
+
# Alias A5EE13ABE03C4D3A8F1A274F57097B6C with fallback.
|
189
|
+
#
|
190
|
+
# @return [String, String] the sort name of the Grom::Node or an empty string.
|
191
|
+
def sort_name
|
192
|
+
respond_to?(:A5EE13ABE03C4D3A8F1A274F57097B6C) ? self.A5EE13ABE03C4D3A8F1A274F57097B6C : ''
|
193
|
+
end
|
194
|
+
|
195
|
+
private
|
196
|
+
|
197
|
+
def house_membership_status
|
198
|
+
no_current_seat_incumbency = seat_incumbencies.select(&:current?).empty?
|
199
|
+
no_current_house_incumbency = house_incumbencies.select(&:current?).empty?
|
200
|
+
former_lord = (!house_incumbencies.empty? && no_current_house_incumbency)
|
201
|
+
former_mp = (!seat_incumbencies.empty? && no_current_seat_incumbency)
|
202
|
+
|
203
|
+
build_house_membership_status(no_current_seat_incumbency, no_current_house_incumbency, former_lord, former_mp)
|
204
|
+
end
|
205
|
+
|
206
|
+
def build_house_membership_status(no_current_seat_incumbency, no_current_house_incumbency, former_lord, former_mp)
|
207
|
+
statuses = []
|
208
|
+
statuses << 'Current MP' unless no_current_seat_incumbency
|
209
|
+
statuses << 'Lord' unless no_current_house_incumbency
|
210
|
+
statuses << 'Former Lord' if former_lord
|
211
|
+
statuses << 'Former MP' if former_mp
|
212
|
+
|
213
|
+
statuses
|
214
|
+
end
|
215
|
+
|
216
|
+
def general_membership_status
|
217
|
+
statuses = []
|
218
|
+
statuses << 'Current Member' unless incumbencies.select(&:current?).empty?
|
219
|
+
statuses << 'Former Member' if !incumbencies.empty? && incumbencies.select(&:current?).empty?
|
220
|
+
statuses
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|