package cuke4duke.internal.clj;
import clojure.lang.AFunction;
import clojure.lang.Compiler;
import clojure.lang.RT;
import cuke4duke.Scenario;
import cuke4duke.internal.language.AbstractProgrammingLanguage;
import cuke4duke.internal.language.LanguageMixin;
import cuke4duke.spi.ExceptionFactory;
import java.util.Collections;
import java.util.Locale;
import java.util.regex.Pattern;
public class CljLanguage extends AbstractProgrammingLanguage {
private static CljLanguage instance;
public CljLanguage(LanguageMixin languageMixin, ExceptionFactory exceptionFactory) throws Exception {
super(languageMixin, exceptionFactory);
instance = this;
clearHooksAndStepDefinitions();
RT.load("cuke4duke/internal/clj/clj_dsl");
}
public static void addCljStepDefinition(Pattern regexp, AFunction closure) throws Throwable {
instance.addStepDefinition(new CljStepDefinition(instance, regexp, closure));
}
public static void addCljBeforeHook(AFunction closure) {
instance.addBeforeHook(new CljHook(Collections.<String>emptyList(), closure));
}
public static void addCljAfterHook(AFunction closure) {
instance.addAfterHook(new CljHook(Collections.<String>emptyList(), closure));
}
public void load_code_file(String cljFile) throws Throwable {
Compiler.loadFile(cljFile);
}
protected void begin_scenario(Scenario scenario) throws Throwable {
}
public void end_scenario() throws Throwable {
}
@Override
protected Object customTransform(Object arg, Class<?> parameterType, Locale locale) {
return null;
}
}