Skip to content

Commit

Permalink
add the delegating methods that use the leaderboards instance variabl…
Browse files Browse the repository at this point in the history
…e name
  • Loading branch information
erichummel committed Jun 8, 2016
1 parent f764376 commit de5a8e6
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 4 deletions.
20 changes: 16 additions & 4 deletions lib/competition_ranking_leaderboard.rb
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ def ranked_in_list_in(leaderboard_name, members, options = {})
end
end

rankings_for_members_in(leaderboard_name, included_members, scores).each_with_index do |rank, index|
rankings_for_members_having_scores_in(leaderboard_name, included_members, scores).each_with_index do |rank, index|
ranks_for_members[index][@rank_key] = rank
end

Expand All @@ -107,15 +107,26 @@ def ranked_in_list_in(leaderboard_name, members, options = {})
ranks_for_members
end

# Retrieve a the rankings of leaders given their member ids and scores
# Retrieve a list of the rankings of leaders given their member names and scores
#
# @param members [Array] Member names.
# @param scores [Array] a list of scores for the members, aligned with the member names
#
# @return a list of the rankings for the passed in members and scores

def rankings_for_members_having_scores(members, scores)
rankings_for_members_in(@leaderboard_name, members, scores)
end

# Retrieve a list of the rankings of leaders given their member names and scores
#
# @param leaderboard_name [String] Name of the leaderboard.
# @param members [Array] Member names.
# @param scores [Array] a list of scores for the members
# @param scores [Array] a list of scores for the members, aligned with the member names
#
# @return a list of the rankings for the passed in members and scores

def rankings_for_members_in(leaderboard_name, members, scores)
def rankings_for_members_having_scores_in(leaderboard_name, members, scores)
@redis_connection.multi do |transaction|
members.each_with_index do |member, index|
if @reverse
Expand All @@ -126,4 +137,5 @@ def rankings_for_members_in(leaderboard_name, members, scores)
end
end.map{|rank| rank ? rank + 1 : rank}
end

end
9 changes: 9 additions & 0 deletions lib/leaderboard.rb
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,15 @@ def members_data_for_in(leaderboard_name, members)
@redis_connection.hmget(member_data_key(leaderboard_name), *members)
end

# Retrieve the optional member data for the given members in the leaderboard.
#
# @param members [Array] Member names.
#
# @return array of strings of optional member data.
def members_data_for(members)
members_data_for_in(@leaderboard_name, members)
end

# Update the optional member data for a given member in the leaderboard.
#
# @param member [String] Member name.
Expand Down

0 comments on commit de5a8e6

Please sign in to comment.