Class: Rank
Instance Method Summary collapse
- #execute ⇒ Object
- #higher_is_better(criteria) ⇒ Object
-
#initialize(objects) ⇒ Rank
constructor
A new instance of Rank.
- #lower_is_better(criteria) ⇒ Object
- #rank_reverse(do_reverse, criteria) ⇒ Object
- #size ⇒ Object
- #total_for(a) ⇒ Object
Constructor Details
Instance Method Details
#execute ⇒ Object
152 153 154 155 156 157 |
# File 'lib/kuku.rb', line 152 def execute @objects. collect{|o| RankedObject.new(total_for(o), o)}. sort_by{|r| r.rank}. collect{|r| r.object} end |
#higher_is_better(criteria) ⇒ Object
132 133 134 |
# File 'lib/kuku.rb', line 132 def higher_is_better criteria rank_reverse true, criteria end |
#lower_is_better(criteria) ⇒ Object
135 136 137 |
# File 'lib/kuku.rb', line 135 def lower_is_better criteria rank_reverse false, criteria end |
#rank_reverse(do_reverse, criteria) ⇒ Object
138 139 140 141 142 143 144 145 146 |
# File 'lib/kuku.rb', line 138 def rank_reverse do_reverse, criteria criteria.each{|criterion| i = 0 sorted = @objects.sort_by {|o| eval("o.#{criterion}")} sorted = sorted.reverse if do_reverse @all_rankings << sorted.collect{|o| RankedObject.new(i+=1, o) } } self end |
#size ⇒ Object
129 130 131 |
# File 'lib/kuku.rb', line 129 def size @objects.size end |
#total_for(a) ⇒ Object
147 148 149 150 151 |
# File 'lib/kuku.rb', line 147 def total_for a @all_rankings.collect{|rank| rank.select{|ranked_item| ranked_item.object == a}[0].rank}. inject{|sum, i| sum + i} end |