package org.plantuml.idea.lang.annotator; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.collect.Collections2; import java.util.Collection; import java.util.regex.Pattern; /** * Author: Eugene Steinberg * Date: 10/1/14 */ public enum LanguagePatternHolder { INSTANCE; private final Joiner PipeJoiner = Joiner.on("|"); public final Pattern pluginSettingsPattern = createPattern(LanguageDescriptor.INSTANCE.pluginSettingsPattern, ""); public final Pattern keywordsPattern = createPattern(LanguageDescriptor.INSTANCE.keywords, ""); public final Pattern typesPattern = createPattern(LanguageDescriptor.INSTANCE.types, ""); public final Pattern preprocPattern = createPattern(LanguageDescriptor.INSTANCE.preproc, "[@|!]"); private Pattern createPattern(Collection<String> tokens, final String patternPrefix) { Collection<String> tokensAsWords = Collections2.transform(tokens, new Function<String, String>() { @Override public String apply(String s) { return "\\b" + s + "\\b"; } }); return Pattern.compile("(" + patternPrefix + PipeJoiner.join(tokensAsWords) + ")"); } }