package tc.oc.pgm.features;
import javax.annotation.Nullable;
import javax.inject.Inject;
import com.google.inject.TypeLiteral;
import tc.oc.api.docs.SemanticVersion;
import tc.oc.pgm.map.MapProto;
import tc.oc.pgm.map.ProtoVersions;
/**
* Adds support for < proto 1.4 feature parsing
*/
public class LegacyFeatureParser<T extends FeatureDefinition> extends FeatureParser<T> {
protected boolean legacy;
protected LegacyFeatureParser() {}
@Inject public LegacyFeatureParser(@Nullable TypeLiteral<T> type) {
super(type);
}
@Inject private void init(@MapProto SemanticVersion proto) {
this.legacy = proto.isOlderThan(ProtoVersions.FILTER_FEATURES);
}
@Override
public String idAttributeName() {
return legacy ? "name"
: super.idAttributeName();
}
@Override
public String mangleId(String unmangled) {
return legacy ? "--" + propertyName() + "-" + unmangled.toLowerCase().replaceAll("\\s+", "-")
: super.mangleId(unmangled);
}
}