X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fgofetch%2Foutput%2FGopher.java;h=51da87fb338f5ea4cd8fdc475a210035bf63f8a9;hb=75f6f0c263e88492d094fbdab1407a1fdee53056;hp=877dfa27fb445b3b2cb622a50244d3f70ece71ea;hpb=029feaedb06a22016a2c20df90d6d57d2e5e3b55;p=gofetch.git diff --git a/src/be/nikiroo/gofetch/output/Gopher.java b/src/be/nikiroo/gofetch/output/Gopher.java index 877dfa2..51da87f 100644 --- a/src/be/nikiroo/gofetch/output/Gopher.java +++ b/src/be/nikiroo/gofetch/output/Gopher.java @@ -1,9 +1,10 @@ package be.nikiroo.gofetch.output; -import be.nikiroo.gofetch.StringJustifier; import be.nikiroo.gofetch.data.Comment; import be.nikiroo.gofetch.data.Story; import be.nikiroo.gofetch.support.BasicSupport.Type; +import be.nikiroo.utils.StringUtils; +import be.nikiroo.utils.StringUtils.Alignment; public class Gopher extends Output { static private final int LINE_SIZE = 67; @@ -16,7 +17,7 @@ public class Gopher extends Output { public String getIndexHeader() { StringBuilder builder = new StringBuilder(); - appendCenter(builder, true, "NEWS", true); + appendCenter(builder, true, "NEWS", "", true); appendLeft(builder, true, "", ""); appendLeft(builder, true, "You will find here a few pages full of news.", ""); @@ -50,7 +51,7 @@ public class Gopher extends Output { if (story.getComments() != null) { for (Comment comment : story.getComments()) { - append(builder, false, comment, ""); + append(builder, false, comment, " "); } } @@ -91,10 +92,10 @@ public class Gopher extends Output { appendLeft(builder, menu, line, prep, prep, space); } - builder.append("i\r\n"); + builder.append((menu ? "i" : "") + "\r\n"); for (Comment subComment : comment) { append(builder, menu, subComment, space + " "); - builder.append("i\r\n"); + builder.append((menu ? "i" : "") + "\r\n"); } return builder; @@ -103,7 +104,7 @@ public class Gopher extends Output { private StringBuilder append(StringBuilder builder, Story story, boolean resume) { if (!resume) { - appendCenter(builder, false, story.getTitle(), true); + appendCenter(builder, false, story.getTitle(), " ", true); builder.append("\r\n"); appendJustified(builder, false, story.getDetails(), " "); builder.append("\r\n"); @@ -117,6 +118,7 @@ public class Gopher extends Output { builder.append("\r\n"); appendJustified(builder, false, story.getFullContent(), " "); + builder.append("\r\n"); } else { builder.append('0').append(story.getTitle()) // .append('\t').append(story.getSelector()) // @@ -126,32 +128,43 @@ public class Gopher extends Output { appendJustified(builder, true, story.getDetails(), " "); builder.append("i\r\n"); - appendJustified(builder, true, story.getContent(), " "); + String content = story.getContent(); + if (!content.isEmpty()) { + appendJustified(builder, true, content, " "); + builder.append("i\r\n"); + } } - builder.append((resume ? "i" : "") + "\r\n"); - return builder; } // note: adds "i" private static void appendCenter(StringBuilder builder, boolean menu, - String text, boolean allCaps) { + String text, String space, boolean allCaps) { if (allCaps) { text = text.toUpperCase(); } - for (String line : StringJustifier.center(text, LINE_SIZE)) { - builder.append(menu ? "i" : "").append(line).append("\r\n"); + int size = LINE_SIZE - space.length(); + for (String line : StringUtils + .justifyText(text, size, Alignment.CENTER)) { + builder.append(menu ? "i" : "") // + .append(space) // + .append(line) // + .append("\r\n"); } } private static void appendJustified(StringBuilder builder, boolean menu, String text, String space) { for (String line : text.split("\n")) { - for (String subline : StringJustifier.full(line, - LINE_SIZE - space.length())) { - builder.append(menu ? "i" : "").append(subline).append("\r\n"); + int size = LINE_SIZE - space.length(); + for (String subline : StringUtils.justifyText(line, size, + Alignment.JUSTIFY)) { + builder.append(menu ? "i" : "") // + .append(space) // + .append(subline) // + .append("\r\n"); } } } @@ -165,10 +178,13 @@ public class Gopher extends Output { String text, String prependFirst, String prependOthers, String space) { String prepend = prependFirst; for (String line : text.split("\n")) { - for (String subline : StringJustifier.left(line, - LINE_SIZE - space.length())) { - builder.append(menu ? "i" : "").append(space).append(prepend) - .append(subline).append("\r\n"); + for (String subline : StringUtils.justifyText(line, LINE_SIZE + - space.length(), Alignment.LEFT)) { + builder.append(menu ? "i" : "") // + .append(space) // + .append(prepend) // + .append(subline) // + .append("\r\n"); prepend = prependOthers; } }