From dce3cf8542cb90db91e5032373f0dbe6e6c8fb9d Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Sun, 4 Jan 2026 16:22:28 +0000 Subject: [PATCH 1/2] Refactor code highlighting to use neutral color palette Replace language-specific CSS variables (--c-*) with a shared neutral color palette (--code-*) that can be reused across different syntax highlighters. This reduces duplication and makes it easier to maintain consistent colors across C, Ruby, and future language highlighters. Changes: - Add --code-cyan and --code-gray to neutral palette - Remove --c-* semantic variables for C highlighting - Update .c-* classes to reference neutral --code-* variables --- .../generator/template/aliki/css/rdoc.css | 52 ++++++------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/lib/rdoc/generator/template/aliki/css/rdoc.css b/lib/rdoc/generator/template/aliki/css/rdoc.css index b99f663147..ac43caa4bb 100644 --- a/lib/rdoc/generator/template/aliki/css/rdoc.css +++ b/lib/rdoc/generator/template/aliki/css/rdoc.css @@ -39,24 +39,14 @@ --color-neutral-800: #292524; --color-neutral-900: #1c1917; - /* Code highlighting colors */ + /* Code highlighting colors - neutral palette for all syntax highlighters */ --code-blue: #1d4ed8; --code-green: #047857; --code-orange: #d97706; --code-purple: #7e22ce; --code-red: #dc2626; - - /* C syntax highlighting */ - --c-keyword: #b91c1c; - --c-type: #0891b2; - --c-macro: #ea580c; - --c-function: #7c3aed; - --c-identifier: #475569; - --c-operator: #059669; - --c-preprocessor: #a21caf; - --c-value: #92400e; - --c-string: #15803d; - --c-comment: #78716c; + --code-cyan: #0891b2; + --code-gray: #78716c; /* Color Palette - Green (for success states) */ --color-green-400: #4ade80; @@ -186,24 +176,14 @@ /* Dark Theme */ [data-theme="dark"] { - /* Code highlighting colors */ + /* Code highlighting colors - neutral palette for all syntax highlighters */ --code-blue: #93c5fd; --code-green: #34d399; --code-orange: #fbbf24; --code-purple: #c084fc; --code-red: #f87171; - - /* C syntax highlighting */ - --c-keyword: #f87171; - --c-type: #22d3ee; - --c-macro: #fb923c; - --c-function: #a78bfa; - --c-identifier: #94a3b8; - --c-operator: #6ee7b7; - --c-preprocessor: #e879f9; - --c-value: #fcd34d; - --c-string: #4ade80; - --c-comment: #a8a29e; + --code-cyan: #22d3ee; + --code-gray: #a8a29e; /* Semantic Colors - Dark Theme */ --color-text-primary: var(--color-neutral-50); @@ -1064,18 +1044,18 @@ main h6 a:hover { [data-theme="dark"] .ruby-string { color: var(--code-green); } /* C Syntax Highlighting */ -.c-keyword { color: var(--c-keyword); } -.c-type { color: var(--c-type); } -.c-macro { color: var(--c-macro); } -.c-function { color: var(--c-function); } -.c-identifier { color: var(--c-identifier); } -.c-operator { color: var(--c-operator); } -.c-preprocessor { color: var(--c-preprocessor); } -.c-value { color: var(--c-value); } -.c-string { color: var(--c-string); } +.c-keyword { color: var(--code-red); } +.c-type { color: var(--code-cyan); } +.c-macro { color: var(--code-orange); } +.c-function { color: var(--code-purple); } +.c-identifier { color: var(--color-text-secondary); } +.c-operator { color: var(--code-green); } +.c-preprocessor { color: var(--code-purple); } +.c-value { color: var(--code-orange); } +.c-string { color: var(--code-green); } .c-comment { - color: var(--c-comment); + color: var(--code-gray); font-style: italic; } From d92001479e6f2d02cd4dc4ecdb560ba204f56bee Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Sun, 4 Jan 2026 16:24:31 +0000 Subject: [PATCH 2/2] Add client-side shell syntax highlighter for Aliki theme Add a simple shell/bash syntax highlighter for documentation code blocks. The highlighter is focused on command-line documentation rather than full bash scripts. Highlights: - $ prompts (gray) - Commands/executables - first word on line (blue) - Options like -f, --flag, --option=value (cyan) - Single and double quoted strings (green) - Comments starting with # (gray, italic) The highlighter targets code blocks with language classes: bash, sh, shell, console. Files added: - lib/rdoc/generator/template/aliki/js/bash_highlighter.js - test/rdoc/generator/aliki/highlight_bash_test.rb --- lib/rdoc/generator/template/aliki/_head.rhtml | 5 + .../generator/template/aliki/css/rdoc.css | 12 ++ .../template/aliki/js/bash_highlighter.js | 167 ++++++++++++++++ .../generator/aliki/highlight_bash_test.rb | 181 ++++++++++++++++++ 4 files changed, 365 insertions(+) create mode 100644 lib/rdoc/generator/template/aliki/js/bash_highlighter.js create mode 100644 test/rdoc/generator/aliki/highlight_bash_test.rb diff --git a/lib/rdoc/generator/template/aliki/_head.rhtml b/lib/rdoc/generator/template/aliki/_head.rhtml index 1733bd0174..c46f0b94e7 100644 --- a/lib/rdoc/generator/template/aliki/_head.rhtml +++ b/lib/rdoc/generator/template/aliki/_head.rhtml @@ -140,6 +140,11 @@ defer > + + "') + assert_includes result, '<script>' + assert_includes result, '</script>' + + result = highlight('echo "a && b"') + assert_includes result, '&&' + end + + private + + def highlight(code) + @context.eval("highlightShell(#{code.to_json})") + end +end