mirror of
https://github.com/HangarMC/Hangar.git
synced 2024-12-09 06:32:43 +08:00
Finish converter
This commit is contained in:
parent
a9499a89fe
commit
0b9aeffa9b
@ -1,5 +1,7 @@
|
|||||||
package io.papermc.hangar.controller.util;
|
package io.papermc.hangar.controller.util;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -62,6 +64,12 @@ public class BBCodeConverter {
|
|||||||
s = s.substring(0, index) + currentContent + s.substring(closingIndex);
|
s = s.substring(0, index) + currentContent + s.substring(closingIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Iterate until no whitespaces are left (else they might only be moved into the upper tag...)
|
||||||
|
String result;
|
||||||
|
while ((result = removeTrailingWhitespaces(s)) != null) {
|
||||||
|
s = result;
|
||||||
|
}
|
||||||
|
|
||||||
// Tag conversion
|
// Tag conversion
|
||||||
index = 0;
|
index = 0;
|
||||||
while ((index = s.indexOf(TAG_PREFIX, index)) != -1) {
|
while ((index = s.indexOf(TAG_PREFIX, index)) != -1) {
|
||||||
@ -92,6 +100,40 @@ public class BBCodeConverter {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private String removeTrailingWhitespaces(String s) {
|
||||||
|
int index = 0;
|
||||||
|
boolean foundTrailingSpace = false;
|
||||||
|
while ((index = s.indexOf(TAG_PREFIX, index)) != -1) {
|
||||||
|
int closingIndex = process(s, index, false);
|
||||||
|
if (closingIndex == -1 || currentContent == null) {
|
||||||
|
index++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean startsWithSpace = currentContent.startsWith(" ");
|
||||||
|
boolean endsWithSpace = currentContent.endsWith(" ");
|
||||||
|
if (startsWithSpace || endsWithSpace) {
|
||||||
|
foundTrailingSpace = true;
|
||||||
|
currentContent = currentContent.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Readd opening and closing tag, then spaces
|
||||||
|
int tagSuffixIndex = s.indexOf(TAG_SUFFIX, index);
|
||||||
|
currentContent = s.substring(index, tagSuffixIndex + 1) + currentContent + s.substring(closingIndex - currentTag.length() - 3, closingIndex);
|
||||||
|
if (startsWithSpace) {
|
||||||
|
currentContent = " " + currentContent;
|
||||||
|
}
|
||||||
|
if (endsWithSpace) {
|
||||||
|
currentContent += " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
s = s.substring(0, index) + currentContent + s.substring(closingIndex);
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
return foundTrailingSpace ? s : null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param s string
|
* @param s string
|
||||||
* @param index index to start searching from
|
* @param index index to start searching from
|
||||||
|
Loading…
Reference in New Issue
Block a user