diff --git a/src/main/java/io/github/robwin/markup/builder/AbstractMarkupDocBuilder.java b/src/main/java/io/github/robwin/markup/builder/AbstractMarkupDocBuilder.java
index 25049dbc..9623dc53 100644
--- a/src/main/java/io/github/robwin/markup/builder/AbstractMarkupDocBuilder.java
+++ b/src/main/java/io/github/robwin/markup/builder/AbstractMarkupDocBuilder.java
@@ -29,6 +29,7 @@ import java.io.IOException;
import java.io.Reader;
import java.nio.charset.Charset;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.Normalizer;
import java.util.List;
@@ -323,23 +324,38 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
return fileName + "." + markup;
}
+ @Override
+ public Path addfileExtension(Path file) {
+ return file.resolveSibling(addfileExtension(file.getFileName().toString()));
+ }
+
/**
* 2 newLines are needed at the end of file for file to be included without protection.
*/
@Override
- public void writeToFileWithoutExtension(String directory, String fileName, Charset charset) throws IOException {
- Files.createDirectories(Paths.get(directory));
- try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(directory, fileName), charset)) {
+ public void writeToFileWithoutExtension(Path file, Charset charset) throws IOException {
+ Files.createDirectories(file.getParent());
+ try (BufferedWriter writer = Files.newBufferedWriter(file, charset)) {
writer.write(documentBuilder.toString());
writer.write(newLine);
writer.write(newLine);
}
if (logger.isInfoEnabled()) {
- logger.info("{} was written to: {}", fileName, directory);
+ logger.info("{} was written to: {}", file);
}
documentBuilder = new StringBuilder();
}
+ @Override
+ public void writeToFile(Path file, Charset charset) throws IOException {
+ writeToFileWithoutExtension(file.resolveSibling(addfileExtension(file.getFileName().toString())), charset);
+ }
+
+ @Override
+ public void writeToFileWithoutExtension(String directory, String fileName, Charset charset) throws IOException {
+ writeToFileWithoutExtension(Paths.get(directory, fileName), charset);
+ }
+
@Override
public void writeToFile(String directory, String fileName, Charset charset) throws IOException {
writeToFileWithoutExtension(directory, addfileExtension(fileName), charset);
diff --git a/src/main/java/io/github/robwin/markup/builder/MarkupDocBuilder.java b/src/main/java/io/github/robwin/markup/builder/MarkupDocBuilder.java
index c7bfe13f..38df0769 100644
--- a/src/main/java/io/github/robwin/markup/builder/MarkupDocBuilder.java
+++ b/src/main/java/io/github/robwin/markup/builder/MarkupDocBuilder.java
@@ -21,6 +21,7 @@ package io.github.robwin.markup.builder;
import java.io.IOException;
import java.io.Reader;
import java.nio.charset.Charset;
+import java.nio.file.Path;
import java.util.List;
/**
@@ -443,25 +444,56 @@ public interface MarkupDocBuilder {
*/
String addfileExtension(String fileName);
+ /**
+ * Add an extension to file depending on markup language.
+ *
+ * @param file without extension
+ * @return file with an extension
+ */
+ Path addfileExtension(Path file);
+
/**
* Writes the content of the builder to a file and clears the builder.
- * An extension will be dynamically added to fileName depending on the markup language.
+ * An extension will be dynamically added to fileName depending on the markup language.
+ * Use {@link #writeToFile(Path, Charset)} instead.
*
* @param directory the directory where the generated file should be stored
* @param fileName the base name of the file without extension
* @param charset the the charset to use for encoding
* @throws java.io.IOException if the file cannot be written
*/
+ @Deprecated
void writeToFile(String directory, String fileName, Charset charset) throws IOException;
/**
- * Writes the content of the builder to a file and clears the builder.
+ * Writes the content of the builder to a file and clears the builder.
+ * Use {@link #writeToFileWithoutExtension(Path, Charset)} instead.
*
* @param directory the directory where the generated file should be stored
* @param fileName the name of the file
* @param charset the the charset to use for encoding
* @throws java.io.IOException if the file cannot be written
*/
+ @Deprecated
void writeToFileWithoutExtension(String directory, String fileName, Charset charset) throws IOException;
+ /**
+ * Writes the content of the builder to a file and clears the builder.
+ * An extension will be dynamically added to fileName depending on the markup language.
+ *
+ * @param file the generated file without extension
+ * @param charset the the charset to use for encoding
+ * @throws java.io.IOException if the file cannot be written
+ */
+ void writeToFile(Path file, Charset charset) throws IOException;
+
+ /**
+ * Writes the content of the builder to a file and clears the builder.
+ *
+ * @param file the generated file
+ * @param charset the the charset to use for encoding
+ * @throws java.io.IOException if the file cannot be written
+ */
+ void writeToFileWithoutExtension(Path file, Charset charset) throws IOException;
+
}
diff --git a/src/test/java/io/github/robwin/markup/builder/MarkupDocBuilderTest.java b/src/test/java/io/github/robwin/markup/builder/MarkupDocBuilderTest.java
index 5a495bae..2f67a6f7 100644
--- a/src/test/java/io/github/robwin/markup/builder/MarkupDocBuilderTest.java
+++ b/src/test/java/io/github/robwin/markup/builder/MarkupDocBuilderTest.java
@@ -23,6 +23,7 @@ import org.junit.Test;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -41,7 +42,7 @@ public class MarkupDocBuilderTest {
@Before
- public void setUp(){
+ public void setUp() {
tableRowsInPSV = new ArrayList<>();
tableRowsInPSV.add("Header 1 | Header 2 | Header2");
tableRowsInPSV.add("Row 1, Column 1 | Row 1, Column 2 | Row 1, Column 3");
@@ -60,7 +61,8 @@ public class MarkupDocBuilderTest {
@Test
public void testToAsciiDocFile() throws IOException {
MarkupDocBuilder builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.ASCIIDOC);
- builder.documentTitle("Test title")
+
+ builder = builder.documentTitle("Test title")
.sectionTitleLevel1("Section Level 1a")
.sectionTitleWithAnchorLevel1("Section with anchor Level 1a", "level-1a")
.sectionTitleWithAnchorLevel1("Section with anchor Level 1a")
@@ -92,8 +94,12 @@ public class MarkupDocBuilderTest {
.crossReferenceRaw("./document.adoc", "anchor", "text").newLine(true)
.crossReferenceRaw(" \u0240 µ&|ù This .:/-_ ").newLine(true)
.crossReference("./document.adoc", "anchor", "text").newLine(true)
- .crossReference(" \u0240 µ&|ù This .:/-_ ").newLine(true)
- .writeToFile("build/tmp", "test", StandardCharsets.UTF_8);
+ .crossReference(" \u0240 µ&|ù This .:/-_ ").newLine(true);
+
+ builder.writeToFileWithoutExtension(builder.addfileExtension(Paths.get("build/tmp/test")), StandardCharsets.UTF_8);
+ builder.writeToFile(Paths.get("build/tmp/test"), StandardCharsets.UTF_8);
+ builder.writeToFileWithoutExtension("build/tmp", builder.addfileExtension("test"), StandardCharsets.UTF_8);
+ builder.writeToFile("build/tmp", "test", StandardCharsets.UTF_8);
MarkupDocBuilder builderWithConfig = MarkupDocBuilders.documentBuilder(MarkupLanguage.ASCIIDOC).withAnchorPrefix(" mdb test- ");
String prefixMarkup = builderWithConfig.anchor("anchor", "text")
@@ -104,9 +110,10 @@ public class MarkupDocBuilderTest {
}
@Test
- public void testToMarkdownDocFile() throws IOException {
+ public void testToMarkdownDocFile() throws IOException {
MarkupDocBuilder builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.MARKDOWN);
- builder.documentTitle("Test title")
+
+ builder = builder.documentTitle("Test title")
.sectionTitleLevel1("Section Level 1a")
.sectionTitleWithAnchorLevel1("Section with anchor Level 1a", "level-1a")
.sectionTitleWithAnchorLevel1("Section with anchor Level 1a")
@@ -138,8 +145,12 @@ public class MarkupDocBuilderTest {
.crossReferenceRaw("./document.md", "anchor", "text").newLine(true)
.crossReferenceRaw(" \u0240 µ&|ù This .:/-_ ").newLine(true)
.crossReference("./document.md", "anchor", "text").newLine(true)
- .crossReference(" \u0240 µ&|ù This .:/-_ ").newLine(true)
- .writeToFile("build/tmp", "test", StandardCharsets.UTF_8);
+ .crossReference(" \u0240 µ&|ù This .:/-_ ").newLine(true);
+
+ builder.writeToFileWithoutExtension(builder.addfileExtension(Paths.get("build/tmp/test")), StandardCharsets.UTF_8);
+ builder.writeToFile(Paths.get("build/tmp/test"), StandardCharsets.UTF_8);
+ builder.writeToFileWithoutExtension("build/tmp", builder.addfileExtension("test"), StandardCharsets.UTF_8);
+ builder.writeToFile("build/tmp", "test", StandardCharsets.UTF_8);
MarkupDocBuilder builderWithConfig = MarkupDocBuilders.documentBuilder(MarkupLanguage.MARKDOWN).withAnchorPrefix(" mdb test- ");
String prefixMarkup = builderWithConfig.anchor("anchor", "text")