From 3ec6e01cdc51660bed19c05895ced95e52c2db2d Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:01:39 +0200 Subject: [PATCH 1/8] Revert BUILDING.md Javadoc note --- maven/pom.xml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/maven/pom.xml b/maven/pom.xml index 98dc96f004..3000b6090b 100644 --- a/maven/pom.xml +++ b/maven/pom.xml @@ -407,6 +407,19 @@ none false + + + + ]]> --allow-script-in-comments @@ -574,4 +587,4 @@ - \ No newline at end of file + From b68d0391c4669190eac053b662348b87a52afd6d Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:47:51 +0200 Subject: [PATCH 2/8] Bundle JavaDoc syntax highlighting assets --- maven/javadoc-resources/highlight.css | 17 ++++++ maven/javadoc-resources/highlight.min.js | 59 +++++++++++++++++++ .../javadoc-highlight-init.js | 10 ++++ maven/pom.xml | 20 ++----- 4 files changed, 92 insertions(+), 14 deletions(-) create mode 100644 maven/javadoc-resources/highlight.css create mode 100644 maven/javadoc-resources/highlight.min.js create mode 100644 maven/javadoc-resources/javadoc-highlight-init.js diff --git a/maven/javadoc-resources/highlight.css b/maven/javadoc-resources/highlight.css new file mode 100644 index 0000000000..34dfb61e21 --- /dev/null +++ b/maven/javadoc-resources/highlight.css @@ -0,0 +1,17 @@ +pre code { + color: #24292e; +} + +.javadoc-keyword { + color: #d73a49; + font-weight: 600; +} + +.javadoc-string { + color: #032f62; +} + +.javadoc-comment { + color: #6a737d; + font-style: italic; +} diff --git a/maven/javadoc-resources/highlight.min.js b/maven/javadoc-resources/highlight.min.js new file mode 100644 index 0000000000..46c06fc498 --- /dev/null +++ b/maven/javadoc-resources/highlight.min.js @@ -0,0 +1,59 @@ +(function(){ + const KEYWORDS = [ + 'abstract','assert','boolean','break','byte','case','catch','char','class','const','continue', + 'default','do','double','else','enum','extends','final','finally','float','for','goto', + 'if','implements','import','instanceof','int','interface','long','native','new','package', + 'private','protected','public','return','short','static','strictfp','super','switch', + 'synchronized','this','throw','throws','transient','try','void','volatile','while', + 'true','false','null' + ]; + + function escapeHtml(text) { + return text + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + } + + function classifyToken(token) { + if (token.startsWith('/*') || token.startsWith('//')) { + return 'javadoc-comment'; + } + if (token.startsWith('"') || token.startsWith("'")) { + return 'javadoc-string'; + } + return 'javadoc-keyword'; + } + + function highlightJava(text) { + const keywordPattern = KEYWORDS.join('|'); + const tokenPattern = new RegExp( + '(\\/\\*[\\s\\S]*?\\*\\/|\\/\\/[^\\n]*|"(?:\\\\.|[^"\\\\])*"|\'(?:\\\\.|[^\'\\\\])*\'|\\b(?:' + keywordPattern + ')\\b)', + 'g' + ); + + let result = ''; + let lastIndex = 0; + let match; + while ((match = tokenPattern.exec(text)) !== null) { + const token = match[0]; + result += escapeHtml(text.slice(lastIndex, match.index)); + const tokenClass = classifyToken(token); + result += '' + escapeHtml(token) + ''; + lastIndex = match.index + token.length; + } + result += escapeHtml(text.slice(lastIndex)); + return result; + } + + function highlightElement(element) { + const text = element.textContent || ''; + element.innerHTML = highlightJava(text); + } + + window.Cn1JavaDocHighlight = { + highlightElement + }; +})(); diff --git a/maven/javadoc-resources/javadoc-highlight-init.js b/maven/javadoc-resources/javadoc-highlight-init.js new file mode 100644 index 0000000000..854be8980c --- /dev/null +++ b/maven/javadoc-resources/javadoc-highlight-init.js @@ -0,0 +1,10 @@ +document.addEventListener('DOMContentLoaded', () => { + document.querySelectorAll('pre code').forEach((block) => { + const className = block.className || ''; + if (className.includes('language-java') || className.includes('lang-java')) { + if (window.Cn1JavaDocHighlight) { + window.Cn1JavaDocHighlight.highlightElement(block); + } + } + }); +}); diff --git a/maven/pom.xml b/maven/pom.xml index 3000b6090b..60260b498c 100644 --- a/maven/pom.xml +++ b/maven/pom.xml @@ -407,21 +407,13 @@ none false - - - - ]]> - --allow-script-in-comments + --add-stylesheet + ${project.basedir}/javadoc-resources/highlight.css + --add-script + ${project.basedir}/javadoc-resources/highlight.min.js + --add-script + ${project.basedir}/javadoc-resources/javadoc-highlight-init.js From dd3894c289d1c1d934c4b94e2d125e8fd2bf44b1 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:57:44 +0200 Subject: [PATCH 3/8] Fix javadoc asset paths and initialization --- maven/javadoc-resources/javadoc-highlight-init.js | 11 +++++++---- maven/pom.xml | 6 +++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/maven/javadoc-resources/javadoc-highlight-init.js b/maven/javadoc-resources/javadoc-highlight-init.js index 854be8980c..50d1e80241 100644 --- a/maven/javadoc-resources/javadoc-highlight-init.js +++ b/maven/javadoc-resources/javadoc-highlight-init.js @@ -1,10 +1,13 @@ document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('pre code').forEach((block) => { const className = block.className || ''; - if (className.includes('language-java') || className.includes('lang-java')) { - if (window.Cn1JavaDocHighlight) { - window.Cn1JavaDocHighlight.highlightElement(block); - } + const shouldHighlight = + className === '' || + className.includes('language-') || + className.includes('lang-'); + + if (shouldHighlight && window.Cn1JavaDocHighlight) { + window.Cn1JavaDocHighlight.highlightElement(block); } }); }); diff --git a/maven/pom.xml b/maven/pom.xml index 60260b498c..896635b759 100644 --- a/maven/pom.xml +++ b/maven/pom.xml @@ -409,11 +409,11 @@ false --add-stylesheet - ${project.basedir}/javadoc-resources/highlight.css + ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.css --add-script - ${project.basedir}/javadoc-resources/highlight.min.js + ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.min.js --add-script - ${project.basedir}/javadoc-resources/javadoc-highlight-init.js + ${maven.multiModuleProjectDirectory}/javadoc-resources/javadoc-highlight-init.js From 4b18b16526b65f3f64af33e32ff9e60139ddfd35 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 6 Feb 2026 21:12:58 +0200 Subject: [PATCH 4/8] Broaden Javadoc highlight targeting --- .../javadoc-highlight-init.js | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/maven/javadoc-resources/javadoc-highlight-init.js b/maven/javadoc-resources/javadoc-highlight-init.js index 50d1e80241..ec09b5ebc6 100644 --- a/maven/javadoc-resources/javadoc-highlight-init.js +++ b/maven/javadoc-resources/javadoc-highlight-init.js @@ -1,13 +1,26 @@ document.addEventListener('DOMContentLoaded', () => { - document.querySelectorAll('pre code').forEach((block) => { - const className = block.className || ''; - const shouldHighlight = - className === '' || - className.includes('language-') || - className.includes('lang-'); + const highlighter = window.Cn1JavaDocHighlight; + if (!highlighter) { + return; + } - if (shouldHighlight && window.Cn1JavaDocHighlight) { - window.Cn1JavaDocHighlight.highlightElement(block); + const shouldHighlight = (className) => + className === '' || className.includes('language-') || className.includes('lang-'); + + document.querySelectorAll('pre').forEach((pre) => { + const code = pre.querySelector('code'); + const target = code || pre; + if (shouldHighlight(target.className || '')) { + highlighter.highlightElement(target); + } + }); + + document.querySelectorAll('code').forEach((code) => { + if (code.closest('pre')) { + return; + } + if (shouldHighlight(code.className || '')) { + highlighter.highlightElement(code); } }); }); From 732ae00456d5d597d1ab102800975be00be08be0 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 6 Feb 2026 21:26:57 +0200 Subject: [PATCH 5/8] Inject highlight scripts into Javadoc head --- maven/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/maven/pom.xml b/maven/pom.xml index 896635b759..55ac6bd224 100644 --- a/maven/pom.xml +++ b/maven/pom.xml @@ -407,6 +407,10 @@ none false + + + ]]> --add-stylesheet ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.css From 5961cd908fe285a2b38f4f14eed1a2fa7937d300 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 6 Feb 2026 21:35:50 +0200 Subject: [PATCH 6/8] Apply highlight options to javadoc execution --- maven/pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/maven/pom.xml b/maven/pom.xml index 55ac6bd224..09bafc39a1 100644 --- a/maven/pom.xml +++ b/maven/pom.xml @@ -339,6 +339,18 @@ protected false none + + + ]]> + + --add-stylesheet + ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.css + --add-script + ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.min.js + --add-script + ${maven.multiModuleProjectDirectory}/javadoc-resources/javadoc-highlight-init.js + From 21b07e51e492533f95abbffe001a6e5323c5b026 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 6 Feb 2026 21:43:50 +0200 Subject: [PATCH 7/8] Allow Javadoc script injection --- maven/pom.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/maven/pom.xml b/maven/pom.xml index 09bafc39a1..4f43ccaa6a 100644 --- a/maven/pom.xml +++ b/maven/pom.xml @@ -340,10 +340,11 @@ false none - + + ]]> + --allow-script-in-comments --add-stylesheet ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.css --add-script @@ -420,10 +421,11 @@ none false - + + ]]> + --allow-script-in-comments --add-stylesheet ${maven.multiModuleProjectDirectory}/javadoc-resources/highlight.css --add-script From ed34f7202b82644f9839f57c33b9a6283297ec75 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Fri, 6 Feb 2026 21:51:54 +0200 Subject: [PATCH 8/8] Add highlight assets to javadoc build script --- .github/scripts/build_javadocs.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/scripts/build_javadocs.sh b/.github/scripts/build_javadocs.sh index 91be8dc6c8..0d5404e62f 100755 --- a/.github/scripts/build_javadocs.sh +++ b/.github/scripts/build_javadocs.sh @@ -36,7 +36,18 @@ public class ImplementationFactory { EOF find "$CN1_DIR/build/tempJavaSources" "$ROOT_DIR/Ports/CLDC11/src" -name "*.java" -not -path "$ROOT_DIR/Ports/CLDC11/src/java/*" \ - | /usr/bin/xargs "$JAVADOC_CMD" --allow-script-in-comments --release 8 -exclude com.codename1.impl -Xdoclint:none -quiet -protected -d "$CN1_DIR/dist/javadoc" -windowtitle "Codename One API" || true + | /usr/bin/xargs "$JAVADOC_CMD" \ + --allow-script-in-comments \ + --add-stylesheet "$ROOT_DIR/maven/javadoc-resources/highlight.css" \ + --add-script "$ROOT_DIR/maven/javadoc-resources/highlight.min.js" \ + --add-script "$ROOT_DIR/maven/javadoc-resources/javadoc-highlight-init.js" \ + --release 8 \ + -exclude com.codename1.impl \ + -Xdoclint:none \ + -quiet \ + -protected \ + -d "$CN1_DIR/dist/javadoc" \ + -windowtitle "Codename One API" || true ( cd "$CN1_DIR/dist/javadoc"