Skip to content

Commit c248fdc

Browse files
committed
Switch from highlight.js to Rouge for syntax highlighting
Replace client-side highlight.js with server-side Rouge syntax highlighter. Rouge runs at build time during Asciidoctor rendering, producing static pre-colored HTML. This eliminates the callout marker destruction issue (highlight.js was stripping <i class=conum> elements from code blocks), removes the CDN dependency, and adds C# syntax highlighting support (which CodeRay lacked and was the original reason for switching to highlight.js). Rouge is bundled in AsciidoctorJ 2.5.8 but requires SnakeYAML 1.x for JRuby's Psych YAML extension. The project uses SnakeYAML 2.0, so a 1.33 override is added scoped to the asciidoctor-maven-plugin. - Change source-highlighter from highlightjs to rouge in all 12 asciidoctor executions in pom.xml - Remove highlightjsdir and highlightjs-languages attributes - Add SnakeYAML 1.33 plugin dependency to fix Rouge/Psych compatibility - Delete docs/src/docinfo-footer.html (highlight.js workarounds) Assisted-by: Kiro:claude-sonnet-4-20250514
1 parent 15c014b commit c248fdc

2 files changed

Lines changed: 20 additions & 92 deletions

File tree

docs/src/docinfo-footer.html

Lines changed: 0 additions & 56 deletions
This file was deleted.

pom.xml

