Class: TeamApi::TeamIndexer
- Inherits:
-
Object
- Object
- TeamApi::TeamIndexer
- Defined in:
- lib/team_api/joiner.rb
Instance Method Summary collapse
- #create_indexes ⇒ Object
-
#initialize(data) ⇒ TeamIndexer
constructor
A new instance of TeamIndexer.
- #team ⇒ Object
-
#team_by_deprecated_name ⇒ Object
Returns an index of team member usernames keyed by deprecated names.
-
#team_by_email ⇒ Object
Returns an index of team member usernames keyed by email address.
-
#team_by_github ⇒ Object
Returns an index of team member usernames keyed by GitHub username.
-
#team_index_by_field(field) ⇒ Object
Returns an index of team member usernames keyed by a particular field.
- #team_member_from_reference(reference) ⇒ Object
- #team_member_is_private(reference) ⇒ Object
- #team_member_key(ref) ⇒ Object
- #team_member_key_by_type(ref) ⇒ Object
-
#team_members ⇒ Object
Returns the list of team members, with site.data[‘private’] members included.
Constructor Details
#initialize(data) ⇒ TeamIndexer
Returns a new instance of TeamIndexer.
29 30 31 |
# File 'lib/team_api/joiner.rb', line 29 def initialize(data) @team = (data || {}).dup end |
Instance Method Details
#create_indexes ⇒ Object
37 38 39 40 41 |
# File 'lib/team_api/joiner.rb', line 37 def create_indexes team_by_email team_by_github team_by_deprecated_name end |
#team ⇒ Object
33 34 35 |
# File 'lib/team_api/joiner.rb', line 33 def team @team || {} end |
#team_by_deprecated_name ⇒ Object
Returns an index of team member usernames keyed by deprecated names.
54 55 56 |
# File 'lib/team_api/joiner.rb', line 54 def team_by_deprecated_name @team_by_deprecated_name ||= team_index_by_field 'deprecated_name' end |
#team_by_email ⇒ Object
Returns an index of team member usernames keyed by email address.
44 45 46 |
# File 'lib/team_api/joiner.rb', line 44 def team_by_email @team_by_email ||= team_index_by_field 'email' end |
#team_by_github ⇒ Object
Returns an index of team member usernames keyed by GitHub username.
49 50 51 |
# File 'lib/team_api/joiner.rb', line 49 def team_by_github @team_by_github ||= team_index_by_field 'github' end |
#team_index_by_field(field) ⇒ Object
Returns an index of team member usernames keyed by a particular field.
59 60 61 62 63 64 65 |
# File 'lib/team_api/joiner.rb', line 59 def team_index_by_field(field) team_members.map do |member| value = member[field] value = member['private'][field] if value.nil? && member['private'] [value.downcase, member['name'].downcase] unless value.nil? end.compact.to_h end |
#team_member_from_reference(reference) ⇒ Object
84 85 86 87 88 89 90 91 92 |
# File 'lib/team_api/joiner.rb', line 84 def team_member_from_reference(reference) key = team_member_key reference if team['private'] team[key] || team['private'][key] else team[key] end end |
#team_member_is_private(reference) ⇒ Object
94 95 96 97 |
# File 'lib/team_api/joiner.rb', line 94 def team_member_is_private(reference) key = team_member_key(reference).downcase team['private'] && team['private'][key] end |
#team_member_key(ref) ⇒ Object
79 80 81 82 |
# File 'lib/team_api/joiner.rb', line 79 def team_member_key(ref) key = team_member_key_by_type(ref).downcase team_by_email[key] || team_by_github[key] || team_by_deprecated_name[key] || key end |
#team_member_key_by_type(ref) ⇒ Object
75 76 77 |
# File 'lib/team_api/joiner.rb', line 75 def team_member_key_by_type(ref) (ref.is_a? String) ? ref : (ref['id'] || ref['email'] || ref['github'] || ref['deprecated_name']) end |
#team_members ⇒ Object
Returns the list of team members, with site.data[‘private’] members included.
69 70 71 72 73 |
# File 'lib/team_api/joiner.rb', line 69 def team_members @team_members ||= team.map { |key, value| value unless key == 'private' } .compact .concat((team['private'] || {}).values) end |