402682: generated table of contents contains filename when generated
from wikitext-to-html Ant task even if file splitting is disabled
Change-Id: I4114c448e42e0f3c410c979cce51ce46cef909d2
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=402682
diff --git a/org.eclipse.mylyn.wikitext.core/src/org/eclipse/mylyn/internal/wikitext/core/parser/builder/SplittingHtmlDocumentBuilder.java b/org.eclipse.mylyn.wikitext.core/src/org/eclipse/mylyn/internal/wikitext/core/parser/builder/SplittingHtmlDocumentBuilder.java
index bcd76f8..73b7380 100644
--- a/org.eclipse.mylyn.wikitext.core/src/org/eclipse/mylyn/internal/wikitext/core/parser/builder/SplittingHtmlDocumentBuilder.java
+++ b/org.eclipse.mylyn.wikitext.core/src/org/eclipse/mylyn/internal/wikitext/core/parser/builder/SplittingHtmlDocumentBuilder.java
@@ -379,7 +379,8 @@
private String adjustHref(String href) {
if (href != null && href.startsWith("#")) { //$NON-NLS-1$
SplitOutlineItem target = outline.getOutlineItemById(href.substring(1));
- if (target != null && target.getSplitTarget() != null) {
+ if (target != null && target.getSplitTarget() != null
+ && !currentFile.getName().equals(target.getSplitTarget())) {
href = target.getSplitTarget().replace(" ", "%20") + href; //$NON-NLS-1$ //$NON-NLS-2$
}
}
diff --git a/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/core/util/anttask/MarkupToHtmlTaskTest.java b/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/core/util/anttask/MarkupToHtmlTaskTest.java
index af9b545..5216b97 100644
--- a/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/core/util/anttask/MarkupToHtmlTaskTest.java
+++ b/org.eclipse.mylyn.wikitext.tests/src/org/eclipse/mylyn/wikitext/core/util/anttask/MarkupToHtmlTaskTest.java
@@ -160,6 +160,55 @@
assertTrue(content2.contains("<a href=\"markup.html#HeadingOne\">link to one</a>"));
}
+ public void testTocFilenameCorrectnessSingleFile() throws IOException {
+ File markup = createTextileMarkupFile("{toc}\n\nh1. Heading One\n\nh1. Heading Two\n\nh2. Heading Two Point One");
+ task.setFile(markup);
+ task.setMultipleOutputFiles(false);
+ task.execute();
+
+ listFiles();
+
+ File htmlFile = new File(markup.getParentFile(), "markup.html");
+ assertTrue(htmlFile.exists() && htmlFile.isFile());
+
+ String content = getContent(htmlFile);
+ TestUtil.println(content);
+
+ assertTrue(content.contains("<a href=\"#HeadingOne\">Heading One</a>"));
+ assertTrue(content.contains("<a href=\"#HeadingTwo\">Heading Two</a>"));
+ }
+
+ public void testTocFilenameCorrectnessMultipleFiles() throws IOException {
+ File markup = createTextileMarkupFile("{toc}\n\nh1. Heading One\n\nh1. Heading Two\n\nh2. Heading Two Point One\n\n\"link\":#HeadingOne");
+ task.setFile(markup);
+ task.setMultipleOutputFiles(true);
+ task.execute();
+
+ listFiles();
+
+ File htmlFile = new File(markup.getParentFile(), "markup.html");
+ assertTrue(htmlFile.exists() && htmlFile.isFile());
+
+ String content = getContent(htmlFile);
+ TestUtil.println(content);
+
+ assertTrue(content.contains("<a href=\"#HeadingOne\">Heading One</a>"));
+ assertTrue(content.contains("<a href=\"Heading-Two.html#HeadingTwo\">Heading Two</a>"));
+ assertTrue(content.contains("<a href=\"Heading-Two.html#HeadingTwoPointOne\">Heading Two Point One</a>"));
+
+ // navigation
+ assertTrue(content.contains("<a href=\"Heading-Two.html\" title=\"Heading Two\">Next</a>"));
+
+ htmlFile = new File(markup.getParentFile(), "Heading-Two.html");
+ assertTrue(htmlFile.exists() && htmlFile.isFile());
+
+ content = getContent(htmlFile);
+ TestUtil.println(content);
+
+ assertTrue(content.contains("<a href=\"markup.html\" title=\"Heading One\">Previous</a>"));
+ assertTrue(content.contains("<a href=\"markup.html#HeadingOne\">link</a>"));
+ }
+
protected File createSimpleTextileMarkup() throws IOException {
StringWriter out = new StringWriter();
PrintWriter writer = new PrintWriter(out);
@@ -203,4 +252,5 @@
ResourceBundle bundle = ResourceBundle.getBundle(MarkupToHtmlTask.class.getPackage().getName() + ".tasks");
assertEquals(MarkupToHtmlTask.class.getName(), bundle.getString("wikitext-to-html"));
}
+
}