22 package com.realtime.crossfire.jxclient.util;
24 import java.util.ArrayList;
25 import java.util.Collection;
26 import org.jetbrains.annotations.NotNull;
57 public static String
splitAsHtml(@NotNull
final String message) {
58 final StringBuilder sb =
new StringBuilder();
59 for (
final String line :
split(message)) {
60 if (sb.length() > 0) {
74 private static Iterable<String>
split(@NotNull
final String message) {
75 final String paddedMessage = message.trim()+
" ";
77 final Collection<String> result =
new ArrayList<>();
80 while (start < paddedMessage.length() && paddedMessage.charAt(start) ==
' ') {
83 if (start >= paddedMessage.length()) {
87 final int nextSpace = paddedMessage.indexOf(
' ', Math.min(start+PREFERRED_LINE_LENGTH, paddedMessage.length()-1));
88 assert nextSpace != -1;
89 if (nextSpace-start <= PREFERRED_LINE_LENGTH) {
90 result.add(paddedMessage.substring(start, nextSpace));
93 final int prevSpace = paddedMessage.lastIndexOf(
' ', nextSpace-1);
94 if (prevSpace != -1 && prevSpace > start) {
95 result.add(paddedMessage.substring(start, prevSpace));
97 }
else if (nextSpace-start <= MAXIMUM_LINE_LENGTH) {
98 result.add(paddedMessage.substring(start, nextSpace));
101 final int end = Math.min(start+MAXIMUM_LINE_LENGTH, paddedMessage.length());
102 result.add(paddedMessage.substring(start, end));
static String splitAsHtml(@NotNull final String message)
Splits the given string into lines and returns the lines separated by "<br>".
static Iterable< String > split(@NotNull final String message)
Splits the given string into lines.
StringSplitter()
Private constructor to prevent instantiation.
static final int MAXIMUM_LINE_LENGTH
The maximum line length in characters.
Utility class for splitting strings.
static final int PREFERRED_LINE_LENGTH
The preferred line length in characters.