diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-14 11:50:40 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-14 11:50:40 +0000 |
| commit | f59712756ccb8d6b140d90ea0220278d60cf6dc7 (patch) | |
| tree | f4487c759b3c82430b75769d5accc4316a6336e5 /src | |
| parent | f57601b2426656a014d099ec66828e9f40732492 (diff) | |
Generate anchors with IDs for Bookmark
Diffstat (limited to 'src')
5 files changed, 23 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/mammoth/DocumentConverter.java b/src/main/java/org/zwobble/mammoth/DocumentConverter.java index 49bc904..e735d8b 100644 --- a/src/main/java/org/zwobble/mammoth/DocumentConverter.java +++ b/src/main/java/org/zwobble/mammoth/DocumentConverter.java @@ -105,7 +105,7 @@ public class DocumentConverter { if (hyperlink.getHref().isPresent()) { return hyperlink.getHref().get(); } else if (hyperlink.getAnchor().isPresent()) { - return "#" + idPrefix + "-" + hyperlink.getAnchor().get(); + return "#" + generateId(hyperlink.getAnchor().get()); } else { return ""; } @@ -113,7 +113,11 @@ public class DocumentConverter { @Override public List<HtmlNode> visit(Bookmark bookmark) { - throw new UnsupportedOperationException(); + return list(Html.element("a", map("id", generateId(bookmark.getName())))); + } + + private String generateId(String bookmarkName) { + return idPrefix + "-" + bookmarkName; } @Override diff --git a/src/main/java/org/zwobble/mammoth/documents/Bookmark.java b/src/main/java/org/zwobble/mammoth/documents/Bookmark.java index 598e83a..81a4ce4 100644 --- a/src/main/java/org/zwobble/mammoth/documents/Bookmark.java +++ b/src/main/java/org/zwobble/mammoth/documents/Bookmark.java @@ -7,6 +7,10 @@ public class Bookmark implements DocumentElement { this.name = name; } + public String getName() { + return name; + } + @Override public <T> T accept(DocumentElementVisitor<T> visitor) { return visitor.visit(this); diff --git a/src/main/java/org/zwobble/mammoth/html/Html.java b/src/main/java/org/zwobble/mammoth/html/Html.java index ef6bcf9..2291200 100644 --- a/src/main/java/org/zwobble/mammoth/html/Html.java +++ b/src/main/java/org/zwobble/mammoth/html/Html.java @@ -21,6 +21,10 @@ public class Html { return element(tagName, list()); } + public static HtmlNode element(String tagName, Map<String, String> attributes) { + return element(tagName, attributes, list()); + } + public static HtmlNode element(String tagName, List<HtmlNode> children) { return element(tagName, map(), children); } diff --git a/src/test/java/org/zwobble/mammoth/tests/DocumentConverterTests.java b/src/test/java/org/zwobble/mammoth/tests/DocumentConverterTests.java index 616d84f..0648d93 100644 --- a/src/test/java/org/zwobble/mammoth/tests/DocumentConverterTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/DocumentConverterTests.java @@ -2,10 +2,7 @@ package org.zwobble.mammoth.tests; import org.junit.Test; import org.zwobble.mammoth.DocumentConverter; -import org.zwobble.mammoth.documents.Document; -import org.zwobble.mammoth.documents.DocumentElement; -import org.zwobble.mammoth.documents.Hyperlink; -import org.zwobble.mammoth.documents.Text; +import org.zwobble.mammoth.documents.*; import org.zwobble.mammoth.html.Html; import org.zwobble.mammoth.html.HtmlNode; @@ -98,6 +95,13 @@ public class DocumentConverterTests { deepEquals(list(Html.element("a", map("href", "#doc-42-start"), list(Html.text("Hello")))))); } + @Test + public void bookmarksAreConvertedToAnchorsWithIds() { + assertThat( + convertToHtml(new Bookmark("start")), + deepEquals(list(Html.element("a", map("id", "doc-42-start"))))); + } + private List<HtmlNode> convertToHtml(DocumentElement element) { return documentConverter().convertToHtml(element); diff --git a/src/test/java/org/zwobble/mammoth/tests/html/HtmlWriteTests.java b/src/test/java/org/zwobble/mammoth/tests/html/HtmlWriteTests.java index 4400959..71a5b67 100644 --- a/src/test/java/org/zwobble/mammoth/tests/html/HtmlWriteTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/html/HtmlWriteTests.java @@ -50,7 +50,7 @@ public class HtmlWriteTests { public void canWriteElementWithAttributes() { assertEquals( "<a class=\"external\" href=\"http://example.com\"></a>", - write(Html.element("a", map("class", "external", "href", "http://example.com"), list()))); + write(Html.element("a", map("class", "external", "href", "http://example.com")))); } private String write(HtmlNode node) { |
