On Fri, 2 Feb 2007, Josselin wrote:

> presently I  am using : zl = 13-[2,5,10,15,25].index(last_city_km) when
> last_city_km is one of these fixed values to get a zoom level,
>
> now, there is a change in customer requirement, last_city_km is calculated,
> so last_city_km can be an integer value between 0 and 25, and I would like
> to calculate (DRY) the zoom level such as :
>
> last_city_km  can be 0
>
> if  last_city_km <=  2 then zl = 13
> if 2 < last_city_km  <= 5 then zl = 12
> if 5 < last_city_km  <= 10  then zl = 12
> if 10 < last_city_km  <= 15 then zl = 12
> if 15 < last_city_km  <= 25 then zl = 12
>
> if 25 < last_city_km....  cannot !
>
> thanks for

if you think you might end up adding even more logic you might consider
   something like:

harp: ~> cat a.rb
require 'yaml'

[2, 5, 10, 15, 25].each do |last_city_km|
   base = 13

   zl = base - case last_city_km
     when 0 .. 2; 0
     when 2 .. 5; 1
     when 5 .. 10; 2
     when 10 .. 15; 3
     when 15 .. 25; 4
     else; raise RangeError, last_city_km.inspect
   end

   y last_city_km => zl
end



harp: ~> ruby a.rb
2: 13
5: 12
10: 11
15: 10
25: 9


regards.


-a
-- 
we can deny everything, except that we have the possibility of being better.
simply reflect on that.
- the dalai lama