/*
* NameResolver.java
* @Author Oleg Gorobets
* Created: Jul 31, 2007
* CVS-ID: $Id:
*************************************************************************/
package org.swfparser;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
public class NameResolver {
private static Logger logger = Logger.getLogger(NameResolver.class);
private static Pattern variablePattern = Pattern.compile("[a-z_][a-z0-9_]*", Pattern.CASE_INSENSITIVE);
private static Map<String,String> variableMapping = new HashMap<String, String>();
public static String getVariableName(String name) {
if (variableMapping.containsKey(name)) {
return variableMapping.get(name);
} else {
Matcher matcher = variablePattern.matcher(name);
if (matcher.matches()) {
return name;
} else {
String newName = getModifiedVarName(name);
variableMapping.put(name, newName);
return newName;
}
}
}
private static int varIndex = 1;
protected static String getModifiedVarName(String var) {
// TODO: build new name on the base of var
return "__var_"+(varIndex++);
}
public static void main(String[] args) {
String[] names = new String[] {"","x25","25x","2x","_25x","$x","a","a b","a_b","a_b$"};
for (String name : names) {
logger.debug(name+" => "+getVariableName(name));
}
}
}