]> git.openstreetmap.org Git - rails.git/blobdiff - lib/short_link.rb
Pare menu down to basics
[rails.git] / lib / short_link.rb
index afcf1ef37f5462a0b83b4cc3d85a283a24e0dc7d..045883d57b5c45fb2435aa6e2411ffe1b7d58ce8 100644 (file)
@@ -9,7 +9,7 @@ module ShortLink
   # array of 64 chars to encode 6 bits. this is almost like base64 encoding, but
   # the symbolic chars are different, as base64's + and / aren't very 
   # URL-friendly.
-  ARRAY = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a + ['_','@']
+  ARRAY = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a + ['_','~']
 
   ##
   # Given a string encoding a location, returns the [lon, lat, z] tuple of that 
@@ -20,6 +20,11 @@ module ShortLink
     z = 0
     z_offset = 0
 
+    # keep support for old shortlinks which use the @ character, now
+    # replaced by the ~ character because twitter is horribly broken
+    # and we can't have that.
+    str.gsub!("@","~")
+
     str.each_char do |c|
       t = ARRAY.index c
       if t.nil?
@@ -57,7 +62,7 @@ module ShortLink
     # append characters onto the end of the string to represent
     # partial zoom levels (characters themselves have a granularity
     # of 3 zoom levels).
-    ((z + 8) % 3).times { str << "=" }
+    ((z + 8) % 3).times { str << "-" }
     
     return str
   end