Limit to 67 chars, fix content for LWN (still WIP)
[gofetch.git] / src / be / nikiroo / gofetch / output / Html.java
CommitLineData
73785268
NR
1package be.nikiroo.gofetch.output;
2
3import java.util.List;
4
5import be.nikiroo.gofetch.data.Comment;
6import be.nikiroo.gofetch.data.Story;
7import be.nikiroo.gofetch.support.BasicSupport.Type;
8
9public class Html extends Output {
70b18499
NR
10 public Html(Type type, String hostname, String preselector, int port) {
11 super(type, hostname, preselector, port);
73785268
NR
12 }
13
14 @Override
15 public String getIndexHeader() {
e236e220
NR
16 String sel = preselector;
17 if (!sel.isEmpty()) {
18 sel = "/1" + sel;
19 }
20
21 String gopherUrl = "gopher://" + hostname + sel + ":" + port;
70b18499
NR
22
23 return "<h1>News</h1>\n"//
24 + "<p>You will find here a few pages full of news, mirroring <a href='"
25 + gopherUrl + "'>"
26 + gopherUrl
27 + "</a>.</p>\n"//
70b18499 28 + "<p>They are simply scrapped from their associated webpage and updated a few times a day.</p>\n"//
70b18499 29 ;
73785268
NR
30 }
31
32 @Override
33 public String getIndexFooter() {
34 return "";
35 }
36
37 @Override
38 public String export(Story story) {
70b18499
NR
39 StringBuilder builder = new StringBuilder();
40
41 builder.append("<div class='story-header'>\n");
42 appendHtml(builder, story, true);
43 builder.append("<hr/>\n");
44 builder.append("</div>\n");
45
46 return builder.toString();
73785268
NR
47 }
48
49 @Override
50 public String export(Story story, List<Comment> comments) {
51 StringBuilder builder = new StringBuilder();
73785268 52
70b18499
NR
53 builder.append("<div class='story'>\n");
54 appendHtml(builder, story, false);
55 builder.append("<hr/>\n");
73785268 56
70b18499
NR
57 if (comments != null) {
58 for (Comment comment : comments) {
59 appendHtml(builder, comment, " ");
60 }
73785268
NR
61 }
62
70b18499
NR
63 builder.append("</div>\n");
64
73785268
NR
65 return builder.toString();
66 }
67
68 private void appendHtml(StringBuilder builder, Comment comment, String space) {
69 builder.append(space).append(
70 "<div class='comment' style='display: block; margin-left: "
71 + (20 * space.length()) + "px'>");
72 builder.append(space).append(" <h2>").append(comment.getTitle())
73 .append("</h2>\n");
74 builder.append(space).append(" <div class='by'>")
75 .append(comment.getAuthor()).append("</div>\n");
76 builder.append(space).append(" <div class='comment_content'>")
77 .append(comment.getContent()).append("</div>\n");
78 for (Comment subComment : comment) {
79 appendHtml(builder, subComment, space + " ");
80 }
81 builder.append(space).append("</div>");
82 }
83
84 private StringBuilder appendHtml(StringBuilder builder, Story story,
70b18499
NR
85 boolean resume) {
86 if (resume) {
73785268 87 builder.append(" <h1><a href='" + story.getId() + ".html'>"
70b18499 88 + story.getTitle() + "</a></h1>\n");
73785268 89 } else {
70b18499 90 builder.append(" <h1>" + story.getTitle() + "</h1>\n");
73785268
NR
91 }
92 builder.append(" <div class='details'>(" + story.getDetails()
70b18499
NR
93 + ")</div>\n");
94 builder.append(" <br/>\n");
95
96 if (!resume) {
97 builder.append(" <ul>\n");
98 builder.append(" <li>News link: <a href='"
99 + story.getUrlInternal() + "'>" + story.getUrlInternal()
100 + "</a></li>\n");
101 builder.append(" <li>Source link: <a href='"
102 + story.getUrlExternal() + "'>" + story.getUrlExternal()
103 + "</a></li>\n");
104 builder.append(" </ul>\n");
105 builder.append(" <br/>\n");
106 }
107
108 builder.append(" <div class='content'>\n");
109 builder.append(" " + story.getContent() + "\n");
110 builder.append(" </div>\n");
73785268
NR
111
112 return builder;
113 }
114}