X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Foutput%2FHtml.java;h=29a0f32b6404e6b1c0822e6e45d11b6783601905;hb=a6395bef99a8e917f67341ef1906917b87df24a4;hp=4226bf84b75dfa6ea97d3770c93a44416f04e38d;hpb=73ce17ef4569e43d24f8413ad6b59bc2906aec07;p=fanfix.git
diff --git a/src/be/nikiroo/fanfix/output/Html.java b/src/be/nikiroo/fanfix/output/Html.java
index 4226bf8..29a0f32 100644
--- a/src/be/nikiroo/fanfix/output/Html.java
+++ b/src/be/nikiroo/fanfix/output/Html.java
@@ -1,6 +1,167 @@
package be.nikiroo.fanfix.output;
-//TODO: implement it for LocalReader
-class Html extends Text {
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import be.nikiroo.fanfix.Instance;
+import be.nikiroo.fanfix.bundles.StringId;
+import be.nikiroo.fanfix.data.Chapter;
+import be.nikiroo.fanfix.data.Paragraph;
+import be.nikiroo.fanfix.data.Paragraph.ParagraphType;
+import be.nikiroo.fanfix.data.Story;
+import be.nikiroo.utils.StringUtils;
+
+class Html extends BasicOutput {
+ protected FileWriter writer;
+ private boolean inDialogue = false;
+ private boolean inNormal = false;
+
+ @Override
+ public File process(Story story, File targetDir, String targetName)
+ throws IOException {
+ File target = new File(targetDir, targetName);
+ target.mkdir();
+
+ targetName = new File(targetName, "index").getPath();
+
+ String targetNameOrig = targetName;
+ targetName += getDefaultExtension();
+
+ target = new File(targetDir, targetName);
+
+ writer = new FileWriter(target);
+ try {
+ super.process(story, targetDir, targetNameOrig);
+ } finally {
+ writer.close();
+ writer = null;
+ }
+
+ return target;
+ }
+
+ @Override
+ public String getDefaultExtension() {
+ return ".html";
+ }
+
+ @Override
+ protected void writeStoryHeader(Story story) throws IOException {
+ String title = "";
+ if (story.getMeta() != null) {
+ title = story.getMeta().getTitle();
+ }
+
+ writer.write("");
+ writer.write("\n");
+ writer.write("\n
");
+ writer.write("\n ");
+ writer.write("\n ");
+ writer.write("\n " + StringUtils.xmlEscape(title) + "");
+ writer.write("\n");
+ writer.write("\n\n");
+
+ writer.write("" + StringUtils.xmlEscape(title) + "
\n\n");
+ }
+
+ @Override
+ protected void writeStoryFooter(Story story) throws IOException {
+ writer.write("\n");
+ }
+
+ @Override
+ protected void writeChapterHeader(Chapter chap) throws IOException {
+ String txt;
+ if (chap.getName() != null && !chap.getName().isEmpty()) {
+ txt = Instance.getTrans().getString(StringId.CHAPTER_NAMED,
+ chap.getNumber(), chap.getName());
+ } else {
+ txt = Instance.getTrans().getString(StringId.CHAPTER_UNNAMED,
+ chap.getNumber());
+ }
+
+ writer.write("" + StringUtils.xmlEscape(txt) + "
\n\n");
+
+ inDialogue = false;
+ inNormal = false;
+ }
+
+ @Override
+ protected void writeParagraphHeader(Paragraph para) throws IOException {
+ if (para.getType() == ParagraphType.QUOTE && !inDialogue) {
+ writer.write(" \n");
+ inDialogue = true;
+ } else if (para.getType() != ParagraphType.QUOTE && inDialogue) {
+ writer.write("
\n");
+ inDialogue = false;
+ }
+
+ if (para.getType() == ParagraphType.NORMAL && !inNormal) {
+ writer.write(" \n");
+ inNormal = true;
+ } else if (para.getType() != ParagraphType.NORMAL && inNormal) {
+ writer.write("
\n");
+ inNormal = false;
+ }
+
+ switch (para.getType()) {
+ case BLANK:
+ writer.write(" ");
+ break;
+ case BREAK:
+ writer.write("
");
+ break;
+ case NORMAL:
+ writer.write(" ");
+ break;
+ case QUOTE:
+ writer.write(" — ");
+ break;
+ case IMAGE:
+ // TODO
+ writer.write("
"
+ + StringUtils.xmlEscape(para.getContent()) + "");
+ break;
+ }
+ }
+
+ @Override
+ protected void writeParagraphFooter(Paragraph para) throws IOException {
+ switch (para.getType()) {
+ case NORMAL:
+ writer.write("\n");
+ break;
+ case QUOTE:
+ writer.write("
\n");
+ break;
+ default:
+ writer.write("\n");
+ break;
+ }
+ }
+
+ @Override
+ protected void writeTextLine(ParagraphType type, String line)
+ throws IOException {
+ switch (type) {
+ case QUOTE:
+ case NORMAL:
+ writer.write(decorateText(StringUtils.xmlEscape(line)));
+ break;
+ default:
+ break;
+ }
+ }
+
+ @Override
+ protected String enbold(String word) {
+ return "" + word + "";
+ }
+
+ @Override
+ protected String italize(String word) {
+ return "" + word + "";
+ }
}