com.google.javascript.jscomp.AnonymousFunctionNamingPolicy Maven / Gradle / Ivy
/*
* Copyright 2009 The Closure Compiler Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.javascript.jscomp;
/**
* Strategies for how to do naming of anonymous functions that occur as
* r-values in assignments and variable declarations.
*/
public enum AnonymousFunctionNamingPolicy {
/** Don't give anonymous functions names */
OFF(null),
/**
* Generates names that are based on the left-hand side of the assignment.
* Runs after variable and property renaming, so that the generated names
* will be short and obfuscated.
* @see NameAnonymousFunctions
*/
UNMAPPED(new char[] { NameAnonymousFunctions.DELIMITER }),
/**
* Generates short unique names and provides a mapping from them back to a
* more meaningful name that's based on the left-hand side of the
* assignment.
* @see NameAnonymousFunctionsMapped
*/
MAPPED(new char[] { NameAnonymousFunctionsMapped.PREFIX }),
;
private final char[] reservedCharacters;
AnonymousFunctionNamingPolicy(char[] reservedCharacters) {
this.reservedCharacters = reservedCharacters;
}
/**
* Gets characters that are reserved for use in anonymous function names and
* can't be used in variable or property names.
* @return reserved characters or null if no characters are reserved
*/
public char[] getReservedCharacters() {
// TODO(user) - for MAPPED, only the first character is reserved which
// can be used to further optimize
return reservedCharacters;
}
}