diff options
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/DocumentConverter.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/DocumentConverter.java | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/main/java/org/zwobble/mammoth/DocumentConverter.java b/src/main/java/org/zwobble/mammoth/DocumentConverter.java index e8d9059..49bc904 100644 --- a/src/main/java/org/zwobble/mammoth/DocumentConverter.java +++ b/src/main/java/org/zwobble/mammoth/DocumentConverter.java @@ -12,17 +12,23 @@ import static org.zwobble.mammoth.util.MammothLists.list; import static org.zwobble.mammoth.util.MammothMaps.map; public class DocumentConverter { - public static List<HtmlNode> convertToHtml(Document document) { + private final String idPrefix; + + public DocumentConverter(String idPrefix) { + this.idPrefix = idPrefix; + } + + public List<HtmlNode> convertToHtml(Document document) { return convertChildrenToHtml(document); } - private static List<HtmlNode> convertChildrenToHtml(HasChildren element) { + private List<HtmlNode> convertChildrenToHtml(HasChildren element) { return eagerFlatMap( element.getChildren(), - DocumentConverter::convertToHtml); + this::convertToHtml); } - public static List<HtmlNode> convertToHtml(DocumentElement element) { + public List<HtmlNode> convertToHtml(DocumentElement element) { return element.accept(new DocumentElementVisitor<List<HtmlNode>>() { @Override public List<HtmlNode> visit(Paragraph paragraph) { @@ -91,10 +97,20 @@ public class DocumentConverter { @Override public List<HtmlNode> visit(Hyperlink hyperlink) { - Map<String, String> attributes = map("href", hyperlink.getHref().get()); + Map<String, String> attributes = map("href", generateHref(hyperlink)); return list(Html.element("a", attributes, convertChildrenToHtml(hyperlink))); } + private String generateHref(Hyperlink hyperlink) { + if (hyperlink.getHref().isPresent()) { + return hyperlink.getHref().get(); + } else if (hyperlink.getAnchor().isPresent()) { + return "#" + idPrefix + "-" + hyperlink.getAnchor().get(); + } else { + return ""; + } + } + @Override public List<HtmlNode> visit(Bookmark bookmark) { throw new UnsupportedOperationException(); |
