package com.prezi.spaghetti.generator;
import java.lang.reflect.Field;
import java.util.Collections;
import java.util.SortedSet;
import java.util.TreeSet;
/**
* Reserved words used by Spaghetti.
*/
public class ReservedWords {
public static final String MODULE_WRAPPER_FUNCTION = "module";
public static final String SPAGHETTI_CLASS = "Spaghetti";
@ProtectedWord
public static final String GET_MODULE_VERSION = "getModuleVersion";
@ProtectedWord
public static final String GET_SPAGHETTI_VERSION = "getSpaghettiVersion";
@ProtectedWord
public static final String GET_RESOURCE_URL = "getResourceUrl";
@ProtectedWord
public static final String GET_MODULE_NAME = "getModuleName";
public static final String MODULE = "module";
public static final String DEPENDENCIES = "dependencies";
public static final SortedSet<String> PROTECTED_WORDS = gatherProtectedWords();
private static SortedSet<String> gatherProtectedWords() {
SortedSet<String> result = new TreeSet<String>();
for (Field field : ReservedWords.class.getDeclaredFields()) {
if (field.getType().equals(String.class) && field.getAnnotation(ProtectedWord.class) != null) {
try {
result.add((String) field.get(ReservedWords.class));
} catch (IllegalAccessException e) {
throw new RuntimeException("Could not access " + ReservedWords.class.getName() + "." + field.getName());
}
}
}
return Collections.unmodifiableSortedSet(result);
}
}