ranker 1.0.0 → 1.1.1
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 +7 -7
- data/README.md +13 -8
- data/lib/ranker/strategies/strategy.rb +4 -4
- data/lib/ranker/version.rb +1 -1
- data/lib/ranker.rb +1 -1
- data/spec/ranker_spec.rb +2 -2
- data/spec/spec_helper.rb +3 -0
- metadata +85 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
|
4
|
-
|
5
|
-
SHA512:
|
6
|
-
|
7
|
-
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ab92d39440ca181c5a9f7b0c8f0747384f6ee539
|
4
|
+
data.tar.gz: 39353e69dae425e89759f7f38d56c12364207c7c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: df861f01de167e2cc07f8b956faf69b0bc5011ea53aeb12e6b5b86037a1e8ab093f27a4e6f1dd53379cfadaac9cfe7f26bd6630ab073546e6a1a874ccf2d2894
|
7
|
+
data.tar.gz: e3d2e2c5bcd34f4983da21422dfa13c8764529cfc57132eed8b5fac3325103ad3002813c245f12fcaf232a9ffdd4035952e85712f24ee1414f51d2db86986b36
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Ranker [](http://travis-ci.org/quidproquo/ranker)
|
1
|
+
Ranker [](http://travis-ci.org/quidproquo/ranker) [](https://codeclimate.com/github/quidproquo/ranker) [](https://coveralls.io/r/quidproquo/ranker?branch=master)
|
2
2
|
======
|
3
3
|
|
4
4
|
A Ruby library for ranking scorable types using various ranking strategies.
|
@@ -28,15 +28,20 @@ Usage
|
|
28
28
|
|
29
29
|
### Default Ranking
|
30
30
|
|
31
|
-
Default ranking will assume values are numeric and rank them in
|
31
|
+
Default ranking will assume values are numeric and rank them in their natural sorting (ascending) order. For example, a score of 100 is higher than a score of 50.
|
32
32
|
|
33
33
|
```ruby
|
34
|
-
scores = [1, 1, 2, 3, 3, 1, 4, 4, 5, 6, 8, 1, 0]
|
34
|
+
scores = [1, 1, 2, 3, 3, 1, 4, 4, 5, 6, 8, 1, 0, 8]
|
35
|
+
|
35
36
|
rankings = Ranker.rank(scores)
|
36
37
|
rankings.count #=> 8
|
37
|
-
|
38
|
-
|
39
|
-
|
38
|
+
|
39
|
+
ranking = rankings[0]
|
40
|
+
ranking.rank #=> 1
|
41
|
+
ranking.score #=> 8
|
42
|
+
ranking.rankables #=> [8, 8]
|
43
|
+
ranking.percentile #=> 100
|
44
|
+
ranking.z_score #=> 1.83921346366645
|
40
45
|
```
|
41
46
|
|
42
47
|
### Custom Ranking
|
@@ -58,7 +63,7 @@ rankings = Ranker.rank(players, :by => lambda { |player| player.score })
|
|
58
63
|
rankings = Ranker.rank(players, :by => :score)
|
59
64
|
```
|
60
65
|
|
61
|
-
In some cases objects need to be ranked by score in
|
66
|
+
In some cases objects need to be ranked by score in descending order, for example, if you were ranking golf players. In this case a score of 75 is higher than a score of 100.
|
62
67
|
|
63
68
|
|
64
69
|
```ruby
|
@@ -66,7 +71,7 @@ class GolfPlayer < Player
|
|
66
71
|
end
|
67
72
|
|
68
73
|
players = [GolfPlayer.new(72), GolfPlayer.new(100), GolfPlayer.new(138), GolfPlayer.new(54)]
|
69
|
-
rankings = Ranker.rank(players, :by => :score, :
|
74
|
+
rankings = Ranker.rank(players, :by => :score, :asc => false)
|
70
75
|
```
|
71
76
|
|
72
77
|
### Ranking Strategies
|
@@ -38,7 +38,7 @@ module Ranker::Strategies
|
|
38
38
|
def default_options
|
39
39
|
{
|
40
40
|
:by => lambda { |rankable| rankable },
|
41
|
-
:
|
41
|
+
:asc => true
|
42
42
|
}
|
43
43
|
end
|
44
44
|
|
@@ -46,8 +46,8 @@ module Ranker::Strategies
|
|
46
46
|
options[:by]
|
47
47
|
end
|
48
48
|
|
49
|
-
def
|
50
|
-
options[:
|
49
|
+
def sort_asc?
|
50
|
+
options[:asc] == true
|
51
51
|
end
|
52
52
|
|
53
53
|
def rankables_grouped_by_score
|
@@ -55,7 +55,7 @@ module Ranker::Strategies
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def scores_unique_sorted
|
58
|
-
@scores_unique_sorted ||= unless
|
58
|
+
@scores_unique_sorted ||= unless sort_asc?
|
59
59
|
rankables_grouped_by_score.keys.sort!
|
60
60
|
else
|
61
61
|
rankables_grouped_by_score.keys.sort!.reverse!
|
data/lib/ranker/version.rb
CHANGED
data/lib/ranker.rb
CHANGED
data/spec/ranker_spec.rb
CHANGED
@@ -63,13 +63,13 @@ describe Ranker do
|
|
63
63
|
|
64
64
|
end # when ranking by symbol
|
65
65
|
|
66
|
-
context 'when ranking by symbol and
|
66
|
+
context 'when ranking by symbol and asc false' do
|
67
67
|
let(:player_1) { Player.new(150) }
|
68
68
|
let(:player_2) { Player.new(100) }
|
69
69
|
let(:player_3) { Player.new(100) }
|
70
70
|
let(:player_4) { Player.new(25) }
|
71
71
|
let(:players) { [player_1, player_2, player_3, player_4] }
|
72
|
-
let(:rankings) { klass.rank(players, :by => :score, :
|
72
|
+
let(:rankings) { klass.rank(players, :by => :score, :asc => false) }
|
73
73
|
it { should have(3).items }
|
74
74
|
|
75
75
|
context '1st ranking' do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,61 +1,92 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ranker
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Ilya Scharrenbroich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
date: 2014-01-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: coveralls
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
16
21
|
prerelease: false
|
17
|
-
|
18
|
-
requirements:
|
19
|
-
-
|
20
|
-
-
|
21
|
-
|
22
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
23
34
|
type: :development
|
24
|
-
version_requirements: *id001
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: pry-nav
|
27
35
|
prerelease: false
|
28
|
-
|
29
|
-
requirements:
|
30
|
-
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry-nav
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
31
48
|
type: :development
|
32
|
-
version_requirements: *id003
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: rspec
|
35
49
|
prerelease: false
|
36
|
-
|
37
|
-
requirements:
|
38
|
-
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
39
62
|
type: :development
|
40
|
-
version_requirements: *id004
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
63
|
prerelease: false
|
44
|
-
|
45
|
-
requirements:
|
46
|
-
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
47
76
|
type: :development
|
48
|
-
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
49
83
|
description:
|
50
|
-
email:
|
84
|
+
email:
|
51
85
|
- ilya.j.s@gmail.com
|
52
86
|
executables: []
|
53
|
-
|
54
87
|
extensions: []
|
55
|
-
|
56
88
|
extra_rdoc_files: []
|
57
|
-
|
58
|
-
files:
|
89
|
+
files:
|
59
90
|
- lib/ranker/ranking.rb
|
60
91
|
- lib/ranker/rankings.rb
|
61
92
|
- lib/ranker/strategies/dense.rb
|
@@ -78,28 +109,29 @@ files:
|
|
78
109
|
- spec/spec_helper.rb
|
79
110
|
homepage: https://github.com/quidproquo/ranker
|
80
111
|
licenses: []
|
81
|
-
|
82
112
|
metadata: {}
|
83
|
-
|
84
113
|
post_install_message:
|
85
114
|
rdoc_options: []
|
86
|
-
|
87
|
-
require_paths:
|
115
|
+
require_paths:
|
88
116
|
- lib
|
89
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
-
requirements:
|
91
|
-
-
|
92
|
-
|
93
|
-
|
94
|
-
|
117
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
95
127
|
requirements: []
|
96
|
-
|
97
128
|
rubyforge_project:
|
98
|
-
rubygems_version: 2.0.
|
129
|
+
rubygems_version: 2.0.6
|
99
130
|
signing_key:
|
100
131
|
specification_version: 4
|
101
|
-
summary: Library that enables the ranking of lists of items using various ranking
|
102
|
-
|
132
|
+
summary: Library that enables the ranking of lists of items using various ranking
|
133
|
+
strategies.
|
134
|
+
test_files:
|
103
135
|
- spec/lib/ranker/ranking_spec.rb
|
104
136
|
- spec/lib/ranker/rankings_spec.rb
|
105
137
|
- spec/lib/ranker/strategies/dense_spec.rb
|