From 80ce77826e2dea41bb38810cbb2d8c76f0e1a297 Mon Sep 17 00:00:00 2001 From: Hugo de Paix de Coeur Date: Thu, 18 Feb 2016 16:25:30 +0100 Subject: [PATCH] Introduce new sectionTitleWithAnchor* to allow users to create titles without anchor, with a custom anchor (will be normalized anyway), or with an auto-generated anchor. --- .../builder/AbstractMarkupDocBuilder.java | 28 +++++++++------- .../markup/builder/MarkupDocBuilder.java | 16 +++++++--- .../builder/asciidoc/AsciiDocBuilder.java | 32 ++++++++++++++++--- .../builder/markdown/MarkdownBuilder.java | 32 ++++++++++++++++--- .../markup/builder/MarkupDocBuilderTest.java | 16 ++++++++++ 5 files changed, 100 insertions(+), 24 deletions(-) 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 26b4d01a..7d81b89c 100644 --- a/src/main/java/io/github/robwin/markup/builder/AbstractMarkupDocBuilder.java +++ b/src/main/java/io/github/robwin/markup/builder/AbstractMarkupDocBuilder.java @@ -54,46 +54,50 @@ public abstract class AbstractMarkupDocBuilder implements MarkupDocBuilder { protected void sectionTitleLevel1(Markup markup, String title, String anchor){ documentBuilder.append(newLine); - anchor(anchor).newLine(); + if (anchor != null) + anchor(anchor).newLine(); documentBuilder.append(markup).append(title).append(newLine); } @Override - public MarkupDocBuilder sectionTitleLevel1(String title) { - return sectionTitleLevel1(title, title); + public MarkupDocBuilder sectionTitleWithAnchorLevel1(String title) { + return sectionTitleWithAnchorLevel1(title, title); } protected void sectionTitleLevel2(Markup markup, String title, String anchor){ documentBuilder.append(newLine); - anchor(anchor).newLine(); + if (anchor != null) + anchor(anchor).newLine(); documentBuilder.append(markup).append(title).append(newLine); } @Override - public MarkupDocBuilder sectionTitleLevel2(String title) { - return sectionTitleLevel2(title, title); + public MarkupDocBuilder sectionTitleWithAnchorLevel2(String title) { + return sectionTitleWithAnchorLevel2(title, title); } protected void sectionTitleLevel3(Markup markup, String title, String anchor){ documentBuilder.append(newLine); - anchor(anchor).newLine(); + if (anchor != null) + anchor(anchor).newLine(); documentBuilder.append(markup).append(title).append(newLine); } @Override - public MarkupDocBuilder sectionTitleLevel3(String title) { - return sectionTitleLevel3(title, title); + public MarkupDocBuilder sectionTitleWithAnchorLevel3(String title) { + return sectionTitleWithAnchorLevel3(title, title); } protected void sectionTitleLevel4(Markup markup, String title, String anchor){ documentBuilder.append(newLine); - anchor(anchor).newLine(); + if (anchor != null) + anchor(anchor).newLine(); documentBuilder.append(markup).append(title).append(newLine); } @Override - public MarkupDocBuilder sectionTitleLevel4(String title) { - return sectionTitleLevel4(title, title); + public MarkupDocBuilder sectionTitleWithAnchorLevel4(String title) { + return sectionTitleWithAnchorLevel4(title, title); } @Override 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 f33ac64e..6f3cb8a3 100644 --- a/src/main/java/io/github/robwin/markup/builder/MarkupDocBuilder.java +++ b/src/main/java/io/github/robwin/markup/builder/MarkupDocBuilder.java @@ -31,19 +31,27 @@ public interface MarkupDocBuilder { MarkupDocBuilder sectionTitleLevel1(String title); - MarkupDocBuilder sectionTitleLevel1(String title, String anchor); + MarkupDocBuilder sectionTitleWithAnchorLevel1(String title, String anchor); + + MarkupDocBuilder sectionTitleWithAnchorLevel1(String title); MarkupDocBuilder sectionTitleLevel2(String title); - MarkupDocBuilder sectionTitleLevel2(String title, String anchor); + MarkupDocBuilder sectionTitleWithAnchorLevel2(String title, String anchor); + + MarkupDocBuilder sectionTitleWithAnchorLevel2(String title); MarkupDocBuilder sectionTitleLevel3(String title); - MarkupDocBuilder sectionTitleLevel3(String title, String anchor); + MarkupDocBuilder sectionTitleWithAnchorLevel3(String title, String anchor); + + MarkupDocBuilder sectionTitleWithAnchorLevel3(String title); MarkupDocBuilder sectionTitleLevel4(String title); - MarkupDocBuilder sectionTitleLevel4(String title, String anchor); + MarkupDocBuilder sectionTitleWithAnchorLevel4(String title, String anchor); + + MarkupDocBuilder sectionTitleWithAnchorLevel4(String title); MarkupDocBuilder textLine(String text); diff --git a/src/main/java/io/github/robwin/markup/builder/asciidoc/AsciiDocBuilder.java b/src/main/java/io/github/robwin/markup/builder/asciidoc/AsciiDocBuilder.java index e2921e1d..09483d8f 100644 --- a/src/main/java/io/github/robwin/markup/builder/asciidoc/AsciiDocBuilder.java +++ b/src/main/java/io/github/robwin/markup/builder/asciidoc/AsciiDocBuilder.java @@ -45,25 +45,49 @@ public class AsciiDocBuilder extends AbstractMarkupDocBuilder { } @Override - public MarkupDocBuilder sectionTitleLevel1(String title, String anchor){ + public MarkupDocBuilder sectionTitleLevel1(String title){ + sectionTitleLevel1(AsciiDoc.SECTION_TITLE_LEVEL1, title, null); + return this; + } + + @Override + public MarkupDocBuilder sectionTitleWithAnchorLevel1(String title, String anchor) { sectionTitleLevel1(AsciiDoc.SECTION_TITLE_LEVEL1, title, anchor); return this; } @Override - public MarkupDocBuilder sectionTitleLevel2(String title, String anchor){ + public MarkupDocBuilder sectionTitleLevel2(String title){ + sectionTitleLevel2(AsciiDoc.SECTION_TITLE_LEVEL2, title, null); + return this; + } + + @Override + public MarkupDocBuilder sectionTitleWithAnchorLevel2(String title, String anchor) { sectionTitleLevel2(AsciiDoc.SECTION_TITLE_LEVEL2, title, anchor); return this; } @Override - public MarkupDocBuilder sectionTitleLevel3(String title, String anchor){ + public MarkupDocBuilder sectionTitleLevel3(String title){ + sectionTitleLevel3(AsciiDoc.SECTION_TITLE_LEVEL3, title, null); + return this; + } + + @Override + public MarkupDocBuilder sectionTitleWithAnchorLevel3(String title, String anchor) { sectionTitleLevel3(AsciiDoc.SECTION_TITLE_LEVEL3, title, anchor); return this; } @Override - public MarkupDocBuilder sectionTitleLevel4(String title, String anchor){ + public MarkupDocBuilder sectionTitleLevel4(String title){ + sectionTitleLevel4(AsciiDoc.SECTION_TITLE_LEVEL4, title, null); + return this; + } + + @Override + public MarkupDocBuilder sectionTitleWithAnchorLevel4(String title, String anchor) { sectionTitleLevel4(AsciiDoc.SECTION_TITLE_LEVEL4, title, anchor); return this; } diff --git a/src/main/java/io/github/robwin/markup/builder/markdown/MarkdownBuilder.java b/src/main/java/io/github/robwin/markup/builder/markdown/MarkdownBuilder.java index 883d3121..afcb3174 100644 --- a/src/main/java/io/github/robwin/markup/builder/markdown/MarkdownBuilder.java +++ b/src/main/java/io/github/robwin/markup/builder/markdown/MarkdownBuilder.java @@ -45,25 +45,49 @@ public class MarkdownBuilder extends AbstractMarkupDocBuilder } @Override - public MarkupDocBuilder sectionTitleLevel1(String title, String anchor){ + public MarkupDocBuilder sectionTitleLevel1(String title){ + sectionTitleLevel1(Markdown.SECTION_TITLE_LEVEL1, title, null); + return this; + } + + @Override + public MarkupDocBuilder sectionTitleWithAnchorLevel1(String title, String anchor) { sectionTitleLevel1(Markdown.SECTION_TITLE_LEVEL1, title, anchor); return this; } @Override - public MarkupDocBuilder sectionTitleLevel2(String title, String anchor){ + public MarkupDocBuilder sectionTitleLevel2(String title){ + sectionTitleLevel2(Markdown.SECTION_TITLE_LEVEL2, title, null); + return this; + } + + @Override + public MarkupDocBuilder sectionTitleWithAnchorLevel2(String title, String anchor) { sectionTitleLevel2(Markdown.SECTION_TITLE_LEVEL2, title, anchor); return this; } @Override - public MarkupDocBuilder sectionTitleLevel3(String title, String anchor){ + public MarkupDocBuilder sectionTitleLevel3(String title){ + sectionTitleLevel3(Markdown.SECTION_TITLE_LEVEL3, title, null); + return this; + } + + @Override + public MarkupDocBuilder sectionTitleWithAnchorLevel3(String title, String anchor) { sectionTitleLevel3(Markdown.SECTION_TITLE_LEVEL3, title, anchor); return this; } @Override - public MarkupDocBuilder sectionTitleLevel4(String title, String anchor){ + public MarkupDocBuilder sectionTitleLevel4(String title){ + sectionTitleLevel4(Markdown.SECTION_TITLE_LEVEL4, title, null); + return this; + } + + @Override + public MarkupDocBuilder sectionTitleWithAnchorLevel4(String title, String anchor) { sectionTitleLevel4(Markdown.SECTION_TITLE_LEVEL4, title, anchor); return this; } 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 a8c9fac3..47a82276 100644 --- a/src/test/java/io/github/robwin/markup/builder/MarkupDocBuilderTest.java +++ b/src/test/java/io/github/robwin/markup/builder/MarkupDocBuilderTest.java @@ -59,9 +59,17 @@ public class MarkupDocBuilderTest { MarkupDocBuilder builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.ASCIIDOC); builder.documentTitle("Test title") .sectionTitleLevel1("Section Level 1a") + .sectionTitleWithAnchorLevel1("Section with anchor Level 1a", "level-1a") + .sectionTitleWithAnchorLevel1("Section with anchor Level 1a") .sectionTitleLevel2("Section Level 2a") + .sectionTitleWithAnchorLevel2("Section with anchor Level 2a", "level-2a") + .sectionTitleWithAnchorLevel2("Section with anchor Level 2a") .sectionTitleLevel3("Section Level 3a") + .sectionTitleWithAnchorLevel3("Section with anchor Level 3a", "level-3a") + .sectionTitleWithAnchorLevel3("Section with anchor Level 3a") .sectionTitleLevel4("Section Level 4a") + .sectionTitleWithAnchorLevel4("Section with anchor Level 4a", "level-4a") + .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") @@ -90,9 +98,17 @@ public class MarkupDocBuilderTest { MarkupDocBuilder builder = MarkupDocBuilders.documentBuilder(MarkupLanguage.MARKDOWN); builder.documentTitle("Test title") .sectionTitleLevel1("Section Level 1a") + .sectionTitleWithAnchorLevel1("Section with anchor Level 1a", "level-1a") + .sectionTitleWithAnchorLevel1("Section with anchor Level 1a") .sectionTitleLevel2("Section Level 2a") + .sectionTitleWithAnchorLevel2("Section with anchor Level 2a", "level-2a") + .sectionTitleWithAnchorLevel2("Section with anchor Level 2a") .sectionTitleLevel3("Section Level 3a") + .sectionTitleWithAnchorLevel3("Section with anchor Level 3a", "level-3a") + .sectionTitleWithAnchorLevel3("Section with anchor Level 3a") .sectionTitleLevel4("Section Level 4a") + .sectionTitleWithAnchorLevel4("Section with anchor Level 4a", "level-4a") + .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")