/**
 * Copyright (c) 2011 committers of YAKINDU and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     committers of YAKINDU - initial API and implementation
 */
package org.yakindu.sct.model.sgraph.naming;

/**
 * 
 * @author andreas muelder - Initial contribution and API
 * 
 */
public class IdentifierConverter {

	private static final String ESCAPE_TOKEN = "_";

	/**
	 * Converts the specified string into a valid identifier. All illegal
	 * characters are escaped.
	 */
	public String toIdentifier(String string) {
		StringBuilder result = new StringBuilder();
		int index = 0;
		char c = string.charAt(index);
		if (Character.isJavaIdentifierStart(c)) {
			result.append(c);
			index++;
		} else if (Character.isJavaIdentifierPart(c)) {
			result.append(ESCAPE_TOKEN);
		}
		while (index < string.length()) {
			c = string.charAt(index++);
			result.append(Character.isJavaIdentifierPart(c) ? c : ESCAPE_TOKEN);
		}
		return result.toString();
	}
}