Lines changed: 20 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,6 +1047,14 @@ limitations under the License.
10471047
<artifactId>commons-text</artifactId>
10481048
<version>1.15.0</version>
10491049
</dependency>
1050+
<!-- Rouge syntax highlighter requires SnakeYAML 1.x for JRuby's
1051+
Psych YAML extension. The project uses SnakeYAML 2.0 which has
1052+
incompatible API changes. This override is scoped to the plugin. -->
1053+
<dependency>
1054+
<groupId>org.yaml</groupId>
1055+
<artifactId>snakeyaml</artifactId>
1056+
<version>1.33</version>
1057+
</dependency>
10501058
</dependencies>
10511059
<executions>
10521060
<execution>
@@ -1078,9 +1086,7 @@ limitations under the License.
10781086
<encoding>UTF-8</encoding>
10791087
<stylesdir>${asciidoctor.style.dir}</stylesdir>
10801088
<stylesheet>tinkerpop.css</stylesheet>
1081-
<source-highlighter>highlightjs</source-highlighter>
1082-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1083-
<highlightjs-languages>groovy</highlightjs-languages>
1089+
<source-highlighter>rouge</source-highlighter>
10841090
<basedir>${project.basedir}</basedir>
10851091
<docinfo>shared</docinfo>
10861092
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1107,9 +1113,7 @@ limitations under the License.
11071113
<toc-position>left</toc-position>
11081114
<stylesdir>${asciidoctor.style.dir}</stylesdir>
11091115
<stylesheet>tinkerpop.css</stylesheet>
1110-
<source-highlighter>highlightjs</source-highlighter>
1111-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1112-
<highlightjs-languages>groovy</highlightjs-languages>
1116+
<source-highlighter>rouge</source-highlighter>
11131117
<basedir>${project.basedir}</basedir>
11141118
<docinfo>shared</docinfo>
11151119
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1136,9 +1140,7 @@ limitations under the License.
11361140
<toc-position>left</toc-position>
11371141
<stylesdir>${asciidoctor.style.dir}</stylesdir>
11381142
<stylesheet>tinkerpop.css</stylesheet>
1139-
<source-highlighter>highlightjs</source-highlighter>
1140-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1141-
<highlightjs-languages>groovy</highlightjs-languages>
1143+
<source-highlighter>rouge</source-highlighter>
11421144
<basedir>${project.basedir}</basedir>
11431145
<docinfo>shared</docinfo>
11441146
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1165,9 +1167,7 @@ limitations under the License.
11651167
<toc-position>left</toc-position>
11661168
<stylesdir>${asciidoctor.style.dir}</stylesdir>
11671169
<stylesheet>tinkerpop.css</stylesheet>
1168-
<source-highlighter>highlightjs</source-highlighter>
1169-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1170-
<highlightjs-languages>groovy</highlightjs-languages>
1170+
<source-highlighter>rouge</source-highlighter>
11711171
<basedir>${project.basedir}</basedir>
11721172
<docinfo>shared</docinfo>
11731173
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1194,9 +1194,7 @@ limitations under the License.
11941194
<toc-position>left</toc-position>
11951195
<stylesdir>${asciidoctor.style.dir}</stylesdir>
11961196
<stylesheet>tinkerpop.css</stylesheet>
1197-
<source-highlighter>highlightjs</source-highlighter>
1198-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1199-
<highlightjs-languages>groovy</highlightjs-languages>
1197+
<source-highlighter>rouge</source-highlighter>
12001198
<basedir>${project.basedir}</basedir>
12011199
<docinfo>shared</docinfo>
12021200
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1223,9 +1221,7 @@ limitations under the License.
12231221
<toc-position>left</toc-position>
12241222
<stylesdir>${asciidoctor.style.dir}</stylesdir>
12251223
<stylesheet>tinkerpop.css</stylesheet>
1226-
<source-highlighter>highlightjs</source-highlighter>
1227-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1228-
<highlightjs-languages>groovy</highlightjs-languages>
1224+
<source-highlighter>rouge</source-highlighter>
12291225
<basedir>${project.basedir}</basedir>
12301226
<docinfo>shared</docinfo>
12311227
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1252,9 +1248,7 @@ limitations under the License.
12521248
<toc-position>left</toc-position>
12531249
<stylesdir>${asciidoctor.style.dir}</stylesdir>
12541250
<stylesheet>tinkerpop.css</stylesheet>
1255-
<source-highlighter>highlightjs</source-highlighter>
1256-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1257-
<highlightjs-languages>groovy</highlightjs-languages>
1251+
<source-highlighter>rouge</source-highlighter>
12581252
<basedir>${project.basedir}</basedir>
12591253
<docinfo>shared</docinfo>
12601254
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1281,9 +1275,7 @@ limitations under the License.
12811275
<toc-position>left</toc-position>
12821276
<stylesdir>${asciidoctor.style.dir}</stylesdir>
12831277
<stylesheet>tinkerpop.css</stylesheet>
1284-
<source-highlighter>highlightjs</source-highlighter>
1285-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1286-
<highlightjs-languages>groovy</highlightjs-languages>
1278+
<source-highlighter>rouge</source-highlighter>
12871279
<basedir>${project.basedir}</basedir>
12881280
<docinfo>shared</docinfo>
12891281
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1308,9 +1300,7 @@ limitations under the License.
13081300
<encoding>UTF-8</encoding>
13091301
<stylesdir>${asciidoctor.style.dir}</stylesdir>
13101302
<stylesheet>tinkerpop.css</stylesheet>
1311-
<source-highlighter>highlightjs</source-highlighter>
1312-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1313-
<highlightjs-languages>groovy</highlightjs-languages>
1303+
<source-highlighter>rouge</source-highlighter>
13141304
<basedir>${project.basedir}</basedir>
13151305
<docinfo>shared</docinfo>
13161306
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1336,9 +1326,7 @@ limitations under the License.
13361326
<encoding>UTF-8</encoding>
13371327
<stylesdir>${asciidoctor.style.dir}</stylesdir>
13381328
<stylesheet>tinkerpop.css</stylesheet>
1339-
<source-highlighter>highlightjs</source-highlighter>
1340-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1341-
<highlightjs-languages>groovy</highlightjs-languages>
1329+
<source-highlighter>rouge</source-highlighter>
13421330
<basedir>${project.basedir}</basedir>
13431331
<docinfo>shared</docinfo>
13441332
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1364,9 +1352,7 @@ limitations under the License.
13641352
<encoding>UTF-8</encoding>
13651353
<stylesdir>${asciidoctor.style.dir}</stylesdir>
13661354
<stylesheet>tinkerpop.css</stylesheet>
1367-
<source-highlighter>highlightjs</source-highlighter>
1368-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1369-
<highlightjs-languages>groovy</highlightjs-languages>
1355+
<source-highlighter>rouge</source-highlighter>
13701356
<basedir>${project.basedir}</basedir>
13711357
<docinfo>shared</docinfo>
13721358
<docinfodir>${project.basedir}/docs/src</docinfodir>
@@ -1391,9 +1377,7 @@ limitations under the License.
13911377
<encoding>UTF-8</encoding>
13921378
<stylesdir>${asciidoctor.style.dir}</stylesdir>
13931379
<stylesheet>tinkerpop.css</stylesheet>
1394-
<source-highlighter>highlightjs</source-highlighter>
1395-
<highlightjsdir>https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0</highlightjsdir>
1396-
<highlightjs-languages>groovy</highlightjs-languages>
1380+
<source-highlighter>rouge</source-highlighter>
13971381
<basedir>${project.basedir}</basedir>
13981382
<docinfo>shared</docinfo>
13991383
<docinfodir>${project.basedir}/docs/src</docinfodir>

0 commit comments

Comments
 (0)