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 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