First version (slashdot supported)
[gofetch.git] / src / be / nikiroo / gofetch / output / Html.java
diff --git a/src/be/nikiroo/gofetch/output/Html.java b/src/be/nikiroo/gofetch/output/Html.java
new file mode 100644 (file)
index 0000000..ab7489b
--- /dev/null
@@ -0,0 +1,81 @@
+package be.nikiroo.gofetch.output;
+
+import java.util.List;
+
+import be.nikiroo.gofetch.data.Comment;
+import be.nikiroo.gofetch.data.Story;
+import be.nikiroo.gofetch.support.BasicSupport.Type;
+
+public class Html extends Output {
+       public Html(Type type) {
+               super(type);
+       }
+
+       @Override
+       public String getIndexHeader() {
+               return "<h1>Hello world!</h1><br/>TODO\n";
+       }
+
+       @Override
+       public String getIndexFooter() {
+               return "";
+       }
+
+       @Override
+       public String export(Story story) {
+               return appendHtml(new StringBuilder(), story, true).append("<hr/>\n")
+                               .toString();
+       }
+
+       @Override
+       public String export(Story story, List<Comment> comments) {
+               StringBuilder builder = new StringBuilder();
+               appendHtml(builder, story, false);
+
+               // TODO: ext link and link
+
+               builder.append("<hr/>");
+               for (Comment comment : comments) {
+                       appendHtml(builder, comment, "  ");
+               }
+
+               return builder.toString();
+       }
+
+       private void appendHtml(StringBuilder builder, Comment comment, String space) {
+               builder.append(space).append(
+                               "<div class='comment' style='display: block; margin-left: "
+                                               + (20 * space.length()) + "px'>");
+               builder.append(space).append("  <h2>").append(comment.getTitle())
+                               .append("</h2>\n");
+               builder.append(space).append("  <div class='by'>")
+                               .append(comment.getAuthor()).append("</div>\n");
+               builder.append(space).append("  <div class='comment_content'>")
+                               .append(comment.getContent()).append("</div>\n");
+               for (Comment subComment : comment) {
+                       appendHtml(builder, subComment, space + "  ");
+               }
+               builder.append(space).append("</div>");
+       }
+
+       private StringBuilder appendHtml(StringBuilder builder, Story story,
+                       boolean links) {
+               // TODO
+               builder.append("<div class='story'>");
+               if (links) {
+                       builder.append("        <h1><a href='" + story.getId() + ".html'>"
+                                       + story.getTitle() + "</a></h1>");
+               } else {
+                       builder.append("        <h1>" + story.getTitle() + "</h1>");
+               }
+               builder.append("        <div class='details'>(" + story.getDetails()
+                               + ")</div>");
+               builder.append("        <br/>");
+               builder.append("        <div class='content'>");
+               builder.append("                " + story.getContent());
+               builder.append("        </div>");
+               builder.append("</div>");
+
+               return builder;
+       }
+}