leaderboard 3.0.0.rc1 → 3.0.0.rc2
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.
- data/CHANGELOG.markdown +4 -0
- data/lib/leaderboard.rb +7 -6
- data/lib/leaderboard/version.rb +1 -1
- data/spec/leaderboard_spec.rb +14 -2
- data/spec/version_spec.rb +1 -1
- metadata +2 -5
data/CHANGELOG.markdown
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## leaderboard 3.0.0.rc2 (2012-11-27)
|
4
|
+
|
5
|
+
* No longer cast scores to a floating point automatically. If requesting a score for an unknown member in the leaderboard, return `nil`. Under the old behavior, a `nil` score gets returned as 0.0. This is misleading as 0.0 is a valid score.
|
6
|
+
|
3
7
|
## leaderboard 3.0.0.rc1 (2012-11-08)
|
4
8
|
|
5
9
|
* Removes `:use_zero_index_for_rank_option` as valid option for requesting data from the leaderboard. [Original proposal](https://github.com/agoragames/leaderboard/pull/27)
|
data/lib/leaderboard.rb
CHANGED
@@ -120,7 +120,7 @@ class Leaderboard
|
|
120
120
|
# @param member [String] Member name.
|
121
121
|
# @param score [float] Member score.
|
122
122
|
# @param member_data [Hash] Optional member data.
|
123
|
-
def rank_member_in(leaderboard_name, member, score, member_data)
|
123
|
+
def rank_member_in(leaderboard_name, member, score, member_data = nil)
|
124
124
|
@redis_connection.multi do |transaction|
|
125
125
|
transaction.zadd(leaderboard_name, score, member)
|
126
126
|
transaction.hset(member_data_key(leaderboard_name), member, member_data) if member_data
|
@@ -320,7 +320,7 @@ class Leaderboard
|
|
320
320
|
#
|
321
321
|
# @param member Member name.
|
322
322
|
#
|
323
|
-
# @return the score for a member in the leaderboard.
|
323
|
+
# @return the score for a member in the leaderboard or +nil+ if the member is not in the leaderboard.
|
324
324
|
def score_for(member)
|
325
325
|
score_for_in(@leaderboard_name, member)
|
326
326
|
end
|
@@ -330,9 +330,10 @@ class Leaderboard
|
|
330
330
|
# @param leaderboard_name Name of the leaderboard.
|
331
331
|
# @param member [String] Member name.
|
332
332
|
#
|
333
|
-
# @return the score for a member in the leaderboard.
|
333
|
+
# @return the score for a member in the leaderboard or +nil+ if the member is not in the leaderboard.
|
334
334
|
def score_for_in(leaderboard_name, member)
|
335
|
-
@redis_connection.zscore(leaderboard_name, member)
|
335
|
+
score = @redis_connection.zscore(leaderboard_name, member)
|
336
|
+
score.to_f if score
|
336
337
|
end
|
337
338
|
|
338
339
|
# Check to see if a member exists in the leaderboard.
|
@@ -379,7 +380,7 @@ class Leaderboard
|
|
379
380
|
end
|
380
381
|
end
|
381
382
|
|
382
|
-
responses[0] = responses[0].to_f
|
383
|
+
responses[0] = responses[0].to_f if responses[0]
|
383
384
|
responses[1] = responses[1] + 1 rescue nil
|
384
385
|
|
385
386
|
{:member => member, :score => responses[0], :rank => responses[1]}
|
@@ -790,7 +791,7 @@ class Leaderboard
|
|
790
791
|
data = {}
|
791
792
|
data[:member] = member
|
792
793
|
data[:rank] = responses[index * 2] + 1 rescue nil
|
793
|
-
data[:score] = responses[index * 2 + 1].to_f
|
794
|
+
data[:score] = responses[index * 2 + 1].to_f if responses[index * 2 + 1]
|
794
795
|
|
795
796
|
if leaderboard_options[:with_member_data]
|
796
797
|
data[:member_data] = member_data_for_in(leaderboard_name, member)
|
data/lib/leaderboard/version.rb
CHANGED
data/spec/leaderboard_spec.rb
CHANGED
@@ -75,6 +75,7 @@ describe 'Leaderboard' do
|
|
75
75
|
rank_members_in_leaderboard(5)
|
76
76
|
|
77
77
|
@leaderboard.score_for('member_4').should eql(4.0)
|
78
|
+
@leaderboard.score_for('jones').should be_nil
|
78
79
|
end
|
79
80
|
|
80
81
|
it 'should return the correct total pages' do
|
@@ -477,7 +478,7 @@ describe 'Leaderboard' do
|
|
477
478
|
score_and_rank_for_member = @leaderboard.score_and_rank_for('jones')
|
478
479
|
|
479
480
|
score_and_rank_for_member[:member].should eql('jones')
|
480
|
-
score_and_rank_for_member[:score].should
|
481
|
+
score_and_rank_for_member[:score].should be_nil
|
481
482
|
score_and_rank_for_member[:rank].should be_nil
|
482
483
|
end
|
483
484
|
|
@@ -498,7 +499,7 @@ describe 'Leaderboard' do
|
|
498
499
|
end
|
499
500
|
|
500
501
|
it 'should allow you to change the score for a member not in the leaderboard' do
|
501
|
-
@leaderboard.score_for('jones').should
|
502
|
+
@leaderboard.score_for('jones').should be_nil
|
502
503
|
@leaderboard.change_score_for('jones', 5)
|
503
504
|
@leaderboard.score_for('jones').should eql(5.0)
|
504
505
|
end
|
@@ -630,4 +631,15 @@ describe 'Leaderboard' do
|
|
630
631
|
ranked_members[2][:rank].should be(16)
|
631
632
|
ranked_members[2][:score].should eql(10.0)
|
632
633
|
end
|
634
|
+
|
635
|
+
it 'should return nil for the score and rank for ranked_in_list if a member is not in the leaderboard' do
|
636
|
+
rank_members_in_leaderboard
|
637
|
+
|
638
|
+
ranked_members = @leaderboard.ranked_in_list(['jones'])
|
639
|
+
|
640
|
+
ranked_members.size.should be(1)
|
641
|
+
ranked_members[0][:member].should eql('jones')
|
642
|
+
ranked_members[0][:score].should be_nil
|
643
|
+
ranked_members[0][:rank].should be_nil
|
644
|
+
end
|
633
645
|
end
|
data/spec/version_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: leaderboard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.
|
4
|
+
version: 3.0.0.rc2
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|
@@ -93,9 +93,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
93
93
|
- - ! '>='
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
|
-
segments:
|
97
|
-
- 0
|
98
|
-
hash: -395088559469707987
|
99
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
97
|
none: false
|
101
98
|
requirements:
|