Introduce inline commands : inlineAnchor, inlineCrossReference for easier markup composition

This commit is contained in:
Hugo de Paix de Coeur
2016-02-03 17:37:21 +01:00
parent 74bd2b0d2e
commit 0c136c2987
4 changed files with 47 additions and 11 deletions

View File

@@ -109,6 +109,11 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder {
return this;
}
@Override
public String inlineCrossReference(String anchor) {
return inlineCrossReference(anchor, null);
}
@Override
public MarkupDocBuilder newLine(){
documentBuilder.append(newLine);

View File

@@ -62,14 +62,20 @@ public interface MarkupDocBuilder {
MarkupDocBuilder anchor(String anchor);
String inlineAnchor(String anchor);
/**
* @param anchor Target anchor
* @param text If not null, display this text instead of anchor
*/
MarkupDocBuilder crossReference(String anchor, String text);
String inlineCrossReference(String anchor, String text);
MarkupDocBuilder crossReference(String anchor);
String inlineCrossReference(String anchor);
MarkupDocBuilder newLine();
/**

View File

@@ -132,19 +132,33 @@ public class AsciiDocBuilder extends AbstractMarkupDocBuilder {
@Override
public MarkupDocBuilder anchor(String anchor) {
documentBuilder.append(AsciiDoc.ANCHOR_START).append(normalizeReferenceAnchor(anchor)).append(AsciiDoc.ANCHOR_END);
documentBuilder.append(inlineAnchor(anchor));
return this;
}
@Override
public String inlineAnchor(String anchor) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(AsciiDoc.ANCHOR_START).append(normalizeReferenceAnchor(anchor)).append(AsciiDoc.ANCHOR_END);
return stringBuilder.toString();
}
@Override
public MarkupDocBuilder crossReference(String anchor, String text) {
if (text == null)
documentBuilder.append(AsciiDoc.CROSS_REFERENCE_START).append(normalizeReferenceAnchor(anchor)).append(AsciiDoc.CROSS_REFERENCE_END);
else
documentBuilder.append(AsciiDoc.CROSS_REFERENCE_START).append(normalizeReferenceAnchor(anchor)).append(",").append(text).append(AsciiDoc.CROSS_REFERENCE_END);
documentBuilder.append(inlineCrossReference(anchor, text));
return this;
}
@Override
public String inlineCrossReference(String anchor, String text) {
StringBuilder stringBuilder = new StringBuilder();
if (text == null)
stringBuilder.append(AsciiDoc.CROSS_REFERENCE_START).append(normalizeReferenceAnchor(anchor)).append(AsciiDoc.CROSS_REFERENCE_END);
else
stringBuilder.append(AsciiDoc.CROSS_REFERENCE_START).append(normalizeReferenceAnchor(anchor)).append(",").append(text).append(AsciiDoc.CROSS_REFERENCE_END);
return stringBuilder.toString();
}
private String escapeTableCell(String cell) {
return cell.replace(AsciiDoc.TABLE_COLUMN_DELIMITER.toString(), AsciiDoc.TABLE_COLUMN_DELIMITER_ESCAPE.toString());
}

View File

@@ -148,22 +148,33 @@ public class MarkdownBuilder extends AbstractMarkupDocBuilder
return this;
}
// TODO
@Override
public MarkupDocBuilder anchor(String anchor) {
documentBuilder.append(inlineAnchor(anchor));
return this;
}
// TODO
@Override
public String inlineAnchor(String anchor) {
return "";
}
@Override
public MarkupDocBuilder crossReference(String anchor, String text) {
if (text == null)
documentBuilder.append(anchor);
else
documentBuilder.append(text);
documentBuilder.append(inlineCrossReference(anchor, text));
return this;
}
@Override
public String inlineCrossReference(String anchor, String text) {
StringBuilder stringBuilder = new StringBuilder();
if (text == null)
stringBuilder.append(anchor);
else
stringBuilder.append(text);
return stringBuilder.toString();
}
private String escapeTableCell(String cell) {
return cell.replace(Markdown.TABLE_COLUMN_DELIMITER.toString(), Markdown.TABLE_COLUMN_DELIMITER_ESCAPE.toString());
}