]> git.openstreetmap.org Git - rails.git/blobdiff - lib/short_link.rb
Merge remote-tracking branch 'upstream/pull/4464'
[rails.git] / lib / short_link.rb
index ec83ce33fc48d276acdf74d86c50f688e46d4ad1..8983f3bd3bd1c4858d5aab8caa57a538d12b32a7 100644 (file)
@@ -32,11 +32,11 @@ module ShortLink
         else
           3.times do
             x <<= 1
-            x |= 1 unless (t & 32).zero?
+            x |= 1 unless t.nobits?(32)
             t <<= 1
 
             y <<= 1
-            y |= 1 unless (t & 32).zero?
+            y |= 1 unless t.nobits?(32)
             t <<= 1
           end
           z += 3
@@ -47,21 +47,21 @@ module ShortLink
       y <<= (32 - z)
 
       # project the parameters back to their coordinate ranges.
-      [(x * 360.0 / 2**32) - 180.0,
-       (y * 180.0 / 2**32) - 90.0,
+      [(x * 360.0 / (2**32)) - 180.0,
+       (y * 180.0 / (2**32)) - 90.0,
        z - 8 - (z_offset % 3)]
     end
 
     ##
     # given a location and zoom, return a short string representing it.
     def encode(lon, lat, z)
-      code = interleave_bits(((lon + 180.0) * 2**32 / 360.0).to_i,
-                             ((lat + 90.0) * 2**32 / 180.0).to_i)
+      code = interleave_bits(((lon + 180.0) * (2**32) / 360.0).to_i,
+                             ((lat + 90.0) * (2**32) / 180.0).to_i)
       str = ""
       # add eight to the zoom level, which approximates an accuracy of
       # one pixel in a tile.
       ((z + 8) / 3.0).ceil.times do |i|
-        digit = (code >> (58 - 6 * i)) & 0x3f
+        digit = (code >> (58 - (6 * i))) & 0x3f
         str << ARRAY[digit]
       end
       # append characters onto the end of the string to represent