From ce1683365fb1d29812b0c4a5035ac8ec280625eb Mon Sep 17 00:00:00 2001 From: marko-bekhta Date: Wed, 1 Oct 2025 16:23:57 +0200 Subject: [PATCH] [#2560] Apply the unified Hibernate Documentation theme - for javadocs - for asciidoc --- documentation/build.gradle | 62 ++++- .../main/asciidoc/reference/css/hibernate.css | 227 ------------------ .../images/hibernate_logo_smaller.png | Bin 20447 -> 0 bytes .../src/main/asciidoc/reference/index.adoc | 2 +- .../build.gradle | 15 ++ ...HibernateAsciidoctorExtensionRegistry.java | 25 ++ ...ctor.jruby.extension.spi.ExtensionRegistry | 1 + settings.gradle | 1 + 8 files changed, 99 insertions(+), 234 deletions(-) delete mode 100644 documentation/src/main/asciidoc/reference/css/hibernate.css delete mode 100644 documentation/src/main/asciidoc/reference/images/hibernate_logo_smaller.png create mode 100644 local-build-asciidoctor-extensions/build.gradle create mode 100644 local-build-asciidoctor-extensions/src/main/java/org/hibernate/reactive/env/asciidoctor/HibernateAsciidoctorExtensionRegistry.java create mode 100644 local-build-asciidoctor-extensions/src/main/resources/META-INF/services/org.asciidoctor.jruby.extension.spi.ExtensionRegistry diff --git a/documentation/build.gradle b/documentation/build.gradle index 01c67f967..961ef6408 100644 --- a/documentation/build.gradle +++ b/documentation/build.gradle @@ -7,6 +7,14 @@ plugins { id "hr-java-library" } +configurations { + themezip +} + +dependencies { + themezip 'org.hibernate.infra:hibernate-asciidoctor-theme:6.0.0.Final@zip' +} + ext { projectsToSkipWhenAggregatingJavadocs = [ 'example', @@ -21,6 +29,23 @@ rootProject.subprojects { subproject -> } } +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Prepare the theme for Javadocs/Asciidoc +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +tasks.register('unpackTheme', Copy) { + def unpackDir = rootProject.layout.buildDirectory.dir("unpacked-theme") + + onlyIf { + !unpackDir.get().asFile.exists() + } + destinationDir = unpackDir.get().asFile + + def zipFile = configurations.themezip.singleFile + from zipTree(zipFile) + + dependsOn configurations.themezip +} + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Aggregated JavaDoc // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -50,6 +75,9 @@ def aggregateJavadocsTask = tasks.register( 'aggregateJavadocs', Javadoc ) { windowTitle = 'Hibernate Reactive API documentation' docTitle = "Hibernate Reactive API documentation ($project.version)" bottom = "Copyright © $inceptionYear-$currentYear Red Hat, Inc. All Rights Reserved." + // Pick the styles for the JDK that is used to "build" the Javadocs: + stylesheetFile = rootProject.layout.buildDirectory.dir("unpacked-theme").get() + .dir("hibernate-asciidoctor-theme").dir("javadoc").dir("jdk21").file("stylesheet.css").asFile use = true options.encoding = 'UTF-8' @@ -90,6 +118,8 @@ def aggregateJavadocsTask = tasks.register( 'aggregateJavadocs', Javadoc ) { classpath += subProject.sourceSets.main.output + subProject.sourceSets.main.compileClasspath } } + + dependsOn 'unpackTheme' } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -104,6 +134,11 @@ asciidoctor { def renderReferenceDocumentationTask = tasks.register( 'renderReferenceDocumentation', AsciidoctorTask ) { description = 'Renders the Reference Documentation in HTML format using Asciidoctor.' sourceDir = file( 'src/main/asciidoc/reference' ) + asciidoctorj { + version '3.0.0' + docExtensions(project(':local-build-asciidoctor-extensions')) + } + sources { include 'index.adoc' } @@ -111,7 +146,12 @@ def renderReferenceDocumentationTask = tasks.register( 'renderReferenceDocumenta resources { from( sourceDir ) { include 'images/**' + } + from(rootProject.layout.buildDirectory.dir("unpacked-theme").get() + .dir("hibernate-asciidoctor-theme").dir("asciidoc")) { include 'css/**' + include 'images/**' + include 'script/**' } } @@ -119,12 +159,22 @@ def renderReferenceDocumentationTask = tasks.register( 'renderReferenceDocumenta options logDocuments: true attributes icons: 'font', - 'source-highlighter': 'rouge', - experimental: true, - linkcss: true, - majorMinorVersion: project.projectVersion.family, - fullVersion: project.version.toString(), - docinfo: 'private' + 'source-highlighter': 'rouge', + majorMinorVersion: project.projectVersion.family, + fullVersion: project.version.toString(), + stylesdir: "css", + 'iconfont-remote': false, + 'iconfont-name': 'font-awesome/css/solid', + docinfo: 'shared,private', + docinfodir: rootProject.layout.buildDirectory.dir("unpacked-theme").get() + .dir("hibernate-asciidoctor-theme").dir("asciidoc").dir("docinfo").dir('hibernate').asFile.absolutePath, + 'html.meta.project-key': 'orm', + 'html.outdated-content.project-key': 'orm', + 'html-meta-description': 'Hibernate Reactive, reactive API for Hibernate ORM - Reference Documentation', + 'html-meta-keywords': 'hibernate, reactive, hibernate reactive, database, db, vert.x', + 'html-meta-version-family': project.projectVersion.family + + dependsOn 'unpackTheme' } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/documentation/src/main/asciidoc/reference/css/hibernate.css b/documentation/src/main/asciidoc/reference/css/hibernate.css deleted file mode 100644 index bffef8d93..000000000 --- a/documentation/src/main/asciidoc/reference/css/hibernate.css +++ /dev/null @@ -1,227 +0,0 @@ -/* Asciidoctor default stylesheets */ -@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; -@import "https://cdn.jsdelivr.net/gh/asciidoctor/asciidoctor@2.0/data/stylesheets/asciidoctor-default.css"; - -body:before { - content: url(../images/hibernate_logo_smaller.png); - box-shadow: 0 2px 2px #ddd; - display: block; - padding: 20px 20px 10px 15px; -} - -/* - * I'm using the '!important' because the plugin includes the hibernate.css file before the rouge one, - * I cannot override the default any other way. - * Everything else is the same as the default rouge CSS. - */ -pre.rouge .cm { - color: #999988; - font-style: italic; -} -pre.rouge .cp { - color: #999999; - font-weight: normal !important; -} -pre.rouge .c1 { - color: #999988; - font-style: italic; -} -pre.rouge .cs { - color: #999999; - font-weight: normal !important; - font-style: italic; -} -pre.rouge .c, pre.rouge .ch, pre.rouge .cd, pre.rouge .cpf { - color: #999988; - font-style: italic; -} -pre.rouge .err { - color: #a61717; - background-color: #e3d2d2; -} -pre.rouge .gd { - color: #000000; - background-color: #ffdddd; -} -pre.rouge .ge { - color: #000000; - font-style: italic; -} -pre.rouge .gr { - color: #aa0000; -} -pre.rouge .gh { - color: #999999; -} -pre.rouge .gi { - color: #000000; - background-color: #ddffdd; -} -pre.rouge .go { - color: #888888; -} -pre.rouge .gp { - color: #555555; -} -pre.rouge .gs { - font-weight: normal !important; -} -pre.rouge .gu { - color: #aaaaaa; -} -pre.rouge .gt { - color: #aa0000; -} -pre.rouge .kc { - color: #008 !important; - font-weight: normal !important; -} -pre.rouge .kd { - color: #008 !important; - font-weight: normal !important; -} -pre.rouge .kn { - color: #000000; - font-weight: normal !important; -} -pre.rouge .kp { - color: #000000; - font-weight: normal !important; -} -pre.rouge .kr { - color: #000000; - font-weight: normal !important; -} -pre.rouge .kt { - color: #445588; - font-weight: normal !important; -} -pre.rouge .k, pre.rouge .kv { - color: #606 !important; - font-weight: normal !important; -} -pre.rouge .mf { - color: #009999; -} -pre.rouge .mh { - color: #009999; -} -pre.rouge .il { - color: #009999; -} -pre.rouge .mi { - color: #009999; -} -pre.rouge .mo { - color: #009999; -} -pre.rouge .m, pre.rouge .mb, pre.rouge .mx { - color: #009999; -} -pre.rouge .sa { - color: #000000; - font-weight: normal !important; -} -pre.rouge .sb { - color: #d14; -} -pre.rouge .sc { - color: #d14; -} -pre.rouge .sd { - color: #d14; -} -pre.rouge .s2 { - color: #d14; -} -pre.rouge .se { - color: #d14; -} -pre.rouge .sh { - color: #d14; -} -pre.rouge .si { - color: #d14; -} -pre.rouge .sx { - color: #d14; -} -pre.rouge .sr { - color: #009926; -} -pre.rouge .s1 { - color: #d14; -} -pre.rouge .ss { - color: #990073; -} -pre.rouge .s, pre.rouge .dl { - color: #080 !important; -} -pre.rouge .na { - color: #000 !important; -} -pre.rouge .bp { - color: #999999; -} -pre.rouge .nb { - color: #0086B3; -} -pre.rouge .nc { - color: #606 !important; - font-weight: normal !important; -} -pre.rouge .no { - color: #008080; -} -pre.rouge .nd { - color: #066 !important; - font-weight: normal !important; -} -pre.rouge .ni { - color: #800080; -} -pre.rouge .ne { - color: #990000; - font-weight: normal !important; -} -pre.rouge .nf, pre.rouge .fm { - color: #990000; - font-weight: normal !important; -} -pre.rouge .nl { - color: #990000; - font-weight: normal !important; -} -pre.rouge .nn { - color: #555555; -} -pre.rouge .nt { - color: #000080; -} -pre.rouge .vc { - color: #008080; -} -pre.rouge .vg { - color: #008080; -} -pre.rouge .vi { - color: #008080; -} -pre.rouge .nv, pre.rouge .vm { - color: #008080; -} -pre.rouge .ow { - color: #000000; - font-weight: normal !important; -} -pre.rouge .o { - color: #000000; - font-weight: normal !important; -} -pre.rouge .w { - color: #bbbbbb; -} -pre.rouge { - background-color: #f8f8f8; -} \ No newline at end of file diff --git a/documentation/src/main/asciidoc/reference/images/hibernate_logo_smaller.png b/documentation/src/main/asciidoc/reference/images/hibernate_logo_smaller.png deleted file mode 100644 index a5a5b19533b988749782d5260840dd061775b2e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20447 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 diff --git a/documentation/src/main/asciidoc/reference/index.adoc b/documentation/src/main/asciidoc/reference/index.adoc index 3acdb5b73..c410c02b6 100644 --- a/documentation/src/main/asciidoc/reference/index.adoc +++ b/documentation/src/main/asciidoc/reference/index.adoc @@ -1,11 +1,11 @@ = Hibernate Reactive {fullVersion} Reference Documentation Davide D'Alto ; Gavin King -:stylesheet: css/hibernate.css :toc2: :toclevels: 3 :sectanchors: :sourcedir: src/main/asciidoc/reference :leveloffset: +1 +:version-selector-enabled: true include::{sourcedir}/preface.adoc[] diff --git a/local-build-asciidoctor-extensions/build.gradle b/local-build-asciidoctor-extensions/build.gradle new file mode 100644 index 000000000..97bc7cec8 --- /dev/null +++ b/local-build-asciidoctor-extensions/build.gradle @@ -0,0 +1,15 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ + +plugins { + id "hr-java-library" +} + +description = 'Asciidoctor extensions for Hibernate Reactive' + +dependencies { + implementation "org.hibernate.infra:hibernate-asciidoctor-extensions:3.2.0.Final" + implementation "org.asciidoctor:asciidoctorj:3.0.0" +} diff --git a/local-build-asciidoctor-extensions/src/main/java/org/hibernate/reactive/env/asciidoctor/HibernateAsciidoctorExtensionRegistry.java b/local-build-asciidoctor-extensions/src/main/java/org/hibernate/reactive/env/asciidoctor/HibernateAsciidoctorExtensionRegistry.java new file mode 100644 index 000000000..38f773d17 --- /dev/null +++ b/local-build-asciidoctor-extensions/src/main/java/org/hibernate/reactive/env/asciidoctor/HibernateAsciidoctorExtensionRegistry.java @@ -0,0 +1,25 @@ +/* Hibernate, Relational Persistence for Idiomatic Java + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright: Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.reactive.env.asciidoctor; + +import org.hibernate.infra.asciidoctor.extensions.copytoclipboard.CopyToClipboardProcessor; +import org.hibernate.infra.asciidoctor.extensions.customnumbering.CustomNumberingProcessor; +// import org.hibernate.infra.asciidoctor.extensions.sourcecodelanguage.SourcecodeLanguagePreprocessor; + +import org.asciidoctor.Asciidoctor; +import org.asciidoctor.extension.JavaExtensionRegistry; +import org.asciidoctor.jruby.extension.spi.ExtensionRegistry; + +public class HibernateAsciidoctorExtensionRegistry implements ExtensionRegistry { + + @Override + public void register(Asciidoctor asciidoctor) { + JavaExtensionRegistry javaExtensionRegistry = asciidoctor.javaExtensionRegistry(); + javaExtensionRegistry.docinfoProcessor( CopyToClipboardProcessor.class ); + javaExtensionRegistry.treeprocessor( CustomNumberingProcessor.class ); + // javaExtensionRegistry.preprocessor( SourcecodeLanguagePreprocessor.class ); + } +} diff --git a/local-build-asciidoctor-extensions/src/main/resources/META-INF/services/org.asciidoctor.jruby.extension.spi.ExtensionRegistry b/local-build-asciidoctor-extensions/src/main/resources/META-INF/services/org.asciidoctor.jruby.extension.spi.ExtensionRegistry new file mode 100644 index 000000000..e828da0a6 --- /dev/null +++ b/local-build-asciidoctor-extensions/src/main/resources/META-INF/services/org.asciidoctor.jruby.extension.spi.ExtensionRegistry @@ -0,0 +1 @@ +org.hibernate.reactive.env.asciidoctor.HibernateAsciidoctorExtensionRegistry diff --git a/settings.gradle b/settings.gradle index 81d8fa503..67eb3f2b1 100644 --- a/settings.gradle +++ b/settings.gradle @@ -138,6 +138,7 @@ include 'bytecode-enhancements-it' include 'verticle-postgres-it' include 'techempower-postgres-it' include 'hibernate-validator-postgres-it' +include 'local-build-asciidoctor-extensions' // Examples for ( project in rootProject.children ) {