| 1 | package sh.okx.rankup.text.pebble; | |
| 2 | ||
| 3 | import com.mitchellbosecke.pebble.PebbleEngine; | |
| 4 | import com.mitchellbosecke.pebble.extension.AbstractExtension; | |
| 5 | import com.mitchellbosecke.pebble.extension.Filter; | |
| 6 | import com.mitchellbosecke.pebble.loader.StringLoader; | |
| 7 | import java.io.IOException; | |
| 8 | import java.io.StringWriter; | |
| 9 | import java.lang.reflect.InvocationTargetException; | |
| 10 | import java.text.DecimalFormat; | |
| 11 | import java.util.HashMap; | |
| 12 | import java.util.Map; | |
| 13 | import java.util.logging.Logger; | |
| 14 | import sh.okx.rankup.messages.pebble.InvalidRequirementException; | |
| 15 | import sh.okx.rankup.placeholders.Placeholders; | |
| 16 | import sh.okx.rankup.text.TextProcessor; | |
| 17 | ||
| 18 | public class PebbleTextProcessor implements TextProcessor { | |
| 19 | ||
| 20 | private final Logger logger; | |
| 21 | private final Map<String, Object> context; | |
| 22 | private final Placeholders options; | |
| 23 | ||
| 24 | public PebbleTextProcessor(Logger logger, Map<String, Object> context, Placeholders options) { | |
| 25 | this.logger = logger; | |
| 26 | this.context = context; | |
| 27 | this.options = options; | |
| 28 | } | |
| 29 | ||
| 30 | @Override | |
| 31 | public String process(String string) { | |
| 32 | PebbleEngine engine = new PebbleEngine.Builder().autoEscaping(false).extension( | |
| 33 | new AbstractExtension() { | |
| 34 | @Override | |
| 35 | public Map<String, Filter> getFilters() { | |
| 36 | Map<String, Filter> filters = new HashMap<>(); | |
| 37 |
1
1. getFilters : negated conditional → KILLED |
if (options != null) { |
| 38 | DecimalFormat moneyFormat = options.getMoneyFormat(); | |
| 39 |
1
1. getFilters : negated conditional → SURVIVED |
if (moneyFormat != null) { |
| 40 | filters.put("money", new DecimalFormatFilter(moneyFormat)); | |
| 41 | filters.put("shortmoney", new MoneyShortFilter(options)); | |
| 42 | } | |
| 43 | ||
| 44 | DecimalFormat percentFormat = options.getPercentFormat(); | |
| 45 |
1
1. getFilters : negated conditional → SURVIVED |
if (percentFormat != null) filters.put("percent", new DecimalFormatFilter(percentFormat)); |
| 46 | ||
| 47 | DecimalFormat simpleFormat = options.getSimpleFormat(); | |
| 48 |
1
1. getFilters : negated conditional → KILLED |
if (simpleFormat != null) filters.put("simple", new DecimalFormatFilter(simpleFormat)); |
| 49 | } | |
| 50 |
1
1. getFilters : replaced return value with null for sh/okx/rankup/text/pebble/PebbleTextProcessor$1::getFilters → KILLED |
return filters; |
| 51 | } | |
| 52 | }) | |
| 53 | .loader(new StringLoader()).build(); | |
| 54 | StringWriter writer = new StringWriter(); | |
| 55 | try { | |
| 56 | try { | |
| 57 |
1
1. process : removed call to com/mitchellbosecke/pebble/template/PebbleTemplate::evaluate → KILLED |
engine.getTemplate(string).evaluate(writer, context); |
| 58 |
1
1. process : replaced return value with "" for sh/okx/rankup/text/pebble/PebbleTextProcessor::process → KILLED |
return writer.toString(); |
| 59 | } catch (RuntimeException ex) { | |
| 60 |
1
1. process : negated conditional → NO_COVERAGE |
if (ex.getCause() instanceof InvocationTargetException) { |
| 61 |
1
1. process : negated conditional → NO_COVERAGE |
if (ex.getCause().getCause() instanceof InvalidRequirementException) { |
| 62 | InvalidRequirementException cause = (InvalidRequirementException) ex.getCause().getCause(); | |
| 63 | logger.severe("Unknown requirement \"" + cause.getRequirement() + "\" on rank \"" + cause.getRank().getRank() + "\" in message:"); | |
| 64 | for (String line : string.split("\n")) { | |
| 65 | logger.severe(line); | |
| 66 | } | |
| 67 | logger.severe("Change the message to not use that requirement, or add the requirement to the rank in the config."); | |
| 68 | } else { | |
| 69 |
1
1. process : removed call to java/lang/RuntimeException::printStackTrace → NO_COVERAGE |
ex.printStackTrace(); |
| 70 | } | |
| 71 | } else { | |
| 72 |
1
1. process : removed call to java/lang/RuntimeException::printStackTrace → NO_COVERAGE |
ex.printStackTrace(); |
| 73 | } | |
| 74 |
1
1. process : replaced return value with "" for sh/okx/rankup/text/pebble/PebbleTextProcessor::process → NO_COVERAGE |
return "Unable to parse message, please check console"; |
| 75 | } | |
| 76 | } catch (IOException e) { | |
| 77 |
1
1. process : removed call to java/io/IOException::printStackTrace → NO_COVERAGE |
e.printStackTrace(); |
| 78 |
1
1. process : replaced return value with "" for sh/okx/rankup/text/pebble/PebbleTextProcessor::process → NO_COVERAGE |
return string; |
| 79 | } | |
| 80 | } | |
| 81 | } | |
Mutations | ||
| 37 |
1.1 |
|
| 39 |
1.1 |
|
| 45 |
1.1 |
|
| 48 |
1.1 |
|
| 50 |
1.1 |
|
| 57 |
1.1 |
|
| 58 |
1.1 |
|
| 60 |
1.1 |
|
| 61 |
1.1 |
|
| 69 |
1.1 |
|
| 72 |
1.1 |
|
| 74 |
1.1 |
|
| 77 |
1.1 |
|
| 78 |
1.1 |