package tc.oc.pgm.xml.parser;
import java.text.MessageFormat;
import javax.inject.Inject;
import tc.oc.commons.bukkit.localization.MessageTemplate;
import tc.oc.commons.bukkit.localization.Translator;
import tc.oc.commons.bukkit.util.BukkitUtils;
import tc.oc.commons.core.localization.Formats;
import tc.oc.commons.core.localization.Locales;
import tc.oc.pgm.xml.InvalidXMLException;
import tc.oc.pgm.xml.Node;
public class MessageTemplateParser extends PrimitiveParser<MessageTemplate> {
private final Translator translator;
private final MessageTemplate.Factory factory;
@Inject MessageTemplateParser(Translator translator, MessageTemplate.Factory factory) {
this.translator = translator;
this.factory = factory;
}
@Override
public String readableTypeName() {
return "message template";
}
@Override
public MessageTemplate parseInternal(Node node, String text) throws FormatException, InvalidXMLException {
if(translator.hasKey(text)) {
return factory.fromKey(text);
} else {
final MessageFormat message;
try {
message = Formats.quotedMessage(BukkitUtils.decolorize(text), Locales.DEFAULT_LOCALE);
} catch(IllegalArgumentException e) {
throw new FormatException(e.getMessage());
}
return factory.literal(message);
}
}
}