Disable interpolation of Asciidoctor path parameter table's title

Previously, when generating Asciidoctor snipppets, the title of the
path parameter table was interpolated. The title of the table is the
path including its parameters. The parameters are typically surrounded
by { and }. This is the same syntax used for attributes in
Asciidoctor. With interpolation enabled this caused Asciidoctor to
interpret the parameter as an attribute reference and attempt to
replace it. This would either result in unwanted replacement of the
parameter with the value of the attribute or it would result in a
warning about a missing attribute.

This commit surrounds the title of the table with + characters. This
disables all interpolation for the title, thereby preventing
unwanted replacement or attempted replacement of the path's
parameters.

Closes gh-527
This commit is contained in:
Andy Wilkinson
2018-07-16 10:30:14 +01:00
parent e1948f29b1
commit e14bda0893
2 changed files with 12 additions and 8 deletions

View File

@@ -85,9 +85,11 @@ public class PathParametersSnippetTests extends AbstractSnippetTests {
@Test
public void missingOptionalPathParameter() throws IOException {
this.snippets.expectPathParameters().withContents(tableWithTitleAndHeader(
this.templateFormat == TemplateFormats.asciidoctor() ? "/{a}" : "`/{a}`",
"Parameter", "Description").row("`a`", "one").row("`b`", "two"));
this.snippets.expectPathParameters()
.withContents(tableWithTitleAndHeader(
this.templateFormat == TemplateFormats.asciidoctor() ? "+/{a}+"
: "`/{a}`",
"Parameter", "Description").row("`a`", "one").row("`b`", "two"));
new PathParametersSnippet(Arrays.asList(parameterWithName("a").description("one"),
parameterWithName("b").description("two").optional()))
.document(this.operationBuilder.attribute(
@@ -97,9 +99,11 @@ public class PathParametersSnippetTests extends AbstractSnippetTests {
@Test
public void presentOptionalPathParameter() throws IOException {
this.snippets.expectPathParameters().withContents(tableWithTitleAndHeader(
this.templateFormat == TemplateFormats.asciidoctor() ? "/{a}" : "`/{a}`",
"Parameter", "Description").row("`a`", "one"));
this.snippets.expectPathParameters()
.withContents(tableWithTitleAndHeader(
this.templateFormat == TemplateFormats.asciidoctor() ? "+/{a}+"
: "`/{a}`",
"Parameter", "Description").row("`a`", "one"));
new PathParametersSnippet(
Arrays.asList(parameterWithName("a").description("one").optional()))
.document(this.operationBuilder.attribute(
@@ -216,7 +220,7 @@ public class PathParametersSnippetTests extends AbstractSnippetTests {
private String getTitle(String title) {
if (this.templateFormat.equals(TemplateFormats.asciidoctor())) {
return title;
return "+" + title + "+";
}
return "`" + title + "`";
}