Browse Source

Lua : update the url encode/decode functions

Justin Donaldson 10 years ago
parent
commit
1cb1470ca2
2 changed files with 15 additions and 7 deletions
  1. 2 0
      std/StringTools.hx
  2. 13 7
      std/lua/Boot.hx

+ 2 - 0
std/StringTools.hx

@@ -85,6 +85,8 @@ class StringTools {
 			var len = 0;
 			var len = 0;
 			var b = @:privateAccess s.bytes.urlDecode(len);
 			var b = @:privateAccess s.bytes.urlDecode(len);
 			return @:privateAccess String.__alloc__(b,len);
 			return @:privateAccess String.__alloc__(b,len);
+		#elseif lua 
+			return lua.Boot.urlDecode(s);
 		#else
 		#else
 			return null;
 			return null;
 		#end
 		#end

+ 13 - 7
std/lua/Boot.hx

@@ -142,14 +142,20 @@ class Boot {
 		return tabobj;
 		return tabobj;
 	}
 	}
 
 
+	public static function urlDecode(str:String){
+		str = lua.StringTools.gsub (str, "+", " ");
+		str = lua.StringTools.gsub (str, "%%(%x%x)",
+				function(h) {return lua.StringTools.char(lua.Lua.tonumber(h,16));});
+		str = lua.StringTools.gsub (str, "\r\n", "\n");
+		return str;
+	}
+
 	public static function urlEncode(str:String){
 	public static function urlEncode(str:String){
-		if (str != null) {
-			str = lua.StringTools.gsub(str, "\n", "\r\n");
-			str = lua.StringTools.gsub(str, "([^%w %-%_%.%~])", function (c) {
-				return lua.StringTools.format("%%%02X", lua.StringTools.byte(c) + '');
-			});
-			str = lua.StringTools.gsub(str, " ", "+");
-		}
+		str = lua.StringTools.gsub(str, "\n", "\r\n");
+		str = lua.StringTools.gsub(str, "([^%w %-%_%.%~])", function (c) {
+			return lua.StringTools.format("%%%02X", lua.StringTools.byte(c) + '');
+		});
+		str = lua.StringTools.gsub(str, " ", "+");
 		return str;
 		return str;
 	}
 	}