Changeset 1704 for sandbox/filemanager/js/connector.js
- Timestamp:
- 11/24/09 16:07:27 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/filemanager/js/connector.js
r1693 r1704 151 151 } 152 152 153 function unserialize(str) 154 { 155 156 var matchB = function (str, iniPos) 157 { 158 var nOpen, nClose = iniPos; 159 do 160 { 161 nOpen = str.indexOf('{', nClose+1); 162 nClose = str.indexOf('}', nClose+1); 163 164 if (nOpen == -1) 165 { 166 return nClose; 167 } 168 if (nOpen < nClose ) 169 { 170 nClose = matchB(str, nOpen); 171 } 172 } while (nOpen < nClose); 173 174 return nClose; 175 } 176 177 var f = function (str) 178 { 179 switch (str.charAt(0)) 180 { 181 case 'a': 182 var data = new Array(); 183 var n = parseInt( str.substring( str.indexOf(':')+1, str.indexOf(':',2) ) ); 184 var arrayContent = str.substring(str.indexOf('{')+1, str.lastIndexOf('}')); 185 186 for (var i = 0; i < n; i++) 187 { 188 var pos = 0; 189 190 /* Process Index */ 191 var indexStr = arrayContent.substr(pos, arrayContent.indexOf(';')+1); 192 var index = f(indexStr); 193 pos = arrayContent.indexOf(';', pos)+1; 194 195 /* Process Content */ 196 var part = null; 197 switch (arrayContent.charAt(pos)) 198 { 199 case 'a': 200 var pos_ = matchB(arrayContent, arrayContent.indexOf('{', pos))+1; 201 part = arrayContent.substring(pos, pos_); 202 pos = pos_; 203 data[index] = f(part); 204 break; 205 206 case 's': 207 var pval = arrayContent.indexOf(':', pos+2); 208 var val = parseInt(arrayContent.substring(pos+2, pval)); 209 pos = pval + val + 4; 210 data[index] = arrayContent.substr(pval+2, val); 211 break; 212 213 default: 214 part = arrayContent.substring(pos, arrayContent.indexOf(';', pos)+1); 215 pos = arrayContent.indexOf(';', pos)+1; 216 data[index] = f(part); 217 break; 218 } 219 arrayContent = arrayContent.substr(pos); 220 } 221 break; 222 223 case 's': 224 var pos = str.indexOf(':', 2); 225 var val = parseInt(str.substring(2,pos)); 226 var data = str.substr(pos+2, val); 227 str = str.substr(pos + 4 + val); 228 break; 229 230 case 'i': 231 case 'd': 232 var pos = str.indexOf(';'); 233 var data = parseInt(str.substring(2,pos)); 234 str = str.substr(pos + 1); 235 break; 236 237 case 'N': 238 var data = null; 239 str = str.substr(str.indexOf(';') + 1); 240 break; 241 242 case 'b': 243 var data = str.charAt(2) == '1' ? true : false; 244 break; 245 } 246 return data; 247 } 248 unserialized = f(str); 249 return unserialized; 250 } 251 var unserialized = new Object(); 252 253 // Serialize Data Method 254 function serialize(data) 255 { 256 var f = function(data) 257 { 258 var str_data; 259 260 if (data == null || 261 (typeof(data) == 'string' && data == '')) 262 { 263 str_data = 'N;'; 264 } 265 266 else switch(typeof(data)) 267 { 268 case 'object': 269 var arrayCount = 0; 270 271 str_data = ''; 272 273 for (i in data) 274 { 275 if (i == 'length') 276 { 277 continue; 278 } 279 280 arrayCount++; 281 switch (typeof(i)) 282 { 283 case 'number': 284 str_data += 'i:' + i + ';' + f(data[i]); 285 break; 286 287 case 'string': 288 str_data += 's:' + i.length + ':"' + i + '";' + f(data[i]); 289 break; 290 291 default: 292 showMessage(Element('cc_msg_err_serialize_data_unknown').value); 293 break; 294 } 295 } 296 if (!arrayCount) 297 { 298 str_data = 'N;'; 299 } 300 else 301 { 302 str_data = 'a:' + arrayCount + ':{' + str_data + '}'; 303 } 304 305 break; 306 307 case 'string': 308 str_data = 's:' + data.length + ':"' + data + '";'; 309 break; 310 311 case 'number': 312 str_data = 'i:' + data + ';'; 313 break; 314 315 case 'boolean': 316 str_data = 'b:' + (data ? '1' : '0') + ';'; 317 break; 318 319 default: 320 showMessage(Element('cc_msg_err_serialize_data_unknown').value); 321 return null; 322 } 323 324 return str_data; 325 } 326 327 return f(data); 328 }
Note: See TracChangeset
for help on using the changeset viewer.