ranker 1.0.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
- ---
2
- SHA1:
3
- data.tar.gz: 00ce8440e7681886fd6ae2c93f4db5af94c5a655
4
- metadata.gz: 691b75e03742cc6ca452f8fc9a45cec01a1fa9f2
5
- SHA512:
6
- data.tar.gz: 458a61a409e17288fb97b90dea58417b99426d627f61c9aaa5d9417e88a27944b6137b2dbed40390bd0e0d281c5b6277ca329dc0bdafa5067cd4964ca8d6ee8f
7
- metadata.gz: 77454afb9e3c29d72a8e3c223f9a0d47df41d7841e00a933e9c7f3de0adeffa9c882a173c432178d1fc621fe45dae2e37b6cff2f950b8c6339d0a36f173355f2
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 [![Build Status](https://travis-ci.org/quidproquo/ranker.png?branch=master)](http://travis-ci.org/quidproquo/ranker)
1
+ Ranker [![Build Status](https://travis-ci.org/quidproquo/ranker.png?branch=master)](http://travis-ci.org/quidproquo/ranker) [![Code Climate](https://codeclimate.com/github/quidproquo/ranker.png)](https://codeclimate.com/github/quidproquo/ranker) [![Coverage Status](https://coveralls.io/repos/quidproquo/ranker/badge.png?branch=master)](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 descending order.
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
- ranking_1 = rankings[0]
38
- ranking_1.rank #=> 1
39
- ranking_1.score #=> 8
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 ascending order, for example, if you were ranking golf players.
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, :desc => false)
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
- :desc => true
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 sort_desc?
50
- options[:desc]
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 sort_desc?
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!
@@ -1,3 +1,3 @@
1
1
  module Ranker
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.1'
3
3
  end
data/lib/ranker.rb CHANGED
@@ -42,7 +42,7 @@ module Ranker
42
42
  def default_options
43
43
  {
44
44
  :by => lambda { |rankable| rankable },
45
- :desc => true,
45
+ :asc => true,
46
46
  :strategy => :standard_competition
47
47
  }
48
48
  end
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 desc false' do
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, :desc => false) }
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
@@ -1,3 +1,6 @@
1
1
  require 'pry'
2
2
  require File.expand_path('../../lib/ranker.rb', __FILE__)
3
3
 
4
+ require 'coveralls'
5
+ Coveralls.wear!
6
+
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.0.0
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
- date: 2014-01-06 00:00:00 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: pry
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
- requirement: &id001 !ruby/object:Gem::Requirement
18
- requirements:
19
- - &id002
20
- - ">="
21
- - !ruby/object:Gem::Version
22
- version: "0"
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
- requirement: &id003 !ruby/object:Gem::Requirement
29
- requirements:
30
- - *id002
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
- requirement: &id004 !ruby/object:Gem::Requirement
37
- requirements:
38
- - *id002
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
- requirement: &id005 !ruby/object:Gem::Requirement
45
- requirements:
46
- - *id002
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
- version_requirements: *id005
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
- - *id002
92
- required_rubygems_version: !ruby/object:Gem::Requirement
93
- requirements:
94
- - *id002
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.14
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 strategies.
102
- test_files:
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