From 5c8c5d57d37f4411630828e3c658bb23e10e207b Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 14 Feb 2016 10:55:30 +0000 Subject: Generate HTML using HTML AST --- src/main/java/org/zwobble/mammoth/Mammoth.java | 58 +++++++++++++++----------- 1 file changed, 33 insertions(+), 25 deletions(-) (limited to 'src/main/java/org/zwobble/mammoth/Mammoth.java') diff --git a/src/main/java/org/zwobble/mammoth/Mammoth.java b/src/main/java/org/zwobble/mammoth/Mammoth.java index 63a313f..40f2a6e 100644 --- a/src/main/java/org/zwobble/mammoth/Mammoth.java +++ b/src/main/java/org/zwobble/mammoth/Mammoth.java @@ -1,17 +1,20 @@ package org.zwobble.mammoth; -import com.google.common.base.Joiner; import org.zwobble.mammoth.documents.*; import org.zwobble.mammoth.docx.*; +import org.zwobble.mammoth.html.Html; +import org.zwobble.mammoth.html.HtmlNode; import org.zwobble.mammoth.results.Result; import org.zwobble.mammoth.xml.XmlElement; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.List; import java.util.zip.ZipFile; -import static com.google.common.collect.Iterables.transform; +import static org.zwobble.mammoth.util.MammothLists.eagerFlatMap; +import static org.zwobble.mammoth.util.MammothLists.list; public class Mammoth { public static Result convertToHtml(File file) { @@ -36,86 +39,91 @@ public class Mammoth { zipFile, fileReader)); return reader.readElement(documentXml) - .map(Mammoth::convertToHtml); + .map(Mammoth::convertToHtml) + .map(Html::write); } catch (IOException e) { throw new UnsupportedOperationException("Should return a result of failure"); } } - private static String convertToHtml(Document document) { + private static List convertToHtml(Document document) { return convertChildrenToHtml(document); } - private static String convertChildrenToHtml(HasChildren element) { - return Joiner.on("").join(transform( + private static List convertChildrenToHtml(HasChildren element) { + return eagerFlatMap( element.getChildren(), - Mammoth::convertToHtml)); + Mammoth::convertToHtml); } - private static String convertToHtml(DocumentElement element) { - return element.accept(new DocumentElementVisitor() { + private static List convertToHtml(DocumentElement element) { + return element.accept(new DocumentElementVisitor>() { @Override - public String visit(Paragraph paragraph) { - String content = convertChildrenToHtml(paragraph); + public List visit(Paragraph paragraph) { + List content = convertChildrenToHtml(paragraph); if (content.isEmpty()) { - return ""; + return list(); } else { - return "

" + content + "

"; + return list(Html.element("p", content)); } } @Override - public String visit(Run run) { + public List visit(Run run) { return convertChildrenToHtml(run); } @Override - public String visit(Text text) { - return text.getValue(); + public List visit(Text text) { + if (text.getValue().isEmpty()) { + return list(); + } else { + return list(Html.text(text.getValue())); + } } @Override - public String visit(Tab tab) { + public List visit(Tab tab) { throw new UnsupportedOperationException(); } @Override - public String visit(LineBreak lineBreak) { + public List visit(LineBreak lineBreak) { throw new UnsupportedOperationException(); } @Override - public String visit(Table table) { + public List visit(Table table) { throw new UnsupportedOperationException(); } @Override - public String visit(TableRow tableRow) { + public List visit(TableRow tableRow) { throw new UnsupportedOperationException(); } @Override - public String visit(TableCell tableCell) { + public List visit(TableCell tableCell) { throw new UnsupportedOperationException(); } @Override - public String visit(Hyperlink hyperlink) { + public List visit(Hyperlink hyperlink) { throw new UnsupportedOperationException(); } @Override - public String visit(Bookmark bookmark) { + public List visit(Bookmark bookmark) { throw new UnsupportedOperationException(); } @Override - public String visit(NoteReference noteReference) { + public List visit(NoteReference noteReference) { throw new UnsupportedOperationException(); } @Override - public String visit(Image image) { + public List visit(Image image) { throw new UnsupportedOperationException(); } }); -- cgit v1.2.3