X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fmain%2Fjustify.java;h=2a83389ea047f75838ce7c46b5e288aedb0f7d1c;hb=f0b5b320b83d5ec6ba354f9f79058cb763dc0310;hp=68f5358833b144d2479b2b2bf4d14b5d9bcb0928;hpb=a5d976cda8048c53a4b4fdeee458eab05959bec5;p=fanfix.git diff --git a/src/be/nikiroo/utils/main/justify.java b/src/be/nikiroo/utils/main/justify.java deleted file mode 100644 index 68f5358..0000000 --- a/src/be/nikiroo/utils/main/justify.java +++ /dev/null @@ -1,159 +0,0 @@ -package be.nikiroo.utils.main; - -import java.util.AbstractMap; -import java.util.ArrayList; -import java.util.List; -import java.util.Map.Entry; -import java.util.Scanner; - -import be.nikiroo.utils.StringUtils; -import be.nikiroo.utils.StringUtils.Alignment; - -/** - * Text justification (left, right, center, justify). - * - * @author niki - */ -public class justify { - /** - * Syntax: $0 ([left|right|center|justify]) (max width) - *

- *

- * - * @param args - */ - public static void main(String[] args) { - int width = -1; - StringUtils.Alignment align = Alignment.LEFT; - - if (args.length >= 1) { - align = Alignment.valueOf(args[0].toUpperCase()); - } - if (args.length >= 2) { - width = Integer.parseInt(args[1]); - } - - // TODO: move to utils? - // Content <-> Bullet spacing (null = no spacing) - List> lines = new ArrayList>(); - Scanner scan = new Scanner(System.in); - scan.useDelimiter("\r\n|[\r\n]"); - try { - StringBuilder previous = null; - StringBuilder tmp = new StringBuilder(); - String previousItemBulletSpacing = null; - String itemBulletSpacing = null; - while (scan.hasNext()) { - boolean previousLineComplete = true; - - String current = scan.next().replace("\t", " "); - itemBulletSpacing = getItemSpacing(current); - boolean bullet = isItemLine(current); - if ((previousItemBulletSpacing == null || itemBulletSpacing - .length() <= previousItemBulletSpacing.length()) - && !bullet) { - itemBulletSpacing = null; - } - - if (itemBulletSpacing != null) { - current = current.trim(); - if (!current.isEmpty() && bullet) { - current = current.substring(1); - } - current = current.trim(); - previousLineComplete = bullet; - } else { - tmp.setLength(0); - for (String word : current.split(" ")) { - if (word.isEmpty()) { - continue; - } - - if (tmp.length() > 0) { - tmp.append(' '); - } - tmp.append(word.trim()); - } - current = tmp.toString(); - - previousLineComplete = current.isEmpty() - || previousItemBulletSpacing != null - || (previous != null && isFullLine(previous)); - } - - if (previous == null) { - previous = new StringBuilder(); - } else { - if (previousLineComplete) { - lines.add(new AbstractMap.SimpleEntry( - previous.toString(), previousItemBulletSpacing)); - previous.setLength(0); - previousItemBulletSpacing = itemBulletSpacing; - } else { - previous.append(' '); - } - } - - previous.append(current); - - } - - if (previous != null) { - lines.add(new AbstractMap.SimpleEntry(previous - .toString(), previousItemBulletSpacing)); - } - } finally { - scan.close(); - } - - for (Entry line : lines) { - String content = line.getKey(); - String spacing = line.getValue(); - - String bullet = "- "; - if (spacing == null) { - bullet = ""; - spacing = ""; - } - - if (spacing.length() > width + 3) { - spacing = ""; - } - - for (String subline : StringUtils.justifyText(content, width - - (spacing.length() + bullet.length()), align)) { - System.out.println(spacing + bullet + subline); - if (!bullet.isEmpty()) { - bullet = " "; - } - } - } - } - - static private boolean isFullLine(StringBuilder line) { - return line.length() == 0 // - || line.charAt(line.length() - 1) == '.' - || line.charAt(line.length() - 1) == '"' - || line.charAt(line.length() - 1) == '»'; - } - - static private boolean isItemLine(String line) { - String spacing = getItemSpacing(line); - return spacing != null && line.charAt(spacing.length()) == '-'; - } - - static private String getItemSpacing(String line) { - int i; - for (i = 0; i < line.length(); i++) { - if (line.charAt(i) != ' ') { - return line.substring(0, i); - } - } - - return ""; - } -}