From d7efd19c25ce97d488614327459bc58344fb5f22 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 25 Nov 2024 12:11:23 +0100 Subject: [PATCH] GH-967 - Asciidoctor.toInlineCode(String) now renders local method references correctly. Previously, the missing type caused the module lookup to fail with an exception. --- .../modulith/docs/Asciidoctor.java | 14 +++++++++++--- .../modulith/docs/AsciidoctorUnitTests.java | 15 +++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/spring-modulith-docs/src/main/java/org/springframework/modulith/docs/Asciidoctor.java b/spring-modulith-docs/src/main/java/org/springframework/modulith/docs/Asciidoctor.java index ea85a154..fa69676d 100644 --- a/spring-modulith-docs/src/main/java/org/springframework/modulith/docs/Asciidoctor.java +++ b/spring-modulith-docs/src/main/java/org/springframework/modulith/docs/Asciidoctor.java @@ -105,10 +105,14 @@ class Asciidoctor { var type = parts[0]; var methodSignature = parts.length == 2 ? Optional.of(parts[1]) : Optional. empty(); + if (type.isBlank()) { + return methodSignature.map(Asciidoctor::toCode).orElse(source); + } + return modules.getModuleByType(type) .flatMap(it -> it.getType(type)) .map(it -> toOptionalLink(it, methodSignature)) - .orElseGet(() -> String.format("`%s`", type)); + .orElseGet(() -> toCode(type)); } public String toInlineCode(JavaClass type) { @@ -270,7 +274,7 @@ class Asciidoctor { } public String toBulletPoint(String source) { - return String.format("* %s", source); + return "* ".concat(source); } private String toOptionalLink(JavaClass source) { @@ -355,7 +359,7 @@ class Asciidoctor { } private static String toCode(String source) { - return String.format("`%s`", source); + return wrap(source, "`"); } public static String startTable(String tableSpec) { @@ -441,4 +445,8 @@ class Asciidoctor { return it; }); } + + private static final String wrap(String source, String chars) { + return chars + source + chars; + } } diff --git a/spring-modulith-docs/src/test/java/org/springframework/modulith/docs/AsciidoctorUnitTests.java b/spring-modulith-docs/src/test/java/org/springframework/modulith/docs/AsciidoctorUnitTests.java index 88e27d35..21d1ef9d 100644 --- a/spring-modulith-docs/src/test/java/org/springframework/modulith/docs/AsciidoctorUnitTests.java +++ b/spring-modulith-docs/src/test/java/org/springframework/modulith/docs/AsciidoctorUnitTests.java @@ -29,7 +29,8 @@ import com.tngtech.archunit.core.importer.ClassFileImporter; */ class AsciidoctorUnitTests { - Asciidoctor asciidoctor = Asciidoctor.withJavadocBase(ApplicationModules.of("org.springframework.modulith"), "{javadoc}"); + Asciidoctor asciidoctor = Asciidoctor.withJavadocBase(ApplicationModules.of("org.springframework.modulith"), + "{javadoc}"); @Test void formatsInlineCode() { @@ -64,8 +65,14 @@ class AsciidoctorUnitTests { ConfigurationProperties metadata = new ConfigurationProperties(); - assertThat(metadata).containsExactly(new ConfigurationProperties.ConfigurationProperty("org.springframework.modulith.sample.test", - "Some test property of type {@link java.lang.Boolean}.", "java.lang.Boolean", - "com.acme.myproject.stereotypes.Stereotypes$SomeConfigurationProperties", "false")); + assertThat(metadata) + .containsExactly(new ConfigurationProperties.ConfigurationProperty("org.springframework.modulith.sample.test", + "Some test property of type {@link java.lang.Boolean}.", "java.lang.Boolean", + "com.acme.myproject.stereotypes.Stereotypes$SomeConfigurationProperties", "false")); + } + + @Test // GH-965 + void rendersLocalMethodReferencesCorrectly() { + assertThat(asciidoctor.toInlineCode("#someMethod()")).isEqualTo("`someMethod()`"); } }