From 1d911367d6077110bfaed8f7b34d2bb42b21dee0 Mon Sep 17 00:00:00 2001 From: Alexander Schwartz Date: Mon, 9 Sep 2019 21:32:50 +0200 Subject: [PATCH 1/2] Prevent unwanted incrementing of section number in operation macro See gh-638 --- .../main/resources/extensions/operation_block_macro.rb | 8 +++++++- .../asciidoctor/AbstractOperationBlockMacroTests.java | 2 +- .../test/resources/operations/snippet-in-section.html | 10 ++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/spring-restdocs-asciidoctor-support/src/main/resources/extensions/operation_block_macro.rb b/spring-restdocs-asciidoctor-support/src/main/resources/extensions/operation_block_macro.rb index a15ee805..8b37bc63 100644 --- a/spring-restdocs-asciidoctor-support/src/main/resources/extensions/operation_block_macro.rb +++ b/spring-restdocs-asciidoctor-support/src/main/resources/extensions/operation_block_macro.rb @@ -48,9 +48,15 @@ class OperationBlockMacro < Asciidoctor::Extensions::BlockMacroProcessor def add_blocks(content, doc, parent) options = { safe: doc.options[:safe], attributes: doc.attributes } fragment = Asciidoctor.load content, options + # use a template to get the correct sectname and level for blocks to append + template = create_section(parent, '', {}) fragment.blocks.each do |b| b.parent = parent - b.level += parent.level + # might be a standard block and no section in case of 'No snippets were found for operation' + if b.respond_to?(:sectname) + b.sectname = template.sectname + end + b.level = template.level parent << b end parent.find_by.each do |b| diff --git a/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/AbstractOperationBlockMacroTests.java b/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/AbstractOperationBlockMacroTests.java index 31bbda40..bd0cab51 100644 --- a/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/AbstractOperationBlockMacroTests.java +++ b/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/AbstractOperationBlockMacroTests.java @@ -118,7 +118,7 @@ public abstract class AbstractOperationBlockMacroTests { @Test public void includeSnippetInSection() throws Exception { String result = this.asciidoctor.convert( - "= A\n\nAlpha\n\n== B\n\nBravo\n\n" + "operation::some-operation[snippets='curl-request']", + "= A\n:doctype: book\n:sectnums:\n\nAlpha\n\n== B\n\nBravo\n\n" + "operation::some-operation[snippets='curl-request']\n\n== C\n", this.options); assertThat(result).isEqualTo(getExpectedContentFromFile("snippet-in-section")); } diff --git a/spring-restdocs-asciidoctor/src/test/resources/operations/snippet-in-section.html b/spring-restdocs-asciidoctor/src/test/resources/operations/snippet-in-section.html index 0bc6f272..a8ec3f47 100644 --- a/spring-restdocs-asciidoctor/src/test/resources/operations/snippet-in-section.html +++ b/spring-restdocs-asciidoctor/src/test/resources/operations/snippet-in-section.html @@ -6,18 +6,24 @@
-

B

+

1. B

Bravo

-

Curl request

+

1.1. Curl request

$ curl 'http://localhost:8080/' -i
+
+
+
+

2. C

+
+
\ No newline at end of file From 8624a33ff578b7de6492d9203ba5cedaf2418b51 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 19 Sep 2019 11:10:57 +0100 Subject: [PATCH 2/2] Polish "Prevent unwanted incrementing of section number in operation macro" See gh-638 --- .../asciidoctor/AbstractOperationBlockMacroTests.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/AbstractOperationBlockMacroTests.java b/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/AbstractOperationBlockMacroTests.java index bd0cab51..369c8266 100644 --- a/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/AbstractOperationBlockMacroTests.java +++ b/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/AbstractOperationBlockMacroTests.java @@ -117,9 +117,8 @@ public abstract class AbstractOperationBlockMacroTests { @Test public void includeSnippetInSection() throws Exception { - String result = this.asciidoctor.convert( - "= A\n:doctype: book\n:sectnums:\n\nAlpha\n\n== B\n\nBravo\n\n" + "operation::some-operation[snippets='curl-request']\n\n== C\n", - this.options); + String result = this.asciidoctor.convert("= A\n:doctype: book\n:sectnums:\n\nAlpha\n\n== B\n\nBravo\n\n" + + "operation::some-operation[snippets='curl-request']\n\n== C\n", this.options); assertThat(result).isEqualTo(getExpectedContentFromFile("snippet-in-section")); }