Question from the Java and Craftsmanship test

Java code that replaces keys in a template with their values.

Expert

This code

public class ArgumentReplacer {

  public static final String BEGINING_MUSTACH = "\\{\\{\\s*";
  public static final String ENDING_MUSTACH = "\\s*\\}\\}";

  public static String replace(String template, Map<String, String> arguments) {
    if (needNoReplace(template, arguments)) {
      return template;
    }

    return arguments.entrySet().stream().reduce(template, ArgumentReplacer::replaceEntry, keepFirst());
  }

  private static boolean needNoReplace(String template, Map<String, String> arguments) {
    return template == null || arguments == null;
  }

  private static String replaceEntry(String result, Map.Entry<String, String> entry) {
    return result.replaceAll(BEGINING_MUSTACH + entry.getKey() + ENDING_MUSTACH, entry.getValue());
  }

  private static BinaryOperator<String> keepFirst() {
    return (k, v) -> v;
  }
}
Author: Clément DevosStatus: PublishedQuestion passed 445 times
Edit
1
Community EvaluationsNo one has reviewed this question yet, be the first!