From cb7c8046e41a19cf8bda5116119994e7e0ad0081 Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky I Date: Sat, 15 Nov 2008 02:57:29 -0800 Subject: [PATCH] Fix for plist URL encoding instead of HTML entity encoding. [#81 state:resolved] Reviewed by me. --- Objective-J/plist.js | 64 +++++++++----------------------------------- 1 file changed, 12 insertions(+), 52 deletions(-) diff --git a/Objective-J/plist.js b/Objective-J/plist.js index 625e10b34..30f029e7e 100644 --- a/Objective-J/plist.js +++ b/Objective-J/plist.js @@ -29,17 +29,6 @@ OBJJPlistParseException = "OBJJPlistParseException"; var kCFPropertyList280NorthMagicNumber = "280NPLIST"; -/*var BASE64_TABLE = [ - "A", "B", "C", "D", "E", "F", "G", "H", - "I", "J", "K", "L", "M", "N", "O", "P", - "Q", "R", "S", "T", "U", "V", "W", "X", - "Y", "Z", "a", "b", "c", "d", "e", "f", - "g", "h", "i", "j", "k", "l", "m", "n", - "o", "p", "q", "r", "s", "t", "u", "v", - "w", "x", "y", "z", "0", "1", "2", "3", - "4", "5", "6", "7", "8", "9", "+", "/" -];*/ - function objj_data() { this.string = ""; @@ -48,45 +37,6 @@ function objj_data() this.base64 = NULL; } -/*function data_setBytes(data, bytes) -{ - this.bytes = bytes; - this.base64 = NULL; -} - -function data_getBytes(data) -{ - return this.bytes; -} - -function data_getBase64String() -{ - if (!this.base64) - { - this.base64 = ""; - - var offset = 0, - bytes = this.bytes, - length = bytes.length; - - uint24 = this.bytes[offset] << 16 | this.bytes[offset + 1] << 8 | this.bytes[offset + 2]; - this.base64 += BASE64_TABLE[ ( uint24 & 0xFC0000 ) >> 18 ]); - this.base64 += BASE64_TABLE[ ( uint24 & 0x03F000 ) >> 12 ]); - this.base64 += BASE64_TABLE[ ( uint24 & 0x0FC0 ) >> 6 ]); - this.base64 += BASE64_TABLE[ ( uint24 & 0x3F ) ]); - - for (;offset < length; ++offset) - { - this.base64 = BASE64_TABLE[bytes[offset] >> 2]; - this.base64 = BASE64_TABLE[((bytes[offset] & 3) << 4) | (bytes[++offset] >> 4)]; - this.base64 = offset < length ? "=" : BASE64_TABLE[((bytes[offset] & 15) << 2) | (bytes[++offset] >> 6)]; - this.base64 = offset < length ? "=" : BASE64_TABLE[bytes[offset] & 63]; - } - } - - return this.base64; -}*/ - var objj_markedStream = function(aString) { var index = aString.indexOf(';'); @@ -402,7 +352,7 @@ function CPPropertyListCreateFromXMLData(XMLNodeOrData) case PLIST_NUMBER_INTEGER: object = parseInt(CHILD_VALUE(XMLNode)); break; - case PLIST_STRING: object = decodeURIComponent(FIRST_CHILD(XMLNode) ? CHILD_VALUE(XMLNode) : ""); + case PLIST_STRING: object = _decodeHTMLComponent(FIRST_CHILD(XMLNode) ? CHILD_VALUE(XMLNode) : ""); break; case PLIST_BOOLEAN_TRUE: object = true; @@ -479,6 +429,16 @@ var _CPDictionaryAppendXMLData = function(XMLData, aDictionary) XMLData.string += ""; } +var _encodeHTMLComponent = function(aString) +{ + return aString.replace('<', "<").replace('>', ">").replace('\"', """).replace('\'', "'").replace('&', "&"); +} + +var _decodeHTMLComponent = function(aString) +{ + return aString.replace("<", '<').replace(">", '>').replace(""", '\"').replace("'", '\'').replace("&", '&'); +} + var _CPPropertyListAppendXMLData = function(XMLData, aPlist) { var type = typeof aPlist, @@ -492,7 +452,7 @@ var _CPPropertyListAppendXMLData = function(XMLData, aPlist) } if (type == "string") - XMLData.string += "" + encodeURIComponent(aPlist) + ""; + XMLData.string += "" + _encodeHTMLComponent(aPlist) + ""; else if (aPlist === true) XMLData.string += "";