Escapes the keys and values of a key-value data string and making them compliant with RFC1738.
In other words, wasKeyValueURLEscape
will encode the keys and values whilst leaving the key-value separators untouched (=
, &
). This is useful in order to be able to send data without having to worry about collisions with reserved syntax elements.
When called with:
string data = "hello=world&good=day sir&life=good!"; wasKeyValueURLEscape($data);
the function will return the string:
hello=world&good=day+sir&life=good%21
/////////////////////////////////////////////////////////////////////////// // Copyright (C) 2015 Wizardry and Steamworks - License: CC BY 2.0 // /////////////////////////////////////////////////////////////////////////// // escapes a string in conformance with RFC1738 string wasURLEscape(string i) { if(i == "") return ""; string o = llGetSubString(i, 0, 0); i = llDeleteSubString(i, 0, 0); if(o == " ") return "+" + wasURLEscape(i); if(o == "\n") return "%0D%0A" + wasURLEscape(i); return llEscapeURL(o) + wasURLEscape(i); } /////////////////////////////////////////////////////////////////////////// // Copyright (C) 2014 Wizardry and Steamworks - License: CC BY 2.0 // /////////////////////////////////////////////////////////////////////////// string wasKeyValueURLEscape(string data) { list i = llParseString2List(data, ["&", "="], []); list output = []; do { output += wasURLEscape(llList2String(i, 0)) + "=" + wasURLEscape(llList2String(i, 1)); i = llDeleteSubList(i, 0, 1); } while(llGetListLength(i) != 0); return llDumpList2String(output, "&"); }