
io.carml.engine.template.CarmlTemplate Maven / Gradle / Ivy
package io.carml.engine.template;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.mutable.MutableInt;
@EqualsAndHashCode
class CarmlTemplate implements Template {
abstract static class Segment {
private final String value;
Segment(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
@EqualsAndHashCode(callSuper = false)
static class Text extends Segment {
Text(String value) {
super(value);
}
@Override
public String toString() {
return "Text [getValue()=" + getValue() + "]";
}
}
@EqualsAndHashCode(callSuper = false)
static class ExpressionSegment extends Segment {
private final int id;
ExpressionSegment(int id, String value) {
super(value);
this.id = id;
}
@Override
public String toString() {
return "ExpressionSegment [getValue()=" + getValue() + "]";
}
}
@EqualsAndHashCode
private static class ExpressionImpl implements Expression {
private final int id;
String value;
ExpressionImpl(int id, String value) {
this.id = id;
this.value = value;
}
@Override
public String getValue() {
return value;
}
@Override
public String toString() {
return "ExpressionImpl [id=" + id + ", value=" + value + "]";
}
}
private class Builder implements Template.Builder {
private final Map>> bindings = new LinkedHashMap<>();
@Override
public Template.Builder bind(Expression expression, Function> templateValue) {
bindings.put(expression, templateValue);
return this;
}
private Optional
© 2015 - 2025 Weber Informatics LLC | Privacy Policy