Merge pull request #20 from Kabhal/master
Added new block methods (supporting title and admonitions)
This commit is contained in:
@@ -70,11 +70,11 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
|
||||
return this.anchorPrefix;
|
||||
}
|
||||
|
||||
protected void documentTitle(Markup markup, String title){
|
||||
protected void documentTitle(Markup markup, String title) {
|
||||
documentBuilder.append(markup).append(title).append(newLine).append(newLine);
|
||||
}
|
||||
|
||||
protected void sectionTitleLevel1(Markup markup, String title, String anchor){
|
||||
protected void sectionTitleLevel1(Markup markup, String title, String anchor) {
|
||||
documentBuilder.append(newLine);
|
||||
if (anchor != null)
|
||||
anchor(anchor).newLine();
|
||||
@@ -86,7 +86,7 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
|
||||
return sectionTitleWithAnchorLevel1(title, title);
|
||||
}
|
||||
|
||||
protected void sectionTitleLevel2(Markup markup, String title, String anchor){
|
||||
protected void sectionTitleLevel2(Markup markup, String title, String anchor) {
|
||||
documentBuilder.append(newLine);
|
||||
if (anchor != null)
|
||||
anchor(anchor).newLine();
|
||||
@@ -98,7 +98,7 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
|
||||
return sectionTitleWithAnchorLevel2(title, title);
|
||||
}
|
||||
|
||||
protected void sectionTitleLevel3(Markup markup, String title, String anchor){
|
||||
protected void sectionTitleLevel3(Markup markup, String title, String anchor) {
|
||||
documentBuilder.append(newLine);
|
||||
if (anchor != null)
|
||||
anchor(anchor).newLine();
|
||||
@@ -110,7 +110,7 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
|
||||
return sectionTitleWithAnchorLevel3(title, title);
|
||||
}
|
||||
|
||||
protected void sectionTitleLevel4(Markup markup, String title, String anchor){
|
||||
protected void sectionTitleLevel4(Markup markup, String title, String anchor) {
|
||||
documentBuilder.append(newLine);
|
||||
if (anchor != null)
|
||||
anchor(anchor).newLine();
|
||||
@@ -123,61 +123,68 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder textLine(String text, boolean forceLineBreak){
|
||||
public MarkupDocBuilder textLine(String text, boolean forceLineBreak) {
|
||||
text(text);
|
||||
newLine(forceLineBreak);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder textLine(String text){
|
||||
public MarkupDocBuilder textLine(String text) {
|
||||
textLine(text, LINE_BREAK_DEFAULT);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder text(String text){
|
||||
public MarkupDocBuilder text(String text) {
|
||||
documentBuilder.append(text);
|
||||
return this;
|
||||
}
|
||||
|
||||
protected void paragraph(Markup markup, String text){
|
||||
protected void paragraph(Markup markup, String text) {
|
||||
documentBuilder.append(markup).append(newLine).append(text).append(newLine).append(newLine);
|
||||
}
|
||||
|
||||
protected void listing(Markup markup, String text){
|
||||
delimitedBlockText(markup, text);
|
||||
@Override
|
||||
public MarkupDocBuilder block(String text, MarkupBlockStyle style) {
|
||||
return block(text, style, null, null);
|
||||
}
|
||||
|
||||
protected void delimitedBlockText(Markup markup, String text){
|
||||
documentBuilder.append(markup).append(newLine).append(text).append(newLine).append(markup).append(newLine).append(newLine);
|
||||
@Override
|
||||
public MarkupDocBuilder listing(String text) {
|
||||
return listing(text, null);
|
||||
}
|
||||
|
||||
protected void delimitedTextWithoutLineBreaks(Markup markup, String text){
|
||||
protected void delimitedBlockText(Markup markup, String text) {
|
||||
if (markup != null)
|
||||
documentBuilder.append(markup).append(newLine);
|
||||
documentBuilder.append(text).append(newLine);
|
||||
if (markup != null)
|
||||
documentBuilder.append(markup).append(newLine);
|
||||
documentBuilder.append(newLine);
|
||||
}
|
||||
|
||||
protected void delimitedTextWithoutLineBreaks(Markup markup, String text) {
|
||||
documentBuilder.append(markup).append(text).append(markup);
|
||||
}
|
||||
|
||||
protected void preserveLineBreaks(Markup markup){
|
||||
documentBuilder.append(markup).append(newLine);
|
||||
}
|
||||
|
||||
protected void boldText(Markup markup, String text){
|
||||
protected void boldText(Markup markup, String text) {
|
||||
delimitedTextWithoutLineBreaks(markup, text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder boldTextLine(String text, boolean forceLineBreak){
|
||||
public MarkupDocBuilder boldTextLine(String text, boolean forceLineBreak) {
|
||||
boldText(text);
|
||||
newLine(forceLineBreak);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder boldTextLine(String text){
|
||||
public MarkupDocBuilder boldTextLine(String text) {
|
||||
return boldTextLine(text, LINE_BREAK_DEFAULT);
|
||||
}
|
||||
|
||||
protected void italicText(Markup markup, String text){
|
||||
protected void italicText(Markup markup, String text) {
|
||||
delimitedTextWithoutLineBreaks(markup, text);
|
||||
}
|
||||
|
||||
@@ -193,9 +200,9 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
|
||||
return italicTextLine(text, LINE_BREAK_DEFAULT);
|
||||
}
|
||||
|
||||
protected void unorderedList(Markup markup, List<String> list){
|
||||
protected void unorderedList(Markup markup, List<String> list) {
|
||||
documentBuilder.append(newLine);
|
||||
for(String listEntry : list){
|
||||
for (String listEntry : list) {
|
||||
unorderedListItem(markup, listEntry);
|
||||
}
|
||||
documentBuilder.append(newLine);
|
||||
@@ -258,14 +265,14 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
|
||||
return crossReference(null, anchor, null);
|
||||
}
|
||||
|
||||
protected void newLine(Markup markup, boolean forceLineBreak){
|
||||
protected void newLine(Markup markup, boolean forceLineBreak) {
|
||||
if (forceLineBreak)
|
||||
documentBuilder.append(markup);
|
||||
documentBuilder.append(newLine);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder newLine(){
|
||||
public MarkupDocBuilder newLine() {
|
||||
newLine(LINE_BREAK_DEFAULT);
|
||||
return this;
|
||||
}
|
||||
@@ -316,7 +323,7 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
public String toString() {
|
||||
return documentBuilder.toString();
|
||||
}
|
||||
|
||||
@@ -336,14 +343,13 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
|
||||
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(toString());
|
||||
writer.write(newLine);
|
||||
writer.write(newLine);
|
||||
}
|
||||
if (logger.isInfoEnabled()) {
|
||||
logger.info("{} was written to: {}", file);
|
||||
}
|
||||
documentBuilder = new StringBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package io.github.robwin.markup.builder;
|
||||
|
||||
public enum MarkupAdmonition {
|
||||
NOTE,
|
||||
TIP,
|
||||
IMPORTANT,
|
||||
CAUTION,
|
||||
WARNING
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package io.github.robwin.markup.builder;
|
||||
|
||||
public enum MarkupBlockStyle {
|
||||
SIDEBAR,
|
||||
EXAMPLE,
|
||||
LITERAL,
|
||||
LISTING,
|
||||
PASSTHROUGH
|
||||
}
|
||||
@@ -181,8 +181,30 @@ public interface MarkupDocBuilder {
|
||||
MarkupDocBuilder paragraph(String text);
|
||||
|
||||
/**
|
||||
* Builds a literal text block.<br/>
|
||||
* Line breaks are respected.
|
||||
* Builds a block of {@code text} with specified {@code style}.
|
||||
*
|
||||
* @param text text
|
||||
* @param style block style
|
||||
* @param title an optional title for the block. No title if null.
|
||||
* @param admonition an optional admonition for the block. No admonition if null.
|
||||
* @return this builder
|
||||
*/
|
||||
MarkupDocBuilder block(String text, MarkupBlockStyle style, String title, MarkupAdmonition admonition);
|
||||
|
||||
/**
|
||||
* Builds a block of {@code text} with specified {@code style}.<br/>
|
||||
* This is an alias for {@link #block(String, MarkupBlockStyle, String, MarkupAdmonition) block(String, MarkupBlockStyle, null, null)}.
|
||||
*
|
||||
* @param text text
|
||||
* @param style block style
|
||||
* @return this builder
|
||||
*/
|
||||
MarkupDocBuilder block(String text, MarkupBlockStyle style);
|
||||
|
||||
/**
|
||||
* Builds a listing text block.<br/>
|
||||
* This is an alias for {@link #listing(String, String) listing(String, null)}.
|
||||
* This is an alias for {@link #block(String, MarkupBlockStyle, String, MarkupAdmonition) block(String, MarkupBlockStyle.LISTING, null, null)}.
|
||||
*
|
||||
* @param text multi-line text
|
||||
* @return this builder
|
||||
@@ -194,10 +216,10 @@ public interface MarkupDocBuilder {
|
||||
* Line breaks are respected.
|
||||
*
|
||||
* @param text multi-line text
|
||||
* @param language source code language
|
||||
* @param language source code language. Simple listing if {@code language} == null.
|
||||
* @return this builder
|
||||
*/
|
||||
MarkupDocBuilder source(String text, String language);
|
||||
MarkupDocBuilder listing(String text, String language);
|
||||
|
||||
/**
|
||||
* Builds a bold text line.<br/>
|
||||
@@ -453,7 +475,7 @@ public interface MarkupDocBuilder {
|
||||
Path addFileExtension(Path file);
|
||||
|
||||
/**
|
||||
* Writes the content of the builder to a file and clears the builder.<br/>
|
||||
* Writes the content of the builder to a file.<br/>
|
||||
* An extension will be dynamically added to fileName depending on the markup language.<br/>
|
||||
* Use {@link #writeToFile(Path, Charset)} instead.
|
||||
*
|
||||
@@ -466,7 +488,7 @@ public interface MarkupDocBuilder {
|
||||
void writeToFile(String directory, String fileName, Charset charset) throws IOException;
|
||||
|
||||
/**
|
||||
* Writes the content of the builder to a file and clears the builder.<br/>
|
||||
* Writes the content of the builder to a file.<br/>
|
||||
* Use {@link #writeToFileWithoutExtension(Path, Charset)} instead.
|
||||
*
|
||||
* @param directory the directory where the generated file should be stored
|
||||
@@ -478,7 +500,7 @@ public interface MarkupDocBuilder {
|
||||
void writeToFileWithoutExtension(String directory, String fileName, Charset charset) throws IOException;
|
||||
|
||||
/**
|
||||
* Writes the content of the builder to a file and clears the builder.<br/>
|
||||
* Writes the content of the builder to a file.<br/>
|
||||
* An extension will be dynamically added to fileName depending on the markup language.
|
||||
*
|
||||
* @param file the generated file without extension
|
||||
@@ -488,7 +510,7 @@ public interface MarkupDocBuilder {
|
||||
void writeToFile(Path file, 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.
|
||||
*
|
||||
* @param file the generated file
|
||||
* @param charset the the charset to use for encoding
|
||||
|
||||
@@ -20,18 +20,13 @@ package io.github.robwin.markup.builder.asciidoc;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.Collections2;
|
||||
import io.github.robwin.markup.builder.AbstractMarkupDocBuilder;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilder;
|
||||
import io.github.robwin.markup.builder.MarkupLanguage;
|
||||
import io.github.robwin.markup.builder.MarkupTableColumn;
|
||||
import io.github.robwin.markup.builder.*;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
import static org.apache.commons.lang3.StringUtils.*;
|
||||
|
||||
@@ -40,19 +35,27 @@ import static org.apache.commons.lang3.StringUtils.*;
|
||||
*/
|
||||
public class AsciiDocBuilder extends AbstractMarkupDocBuilder {
|
||||
|
||||
private static final Map<MarkupBlockStyle, String> BLOCK_STYLE = new HashMap<MarkupBlockStyle, String>() {{
|
||||
put(MarkupBlockStyle.EXAMPLE, "====");
|
||||
put(MarkupBlockStyle.LISTING, "----");
|
||||
put(MarkupBlockStyle.LITERAL, "....");
|
||||
put(MarkupBlockStyle.PASSTHROUGH, "++++");
|
||||
put(MarkupBlockStyle.SIDEBAR, "****");
|
||||
}};
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder copy() {
|
||||
return new AsciiDocBuilder().withAnchorPrefix(anchorPrefix);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder documentTitle(String title){
|
||||
public MarkupDocBuilder documentTitle(String title) {
|
||||
documentTitle(AsciiDoc.DOCUMENT_TITLE, title);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder sectionTitleLevel1(String title){
|
||||
public MarkupDocBuilder sectionTitleLevel1(String title) {
|
||||
sectionTitleLevel1(AsciiDoc.SECTION_TITLE_LEVEL1, title, null);
|
||||
return this;
|
||||
}
|
||||
@@ -64,7 +67,7 @@ public class AsciiDocBuilder extends AbstractMarkupDocBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder sectionTitleLevel2(String title){
|
||||
public MarkupDocBuilder sectionTitleLevel2(String title) {
|
||||
sectionTitleLevel2(AsciiDoc.SECTION_TITLE_LEVEL2, title, null);
|
||||
return this;
|
||||
}
|
||||
@@ -76,7 +79,7 @@ public class AsciiDocBuilder extends AbstractMarkupDocBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder sectionTitleLevel3(String title){
|
||||
public MarkupDocBuilder sectionTitleLevel3(String title) {
|
||||
sectionTitleLevel3(AsciiDoc.SECTION_TITLE_LEVEL3, title, null);
|
||||
return this;
|
||||
}
|
||||
@@ -88,7 +91,7 @@ public class AsciiDocBuilder extends AbstractMarkupDocBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder sectionTitleLevel4(String title){
|
||||
public MarkupDocBuilder sectionTitleLevel4(String title) {
|
||||
sectionTitleLevel4(AsciiDoc.SECTION_TITLE_LEVEL4, title, null);
|
||||
return this;
|
||||
}
|
||||
@@ -100,19 +103,29 @@ public class AsciiDocBuilder extends AbstractMarkupDocBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder paragraph(String text){
|
||||
public MarkupDocBuilder paragraph(String text) {
|
||||
paragraph(AsciiDoc.HARDBREAKS, text);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder listing(String text){
|
||||
listing(AsciiDoc.LISTING, text);
|
||||
public MarkupDocBuilder block(String text, final MarkupBlockStyle style, String title, MarkupAdmonition admonition) {
|
||||
if (admonition != null)
|
||||
documentBuilder.append("[").append(admonition).append("]").append(newLine);
|
||||
if (title != null)
|
||||
documentBuilder.append(".").append(title).append(newLine);
|
||||
|
||||
delimitedBlockText(new Markup() {
|
||||
public String toString() {
|
||||
assert (BLOCK_STYLE.containsKey(style));
|
||||
return BLOCK_STYLE.get(style);
|
||||
}
|
||||
}, text);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder boldText(String text){
|
||||
public MarkupDocBuilder boldText(String text) {
|
||||
boldText(AsciiDoc.BOLD, text);
|
||||
return this;
|
||||
}
|
||||
@@ -124,7 +137,7 @@ public class AsciiDocBuilder extends AbstractMarkupDocBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder unorderedList(List<String> list){
|
||||
public MarkupDocBuilder unorderedList(List<String> list) {
|
||||
unorderedList(AsciiDoc.LIST_ENTRY, list);
|
||||
return this;
|
||||
}
|
||||
@@ -136,18 +149,19 @@ public class AsciiDocBuilder extends AbstractMarkupDocBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder source(String text, String language){
|
||||
documentBuilder.append(String.format("[source,%s]", language)).append(newLine);
|
||||
listing(AsciiDoc.LISTING, text);
|
||||
public MarkupDocBuilder listing(String text, String language) {
|
||||
if (language != null)
|
||||
documentBuilder.append(String.format("[source,%s]", language)).append(newLine);
|
||||
block(text, MarkupBlockStyle.LISTING);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder tableWithHeaderRow(List<String> rowsInPSV){
|
||||
public MarkupDocBuilder tableWithHeaderRow(List<String> rowsInPSV) {
|
||||
newLine();
|
||||
documentBuilder.append("[options=\"header\"]").append(newLine);
|
||||
documentBuilder.append(AsciiDoc.TABLE).append(newLine);
|
||||
for(String row : rowsInPSV){
|
||||
for (String row : rowsInPSV) {
|
||||
documentBuilder.append(AsciiDoc.TABLE_COLUMN_DELIMITER).append(row).append(newLine);
|
||||
}
|
||||
documentBuilder.append(AsciiDoc.TABLE).append(newLine).append(newLine);
|
||||
@@ -218,8 +232,7 @@ public class AsciiDocBuilder extends AbstractMarkupDocBuilder {
|
||||
String languageStyle = col.markupSpecifiers.get(MarkupLanguage.ASCIIDOC);
|
||||
if (languageStyle != null && isNoneBlank(languageStyle)) {
|
||||
cols.add(languageStyle);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
cols.add(String.valueOf(col.widthRatio));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,18 +20,13 @@ package io.github.robwin.markup.builder.markdown;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.Collections2;
|
||||
import io.github.robwin.markup.builder.AbstractMarkupDocBuilder;
|
||||
import io.github.robwin.markup.builder.MarkupDocBuilder;
|
||||
import io.github.robwin.markup.builder.MarkupTableColumn;
|
||||
import io.github.robwin.markup.builder.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.*;
|
||||
|
||||
import static org.apache.commons.lang3.StringUtils.defaultString;
|
||||
import static org.apache.commons.lang3.StringUtils.join;
|
||||
@@ -39,11 +34,15 @@ import static org.apache.commons.lang3.StringUtils.join;
|
||||
/**
|
||||
* @author Robert Winkler
|
||||
*/
|
||||
public class MarkdownBuilder extends AbstractMarkupDocBuilder
|
||||
{
|
||||
private static final int MAX_TITLE_LEVEL = 5;
|
||||
private static final char TITLE_PREFIX = '#';
|
||||
private static Pattern TITLE_PATTERN = Pattern.compile(String.format("^%c({1,%d})( .*)$", TITLE_PREFIX, MAX_TITLE_LEVEL));
|
||||
public class MarkdownBuilder extends AbstractMarkupDocBuilder {
|
||||
|
||||
private static final Map<MarkupBlockStyle, String> BLOCK_STYLE = new HashMap<MarkupBlockStyle, String>() {{
|
||||
put(MarkupBlockStyle.EXAMPLE, null);
|
||||
put(MarkupBlockStyle.LISTING, Markdown.LISTING.toString());
|
||||
put(MarkupBlockStyle.LITERAL, Markdown.LISTING.toString());
|
||||
put(MarkupBlockStyle.PASSTHROUGH, null);
|
||||
put(MarkupBlockStyle.SIDEBAR, null);
|
||||
}};
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder copy() {
|
||||
@@ -51,13 +50,13 @@ public class MarkdownBuilder extends AbstractMarkupDocBuilder
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder documentTitle(String title){
|
||||
public MarkupDocBuilder documentTitle(String title) {
|
||||
documentTitle(Markdown.DOCUMENT_TITLE, title);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder sectionTitleLevel1(String title){
|
||||
public MarkupDocBuilder sectionTitleLevel1(String title) {
|
||||
sectionTitleLevel1(Markdown.SECTION_TITLE_LEVEL1, title, null);
|
||||
return this;
|
||||
}
|
||||
@@ -69,7 +68,7 @@ public class MarkdownBuilder extends AbstractMarkupDocBuilder
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder sectionTitleLevel2(String title){
|
||||
public MarkupDocBuilder sectionTitleLevel2(String title) {
|
||||
sectionTitleLevel2(Markdown.SECTION_TITLE_LEVEL2, title, null);
|
||||
return this;
|
||||
}
|
||||
@@ -81,7 +80,7 @@ public class MarkdownBuilder extends AbstractMarkupDocBuilder
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder sectionTitleLevel3(String title){
|
||||
public MarkupDocBuilder sectionTitleLevel3(String title) {
|
||||
sectionTitleLevel3(Markdown.SECTION_TITLE_LEVEL3, title, null);
|
||||
return this;
|
||||
}
|
||||
@@ -93,7 +92,7 @@ public class MarkdownBuilder extends AbstractMarkupDocBuilder
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder sectionTitleLevel4(String title){
|
||||
public MarkupDocBuilder sectionTitleLevel4(String title) {
|
||||
sectionTitleLevel4(Markdown.SECTION_TITLE_LEVEL4, title, null);
|
||||
return this;
|
||||
}
|
||||
@@ -105,27 +104,42 @@ public class MarkdownBuilder extends AbstractMarkupDocBuilder
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder paragraph(String text){
|
||||
public MarkupDocBuilder paragraph(String text) {
|
||||
paragraph(Markdown.HARDBREAKS, text);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder listing(String text){
|
||||
listing(Markdown.LISTING, text);
|
||||
public MarkupDocBuilder block(String text, final MarkupBlockStyle style, String title, MarkupAdmonition admonition) {
|
||||
if (admonition != null)
|
||||
documentBuilder.append(StringUtils.capitalize(admonition.name())).append(" : ");
|
||||
if (title != null) {
|
||||
if (admonition != null)
|
||||
documentBuilder.append(" | ");
|
||||
documentBuilder.append(title).append(" : ");
|
||||
}
|
||||
if (admonition != null || title != null)
|
||||
documentBuilder.append(newLine);
|
||||
|
||||
delimitedBlockText(new Markup() {
|
||||
public String toString() {
|
||||
String separator = BLOCK_STYLE.get(style);
|
||||
return separator;
|
||||
}
|
||||
}, text);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder source(String text, String language){
|
||||
documentBuilder.append(Markdown.LISTING).append(language).append(newLine).
|
||||
append(text).append(newLine).
|
||||
append(Markdown.LISTING).append(newLine).append(newLine);
|
||||
public MarkupDocBuilder listing(String text, String language) {
|
||||
if (language != null)
|
||||
text = language + " :" + newLine + text;
|
||||
block(text, MarkupBlockStyle.LISTING);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder boldText(String text){
|
||||
public MarkupDocBuilder boldText(String text) {
|
||||
boldText(Markdown.BOLD, text);
|
||||
return this;
|
||||
}
|
||||
@@ -137,7 +151,7 @@ public class MarkdownBuilder extends AbstractMarkupDocBuilder
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder unorderedList(List<String> list){
|
||||
public MarkupDocBuilder unorderedList(List<String> list) {
|
||||
unorderedList(Markdown.LIST_ENTRY, list);
|
||||
return this;
|
||||
}
|
||||
@@ -149,7 +163,7 @@ public class MarkdownBuilder extends AbstractMarkupDocBuilder
|
||||
}
|
||||
|
||||
@Override
|
||||
public MarkupDocBuilder tableWithHeaderRow(List<String> rowsInPSV){
|
||||
public MarkupDocBuilder tableWithHeaderRow(List<String> rowsInPSV) {
|
||||
String headersInPSV = rowsInPSV.get(0);
|
||||
List<String> contentRowsInPSV = rowsInPSV.subList(1, rowsInPSV.size());
|
||||
String[] headersAsArray = headersInPSV.split(String.format("\\%s", Markdown.TABLE_COLUMN_DELIMITER.toString()));
|
||||
@@ -163,15 +177,15 @@ public class MarkdownBuilder extends AbstractMarkupDocBuilder
|
||||
newLine();
|
||||
// Header/Content separator
|
||||
documentBuilder.append(Markdown.TABLE_COLUMN_DELIMITER.toString());
|
||||
for(String header : headers){
|
||||
for(int i = 1; i<5; i++) {
|
||||
for (String header : headers) {
|
||||
for (int i = 1; i < 5; i++) {
|
||||
documentBuilder.append(Markdown.TABLE_ROW);
|
||||
}
|
||||
documentBuilder.append(Markdown.TABLE_COLUMN_DELIMITER.toString());
|
||||
}
|
||||
newLine();
|
||||
// Content
|
||||
for(String contentRowInPSV : contentRowsInPSV){
|
||||
for (String contentRowInPSV : contentRowsInPSV) {
|
||||
documentBuilder.append(Markdown.TABLE_COLUMN_DELIMITER.toString());
|
||||
documentBuilder.append(contentRowInPSV);
|
||||
documentBuilder.append(Markdown.TABLE_COLUMN_DELIMITER.toString());
|
||||
|
||||
@@ -77,7 +77,14 @@ public class MarkupDocBuilderTest {
|
||||
.sectionTitleWithAnchorLevel4("Section with anchor Level 4a")
|
||||
.paragraph("Paragraph with long text bla bla bla bla bla")
|
||||
.listing("Source code listing")
|
||||
.source("MarkupDocBuilder builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.ASCIIDOC)", "java")
|
||||
.listing("MarkupDocBuilder builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.MARKDOWN)", "java")
|
||||
.block("Example", MarkupBlockStyle.EXAMPLE)
|
||||
.block("Example", MarkupBlockStyle.EXAMPLE, "Example", null)
|
||||
.block("Example", MarkupBlockStyle.EXAMPLE, null, MarkupAdmonition.IMPORTANT)
|
||||
.block("Listing", MarkupBlockStyle.LISTING, null, MarkupAdmonition.CAUTION)
|
||||
.block("Literal", MarkupBlockStyle.LITERAL, null, MarkupAdmonition.NOTE)
|
||||
.block("Sidebar", MarkupBlockStyle.SIDEBAR, null, MarkupAdmonition.TIP)
|
||||
.block("Passthrough", MarkupBlockStyle.PASSTHROUGH, null, MarkupAdmonition.WARNING)
|
||||
.tableWithHeaderRow(tableRowsInPSV)
|
||||
.table(tableCells)
|
||||
.tableWithColumnSpecs(tableColumns, tableCells)
|
||||
@@ -128,7 +135,14 @@ public class MarkupDocBuilderTest {
|
||||
.sectionTitleWithAnchorLevel4("Section with anchor Level 4a")
|
||||
.paragraph("Paragraph with long text bla bla bla bla bla")
|
||||
.listing("Source code listing")
|
||||
.source("MarkupDocBuilder builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.MARKDOWN)", "java")
|
||||
.listing("MarkupDocBuilder builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.MARKDOWN)", "java")
|
||||
.block("Example", MarkupBlockStyle.EXAMPLE)
|
||||
.block("Example", MarkupBlockStyle.EXAMPLE, "Example", null)
|
||||
.block("Example", MarkupBlockStyle.EXAMPLE, null, MarkupAdmonition.IMPORTANT)
|
||||
.block("Listing", MarkupBlockStyle.LISTING, null, MarkupAdmonition.CAUTION)
|
||||
.block("Literal", MarkupBlockStyle.LITERAL, null, MarkupAdmonition.NOTE)
|
||||
.block("Sidebar", MarkupBlockStyle.SIDEBAR, null, MarkupAdmonition.TIP)
|
||||
.block("Passthrough", MarkupBlockStyle.PASSTHROUGH, null, MarkupAdmonition.WARNING)
|
||||
.tableWithHeaderRow(tableRowsInPSV)
|
||||
//.table(tableCells)
|
||||
.tableWithColumnSpecs(tableColumns, tableCells)
|
||||
|
||||
Reference in New Issue
Block a user