package org.n3r.eql.parser; import org.n3r.eql.util.S; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PartParserFactory { static Pattern pattern = Pattern.compile("(\\w+)\\b(.*)", Pattern.DOTALL); public static PartParser tryParse(String clearLine) { Matcher matcher = pattern.matcher(clearLine); if (!matcher.matches()) return null; String keyword = matcher.group(1).toLowerCase(); String option = S.trimToEmpty(matcher.group(2)); PartParser partParser = null; if (keyword.equals("if")) partParser = new IfParser(option); else if (keyword.equals("iff")) partParser = new IffParser(option); else if (keyword.equals("unless")) partParser = new UnlessParser(option); else if (keyword.equals("isempty")) partParser = new IsEmptyParser(option); else if (keyword.equals("isnotempty")) partParser = new IsNotEmptyParser(option); else if (keyword.equals("isnull")) partParser = new IsNullParser(option); else if (keyword.equals("isnotnull")) partParser = new IsNotNullParser(option); else if (keyword.equals("isblank")) partParser = new IsBlankParser(option); else if (keyword.equals("isnotblank")) partParser = new IsNotBlankParser(option); else if (keyword.equals("switch")) partParser = new SwitchParser(option); else if (keyword.equals("for")) partParser = new ForParser(option); else if (keyword.equals("trim")) partParser = new TrimParser(option); else if (keyword.equals("in")) partParser = new InParser(option); if (partParser != null && S.isBlank(option)) throw new RuntimeException(clearLine + " is invalid"); return partParser; } }