Descrição do método:
Este método possibilita substituir o querystring.parse
gramática:
A cópia do código é a seguinte:
querystring.unescape
Receber parâmetros:
nenhum
Código -fonte:
A cópia do código é a seguinte:
// Uma alternativa rápida segura ao decodificador
Querystring.unescapeBuffer = function (s, decodespaces) {
var out = novo buffer (S.Length);
var state = 'char'; // Estados: char, hex0, hex1
var n, m, hexar;
para (var inindex = 0, outIndex = 0; inindex <= s.Length; inindex ++) {
var c = s.charcodeat (inindex);
Switch (estado) {
caso 'char':
Switch (c) {
Case Charcode ('%'):
n = 0;
m = 0;
estado = 'hex0';
quebrar;
case charcode ('+'):
if (decodespaces) c = charcode ('');
// Passar através
padrão:
out [outIndex ++] = c;
quebrar;
}
quebrar;
caso 'hex0':
estado = 'hex1';
hexchar = c;
if (charcode ('0') <= c && c <= charcode ('9')) {
n = c - charcode ('0');
} else if (charcode ('a') <= c && c <= charcode ('f')) {
n = c - charcode ('a') + 10;
} else if (charcode ('a') <= c && c <= charcode ('f')) {
n = c - charcode ('a') + 10;
} outro {
out [outIndex ++] = charcode ('%');
out [outIndex ++] = c;
estado = 'char';
quebrar;
}
quebrar;
caso 'hex1':
estado = 'char';
if (charcode ('0') <= c && c <= charcode ('9')) {
M = C - CHARCODE ('0');
} else if (charcode ('a') <= c && c <= charcode ('f')) {
M = C - CHARCODE ('A') + 10;
} else if (charcode ('a') <= c && c <= charcode ('f')) {
M = C - CHARCODE ('A') + 10;
} outro {
out [outIndex ++] = charcode ('%');
out [outIndex ++] = hexhar;
out [outIndex ++] = c;
quebrar;
}
out [outIndex ++] = 16 * n+m;
quebrar;
}
}
// TODO Suporte Retorno Buffers arbitrários.
return Out.Slice (0, Outindex - 1);
};