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