/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang.vm.util; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import net.sourceforge.pmd.lang.vm.directive.Break; import net.sourceforge.pmd.lang.vm.directive.Define; import net.sourceforge.pmd.lang.vm.directive.Directive; import net.sourceforge.pmd.lang.vm.directive.Evaluate; import net.sourceforge.pmd.lang.vm.directive.Foreach; import net.sourceforge.pmd.lang.vm.directive.Include; import net.sourceforge.pmd.lang.vm.directive.Literal; import net.sourceforge.pmd.lang.vm.directive.Macro; import net.sourceforge.pmd.lang.vm.directive.Parse; import net.sourceforge.pmd.lang.vm.directive.Stop; public class DirectiveMapper { private DirectiveMapper() { } private static final Map<String, Directive> DIRECTIVE_MAP = new HashMap<>(); private static final Set<String> DIRECTIVE_NAMES = new HashSet<>(); static { DIRECTIVE_MAP.put("foreach", new Foreach()); DIRECTIVE_MAP.put("include", new Include()); DIRECTIVE_MAP.put("parse", new Parse()); DIRECTIVE_MAP.put("macro", new Macro()); DIRECTIVE_MAP.put("literal", new Literal()); DIRECTIVE_MAP.put("evaluate", new Evaluate()); DIRECTIVE_MAP.put("break", new Break()); DIRECTIVE_MAP.put("define", new Define()); DIRECTIVE_MAP.put("stop", new Stop()); for (Directive d : DIRECTIVE_MAP.values()) { DIRECTIVE_NAMES.add(d.getName()); } } public static Directive getDirective(String directiveName) { return DIRECTIVE_MAP.get(directiveName); } public static boolean isDirective(String name) { return DIRECTIVE_NAMES.contains(name); } }