diff --git a/src/main/java/dev/zontreck/ariaslib/terminal/Banners.java b/src/main/java/dev/zontreck/ariaslib/terminal/Banners.java new file mode 100644 index 0000000..bf28d89 --- /dev/null +++ b/src/main/java/dev/zontreck/ariaslib/terminal/Banners.java @@ -0,0 +1,47 @@ +package dev.zontreck.ariaslib.terminal; + +import java.util.ArrayList; +import java.util.List; + +public class Banners +{ + + public static String generateBanner(String text) { + int maxLength = calculateMaxLength(text); + List bannerLines = new ArrayList<>(); + StringBuilder border = new StringBuilder(); + for (int i = 0; i < maxLength + 4; i++) { + border.append("*"); + } + bannerLines.add(border.toString()); + bannerLines.add("* " + centerText(text, maxLength) + " *"); + bannerLines.add(border.toString()); + return String.join("\n", bannerLines); + } + + private static String centerText(String text, int maxLength) { + StringBuilder centeredText = new StringBuilder(); + int spacesToAdd = (maxLength - text.length()) / 2; + for (int i = 0; i < spacesToAdd; i++) { + centeredText.append(" "); + } + centeredText.append(text); + for (int i = 0; i < spacesToAdd; i++) { + centeredText.append(" "); + } + if (centeredText.length() < maxLength) { + centeredText.append(" "); + } + return centeredText.toString(); + } + + private static int calculateMaxLength(String text) { + int maxLength = 0; + for (String line : text.split("\n")) { + if (line.length() > maxLength) { + maxLength = line.length(); + } + } + return maxLength; + } +}