diff options
| author | Michael Williamson <mike@zwobble.org> | 2017-05-30 11:46:57 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2017-05-30 11:46:57 +0100 |
| commit | 0a1f8bb7267e375b62b2e09b0f75719df9ba1d45 (patch) | |
| tree | 01da54032e8c679c154933c21e35cd64e269217e /src | |
| parent | 330140c7c94cce2c57f41bc2d3e14b94dc4f23b0 (diff) | |
Convert hyperlink target frame to anchor target
Diffstat (limited to 'src')
3 files changed, 23 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java index 9de8224..9e6d223 100644 --- a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java +++ b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java @@ -18,6 +18,7 @@ import java.util.function.Supplier; import static org.zwobble.mammoth.internal.util.Casts.tryCast; import static org.zwobble.mammoth.internal.util.Iterables.findIndex; import static org.zwobble.mammoth.internal.util.Lists.*; +import static org.zwobble.mammoth.internal.util.Maps.mutableMap; import static org.zwobble.mammoth.internal.util.Maps.lookup; import static org.zwobble.mammoth.internal.util.Maps.map; @@ -274,7 +275,11 @@ public class DocumentToHtml { @Override public List<HtmlNode> visit(Hyperlink hyperlink, Context context) { - Map<String, String> attributes = map("href", generateHref(hyperlink)); + Map<String, String> attributes = mutableMap("href", generateHref(hyperlink)); + hyperlink.getTargetFrame().ifPresent(targetFrame -> + attributes.put("target", targetFrame) + ); + return list(Html.collapsibleElement("a", attributes, convertChildrenToHtml(hyperlink, context))); } diff --git a/src/main/java/org/zwobble/mammoth/internal/util/Maps.java b/src/main/java/org/zwobble/mammoth/internal/util/Maps.java index 76ce5cf..f96c1f5 100644 --- a/src/main/java/org/zwobble/mammoth/internal/util/Maps.java +++ b/src/main/java/org/zwobble/mammoth/internal/util/Maps.java @@ -27,6 +27,12 @@ public class Maps { return map; } + public static <K, V> Map<K, V> mutableMap(K key1, V value1) { + Map<K, V> map = new HashMap<>(); + map.put(key1, value1); + return map; + } + public static <K, V> Map.Entry<K, V> entry(K key, V value) { return new AbstractMap.SimpleImmutableEntry<K, V>(key, value); } diff --git a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java index e3698a4..ad85bbb 100644 --- a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java @@ -333,6 +333,17 @@ public class DocumentToHtmlTests { } @Test + public void hyperlinkTargetFrameIsUsedAsAnchorTarget() { + assertThat( + convertToHtml(hyperlink( + withAnchor("start"), + withTargetFrame("_blank"), + withChildren(new Text("Hello")) + )), + deepEquals(list(Html.collapsibleElement("a", map("href", "#doc-42-start", "target", "_blank"), list(Html.text("Hello")))))); + } + + @Test public void bookmarksAreConvertedToAnchorsWithIds() { assertThat( convertToHtml(new Bookmark("start")), |
