Mangle character sets taken from options (#3436).

This commit is contained in:
jameswilddev 2019-07-20 23:21:26 +01:00
parent 0d97291ba2
commit 2d95c1f5b7

View File

@ -552,21 +552,20 @@ AST_Toplevel.DEFMETHOD("compute_char_frequency", function(options) {
}); });
var nameGenerator = (function() { var nameGenerator = (function() {
var freq = Object.create(null);
function init(chars) { function init(chars) {
var array = []; var array = [];
for (var i = 0; i < chars.length; i++) { for (var i = 0; i < chars.length; i++) {
var ch = chars[i]; var ch = chars[i];
array.push(ch); array.push(ch);
freq[ch] = -1e-2 * i; frequency[ch] = -1e-2 * i;
} }
return array; return array;
} }
var trailing = init("0123456789"); var chars, frequency, trailing, leading;
var leading = init("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_");
var chars, frequency;
function reset(options) { function reset(options) {
frequency = Object.create(freq); frequency = Object.create(null);
trailing = init(options.trailing_character_set);
leading = init(options.leading_character_set);
} }
nameGenerator.consider = function(str, delta) { nameGenerator.consider = function(str, delta) {
for (var i = str.length; --i >= 0;) { for (var i = str.length; --i >= 0;) {
@ -581,13 +580,13 @@ var nameGenerator = (function() {
}; };
nameGenerator.reset = reset; nameGenerator.reset = reset;
function nameGenerator(num) { function nameGenerator(num) {
var ret = "", base = 54; var ret = "", base = leading.length;
num++; num++;
do { do {
num--; num--;
ret += chars[num % base]; ret += chars[num % base];
num = Math.floor(num / base); num = Math.floor(num / base);
base = 64; base = leading.length + trailing.length;
} while (num > 0); } while (num > 0);
return ret; return ret;
} }