Skip to content

Commit 86f6dba

Browse files
committed
Specify an ID for each section created by the operation macro
Closes gh-364
1 parent 40fc211 commit 86f6dba

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

spring-restdocs-asciidoctor/src/main/resources/extensions/operation_block_macro.rb

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,32 +15,34 @@ class OperationBlockMacro < Asciidoctor::Extensions::BlockMacroProcessor
1515
def process(parent, operation, attributes)
1616
snippets_dir = parent.document.attributes['snippets'].to_s
1717
snippet_names = attributes.fetch 'snippets', ''
18-
content = read_snippets(snippets_dir, snippet_names, parent.level + 1,
19-
operation)
20-
add_snippets_block(content, parent.document, parent) unless content.empty?
18+
content = read_snippets(snippets_dir, snippet_names, parent, operation)
19+
add_blocks(content, parent.document, parent) unless content.empty?
2120
nil
2221
end
2322

24-
def read_snippets(snippets_dir, snippet_names, section_level, operation)
23+
def read_snippets(snippets_dir, snippet_names, parent, operation)
2524
snippets = snippets_to_include(snippet_names, snippets_dir, operation)
2625
if snippets.empty?
2726
warn "No snippets were found for operation #{operation} in"\
2827
"#{snippets_dir}"
2928
"No snippets found for operation::#{operation}"
3029
else
31-
do_read_snippets(snippets, section_level, operation)
30+
do_read_snippets(snippets, parent, operation)
3231
end
3332
end
3433

35-
def do_read_snippets(snippets, section_level, operation)
34+
def do_read_snippets(snippets, parent, operation)
3635
content = StringIO.new
36+
section_level = parent.level + 1
37+
section_id = parent.id
3738
snippets.each do |snippet|
38-
append_snippet_block(content, snippet, section_level, operation)
39+
append_snippet_block(content, snippet, section_level, section_id,
40+
operation)
3941
end
4042
content.string
4143
end
4244

43-
def add_snippets_block(content, doc, parent)
45+
def add_blocks(content, doc, parent)
4446
options = { safe: doc.options[:safe],
4547
attributes: { 'fragment' => '',
4648
'projectdir' => doc.attr(:projectdir) } }
@@ -71,8 +73,9 @@ def all_snippets(snippets_dir, operation)
7173
.map { |file| Snippet.new(File.join(operation_dir, file), file[0..-6]) }
7274
end
7375

74-
def append_snippet_block(content, snippet, section_level, operation)
75-
write_title content, snippet, section_level
76+
def append_snippet_block(content, snippet, section_level, section_id,
77+
operation)
78+
write_title content, snippet, section_level, section_id
7679
write_content content, snippet, operation
7780
end
7881

@@ -88,8 +91,9 @@ def write_content(content, snippet, operation)
8891
end
8992
end
9093

91-
def write_title(content, snippet, level)
94+
def write_title(content, snippet, level, id)
9295
section_level = '=' * (level + 1)
96+
content.puts "[[#{id}_#{snippet.name.sub '-', '_'}]]"
9397
content.puts "#{section_level} #{snippet.title}"
9498
content.puts ''
9599
end

spring-restdocs-asciidoctor/src/test/resources/operations/snippet-in-section.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<h2 id="_section">Section</h2>
33
<div class="sectionbody">
44
<div class="sect2">
5-
<h3 id="_curl_request">Curl request</h3>
5+
<h3 id="_section_curl_request">Curl request</h3>
66
<div class="listingblock">
77
<div class="content">
88
<pre class="highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/' -i</code></pre>

0 commit comments

Comments
 (0)