package be.nikiroo.gofetch.output;
import be.nikiroo.gofetch.data.Comment;
import be.nikiroo.gofetch.data.Story;
import be.nikiroo.gofetch.support.Type;
import be.nikiroo.utils.StringUtils;
public class Html extends Output {
public Html(Type type, String hostname, String preselector, int port) {
super(type, hostname, preselector, port);
}
@Override
public String getIndexHeader() {
String sel = preselector;
if (!sel.isEmpty()) {
sel = "/1" + sel;
}
String gopherUrl = "gopher://" + hostname + sel + ":" + port;
StringBuilder builder = new StringBuilder();
appendPre(builder);
builder.append("
News
\n"//
+ "You will find here a few pages full of news, mirroring "
+ gopherUrl
+ ".
\n"//
+ "They are simply scrapped from their associated webpage and updated a few times a day.
\n"//
);
appendPost(builder);
return builder.toString();
}
@Override
public String getIndexFooter() {
return "";
}
@Override
public String exportHeader(Story story) {
StringBuilder builder = new StringBuilder();
appendPre(builder);
builder.append("\n");
appendPost(builder);
return builder.toString();
}
@Override
public String export(Story story) {
StringBuilder builder = new StringBuilder();
appendPre(builder);
builder.append("\n");
appendHtml(builder, story, false);
builder.append("
\n");
if (story.getComments() != null) {
for (Comment comment : story.getComments()) {
appendHtml(builder, comment, " ");
}
}
builder.append("\n");
appendPost(builder);
return builder.toString();
}
private void appendPre(StringBuilder builder) {
builder.append("\n");
builder.append("\n");
builder.append("\n");
builder.append(" \n");
builder.append(" \n");
builder.append(" \n");
builder.append("\n");
builder.append("\n");
}
private void appendPost(StringBuilder builder) {
builder.append("\n");
}
private void appendHtml(StringBuilder builder, Comment comment, String space) {
builder.append(space)
.append("\n");
}
private StringBuilder appendHtml(StringBuilder builder, Story story,
boolean resume) {
if (resume) {
builder.append(" \n");
} else {
builder.append(" " + story.getTitle() + "
\n");
}
builder.append(" ");
if (story.getDetails() != null && !story.getDetails().isEmpty()) {
builder.append("(")
.append(StringUtils.xmlEscape(story.getDetails()))
.append(")");
}
builder.append("
\n");
builder.append("
\n");
if (!resume) {
builder.append(" \n");
builder.append("
\n");
}
builder.append(" \n");
if (resume) {
builder.append(" " + StringUtils.xmlEscape(story.getContent())
+ "\n");
} else {
builder.append(" "
+ StringUtils.xmlEscape(story.getFullContent())
.replace("\n", "
").replace("[ ", "
")
.replace(" ]", "
") + "\n");
}
builder.append(" \n");
return builder;
}
}
").append(comment.getTitle()) .append("
\n"); builder.append(space) .append("" + line + "
"); } builder.append("