class TeamApi::TeamIndexer

Public Class Methods

new(data) click to toggle source
# File lib/team_api/joiner.rb, line 29
def initialize(data)
  @team = (data || {}).dup
end

Public Instance Methods

create_indexes() click to toggle source
# File lib/team_api/joiner.rb, line 37
def create_indexes
  team_by_email
  team_by_github
  team_by_deprecated_name
end
team() click to toggle source
# File lib/team_api/joiner.rb, line 33
def team
  @team || {}
end
team_by_deprecated_name() click to toggle source

Returns an index of team member usernames keyed by deprecated names.

# 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() click to toggle source

Returns an index of team member usernames keyed by email address.

# File lib/team_api/joiner.rb, line 44
def team_by_email
  @team_by_email ||= team_index_by_field 'email'
end
team_by_github() click to toggle source

Returns an index of team member usernames keyed by GitHub username.

# 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) click to toggle source

Returns an index of team member usernames keyed by a particular field.

# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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() click to toggle source

Returns the list of team members, with site.data['private'] members included.

# 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