diff --git a/CHANGELOG.md b/CHANGELOG.md index bc5dd50..b66eb7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,15 @@ and the project follows [Semantic Versioning](https://semver.org/). ## [Unreleased] ### Build +- **GraphCompose engine bumped 1.9.1 → 2.0.0.** The 2.0 release splits the monolithic engine + into per-concern modules, but `io.github.demchaav:graph-compose` stays the drop-in default — + it is now a thin aggregator over `graph-compose-core` + `graph-compose-render-pdf`, so this + library keeps rendering PDF with **no dependency change and no change to `MarkdownComposer` + or any public type**. The optional `graph-compose-fonts` / `graph-compose-emoji` add-ons keep + their own version lines and are unchanged. The only source touched was a test: 2.0 removed the + deprecated `linkOptions()` read-accessor on the engine's inline runs, so `InlineRendererTest` + now reads the surrounding link through `linkTarget()` / `ExternalLinkTarget.options().uri()` + (the value it asserts is unchanged). 188 library tests + the CLI suite pass on 2.0.0. - **GraphCompose engine bumped 1.9.0 → 1.9.1.** Long inline-code tokens with no spaces (package coordinates, fully-qualified class names, URLs) now break *within* their table cell or paragraph — at `.` `:` `/` `-` seams, char-splitting only as a last resort — instead diff --git a/README.md b/README.md index 261eae2..da5eb42 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ import java.nio.file.Path; String md = """ # Release notes - GraphCompose **1.9** ships *themeable* Markdown rendering. + GraphCompose **2.0** ships *themeable* Markdown rendering. - Headings, lists and `inline code` - Syntax-highlighted code blocks diff --git a/pom.xml b/pom.xml index 8295557..1e71597 100644 --- a/pom.xml +++ b/pom.xml @@ -46,7 +46,7 @@ 17 - 1.9.1 + 2.0.0 1.0.0 1.0.0 0.64.8 diff --git a/src/test/java/io/github/demchaav/markdown/render/InlineRendererTest.java b/src/test/java/io/github/demchaav/markdown/render/InlineRendererTest.java index 7875bf6..a7fccd2 100644 --- a/src/test/java/io/github/demchaav/markdown/render/InlineRendererTest.java +++ b/src/test/java/io/github/demchaav/markdown/render/InlineRendererTest.java @@ -6,6 +6,7 @@ import com.demcha.compose.document.node.InlineRun; import com.demcha.compose.document.node.InlineShapeRun; import com.demcha.compose.document.node.InlineTextRun; +import com.demcha.compose.document.node.ExternalLinkTarget; import com.demcha.compose.document.node.InternalLinkTarget; import io.github.demchaav.markdown.extension.ImageResolver; import io.github.demchaav.markdown.model.inline.CodeRun; @@ -85,7 +86,10 @@ void inlineImageInsideALinkCarriesTheLinkAnnotation() { InlineImageRun image = (InlineImageRun) rich.runs().stream() .filter(InlineImageRun.class::isInstance).findFirst().orElseThrow(); - assertThat(image.linkOptions()).isNotNull(); // the surrounding link is threaded onto the image + // the surrounding link is threaded onto the image as an external-URI target + assertThat(image.linkTarget()).isInstanceOf(ExternalLinkTarget.class); + assertThat(((ExternalLinkTarget) image.linkTarget()).options().uri()) + .isEqualTo("https://example.com"); } @Test @@ -162,7 +166,11 @@ void externalLinkStillCarriesAUriTarget() { List.of(new LinkRun("https://example.com", null, List.of(new TextRun("site")))), BASE); InlineTextRun run = (InlineTextRun) rich.runs().get(0); - assertThat(run.linkOptions()).as("external link keeps its URI options").isNotNull(); + assertThat(run.linkTarget()) + .as("external link keeps its URI target") + .isInstanceOf(ExternalLinkTarget.class); + assertThat(((ExternalLinkTarget) run.linkTarget()).options().uri()) + .isEqualTo("https://example.com"); } private static byte[] png(int width, int height) {