package com.hypixel.hytale.codec.util;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import javax.annotation.Nullable;
public class Documentation {
public Documentation() {
}
public static String stripMarkdown(@Nullable String markdown) {
if (markdown == null) {
return null;
} else {
StringBuilder output = new StringBuilder();
IntArrayList counts = new IntArrayList();
for(int i = 0; i < markdown.length(); ++i) {
char c = markdown.charAt(i);
switch (c) {
case '*':
case '_':
int start = i;
boolean isEnding = i >= 1 && !Character.isWhitespace(markdown.charAt(i - 1));
for(int targetCount = !counts.isEmpty() && isEnding ? counts.getInt(counts.size() - 1) : -1; i < markdown.length() && markdown.charAt(i) == c && i - start != targetCount; ++i) {
}
int matchingCount = i - start;
if (!counts.isEmpty() && counts.getInt(counts.size() - 1) == matchingCount) {
if (!isEnding) {
output.append(String.valueOf(c).repeat(matchingCount));
break;
}
counts.removeInt(counts.size() - 1);
} else {
if (i < markdown.length() && Character.isWhitespace(markdown.charAt(i))) {
output.append(String.valueOf(c).repeat(matchingCount));
output.append(markdown.charAt(i));
break;
}
counts.add(matchingCount);
}
--i;
break;
default:
output.append(c);
}
}
if (!counts.isEmpty()) {
throw new IllegalArgumentException("Unbalanced markdown formatting");
} else {
return output.toString();
}
}
}
}