ru.yandex.qatools.allure.data.utils.TextUtils Maven / Gradle / Ivy
package ru.yandex.qatools.allure.data.utils;
import org.pegdown.Extensions;
import org.pegdown.PegDownProcessor;
import ru.yandex.qatools.allure.config.AllureConfig;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Dmitry Baev [email protected]
* Date: 08.12.13
*/
public final class TextUtils {
private static final Integer RADIX = 16;
public static final int UID_RANDOM_BYTES_COUNT = 8;
private TextUtils() {
}
public static String generateUid() {
SecureRandom rand = new SecureRandom();
byte[] randomBytes = new byte[UID_RANDOM_BYTES_COUNT];
rand.nextBytes(randomBytes);
return new BigInteger(1, randomBytes).toString(RADIX);
}
public static String humanize(String text) {
String result = text.trim();
Pattern pattern = Pattern.compile("(.*?)(\\[.*\\])");
Matcher matcher = pattern.matcher(result);
String params = "";
if (matcher.matches()) {
result = matcher.group(1);
params = ' ' + matcher.group(2); // NOSONAR
}
result = simplify(result);
result = splitCamelCaseWordsWithLowdashes(result);
result = lowdashesToSpaces(result);
result = underscoreCapFirstWords(result);
result = capitalize(result);
return result + params;
}
public static String lowdashesToSpaces(String text) {
return text.replaceAll("(_)+", " ");
}
public static String simplify(String text) {
return text.replaceAll(".*\\.([^.]+)", "$1");
}
public static String capitalize(String text) {
if (text.isEmpty()) {
return text;
}
return Character.toUpperCase(text.charAt(0)) + text.substring(1);
}
public static String underscoreCapFirstWords(String text) {
Matcher matcher = Pattern.compile("(^|\\w|\\s)([A-Z]+)([a-z]+)").matcher(text);
StringBuilder sb = new StringBuilder();
int last = 0;
while (matcher.find()) {
sb.append(text.substring(last, matcher.start()));
sb.append(matcher.group(0).toLowerCase());
last = matcher.end();
}
sb.append(text.substring(last));
return sb.toString();
}
public static String splitCamelCaseWordsWithLowdashes(String camelCaseString) {
return camelCaseString.replaceAll(
String.format("%s|%s|%s|%s",
"(?<=[A-Z])(?=[A-Z][a-z])",
"(?<=[a-z0-9])(?=[A-Z])",
"(?<=[A-Za-z])(?=[0-9])",
"(?<=[A-Za-z0-9])(?=[\\[])"
),
"_"
);
}
public static String getMessageMask(String message) {
return message == null ? "" : message.replaceAll("\\s+", " ");
}
public static String getIssueUrl(String name){
return String.format(AllureConfig.newInstance().getIssueTrackerPattern(), name);
}
public static String getTestUrl(String name){
return String.format(AllureConfig.newInstance().getTmsPattern(), name);
}
public static String processMarkdown(String rawText) {
return new PegDownProcessor(Extensions.ALL + Extensions.SUPPRESS_ALL_HTML).markdownToHtml(rawText);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy