/** * Copyright (C) 2013-2016 The Rythm Engine project * for LICENSE and other details see: * https://github.com/rythmengine/rythmengine */ package org.rythmengine.internal.parser.build_in; import com.stevesoft.pat.Regex; import org.rythmengine.internal.*; import org.rythmengine.internal.parser.RemoveLeadingLineBreakAndSpacesParser; import org.rythmengine.utils.S; public class ExitIfNoClassParser extends KeywordParserFactory { @Override public Keyword keyword() { return Keyword.EXIT_IF_NO_CLASS; } public IParser create(final IContext ctx) { return new RemoveLeadingLineBreakAndSpacesParser(ctx) { public Token go() { Regex r = reg(dialect()); if (!r.search(remain())) { raiseParseException("error parsing @debug, correct usage: @__exitIfNoClass__(My.Class.Name)"); } step(r.stringMatched().length()); String s = r.stringMatched(1); s = S.stripBraceAndQuotation(s); try { ctx().getEngine().classLoader().loadClass(s); return new Token("", ctx()); } catch (Exception e) { throw new TemplateParser.ExitInstruction(); } } }; } @Override protected String patternStr() { return "%s%s\\s*((?@()))[\\s]+"; } }