aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/DocumentConverter.java8
-rw-r--r--src/main/java/org/zwobble/mammoth/documents/Bookmark.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/html/Html.java4
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/DocumentConverterTests.java12
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/html/HtmlWriteTests.java2
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) {