in tools/PasswordRulesParser.js [305:353]
function _parseCustomCharacterClass(input, position)
{
console.assert(position >= 0);
console.assert(position < input.length);
console.assert(input[position] === CHARACTER_CLASS_START_SENTINEL);
let length = input.length;
++position;
if (position >= length) {
console.error("Found end-of-line instead of character class character");
return [null, position];
}
let initialPosition = position;
let result = [];
do {
let c = input[position];
if (!_isASCIIPrintableCharacter(c)) {
++position;
continue;
}
if (c === "-" && (position - initialPosition) > 0) {
// FIXME: Should this be an error?
console.warn("Ignoring '-'; a '-' may only appear as the first character in a character class");
++position;
continue;
}
result.push(c);
++position;
if (c === CHARACTER_CLASS_END_SENTINEL) {
break;
}
} while (position < length);
if (position < length && input[position] !== CHARACTER_CLASS_END_SENTINEL || position == length && input[position - 1] == CHARACTER_CLASS_END_SENTINEL) {
// Fix up result; we over consumed.
result.pop();
return [result, position];
}
if (position < length && input[position] == CHARACTER_CLASS_END_SENTINEL) {
return [result, position + 1];
}
console.error("Found end-of-line instead of end of character class");
return [null, position];
}