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;
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.", "");
if (story.getComments() != null) {
for (Comment comment : story.getComments()) {
- append(builder, false, comment, "");
+ append(builder, false, comment, " ");
}
}
}
appendLeft(builder, menu, comment.getTitle(), "** ", " ", space);
- appendLeft(builder, menu, "(" + comment.getAuthor() + ")", " ",
- " ", space);
- builder.append((menu ? "i" : "") + "\r\n");
+ if (comment.getAuthor() != null
+ && !comment.getAuthor().trim().isEmpty()) {
+ appendLeft(builder, menu, "(" + comment.getAuthor() + ")", " ",
+ " ", space);
+ builder.append((menu ? "i" : "") + "\r\n");
+ }
for (String line : comment.getContentLines()) {
int depth = 0;
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;
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");
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()) //
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");
}
}
}
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;
}
}