/*
 * Copyright 2020 The Context Mapper Project Team
 *
 * 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 org.contextmapper.dsl.generator.mdsl;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * Encodes names that contain MDSL keywords. Used to create names for MDSL
 * models that do not clash with keywords.
 * 
 * @author Stefan Kapferer
 *
 */
public class MDSLNameEncoder {

	private static final String[] MDSL_KEYWORDS = { "API", "description", "data", "type", "P", "endpoint", "type", "exposes", "operation", "expecting", "delivering", "payload",
			"Link", "provider", "client", "consumes", "offers", "at", "location", "via", "protocol", "IPA" };

	private Set<String> mdslKeywords;

	public MDSLNameEncoder() {
		this.mdslKeywords = new HashSet<>(Arrays.asList(MDSL_KEYWORDS));
	}

	public String encodeName(String name) {
		if (this.mdslKeywords.contains(name))
			return "^" + name;
		return name;
	}

}
