package ch.unibe.scg.cc.javaFrontend;
import ch.unibe.scg.cc.Annotations.Java;
import ch.unibe.scg.cc.Annotations.Type1;
import ch.unibe.scg.cc.Normalizer;
import ch.unibe.scg.cc.Populator;
import ch.unibe.scg.cc.ReplacerNormalizer;
import ch.unibe.scg.cc.Tokenizer;
import ch.unibe.scg.cc.regex.Replace;
import com.google.inject.AbstractModule;
import com.google.inject.PrivateModule;
import com.google.inject.TypeLiteral;
/** Bindings for a normalizer in the Java programming language. */
public class JavaModule extends AbstractModule {
@Override
protected void configure() {
bind(Tokenizer.class).to(JavaTokenizer.class);
install(new Type1Module());
bind(Populator.class).annotatedWith(Java.class).to(Populator.class); // TODO: Make private // Make
}
}
class Type1Module extends PrivateModule {
@Override
protected void configure() {
bind(Normalizer.class).annotatedWith(Type1.class).to(ReplacerNormalizer.class);
expose(Normalizer.class).annotatedWith(Type1.class);
// Private:
bind(new TypeLiteral<Replace[]>() {}).toProvider(JavaType1ReplacerFactory.class);
}
}