TextManipulator.java

  1. package org.jbehave.core.junit;

  2. import java.util.HashSet;
  3. import java.util.Set;

  4. @SuppressWarnings("checkstyle:AvoidEscapedUnicodeCharacters")
  5. public class TextManipulator {
  6.     private static final char ONE_DOT_LEADER = '\u2024';

  7.     private final Set<String> uniqueSet = new HashSet<>();

  8.     public String uniquify(String value) {
  9.         String unique = escape(value);
  10.         while (uniqueSet.contains(unique)) {
  11.             unique += '\u200B'; // zero-width-space
  12.         }
  13.         uniqueSet.add(unique);
  14.         return unique;
  15.     }

  16.     public static String escape(String value) {
  17.         return value.replace('.', ONE_DOT_LEADER)
  18.                 .replaceAll("[\r\n]+", ", ")
  19.                 .replaceAll("[()]", "|");
  20.     }

  21. }