The spring-jcl module has been removed in Spring Framework 7 in
favor of Commons Logging 1.3. This commit removes the excludes
for commons-logging:commons-logging that werew required to ensure
that spring-jcl was used instead but that are no longer needed.
See gh-955
Previously, the snippets attribute was absolute when using Gradle and
relative to the docdir when using Maven. The relative path that was
used with Maven only worked as long as the working directory when
invoking Asciidoctor was the same as the docdir. This was the case
until 3.1.0 of the Asciidoctor Maven Plugin when the working
directory and docdir diverged at which point the snippets could no
longer be found.
This commit updates the snippets directory resolver to return an
absolute file when using Maven, just has it already does when using
Gradle. The resolution for Gradle has also been updated to explicity
make the File absolute rather than relying on the gradle-projectdir
or projectdir attributes having an absolute value.
Fixes gh-950
AsciidoctorJ 3.0 contains a breaking change to the signature of
Preprocessor#process. This commit avoids this incompatibility
by rewriting the preprocessor extension in Ruby.
Fixes gh-949
Previously, when a document had a leveloffset attribute this was
included in the attributes used when loading a snippet in the
operation block macro. This could lead to warnings about section
titles being out of sequence as the level used for the title did not
take the leveloffset into consideration.
This commit clones the documents attributes and removes any
leveloffset attribute before loading a snippet. This removes the
need for the leveloffset to be considered when loading a snippet
fragment. As before, the level of each block in the fragment loaded
from snippet is then set prior to adding the block to the main
document. This takes the leveloffset into consideration.
Closes gh-649
Previously, when adding blocks for the snippets' content, the
operation macro would call Asciidoctor to load the content with
attributes that only included the projectdir. This resulted in a
failure in environments that did not set the projectdir and instead
relied on another attribute, such as gradle-projectdir as used by
the latest versions of the Asciidoctor Gradle plugin.
This commit updates the macro to reuse all of the main document's
attributes when loading the snippets' content, thereby ensuring that
any attributes available in the main document are also available
during snipppet processing.
Closes gh-624
AsciidoctorJ 1.6 is not backwards compatible with AsciidoctorJ 1.5
and AsciidoctorJ 2.0 is not backwards compatible with AsciidoctorJ 1.6
or 1.5. The backwards incompatibilities are such that they cannot be
worked around using reflection so code needs to be compiled against
each of the three versions. To this end, this commit splits
spring-restdocs-asciidoctor into several separate modules:
1. spring-restdocs-asciidoctor-support
2. spring-restdocs-asciidoctor-1.5
3. spring-restdocs-asciidoctor-1.6
4. spring-restdocs-asciidoctor-2.0
spring-restdocs-asciidoctor-support contains support code that is not
tied to a specific version of AsciidoctorJ and can be used with
1.5, 1.6 and 2.0. The other three modules contain code that is
specific to a particular version of AsciidoctorJ. Each
version-specific module uses class names that are unique across all
three modules and is written in such a way that they will back off
when used in an environment with a different version of AsciidoctorJ.
The existing spring-restdocs-asciidoctor module has been modified to
merge the version specific jars and the support jar together into a
single jar that supports AsciidoctorJ 1.5, 1.6, and 2.0.
The above-described changes should allow users to depend upon
spring-restdocs-asciidoctor as before and to now be able to use
AsciidoctorJ 1.5, 1.6, or 2.0.
Closes gh-581
Previously, when the operation block macro rendered the fragment
for a snippet, every top-level block in the fragment had its parent
set. Setting the parent has the side-effect of also setting the
block's document to be that of its parent. This meant that every
top-level block's document referred to the main document, but any
descendents were left with their document referring to the fragment
document. This did not cause a problem with the HTML backend (which
does not consider a block's document) but the PDF backend does
consider a block's document resulting in the descendents being
omitted from the generated PDF.
This commit updates the operation block macro to set the parent of
every block in the fragment to its correct value. This has the
side-effect of causing the block to update its document reference to
point to the main document.
Closes gh-396
It appears that Asciidoctor uses \n on all platforms but when the
expected content is read in on Windows it uses \r\n as the line
endings are being changed when Git performs the clone.
- Copy snippets used in the tests in @BeforeClass rather than using
Gradle so that the tests can be run easily in an IDE
- Address problems in operation_block_macro.rb reported by Rubocop
- Rename new test class to more closely match the name of the Ruby
class that it’s testing
- Gracefully handle a missing operation
- Align behaviour when an operation or snippet is missing more closely
with Asciidoctor’s behaviour when an include references a missing
file
- Use kebab-case rather than snake_case for new test resources
- Update the documentation to describe the new macro
See gh-354
Closes gh-323