|
@@ -59,86 +59,6 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
|
|
super(randomGenerator, options);
|
|
super(randomGenerator, options);
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * @param {string} nextName
|
|
|
|
- * @param {string} prevName
|
|
|
|
- * @returns {boolean}
|
|
|
|
- */
|
|
|
|
- // eslint-disable-next-line complexity
|
|
|
|
- public static isIncrementedMangledName (nextName: string, prevName: string): boolean {
|
|
|
|
- if (nextName === prevName) {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const nextNameLength: number = nextName.length;
|
|
|
|
- const prevNameLength: number = prevName.length;
|
|
|
|
-
|
|
|
|
- if (nextNameLength !== prevNameLength) {
|
|
|
|
- return nextNameLength > prevNameLength;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- let isIncrementedPrevCharacter: boolean = false;
|
|
|
|
-
|
|
|
|
- for (let i: number = 0; i < nextNameLength; i++) {
|
|
|
|
- const nextNameCharacter: string = nextName[i];
|
|
|
|
- const prevNameCharacter: string = prevName[i];
|
|
|
|
-
|
|
|
|
- if (nextNameCharacter === prevNameCharacter) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const isDigitNextNameCharacter: boolean = MangledIdentifierNamesGenerator.isDigitCharacter(nextNameCharacter);
|
|
|
|
- const isDigitPrevNameCharacter: boolean = MangledIdentifierNamesGenerator.isDigitCharacter(prevNameCharacter);
|
|
|
|
-
|
|
|
|
- if (
|
|
|
|
- isIncrementedPrevCharacter
|
|
|
|
- && isDigitNextNameCharacter
|
|
|
|
- && !isDigitPrevNameCharacter
|
|
|
|
- ) {
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const isUpperCaseNextNameCharacter: boolean = MangledIdentifierNamesGenerator.isUpperCaseCharacter(nextNameCharacter);
|
|
|
|
- const isUpperCasePrevNameCharacter: boolean = MangledIdentifierNamesGenerator.isUpperCaseCharacter(prevNameCharacter);
|
|
|
|
-
|
|
|
|
- if (
|
|
|
|
- isUpperCaseNextNameCharacter
|
|
|
|
- && !isUpperCasePrevNameCharacter
|
|
|
|
- ) {
|
|
|
|
- return true;
|
|
|
|
- } else if (
|
|
|
|
- !isUpperCaseNextNameCharacter
|
|
|
|
- && isUpperCasePrevNameCharacter
|
|
|
|
- ) {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- isIncrementedPrevCharacter = nextNameCharacter > prevNameCharacter;
|
|
|
|
-
|
|
|
|
- if (nextNameCharacter < prevNameCharacter) {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return nextName > prevName;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * @param {string} character
|
|
|
|
- * @returns {boolean}
|
|
|
|
- */
|
|
|
|
- private static isUpperCaseCharacter (string: string): boolean {
|
|
|
|
- return /^[A-Z]*$/.test(string);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * @param {string} character
|
|
|
|
- * @returns {boolean}
|
|
|
|
- */
|
|
|
|
- private static isDigitCharacter (string: string): boolean {
|
|
|
|
- return /^[0-9]*$/.test(string);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* Generates next name based on a global previous mangled name
|
|
* Generates next name based on a global previous mangled name
|
|
* We can ignore nameLength parameter here, it hasn't sense with this generator
|
|
* We can ignore nameLength parameter here, it hasn't sense with this generator
|
|
@@ -204,6 +124,43 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
|
|
return identifierName;
|
|
return identifierName;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * @param {string} nextName
|
|
|
|
+ * @param {string} prevName
|
|
|
|
+ * @returns {boolean}
|
|
|
|
+ */
|
|
|
|
+ // eslint-disable-next-line complexity
|
|
|
|
+ public isIncrementedMangledName (nextName: string, prevName: string): boolean {
|
|
|
|
+ if (nextName === prevName) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const nextNameLength: number = nextName.length;
|
|
|
|
+ const prevNameLength: number = prevName.length;
|
|
|
|
+
|
|
|
|
+ if (nextNameLength !== prevNameLength) {
|
|
|
|
+ return nextNameLength > prevNameLength;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const nameSequence: string[] = this.getNameSequence();
|
|
|
|
+
|
|
|
|
+ for (let i: number = 0; i < nextNameLength; i++) {
|
|
|
|
+ const nextNameCharacter: string = nextName[i];
|
|
|
|
+ const prevNameCharacter: string = prevName[i];
|
|
|
|
+
|
|
|
|
+ if (nextNameCharacter === prevNameCharacter) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const indexOfNextNameCharacter: number = nameSequence.indexOf(nextNameCharacter);
|
|
|
|
+ const indexOfPrevNameCharacter: number = nameSequence.indexOf(prevNameCharacter);
|
|
|
|
+
|
|
|
|
+ return indexOfNextNameCharacter > indexOfPrevNameCharacter;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ throw new Error('Something goes wrong during comparison of mangled names');
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @param {string} mangledName
|
|
* @param {string} mangledName
|
|
* @returns {boolean}
|
|
* @returns {boolean}
|
|
@@ -224,7 +181,7 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
|
|
* @param {string} name
|
|
* @param {string} name
|
|
*/
|
|
*/
|
|
protected updatePreviousMangledName (name: string): void {
|
|
protected updatePreviousMangledName (name: string): void {
|
|
- if (!MangledIdentifierNamesGenerator.isIncrementedMangledName(name, this.previousMangledName)) {
|
|
|
|
|
|
+ if (!this.isIncrementedMangledName(name, this.previousMangledName)) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|