a4452643ccf055d6584d74781771370b7c1c8e58
1 package be
.nikiroo
.gofetch
.output
;
3 import be
.nikiroo
.gofetch
.data
.Comment
;
4 import be
.nikiroo
.gofetch
.data
.Story
;
5 import be
.nikiroo
.gofetch
.support
.BasicSupport
;
6 import be
.nikiroo
.gofetch
.support
.Type
;
7 import be
.nikiroo
.utils
.StringUtils
;
9 public class Html
extends Output
{
10 public Html(Type type
, String hostname
, String preselector
, int port
) {
11 super(type
, hostname
, preselector
, port
);
15 public String
getMainIndexHeader() {
16 String sel
= preselector
;
21 String gopherUrl
= "gopher://" + hostname
+ sel
+ ":" + port
;
23 StringBuilder builder
= new StringBuilder();
26 builder
.append("<h2>News</h2>\n"//
27 + "<p>You will find here a few pages full of news, mirroring <a href='"
31 + "<p>They are simply scrapped from their associated webpage and updated a few times a day.</p>\n"//
36 return builder
.toString();
40 public String
getMainIndexFooter() {
45 public String
getIndexHeader(BasicSupport support
) {
46 return "<h1>" + support
.getDescription() + "</h1>\n<br/><br/>";
50 public String
getIndexFooter(BasicSupport support
) {
55 public String
exportHeader(Story story
) {
56 StringBuilder builder
= new StringBuilder();
60 builder
.append("<div class='story-header'>\n");
61 appendHtml(builder
, story
, true);
62 builder
.append("<hr/>\n");
63 builder
.append("</div>\n");
67 return builder
.toString();
71 public String
export(Story story
) {
72 StringBuilder builder
= new StringBuilder();
75 builder
.append("<div class='story'>\n");
76 appendHtml(builder
, story
, false);
77 builder
.append("<hr/>\n");
79 if (story
.getComments() != null) {
80 for (Comment comment
: story
.getComments()) {
81 appendHtml(builder
, comment
, " ");
85 builder
.append("</div>\n");
89 return builder
.toString();
92 private void appendPre(StringBuilder builder
) {
93 builder
.append("<!DOCTYPE html>\n");
94 builder
.append("<html>\n");
95 builder
.append("<head>\n");
96 builder
.append(" <meta http-equiv='content-type' content='text/html; charset=utf-8'>\n");
97 builder
.append(" <meta name='viewport' content='width=device-width, initial-scale=1.0'>\n");
98 builder
.append(" <style type='text/css'>\n");
99 builder
.append(" body { margin: 1em 15%; }\n");
100 builder
.append(" </style>\n");
101 builder
.append("</head>\n");
102 builder
.append("<body>\n");
105 private void appendPost(StringBuilder builder
) {
106 builder
.append("</body>\n");
109 private void appendHtml(StringBuilder builder
, Comment comment
, String space
) {
110 builder
.append(space
)
111 .append("<div class='comment' style='display: block; margin-left: 80px'>\n");
112 builder
.append(space
).append(" <h3>").append(comment
.getTitle())
114 builder
.append(space
)
115 .append(" <div class='by' style='font-style: italic;'>")
116 .append(comment
.getAuthor()).append("</div>\n");
117 builder
.append(space
).append(" <div class='comment_content'>");
118 for (String line
: comment
.getContentLines()) {
119 builder
.append("<p>" + line
+ "</p>");
121 builder
.append("</div>\n");
122 for (Comment subComment
: comment
) {
123 appendHtml(builder
, subComment
, space
+ " ");
125 builder
.append(space
).append("</div>\n");
128 private StringBuilder
appendHtml(StringBuilder builder
, Story story
,
131 builder
.append(" <h2><a href='" + story
.getId() + ".html'>"
132 + story
.getTitle() + "</a></h2>\n");
134 builder
.append(" <h2>" + story
.getTitle() + "</h2>\n");
137 builder
.append(" <div class='details'>");
138 if (story
.getDetails() != null && !story
.getDetails().isEmpty()) {
140 .append(StringUtils
.xmlEscape(story
.getDetails()))
143 builder
.append("</div>\n");
144 builder
.append(" <br/>\n");
147 builder
.append(" <ul>\n");
148 builder
.append(" <li>Reference: <a href=''>" + story
.getId()
150 builder
.append(" <li>News link: <a href='"
151 + story
.getUrlInternal() + "'>" + story
.getUrlInternal()
153 builder
.append(" <li>Source link: <a href='"
154 + story
.getUrlExternal() + "'>" + story
.getUrlExternal()
156 builder
.append(" </ul>\n");
157 builder
.append(" <br/>\n");
160 builder
.append(" <div class='content' style='text-align: justify'>\n");
163 + StringUtils
.xmlEscape(story
.getContent()).replace("\n",
167 + StringUtils
.xmlEscape(story
.getFullContent())
168 .replace("\n", "<br/>").replace("[ ", "<h3>")
169 .replace(" ]", "</h3>") + "\n");
171 builder
.append(" </div>\n");