25 lines
662 B
Plaintext
25 lines
662 B
Plaintext
----------------------------------------
|
|
-- URL decodes a string
|
|
-- @param {string} str
|
|
-- @return {string}
|
|
----------------------------------------
|
|
on urldecode (str)
|
|
res = ""
|
|
ba = bytearray()
|
|
len = str.length
|
|
repeat with i = 1 to len
|
|
c = str.char[i]
|
|
if (c = "%") then
|
|
-- fastest hex-to-dec conversion hack based on Lingo's rgb object
|
|
ba.writeInt8(rgb(str.char[i+1..i+2]).blue)
|
|
i = i + 2
|
|
else if (c = "+") then
|
|
ba.writeInt8(32)
|
|
else
|
|
ba.writeInt8(chartonum(c))
|
|
end if
|
|
end repeat
|
|
ba.position = 1
|
|
return ba.readRawString(ba.length)
|
|
end
|