package tc.oc.pgm.xml.property;
import java.text.Format;
import javax.inject.Inject;
import com.google.common.collect.Range;
import com.google.inject.assistedinject.Assisted;
import org.jdom2.Element;
import tc.oc.commons.bukkit.localization.MessageTemplate;
import tc.oc.commons.core.util.Ranges;
import tc.oc.pgm.map.MapModuleContext;
import tc.oc.pgm.xml.InvalidXMLException;
import tc.oc.pgm.xml.parser.MessageTemplateParser;
public class MessageTemplateProperty extends PropertyBuilder<MessageTemplate, MessageTemplateProperty> {
@Inject private MessageTemplateProperty(@Assisted Element parent, @Assisted String name, MessageTemplateParser parser, MapModuleContext context) {
super(parent, name, parser);
}
public MessageTemplateProperty placeholders(int count) {
return placeholders(Range.singleton(count));
}
public MessageTemplateProperty placeholders(Range<Integer> range) {
validate((template, node) -> {
final Format[] args = template.format().getFormatsByArgumentIndex();
if(!range.contains(args.length)) {
throw new InvalidXMLException("Template should contain " + Ranges.describe(range) +
" placeholders, but it actually contains " + args.length,
node);
}
});
return this;
}
}